diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 000000000..55e3ffcf1 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,50 @@ +name: Build & Lint + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Setup Node.js environment + uses: actions/setup-node@v2 + with: + node-version: 16 + + - name: Install dependencies + run: cd packages/radix-vue && npm install + + - name: Build + run: cd packages/radix-vue && npm run -r --filter=!docs build + + - name: Check for errors + run: | + if [ $? -eq 0 ]; then + echo "Build succeeded" + else + echo "Build failed" + exit 1 + fi + + lint: + needs: build + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Setup Node.js environment + uses: actions/setup-node@v2 + with: + node-version: 16 + + - name: Install dependencies + run: cd packages/radix-vue && npm install + + - name: Lint + run: cd packages/radix-vue && npm run lint \ No newline at end of file diff --git a/README.md b/README.md index 635aef528..acfd25a1a 100644 --- a/README.md +++ b/README.md @@ -23,32 +23,32 @@ For changelog, visit [radix-vue.com/overview/releases](https://radix-vue.com/ove | Component | Usable | Complete API | Complete Accessibility | | :------------------------------------------------------------------ | :----: | ------------ | ---------------------- | -| [Accordion](https://github.com/radix-vue/radix-vue/issues/1) | ✅ | | | -| [Alert Dialog](https://github.com/radix-vue/radix-vue/issues/2) | ✅ | ⏳ | | -| [Aspect Ratio](https://github.com/radix-vue/radix-vue/issues/3) | ✅ | ✅ | | -| [Avatar](https://github.com/radix-vue/radix-vue/issues/4) | ✅ | ✅ | | -| [Checkbox](https://github.com/radix-vue/radix-vue/issues/5) | ✅ | ✅ | | -| [Collapsible](https://github.com/radix-vue/radix-vue/issues/6) | ✅ | | | -| [Context Menu](https://github.com/radix-vue/radix-vue/issues/7) | ✅ | | | -| [Dialog](https://github.com/radix-vue/radix-vue/issues/8) | ✅ | ⏳ | | -| [Dropdown Menu](https://github.com/radix-vue/radix-vue/issues/9) | ✅ | | | -| [Hover Card](https://github.com/radix-vue/radix-vue/issues/11) | ✅ | | | -| [Label](https://github.com/radix-vue/radix-vue/issues/12) | ✅ | ✅ | ✅ | -| [Menubar](https://github.com/radix-vue/radix-vue/issues/13) | ✅ | | | -| [Navigation Menu](https://github.com/radix-vue/radix-vue/issues/14) | ⏳ | | | -| [Popover](https://github.com/radix-vue/radix-vue/issues/15) | ✅ | | | -| [Progress](https://github.com/radix-vue/radix-vue/issues/16) | ✅ | ⏳ | | -| [Radio Group](https://github.com/radix-vue/radix-vue/issues/17) | ✅ | | | -| [Scroll Area](https://github.com/radix-vue/radix-vue/issues/18) | ✅ | | | -| [Select](https://github.com/radix-vue/radix-vue/issues/19) | ✅ | | | -| [Separator](https://github.com/radix-vue/radix-vue/issues/20) | ✅ | ✅ | | -| [Slider](https://github.com/radix-vue/radix-vue/issues/21) | ✅ | | | -| [Switch](https://github.com/radix-vue/radix-vue/issues/22) | ✅ | ✅ | | -| [Tabs](https://github.com/radix-vue/radix-vue/issues/23) | ✅ | ✅ | | -| [Toggle](https://github.com/radix-vue/radix-vue/issues/25) | ✅ | ✅ | | -| [Toggle Group](https://github.com/radix-vue/radix-vue/issues/26) | ✅ | | | -| [Toolbar](https://github.com/radix-vue/radix-vue/issues/27) | ✅ | | | -| [Tooltip](https://github.com/radix-vue/radix-vue/issues/28) | ✅ | | | +| [Accordion](https://radix-vue.com/components/accordion) | ✅ | | | +| [Alert Dialog](https://radix-vue.com/components/alert-dialog) | ✅ | ⏳ | | +| [Aspect Ratio](https://radix-vue.com/components/aspect-ratio) | ✅ | ✅ | | +| [Avatar](https://radix-vue.com/components/avatar) | ✅ | ✅ | | +| [Checkbox](https://radix-vue.com/components/checkbox) | ✅ | ✅ | | +| [Collapsible](https://radix-vue.com/components/collapsible) | ✅ | ✅ | | +| [Context Menu](https://radix-vue.com/components/context-menu) | ✅ | | | +| [Dialog](https://radix-vue.com/components/dialog) | ✅ | ⏳ | | +| [Dropdown Menu](https://radix-vue.com/components/dropdown-menu) | ✅ | | | +| [Hover Card](https://radix-vue.com/components/hover-card) | ✅ | | | +| [Label](https://radix-vue.com/components/label) | ✅ | ✅ | ✅ | +| [Menubar](https://radix-vue.com/components/menubar) | ✅ | | | +| [Navigation Menu](https://radix-vue.com/components/navigation-menu) | ⏳ | | | +| [Popover](https://radix-vue.com/components/popover) | ✅ | | | +| [Progress](https://radix-vue.com/components/progress) | ✅ | ⏳ | | +| [Radio Group](https://radix-vue.com/components/radio-group) | ✅ | ✅ | | +| [Scroll Area](https://radix-vue.com/components/scroll-area) | ✅ | | | +| [Select](https://radix-vue.com/components/select) | ✅ | | | +| [Separator](https://radix-vue.com/components/separator) | ✅ | ✅ | | +| [Slider](https://radix-vue.com/components/slider) | ✅ | | | +| [Switch](https://radix-vue.com/components/switch) | ✅ | ✅ | | +| [Tabs](https://radix-vue.com/components/tabs) | ✅ | ✅ | | +| [Toggle](https://radix-vue.com/components/toggle) | ✅ | ✅ | | +| [Toggle Group](https://radix-vue.com/components/toggle-group) | ✅ | ✅ | | +| [Toolbar](https://radix-vue.com/components/toolbar) | ✅ | | | +| [Tooltip](https://radix-vue.com/components/tooltip) | ✅ | | | ## Contributing @@ -57,11 +57,13 @@ We would love to have your contributions! All PRs all welcomed! We need help bui ## Dev Setup ### Docs -1. Go to the docs directory : `cd docs` + +1. Go to the docs directory : `cd docs` 2. Run `pnpm i --ignore-workspace` 3. Run `pnpm run dev` ### Package + 1. Clone the repo 2. Go to the repo directory: `cd radix-vue` 3. Run `pnpm run start` @@ -79,8 +81,9 @@ We would love to have your contributions! All PRs all welcomed! We need help bui ## Credits All credits goes to these open-source works and resources + - [Radix UI](https://radix-ui.com) - [Radix Svelte](https://radix-svelte.com) - [Headless UI](https://headlessui.com) - [Floating UI](https://floating-ui.com) -- [Vue Use](https://vueuse.org) \ No newline at end of file +- [Vue Use](https://vueuse.org) diff --git a/docs/package.json b/docs/package.json index 2a589bf44..cccf5e321 100644 --- a/docs/package.json +++ b/docs/package.json @@ -21,6 +21,6 @@ } }, "dependencies": { - "radix-vue": "0.0.1-rc-.8" + "radix-vue": "0.0.1-rc-.9" } } diff --git a/packages/radix-vue/package.json b/packages/radix-vue/package.json index 63e29293f..dfea9b852 100644 --- a/packages/radix-vue/package.json +++ b/packages/radix-vue/package.json @@ -1,6 +1,6 @@ { "name": "radix-vue", - "version": "0.0.1-rc-.8", + "version": "0.0.1-rc-.9", "description": "Vue port for Radix UI Primitives.", "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/radix-vue/src/Collapsible/CollapsibleContent.vue b/packages/radix-vue/src/Collapsible/CollapsibleContent.vue index dd87c891e..abb5f7c45 100644 --- a/packages/radix-vue/src/Collapsible/CollapsibleContent.vue +++ b/packages/radix-vue/src/Collapsible/CollapsibleContent.vue @@ -1,7 +1,6 @@ @@ -81,13 +80,18 @@ onMounted(() => { isMountAnimationPrevented.value = false; }); }); + +const props = withDefaults(defineProps(), { + asChild: false, +}); import type { InjectionKey, Ref } from "vue"; +import { useId } from "@/shared"; export interface CollapsibleRootProps { asChild?: boolean; defaultOpen?: boolean; open?: boolean; - onOpenChange?: void; disabled?: boolean; } @@ -39,10 +39,11 @@ const open = useVModel(props, "open", emit, { defaultValue: props.defaultOpen, passive: true, }); + const disabled = useVModel(props, "disabled"); provide(COLLAPSIBLE_INJECTION_KEY, { - contentId: "1", + contentId: useId(), disabled, open, onOpenToggle: () => { @@ -53,8 +54,9 @@ provide(COLLAPSIBLE_INJECTION_KEY, { diff --git a/packages/radix-vue/src/Collapsible/CollapsibleTrigger.vue b/packages/radix-vue/src/Collapsible/CollapsibleTrigger.vue index 8a2ec1645..3baccc188 100644 --- a/packages/radix-vue/src/Collapsible/CollapsibleTrigger.vue +++ b/packages/radix-vue/src/Collapsible/CollapsibleTrigger.vue @@ -15,15 +15,20 @@ import { const injectedValue = inject( COLLAPSIBLE_INJECTION_KEY ); + +const props = withDefaults(defineProps(), { + asChild: false, +}); diff --git a/packages/radix-vue/src/RadioGroup/RadioGroupIndicator.vue b/packages/radix-vue/src/RadioGroup/RadioGroupIndicator.vue index 561173b5e..ffb378d74 100644 --- a/packages/radix-vue/src/RadioGroup/RadioGroupIndicator.vue +++ b/packages/radix-vue/src/RadioGroup/RadioGroupIndicator.vue @@ -1,29 +1,30 @@ diff --git a/packages/radix-vue/src/RadioGroup/RadioGroupItem.vue b/packages/radix-vue/src/RadioGroup/RadioGroupItem.vue index 88fdec3c8..3d4934484 100644 --- a/packages/radix-vue/src/RadioGroup/RadioGroupItem.vue +++ b/packages/radix-vue/src/RadioGroup/RadioGroupItem.vue @@ -1,11 +1,12 @@ + diff --git a/packages/radix-vue/src/RadioGroup/RadioGroupRoot.vue b/packages/radix-vue/src/RadioGroup/RadioGroupRoot.vue index d809a594c..e49990fec 100644 --- a/packages/radix-vue/src/RadioGroup/RadioGroupRoot.vue +++ b/packages/radix-vue/src/RadioGroup/RadioGroupRoot.vue @@ -1,20 +1,21 @@ diff --git a/packages/radix-vue/src/Tabs/TabsTrigger.vue b/packages/radix-vue/src/Tabs/TabsTrigger.vue index 389bc96f7..7b9a9f29d 100644 --- a/packages/radix-vue/src/Tabs/TabsTrigger.vue +++ b/packages/radix-vue/src/Tabs/TabsTrigger.vue @@ -26,22 +26,14 @@ function changeTab(value: string) { } function handleKeydown(e: KeyboardEvent) { - if ( - injectedValue?.orientation === "horizontal" && - (e.key === "ArrowLeft" || e.key === "ArrowRight") - ) { - e.preventDefault(); - } else if ( - injectedValue?.orientation === "vertical" && - (e.key === "ArrowUp" || e.key === "ArrowDown") - ) { - e.preventDefault(); - } const newSelectedElement = useArrowNavigation( e, currentElement.value!, injectedValue?.parentElement.value!, - { arrowKeyOptions: injectedValue?.orientation, loop: injectedValue?.loop } + { + arrowKeyOptions: injectedValue?.orientation, + loop: injectedValue?.loop, + } ); if (newSelectedElement) { diff --git a/packages/radix-vue/src/ToggleGroup/ToggleGroupItem.vue b/packages/radix-vue/src/ToggleGroup/ToggleGroupItem.vue index 49c6d46b1..f2ff563f3 100644 --- a/packages/radix-vue/src/ToggleGroup/ToggleGroupItem.vue +++ b/packages/radix-vue/src/ToggleGroup/ToggleGroupItem.vue @@ -7,7 +7,7 @@ interface ToggleGroupItemProps { diff --git a/packages/radix-vue/src/ToggleGroup/ToggleGroupRoot.vue b/packages/radix-vue/src/ToggleGroup/ToggleGroupRoot.vue index 964d757b7..329527118 100644 --- a/packages/radix-vue/src/ToggleGroup/ToggleGroupRoot.vue +++ b/packages/radix-vue/src/ToggleGroup/ToggleGroupRoot.vue @@ -14,7 +14,7 @@ export interface ToggleGroupRootProps { rovingFocus?: boolean; orientation?: DataOrientation; dir?: Direction; - loop?: boolean; + loop: boolean; modelValue?: string | string[]; } @@ -26,17 +26,29 @@ export interface ToggleGroupProvideValue { modelValue?: Readonly>; changeModelValue: (value: string) => void; parentElement: Ref; + currentFocusedElement: Ref; activeValue?: Readonly>; + dir?: Direction; orientation?: DataOrientation; + loop: boolean; + itemsArray: Ref; + rovingFocus: boolean; + rootDisabled?: boolean; } diff --git a/packages/radix-vue/src/shared/useArrowNavigation.test.ts b/packages/radix-vue/src/shared/useArrowNavigation.test.ts new file mode 100644 index 000000000..33135caa8 --- /dev/null +++ b/packages/radix-vue/src/shared/useArrowNavigation.test.ts @@ -0,0 +1,103 @@ +import { beforeEach, describe, expect, test } from "vitest"; +import { useArrowNavigation } from "./useArrowNavigation"; + +describe("useArrowNavigation", () => { + let currentElement: HTMLElement; + let parentElement: HTMLElement; + let childElement1: HTMLElement; + let childElement2: HTMLElement; + + beforeEach(() => { + parentElement = document.createElement("div"); + currentElement = document.createElement("div"); + childElement1 = document.createElement("div"); + childElement2 = document.createElement("div"); + + currentElement.setAttribute("data-radix-vue-collection-item", ""); + childElement1.setAttribute("data-radix-vue-collection-item", ""); + childElement2.setAttribute("data-radix-vue-collection-item", ""); + + parentElement.appendChild(currentElement); + parentElement.appendChild(childElement1); + parentElement.appendChild(childElement2); + }); + + test("should navigate horizontally", () => { + const e = new KeyboardEvent("keydown", { key: "ArrowRight" }); + const nextElement = useArrowNavigation(e, currentElement, parentElement, { + arrowKeyOptions: "horizontal", + }); + expect(nextElement).toBe(childElement1); + }); + + test("should navigate vertically", () => { + const e = new KeyboardEvent("keydown", { key: "ArrowDown" }); + const nextElement = useArrowNavigation(e, currentElement, parentElement, { + arrowKeyOptions: "vertical", + }); + expect(nextElement).toBe(childElement1); + }); + + test("should not navigate with arrow keys when arrowKeyOptions is not set to both", () => { + const nextElementHorizontal = useArrowNavigation( + new KeyboardEvent("keydown", { key: "ArrowDown" }), + currentElement, + parentElement, + { + arrowKeyOptions: "horizontal", + } + ); + expect(nextElementHorizontal).toBeNull(); + const nextElementVertical = useArrowNavigation( + new KeyboardEvent("keydown", { key: "ArrowLeft" }), + currentElement, + parentElement, + { + arrowKeyOptions: "vertical", + } + ); + expect(nextElementVertical).toBeNull(); + }); + + test("should return null if there are no items in the collection", () => { + const e = new KeyboardEvent("keydown", { key: "ArrowRight" }); + const nextElement = useArrowNavigation( + e, + currentElement, + document.createElement("div") + ); + expect(nextElement).toBeNull(); + }); + + test("should loop through items if loop is set to true", () => { + const e = new KeyboardEvent("keydown", { key: "ArrowLeft" }); + const nextElement = useArrowNavigation(e, childElement2, parentElement, { + loop: true, + }); + expect(nextElement).toStrictEqual(currentElement); + }); + + test("should not loop through items if loop is set to false", () => { + const e = new KeyboardEvent("keydown", { key: "ArrowLeft" }); + const nextElement = useArrowNavigation(e, currentElement, parentElement, { + loop: false, + }); + expect(nextElement).toBeNull(); + }); + + test("should skip disabled items", () => { + childElement1.setAttribute("disabled", "true"); + childElement2.setAttribute("disabled", "true"); + const e = new KeyboardEvent("keydown", { key: "ArrowRight" }); + const nextElement = useArrowNavigation(e, currentElement, parentElement); + expect(nextElement).toBeNull(); + }); + + test("should navigate correctly in rtl", () => { + const e = new KeyboardEvent("keydown", { key: "ArrowRight" }); + const nextElement = useArrowNavigation(e, currentElement, parentElement, { + dir: "rtl", + }); + expect(nextElement).toBe(childElement2); + }); +}); diff --git a/packages/radix-vue/src/shared/useArrowNavigation.ts b/packages/radix-vue/src/shared/useArrowNavigation.ts index e33f51008..a1592c62c 100644 --- a/packages/radix-vue/src/shared/useArrowNavigation.ts +++ b/packages/radix-vue/src/shared/useArrowNavigation.ts @@ -1,39 +1,56 @@ +import type { Direction } from "./types"; + type ArrowKeyOptions = "horizontal" | "vertical" | "both"; interface ArrowNavigationOptions { + /** + * The arrow key options to allow navigation + * + * @default "both" + */ + arrowKeyOptions?: ArrowKeyOptions; + + /** + * The attribute name to find the collection items in the parent element. + * + * @default "data-radix-vue-collection-item" + */ attributeName?: string; - arrowKeyOptions?: ArrowKeyOptions; //default to both - itemsArray?: HTMLElement[]; - loop?: boolean; -} -// recursive function to find the next focusable element to avoid disabled elements -function findNextFocusableElement( - elements: HTMLElement[], - currentElement: HTMLElement, - direction: "next" | "previous", - loop = true -): HTMLElement | null { - const index = elements.indexOf(currentElement); - const newIndex = direction === "next" ? index + 1 : index - 1; + /** + * The parent element where contains all the collection items, this will collect every item to be used when nav + * It will be ignored if attributeName is provided + * + * @default [] + */ + itemsArray?: HTMLElement[]; - if (!loop && (newIndex < 0 || newIndex >= elements.length)) return null; + /** + * Allow loop navigation. If false, it will stop at the first and last element + * + * @default true + */ + loop?: boolean; - const adjustedNewIndex = (newIndex + elements.length) % elements.length; - const candidate = elements[adjustedNewIndex]; - if (!candidate) return null; + /** + * The orientation of the collection + * + * @default "ltr" + */ + dir?: Direction; - const isDisabled = - candidate.hasAttribute("disabled") && - candidate.getAttribute("disabled") !== "false"; - if (isDisabled) { - return findNextFocusableElement(elements, candidate, direction, loop); - } - return candidate; + /** + * Prevent the scroll when navigating. This happens when the direction of the + * key matches the scroll direction of any ancestor scrollable elements. + * + * @default true + */ + preventScroll?: boolean; } /** - * allow arrow navigation for every html element with data-radix-vue-collection-item tag + * Allow arrow navigation for every html element with data-radix-vue-collection-item tag + * * @param e Keyboard event * @param currentElement Event initiator element or any element that wants to handle the navigation * @param parentElement Parent element where contains all the collection items, this will collect every item to be used when nav @@ -46,44 +63,84 @@ export function useArrowNavigation( parentElement: HTMLElement | undefined, options: ArrowNavigationOptions = {} ): HTMLElement | null { - const defaultAttributeName = "data-radix-vue-collection-item"; - const attributeName = options?.attributeName ?? defaultAttributeName; - let allCollectionItems: HTMLElement[] = []; - - if (!parentElement && options.itemsArray && options.itemsArray.length) { - allCollectionItems = options.itemsArray; - } else if (parentElement) { - allCollectionItems = Array.from( - parentElement.querySelectorAll(`[${attributeName}]`) - ); + const { + arrowKeyOptions = "both", + attributeName = "data-radix-vue-collection-item", + itemsArray = [], + loop = true, + dir = "ltr", + preventScroll = true, + } = options; + + const [right, left, up, down] = [ + e.key === "ArrowRight", + e.key === "ArrowLeft", + e.key === "ArrowUp", + e.key === "ArrowDown", + ]; + const goingVertical = up || down; + const goingHorizontal = right || left; + if ( + (!goingVertical && !goingHorizontal) || + (arrowKeyOptions === "vertical" && goingHorizontal) || + (arrowKeyOptions === "horizontal" && goingVertical) + ) { + return null; } - if (allCollectionItems.length) { - let nextKeys = ["ArrowRight", "ArrowDown"]; - let previousKeys = ["ArrowLeft", "ArrowUp"]; + const allCollectionItems: HTMLElement[] = parentElement + ? Array.from(parentElement.querySelectorAll(`[${attributeName}]`)) + : itemsArray; - if (options?.arrowKeyOptions === "horizontal") { - nextKeys = ["ArrowRight"]; - previousKeys = ["ArrowLeft"]; - } else if (options?.arrowKeyOptions === "vertical") { - nextKeys = ["ArrowDown"]; - previousKeys = ["ArrowUp"]; - } + if (!allCollectionItems.length) return null; - const isNextKey = nextKeys.includes(e.key); - const isPreviousKey = previousKeys.includes(e.key); + if (preventScroll) { + e.preventDefault(); + } + + const goForward = goingVertical ? down : dir === "ltr" ? right : left; + + return findNextFocusableElement(allCollectionItems, currentElement, { + goForward, + loop, + }); +} + +/** + * Recursive function to find the next focusable element to avoid disabled elements + * + * @param elements Elements to navigate + * @param currentElement Current active element + * @param options + * @returns + */ +function findNextFocusableElement( + elements: HTMLElement[], + currentElement: HTMLElement, + { goForward, loop }: { goForward: boolean; loop?: boolean }, + iterations = elements.length +): HTMLElement | null { + if (--iterations === 0) return null; + + const index = elements.indexOf(currentElement); + const newIndex = goForward ? index + 1 : index - 1; + + if (!loop && (newIndex < 0 || newIndex >= elements.length)) return null; - if (!isNextKey && !isPreviousKey) { - return null; - } + const adjustedNewIndex = (newIndex + elements.length) % elements.length; + const candidate = elements[adjustedNewIndex]; + if (!candidate) return null; + const isDisabled = + candidate.hasAttribute("disabled") && + candidate.getAttribute("disabled") !== "false"; + if (isDisabled) { return findNextFocusableElement( - allCollectionItems, - currentElement, - nextKeys.includes(e.key) ? "next" : "previous", - options.loop + elements, + candidate, + { goForward, loop }, + iterations ); } - - return null; + return candidate; } diff --git a/playground/vue3/.env.d.ts b/playground/vue3/.env.d.ts new file mode 100644 index 000000000..c9923fc58 --- /dev/null +++ b/playground/vue3/.env.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/playground/vue3/histoire.config.js b/playground/vue3/histoire.config.js new file mode 100644 index 000000000..1c82dbded --- /dev/null +++ b/playground/vue3/histoire.config.js @@ -0,0 +1,9 @@ +import { defineConfig } from 'histoire' +import { HstVue } from '@histoire/plugin-vue' + +export default defineConfig({ + plugins: [ + HstVue(), + ], + setupFile: '/src/histoire-setup.js', +}) diff --git a/playground/vue3/package.json b/playground/vue3/package.json index 02c5a8e3a..4b2f70d1f 100644 --- a/playground/vue3/package.json +++ b/playground/vue3/package.json @@ -8,7 +8,10 @@ "build": "vue-tsc && vite build", "preview": "vite preview", "lint": "eslint .", - "lint:fix": "eslint . --fix" + "lint:fix": "eslint . --fix", + "story:dev": "histoire dev", + "story:build": "histoire build", + "story:preview": "histoire preview" }, "dependencies": { "radix-vue": "link:../../packages/radix-vue", @@ -16,12 +19,14 @@ }, "devDependencies": { "@antfu/eslint-config": "^0.39.7", + "@histoire/plugin-vue": "^0.16.1", "@iconify/vue": "^4.1.1", "@radix-ui/colors": "^1.0.0", "@rollup/plugin-alias": "^5.0.0", "@vitejs/plugin-vue": "^4.1.0", "autoprefixer": "^10.4.14", "eslint": "^8.43.0", + "histoire": "^0.16.2", "postcss": "^8.4.24", "tailwindcss": "^3.3.2", "typescript": "^5.0.2", diff --git a/playground/vue3/src/components/Demo/AccordionDemo.vue b/playground/vue3/src/components/Demo/AccordionDemo.vue index 6a2327c08..18cb4ac63 100644 --- a/playground/vue3/src/components/Demo/AccordionDemo.vue +++ b/playground/vue3/src/components/Demo/AccordionDemo.vue @@ -13,7 +13,7 @@ const rootDisabled = false - + Tab value: {{ tabValue }} import { ref } from 'vue' -import { CollapsibleContent, CollapsibleRoot, CollapsibleTrigger } from 'radix-vue' import { Icon } from '@iconify/vue' +import { + CollapsibleContent, + CollapsibleRoot, + CollapsibleTrigger, +} from '../../../../../packages/radix-vue/src' const rootOpen = ref(false) const rootDisabled = ref(false) -const open = ref(false) - - Value: {{ rootOpen ? "checked" : "unchecked" }} - - {{ rootOpen ? "Close" : "Open" }} - - - @mujahidfa starred 3 repos + + @peduarte starred 3 repos + - - - - + + @@ -41,7 +34,7 @@ const open = ref(false) vuejs/core - nuxt/nuxt + @radix-ui/primitives diff --git a/playground/vue3/src/components/Demo/ContextMenuDemo.vue b/playground/vue3/src/components/Demo/ContextMenuDemo.vue index 6382308b8..3bd691c22 100644 --- a/playground/vue3/src/components/Demo/ContextMenuDemo.vue +++ b/playground/vue3/src/components/Demo/ContextMenuDemo.vue @@ -12,10 +12,10 @@ import { ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, - ContextMenuTrigger, ContextMenuSub, ContextMenuSubContent, - ContextMenuSubTrigger + ContextMenuSubTrigger, + ContextMenuTrigger, } from '../../../../../packages/radix-vue/src' const toggleState = ref(false) diff --git a/playground/vue3/src/components/Demo/RadioGroupDemo.vue b/playground/vue3/src/components/Demo/RadioGroupDemo.vue index 0aa19f30c..b8a9bc946 100644 --- a/playground/vue3/src/components/Demo/RadioGroupDemo.vue +++ b/playground/vue3/src/components/Demo/RadioGroupDemo.vue @@ -1,16 +1,17 @@ - + Single: {{ radioStateSingle }} @@ -29,7 +30,8 @@ const radioStateSingle = ref('default') - + + + Compact diff --git a/playground/vue3/src/components/Demo/TabsDemo.vue b/playground/vue3/src/components/Demo/TabsDemo.vue index bf97c588d..0b383038d 100644 --- a/playground/vue3/src/components/Demo/TabsDemo.vue +++ b/playground/vue3/src/components/Demo/TabsDemo.vue @@ -1,6 +1,6 @@ diff --git a/playground/vue3/src/components/Demo/ToggleGroupDemo.vue b/playground/vue3/src/components/Demo/ToggleGroupDemo.vue index 98e278c2f..ffe6634d1 100644 --- a/playground/vue3/src/components/Demo/ToggleGroupDemo.vue +++ b/playground/vue3/src/components/Demo/ToggleGroupDemo.vue @@ -1,9 +1,9 @@ + + + + + + + + + + diff --git a/playground/vue3/src/components/stories/AlertDialog.story.vue b/playground/vue3/src/components/stories/AlertDialog.story.vue new file mode 100644 index 000000000..7fdc2aed6 --- /dev/null +++ b/playground/vue3/src/components/stories/AlertDialog.story.vue @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/playground/vue3/src/components/stories/AspectRatio.story.vue b/playground/vue3/src/components/stories/AspectRatio.story.vue new file mode 100644 index 000000000..58121ec5e --- /dev/null +++ b/playground/vue3/src/components/stories/AspectRatio.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Avatar.story.vue b/playground/vue3/src/components/stories/Avatar.story.vue new file mode 100644 index 000000000..e7b3631f1 --- /dev/null +++ b/playground/vue3/src/components/stories/Avatar.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Checkbox.story.vue b/playground/vue3/src/components/stories/Checkbox.story.vue new file mode 100644 index 000000000..405c79a6b --- /dev/null +++ b/playground/vue3/src/components/stories/Checkbox.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Collapsible.story.vue b/playground/vue3/src/components/stories/Collapsible.story.vue new file mode 100644 index 000000000..8419b849a --- /dev/null +++ b/playground/vue3/src/components/stories/Collapsible.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/ContextMenu.story.vue b/playground/vue3/src/components/stories/ContextMenu.story.vue new file mode 100644 index 000000000..5664c277f --- /dev/null +++ b/playground/vue3/src/components/stories/ContextMenu.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Dialog.story.vue b/playground/vue3/src/components/stories/Dialog.story.vue new file mode 100644 index 000000000..85baebdc3 --- /dev/null +++ b/playground/vue3/src/components/stories/Dialog.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/DropdownMenu.story.vue b/playground/vue3/src/components/stories/DropdownMenu.story.vue new file mode 100644 index 000000000..58171cd0f --- /dev/null +++ b/playground/vue3/src/components/stories/DropdownMenu.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/HoverCard.story.vue b/playground/vue3/src/components/stories/HoverCard.story.vue new file mode 100644 index 000000000..de28c44d6 --- /dev/null +++ b/playground/vue3/src/components/stories/HoverCard.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Label.story.vue b/playground/vue3/src/components/stories/Label.story.vue new file mode 100644 index 000000000..b5aea99f4 --- /dev/null +++ b/playground/vue3/src/components/stories/Label.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Menubar.story.vue b/playground/vue3/src/components/stories/Menubar.story.vue new file mode 100644 index 000000000..99d3bbbee --- /dev/null +++ b/playground/vue3/src/components/stories/Menubar.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Popover.story.vue b/playground/vue3/src/components/stories/Popover.story.vue new file mode 100644 index 000000000..560f048e1 --- /dev/null +++ b/playground/vue3/src/components/stories/Popover.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Progress.story.vue b/playground/vue3/src/components/stories/Progress.story.vue new file mode 100644 index 000000000..16965570b --- /dev/null +++ b/playground/vue3/src/components/stories/Progress.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/RadioGroup.story.vue b/playground/vue3/src/components/stories/RadioGroup.story.vue new file mode 100644 index 000000000..ca7ff559b --- /dev/null +++ b/playground/vue3/src/components/stories/RadioGroup.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/ScrollArea.story.vue b/playground/vue3/src/components/stories/ScrollArea.story.vue new file mode 100644 index 000000000..8b3a885f5 --- /dev/null +++ b/playground/vue3/src/components/stories/ScrollArea.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Select.story.vue b/playground/vue3/src/components/stories/Select.story.vue new file mode 100644 index 000000000..9c3fafe1d --- /dev/null +++ b/playground/vue3/src/components/stories/Select.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Separator.story.vue b/playground/vue3/src/components/stories/Separator.story.vue new file mode 100644 index 000000000..b900c8aab --- /dev/null +++ b/playground/vue3/src/components/stories/Separator.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Slider.story.vue b/playground/vue3/src/components/stories/Slider.story.vue new file mode 100644 index 000000000..31f19402b --- /dev/null +++ b/playground/vue3/src/components/stories/Slider.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Switch.story.vue b/playground/vue3/src/components/stories/Switch.story.vue new file mode 100644 index 000000000..b5f6d00d5 --- /dev/null +++ b/playground/vue3/src/components/stories/Switch.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Tabs.story.vue b/playground/vue3/src/components/stories/Tabs.story.vue new file mode 100644 index 000000000..cabb0ca1e --- /dev/null +++ b/playground/vue3/src/components/stories/Tabs.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Toggle.story.vue b/playground/vue3/src/components/stories/Toggle.story.vue new file mode 100644 index 000000000..8daa70de5 --- /dev/null +++ b/playground/vue3/src/components/stories/Toggle.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/ToggleGroup.story.vue b/playground/vue3/src/components/stories/ToggleGroup.story.vue new file mode 100644 index 000000000..e95e49188 --- /dev/null +++ b/playground/vue3/src/components/stories/ToggleGroup.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Toolbar.story.vue b/playground/vue3/src/components/stories/Toolbar.story.vue new file mode 100644 index 000000000..dd2002393 --- /dev/null +++ b/playground/vue3/src/components/stories/Toolbar.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/components/stories/Tooltip.story.vue b/playground/vue3/src/components/stories/Tooltip.story.vue new file mode 100644 index 000000000..43a955477 --- /dev/null +++ b/playground/vue3/src/components/stories/Tooltip.story.vue @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/playground/vue3/src/histoire-setup.js b/playground/vue3/src/histoire-setup.js new file mode 100644 index 000000000..cab743ade --- /dev/null +++ b/playground/vue3/src/histoire-setup.js @@ -0,0 +1 @@ +import './style.css' diff --git a/playground/vue3/src/vite-env.d.ts b/playground/vue3/src/vite-env.d.ts index 11f02fe2a..1142a7d78 100644 --- a/playground/vue3/src/vite-env.d.ts +++ b/playground/vue3/src/vite-env.d.ts @@ -1 +1,2 @@ /// +/// diff --git a/playground/vue3/tsconfig.json b/playground/vue3/tsconfig.json index f82888f3d..0278434d5 100644 --- a/playground/vue3/tsconfig.json +++ b/playground/vue3/tsconfig.json @@ -20,6 +20,6 @@ "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], + "include": ["env.d.ts", "src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04a79ec74..e13bb7b8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -119,54 +119,11 @@ importers: specifier: ^1.8.1 version: 1.8.1(typescript@5.1.3) - playground/vue3: - dependencies: - radix-vue: - specifier: link:../../packages/radix-vue - version: link:../../packages/radix-vue - vue: - specifier: ^3.2.47 - version: 3.3.4 - devDependencies: - '@antfu/eslint-config': - specifier: ^0.39.7 - version: 0.39.7(eslint@8.43.0)(typescript@5.1.3) - '@iconify/vue': - specifier: ^4.1.1 - version: 4.1.1(vue@3.3.4) - '@radix-ui/colors': - specifier: ^1.0.0 - version: 1.0.0 - '@rollup/plugin-alias': - specifier: ^5.0.0 - version: 5.0.0 - '@vitejs/plugin-vue': - specifier: ^4.1.0 - version: 4.2.3(vite@4.3.9)(vue@3.3.4) - autoprefixer: - specifier: ^10.4.14 - version: 10.4.14(postcss@8.4.24) - eslint: - specifier: ^8.43.0 - version: 8.43.0 - postcss: - specifier: ^8.4.24 - version: 8.4.24 - tailwindcss: - specifier: ^3.3.2 - version: 3.3.3 - typescript: - specifier: ^5.0.2 - version: 5.1.3 - vite: - specifier: ^4.3.9 - version: 4.3.9 - vue-tsc: - specifier: ^1.4.2 - version: 1.8.1(typescript@5.1.3) - packages: + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: @@ -178,29 +135,46 @@ packages: - search-insights dev: true - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0): - resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + /@antfu/eslint-config-basic@0.39.7(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.43.0)(typescript@5.1.3): + resolution: {integrity: sha512-R7usUebEr+T5EcZ8sMy2/naNU5etpXtzC34wHCEBETlmYVGQpkYcpSztDy67T3B3Ywj95VsgGLDjW77fANW/LQ==} peerDependencies: - search-insights: '>= 1 < 3' + eslint: '>=7.4.0' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) - search-insights: 2.7.0 + eslint: 8.43.0 + eslint-plugin-antfu: 0.39.7(eslint@8.43.0)(typescript@5.1.3) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.43.0) + eslint-plugin-html: 7.1.0 + eslint-plugin-import: /eslint-plugin-i@2.27.5-3(@typescript-eslint/parser@5.62.0)(eslint@8.43.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.43.0) + eslint-plugin-markdown: 3.0.0(eslint@8.43.0) + eslint-plugin-n: 16.0.1(eslint@8.43.0) + eslint-plugin-no-only-tests: 3.1.0 + eslint-plugin-promise: 6.1.1(eslint@8.43.0) + eslint-plugin-unicorn: 47.0.0(eslint@8.43.0) + eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.43.0) + eslint-plugin-yml: 1.8.0(eslint@8.43.0) + jsonc-eslint-parser: 2.3.0 + yaml-eslint-parser: 1.2.2 transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch + - '@typescript-eslint/eslint-plugin' + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + - typescript dev: true - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0): - resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + /@antfu/eslint-config-ts@0.39.7(eslint@8.43.0)(typescript@5.1.3): + resolution: {integrity: sha512-EaeR9VeCGFMNUr4mf8DBJa82UfZNM9o2fc27sVzX3ORDEjf6wtsc2YVVBlKlhAoZBNTj2qtX2DeCNC38N/j+Lg==} peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' + eslint: '>=7.4.0' + typescript: '>=3.9' dependencies: '@antfu/eslint-config-basic': 0.39.7(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.43.0)(typescript@5.1.3) '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.43.0)(typescript@5.1.3) '@typescript-eslint/parser': 5.62.0(eslint@8.43.0)(typescript@5.1.3) eslint: 8.43.0 - eslint-plugin-jest: 27.2.2(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.43.0)(typescript@5.1.3) + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.43.0)(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -209,117 +183,52 @@ packages: - supports-color dev: true - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0): - resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + /@antfu/eslint-config-vue@0.39.7(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.43.0)(typescript@5.1.3): + resolution: {integrity: sha512-YAhU+88cu9c/TFY4VIs4MhOzaxK7ZPiT7DVs+4PpQvTEOOV17dZipp7HGJHfBK/5MtscCm7FGWuo5TamN5gydw==} peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/client-search': 4.18.0 - algoliasearch: 4.18.0 - dev: true - - /@algolia/cache-browser-local-storage@4.18.0: - resolution: {integrity: sha512-rUAs49NLlO8LVLgGzM4cLkw8NJLKguQLgvFmBEe3DyzlinoqxzQMHfKZs6TSq4LZfw/z8qHvRo8NcTAAUJQLcw==} - dependencies: - '@algolia/cache-common': 4.18.0 - dev: true - - /@algolia/cache-common@4.18.0: - resolution: {integrity: sha512-BmxsicMR4doGbeEXQu8yqiGmiyvpNvejYJtQ7rvzttEAMxOPoWEHrWyzBQw4x7LrBY9pMrgv4ZlUaF8PGzewHg==} - dev: true - - /@algolia/cache-in-memory@4.18.0: - resolution: {integrity: sha512-evD4dA1nd5HbFdufBxLqlJoob7E2ozlqJZuV3YlirNx5Na4q1LckIuzjNYZs2ddLzuTc/Xd5O3Ibf7OwPskHxw==} - dependencies: - '@algolia/cache-common': 4.18.0 - dev: true - - /@algolia/client-account@4.18.0: - resolution: {integrity: sha512-XsDnlROr3+Z1yjxBJjUMfMazi1V155kVdte6496atvBgOEtwCzTs3A+qdhfsAnGUvaYfBrBkL0ThnhMIBCGcew==} - dependencies: - '@algolia/client-common': 4.18.0 - '@algolia/client-search': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/client-analytics@4.18.0: - resolution: {integrity: sha512-chEUSN4ReqU7uRQ1C8kDm0EiPE+eJeAXiWcBwLhEynfNuTfawN9P93rSZktj7gmExz0C8XmkbBU19IQ05wCNrQ==} + eslint: '>=7.4.0' dependencies: - '@algolia/client-common': 4.18.0 - '@algolia/client-search': 4.18.0 - '@algolia/requester-common': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/client-common@4.18.0: - resolution: {integrity: sha512-7N+soJFP4wn8tjTr3MSUT/U+4xVXbz4jmeRfWfVAzdAbxLAQbHa0o/POSdTvQ8/02DjCLelloZ1bb4ZFVKg7Wg==} - dependencies: - '@algolia/requester-common': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/client-personalization@4.18.0: - resolution: {integrity: sha512-+PeCjODbxtamHcPl+couXMeHEefpUpr7IHftj4Y4Nia1hj8gGq4VlIcqhToAw8YjLeCTfOR7r7xtj3pJcYdP8A==} - dependencies: - '@algolia/client-common': 4.18.0 - '@algolia/requester-common': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/client-search@4.18.0: - resolution: {integrity: sha512-F9xzQXTjm6UuZtnsLIew6KSraXQ0AzS/Ee+OD+mQbtcA/K1sg89tqb8TkwjtiYZ0oij13u3EapB3gPZwm+1Y6g==} - dependencies: - '@algolia/client-common': 4.18.0 - '@algolia/requester-common': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/logger-common@4.18.0: - resolution: {integrity: sha512-46etYgSlkoKepkMSyaoriSn2JDgcrpc/nkOgou/lm0y17GuMl9oYZxwKKTSviLKI5Irk9nSKGwnBTQYwXOYdRg==} - dev: true - - /@algolia/logger-console@4.18.0: - resolution: {integrity: sha512-3P3VUYMl9CyJbi/UU1uUNlf6Z8N2ltW3Oqhq/nR7vH0CjWv32YROq3iGWGxB2xt3aXobdUPXs6P0tHSKRmNA6g==} - dependencies: - '@algolia/logger-common': 4.18.0 - dev: true - - /@algolia/requester-browser-xhr@4.18.0: - resolution: {integrity: sha512-/AcWHOBub2U4TE/bPi4Gz1XfuLK6/7dj4HJG+Z2SfQoS1RjNLshZclU3OoKIkFp8D2NC7+BNsPvr9cPLyW8nyQ==} - dependencies: - '@algolia/requester-common': 4.18.0 - dev: true - - /@algolia/requester-common@4.18.0: - resolution: {integrity: sha512-xlT8R1qYNRBCi1IYLsx7uhftzdfsLPDGudeQs+xvYB4sQ3ya7+ppolB/8m/a4F2gCkEO6oxpp5AGemM7kD27jA==} - dev: true - - /@algolia/requester-node-http@4.18.0: - resolution: {integrity: sha512-TGfwj9aeTVgOUhn5XrqBhwUhUUDnGIKlI0kCBMdR58XfXcfdwomka+CPIgThRbfYw04oQr31A6/95ZH2QVJ9UQ==} - dependencies: - '@algolia/requester-common': 4.18.0 - dev: true - - /@algolia/transporter@4.18.0: - resolution: {integrity: sha512-xbw3YRUGtXQNG1geYFEDDuFLZt4Z8YNKbamHPkzr3rWc6qp4/BqEeXcI2u/P/oMq2yxtXgMxrCxOPA8lyIe5jw==} - dependencies: - '@algolia/cache-common': 4.18.0 - '@algolia/logger-common': 4.18.0 - '@algolia/requester-common': 4.18.0 - dev: true - - /@alloc/quick-lru@5.2.0: - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} + '@antfu/eslint-config-basic': 0.39.7(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.43.0)(typescript@5.1.3) + '@antfu/eslint-config-ts': 0.39.7(eslint@8.43.0)(typescript@5.1.3) + eslint: 8.43.0 + eslint-plugin-vue: 9.15.1(eslint@8.43.0) + local-pkg: 0.4.3 + transitivePeerDependencies: + - '@typescript-eslint/eslint-plugin' + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + - typescript dev: true - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} + /@antfu/eslint-config@0.39.7(eslint@8.43.0)(typescript@5.1.3): + resolution: {integrity: sha512-xztW6zdjHz+yIaw25kn97e3s6vGtAI43YF6wdooioUJPmOXsjSYY9lRh2k3RaHzQALKbNRUjZO8KdjOOLasg1g==} + peerDependencies: + eslint: '>=7.4.0' dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@antfu/eslint-config-vue': 0.39.7(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.43.0)(typescript@5.1.3) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.43.0)(typescript@5.1.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.43.0)(typescript@5.1.3) + eslint: 8.43.0 + eslint-plugin-eslint-comments: 3.2.0(eslint@8.43.0) + eslint-plugin-html: 7.1.0 + eslint-plugin-import: /eslint-plugin-i@2.27.5-3(@typescript-eslint/parser@5.62.0)(eslint@8.43.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.43.0) + eslint-plugin-n: 16.0.1(eslint@8.43.0) + eslint-plugin-promise: 6.1.1(eslint@8.43.0) + eslint-plugin-unicorn: 47.0.0(eslint@8.43.0) + eslint-plugin-vue: 9.15.1(eslint@8.43.0) + eslint-plugin-yml: 1.8.0(eslint@8.43.0) + jsonc-eslint-parser: 2.3.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + - typescript dev: true /@babel/code-frame@7.22.5: @@ -1135,19 +1044,6 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@iconify/types@2.0.0: - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - dev: true - - /@iconify/vue@4.1.1(vue@3.3.4): - resolution: {integrity: sha512-RL85Bm/DAe8y6rT6pux7D2FJSiUEM/TPfyK7GrbAOfTSwrhvwJW+S5yijdGcmtXouA8MtuH9C7l4hiSE4mLMjg==} - peerDependencies: - vue: '>=3' - dependencies: - '@iconify/types': 2.0.0 - vue: 3.3.4 - dev: true - /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1228,10 +1124,6 @@ packages: dev: true optional: true - /@radix-ui/colors@1.0.0: - resolution: {integrity: sha512-l8Rfw7zR6sfPsbXrBq3Xit96Xo+CSFyRFqRX/ls8W/w+HXzbwc5dbVvl+qRjsSIRoC9EiTMRV/QpJHziuTjoqg==} - dev: true - /@rollup/plugin-alias@5.0.0: resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} engines: {node: '>=14.0.0'} @@ -1381,8 +1273,8 @@ packages: resolution: {integrity: sha512-j2tekvJCO7j22cs+LO6i0kRPhmQ9MXaPZ55TzOc1lzkN5b6BWqq4AFjl04s1oRRQ1v5rSe+KEvnLUSTonuls/A==} dev: true - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + /@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true /@types/semver@7.5.0: @@ -1546,18 +1438,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.3.9(@types/node@18.16.18) - vue: 3.3.4 - dev: true - - /@vitejs/plugin-vue@4.2.3(vite@4.4.0-beta.3)(vue@3.3.4): - resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.0.0 - vue: ^3.2.25 - dependencies: - vite: 4.4.0-beta.3 + vite: 4.3.9 vue: 3.3.4 dev: true @@ -2018,22 +1899,6 @@ packages: engines: {node: '>=12'} dev: true - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true - /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -2064,7 +1929,7 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /autoprefixer@10.4.14(postcss@8.4.25): + /autoprefixer@10.4.14(postcss@8.4.24): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -2076,20 +1941,7 @@ packages: fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.25 - postcss-value-parser: 4.2.0 - dev: true - - /autoprefixer@9.8.8: - resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} - hasBin: true - dependencies: - browserslist: 4.21.9 - caniuse-lite: 1.0.30001507 - normalize-range: 0.1.2 - num2fraction: 1.2.2 - picocolors: 0.2.1 - postcss: 7.0.39 + postcss: 8.4.24 postcss-value-parser: 4.2.0 dev: true @@ -2107,10 +1959,6 @@ packages: engines: {node: '>=8'} dev: true - /body-scroll-lock@4.0.0-beta.0: - resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} - dev: true - /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true @@ -2146,9 +1994,15 @@ packages: update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.3 dev: true /cac@6.7.14: @@ -2168,11 +2022,6 @@ packages: engines: {node: '>=6'} dev: true - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: true - /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -2231,6 +2080,18 @@ packages: fsevents: 2.3.2 dev: true + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true + + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -2283,11 +2144,6 @@ packages: engines: {node: '>= 6'} dev: true - /commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: true - /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -2447,16 +2303,6 @@ packages: minimist: 0.1.0 dev: true - /detective@5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - dependencies: - acorn-node: 1.8.2 - defined: 1.0.1 - minimist: 1.2.8 - dev: true - /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true @@ -2477,6 +2323,13 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -2809,11 +2662,11 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.2.2(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.43.0)(typescript@5.1.3): - resolution: {integrity: sha512-euzbp06F934Z7UDl5ZUaRPLAc9MKjh0rMPERrHT7UhlCEwgb25kBj37TvMgWeHZVkR5I9CayswrpoaqZU1RImw==} + /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.43.0)(typescript@5.1.3): + resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 eslint: ^7.0.0 || ^8.0.0 jest: '*' peerDependenciesMeta: @@ -3121,15 +2974,6 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -3227,17 +3071,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -3486,13 +3319,6 @@ packages: has-bigints: 1.0.2 dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} @@ -3654,11 +3480,6 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jiti@1.19.1: - resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==} - hasBin: true - dev: true - /js-beautify@1.14.6: resolution: {integrity: sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==} engines: {node: '>=10'} @@ -3729,10 +3550,6 @@ packages: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: true - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -3767,15 +3584,6 @@ packages: type-check: 0.4.0 dev: true - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: true - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - /load-json-file@4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} @@ -3852,8 +3660,20 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /mark.js@8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + /mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.12 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true /memorystream@0.3.1: @@ -3952,14 +3772,6 @@ packages: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} dev: true - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: true - /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -4004,16 +3816,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true - /npm-run-all@4.1.5: resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} engines: {node: '>= 4'} @@ -4049,11 +3851,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - dev: true - /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -4140,16 +3937,6 @@ packages: json-parse-better-errors: 1.0.2 dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.22.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -4226,21 +4013,11 @@ packages: hasBin: true dev: true - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true - /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} dev: true - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true - /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: @@ -4249,62 +4026,34 @@ packages: pathe: 1.1.1 dev: true - /postcss-functions@3.0.0: - resolution: {integrity: sha512-N5yWXWKA+uhpLQ9ZhBRl2bIAdM6oVJYpDojuI1nF2SzXBimJcdjFwiAouBVbO5VuOF3qA6BSFWFc3wXbbj72XQ==} - dependencies: - glob: 7.2.3 - object-assign: 4.1.1 - postcss: 6.0.23 - postcss-value-parser: 3.3.1 + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} dev: true - /postcss-import@15.1.0(postcss@8.4.25): + /postcss-import@15.1.0(postcss@8.4.24): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.25 + postcss: 8.4.24 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.2 dev: true - /postcss-js@2.0.3: - resolution: {integrity: sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==} - dependencies: - camelcase-css: 2.0.1 - postcss: 7.0.39 - dev: true - - /postcss-js@4.0.1(postcss@8.4.25): + /postcss-js@4.0.1(postcss@8.4.24): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.25 - dev: true - - /postcss-load-config@3.1.4(postcss@7.0.39): - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - postcss: 7.0.39 - yaml: 1.10.2 + postcss: 8.4.24 dev: true - /postcss-load-config@4.0.1(postcss@8.4.25): + /postcss-load-config@4.0.1(postcss@8.4.24): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -4317,24 +4066,17 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.25 + postcss: 8.4.24 yaml: 2.3.1 dev: true - /postcss-nested@4.2.3: - resolution: {integrity: sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==} - dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.0.13 - dev: true - - /postcss-nested@6.0.1(postcss@8.4.25): + /postcss-nested@6.0.1(postcss@8.4.24): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.25 + postcss: 8.4.24 postcss-selector-parser: 6.0.13 dev: true @@ -4346,33 +4088,12 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-value-parser@3.3.1: - resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} - dev: true - /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss@6.0.23: - resolution: {integrity: sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==} - engines: {node: '>=4.0.0'} - dependencies: - chalk: 2.4.2 - source-map: 0.6.1 - supports-color: 5.5.0 - dev: true - - /postcss@7.0.39: - resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} - engines: {node: '>=6.0.0'} - dependencies: - picocolors: 0.2.1 - source-map: 0.6.1 - dev: true - - /postcss@8.4.25: - resolution: {integrity: sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==} + /postcss@8.4.24: + resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -4478,6 +4199,15 @@ packages: pify: 2.3.0 dev: true + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + /read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} @@ -4487,6 +4217,16 @@ packages: path-type: 3.0.0 dev: true + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -4494,13 +4234,6 @@ packages: picomatch: 2.3.1 dev: true - /reduce-css-calc@2.1.8: - resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==} - dependencies: - css-unit-converter: 1.1.2 - postcss-value-parser: 3.3.1 - dev: true - /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true @@ -4830,20 +4563,6 @@ packages: acorn: 8.9.0 dev: true - /sucrase@3.32.0: - resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} - engines: {node: '>=8'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: true - /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4871,8 +4590,8 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tailwindcss@3.3.2: - resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + /tailwindcss@3.3.3: + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -4890,11 +4609,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.25 - postcss-import: 15.1.0(postcss@8.4.25) - postcss-js: 4.0.1(postcss@8.4.25) - postcss-load-config: 4.0.1(postcss@8.4.25) - postcss-nested: 6.0.1(postcss@8.4.25) + postcss: 8.4.24 + postcss-import: 15.1.0(postcss@8.4.24) + postcss-js: 4.0.1(postcss@8.4.24) + postcss-load-config: 4.0.1(postcss@8.4.24) + postcss-nested: 6.0.1(postcss@8.4.24) postcss-selector-parser: 6.0.13 resolve: 1.22.2 sucrase: 3.32.0 @@ -4906,19 +4625,6 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: true - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: true - /tinybench@2.5.0: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true @@ -4968,10 +4674,6 @@ packages: punycode: 2.3.0 dev: true - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true - /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -5096,7 +4798,7 @@ packages: - terser dev: true - /vite@4.3.9(@types/node@18.16.18): + /vite@4.3.9: resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -5121,16 +4823,15 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.18 esbuild: 0.17.19 - postcss: 8.4.25 + postcss: 8.4.24 rollup: 3.25.1 optionalDependencies: fsevents: 2.3.2 dev: true - /vite@4.4.0-beta.3: - resolution: {integrity: sha512-IC/thYTvArOFRJ4qvvudnu4KKZOVc+gduS3I9OfC5SbP/Rf4kkP7z6Of2QpKeOSVqwIK24khW6VOUmVD/0yzSQ==} + /vite@4.3.9(@types/node@18.16.18): + resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -5498,9 +5199,13 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} + /yaml-eslint-parser@1.2.2: + resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.1 + lodash: 4.17.21 + yaml: 2.3.1 dev: true /yaml@2.3.1: diff --git a/tests/.gitignore b/tests/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/tests/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/tests/.vscode/extensions.json b/tests/.vscode/extensions.json deleted file mode 100644 index c0a6e5a48..000000000 --- a/tests/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] -} diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index ef72fd524..000000000 --- a/tests/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Vue 3 + TypeScript + Vite - -This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` -
Tab value: {{ tabValue }}
Value: {{ rootOpen ? "checked" : "unchecked" }}
Single: {{ radioStateSingle }}