diff --git a/.commitlintrc b/.commitlintrc new file mode 100644 index 0000000..0df1d25 --- /dev/null +++ b/.commitlintrc @@ -0,0 +1,5 @@ +{ + "extends": [ + "@commitlint/config-conventional" + ] +} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..ef91184 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,17 @@ +version: 2 + +updates: + - package-ecosystem: npm + directory: / + schedule: + interval: daily + + - package-ecosystem: docker + directory: / + schedule: + interval: daily + + - package-ecosystem: github-actions + directory: / + schedule: + interval: daily diff --git a/.github/workflows/release-docs.yml b/.github/workflows/release-docs.yml new file mode 100644 index 0000000..1f773fe --- /dev/null +++ b/.github/workflows/release-docs.yml @@ -0,0 +1,52 @@ +name: release-docs + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: pnpm/action-setup@v3 + with: + version: latest + + - uses: actions/setup-node@v4 + with: + cache: pnpm + node-version: latest + + - uses: actions/configure-pages@v4 + + - run: pnpm install + - run: pnpm docs:build + + - uses: actions/upload-pages-artifact@v3 + with: + path: .vitepress/dist + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + needs: build + runs-on: ubuntu-latest + name: Deploy + steps: + - id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..46567ce --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,89 @@ +name: release + +on: + push: + branches: + - main + +env: + HUSKY: 0 + +jobs: + release-please: + runs-on: ubuntu-latest + outputs: + release_created: ${{ steps.release.outputs.release_created }} + tag_name: ${{ steps.release.outputs.tag_name }} + + steps: + - name: release-please + id: release + uses: google-github-actions/release-please-action@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + release-type: node + + release-assets: + needs: release-please + runs-on: ubuntu-latest + if: ${{ needs.release-please.outputs.release_created }} + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v3 + with: + version: latest + + - uses: actions/setup-node@v4 + with: + cache: pnpm + node-version: latest + + - name: install dependencies + run: pnpm install + + - name: build + run: pnpm build + + - name: compress dist + run: tar czvf compressed-dist.tgz -C dist . + + - name: attach github release artifacts + uses: softprops/action-gh-release@v2 + with: + files: compressed-dist.tgz + tag_name: ${{ needs.release-please.outputs.tag_name }} + + release-image: + needs: release-please + runs-on: ubuntu-latest + if: ${{ needs.release-please.outputs.release_created }} + steps: + - uses: actions/checkout@v4 + + - name: set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: set up docker buildx + uses: docker/setup-buildx-action@v3 + id: buildx + + - name: login to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: build and publish ghcr.io docker image + uses: docker/build-push-action@v5 + with: + context: . + builder: ${{ steps.buildx.outputs.name }} + file: Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ghcr.io/${{ github.repository }}:latest + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fe29467 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Nuxt dev/build outputs +.output +.data +.nuxt +.nitro +.cache +dist + +# Node dependencies +node_modules + +# Logs +logs +*.log + +# Misc +.DS_Store +.fleet +.idea + +# Local env files +.env +.env.* +!.env.example + +# Vitepress +.vitepress/cache \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000..abf5b4e --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1 @@ +pnpm commitlint -e diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..cb2c84d --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +pnpm lint-staged diff --git a/.lintstagedrc b/.lintstagedrc new file mode 100644 index 0000000..089d957 --- /dev/null +++ b/.lintstagedrc @@ -0,0 +1,5 @@ +{ + "*": "prettier --ignore-unknown --write", + "package.json": "sort-package-json", + "*.{ts,vue}": "eslint --fix" +} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..7f8e786 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "none", + "organizeImportsSkipDestructiveCodeActions": true, + "plugins": ["prettier-plugin-organize-imports", "prettier-plugin-tailwindcss"] +} diff --git a/.vitepress/config.ts b/.vitepress/config.ts new file mode 100644 index 0000000..62d5af0 --- /dev/null +++ b/.vitepress/config.ts @@ -0,0 +1,30 @@ +import { defineConfig } from 'vitepress' + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: 'dae-web', + description: 'A VitePress Site', + srcDir: 'docs', + base: '/dae-web', + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: 'Home', link: '/' }, + { text: 'Examples', link: '/markdown-examples' } + ], + + sidebar: [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' } + ] + } + ], + + socialLinks: [ + { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + ] + } +}) diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a4bf8c7 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "cSpell.words": ["randomizedalpn", "randomizednoalpn"], + "typescript.enablePromptUseWorkspaceTsdk": true, + "typescript.tsdk": "node_modules/typescript/lib", + "vue.server.hybridMode": false +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3891263 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +# 多步骤构建 + +# 构建步骤 +FROM node as builder + +WORKDIR /build +ENV HUSKY=0 + +COPY . . + +# corepack 安装包管理 pnpm +RUN corepack enable +RUN corepack prepare pnpm@latest --activate + +# 安装依赖 +RUN pnpm install +# 构建 +RUN pnpm build + +# 运行步骤 +FROM node as runner + +WORKDIR /app + +COPY --from=builder /build/.output . + +# nodejs 执行入口文件,启动服务 +CMD ["node", "./server/index.mjs"] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0b13357 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License Copyright (c) 2024 daeuniverse + +Permission is hereby granted, free of +charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice +(including the next paragraph) shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO +EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f5db2a2 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# Nuxt 3 Minimal Starter + +Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. + +## Setup + +Make sure to install the dependencies: + +```bash +# npm +npm install + +# pnpm +pnpm install + +# yarn +yarn install + +# bun +bun install +``` + +## Development Server + +Start the development server on `http://localhost:3000`: + +```bash +# npm +npm run dev + +# pnpm +pnpm run dev + +# yarn +yarn dev + +# bun +bun run dev +``` + +## Production + +Build the application for production: + +```bash +# npm +npm run build + +# pnpm +pnpm run build + +# yarn +yarn build + +# bun +bun run build +``` + +Locally preview production build: + +```bash +# npm +npm run preview + +# pnpm +pnpm run preview + +# yarn +yarn preview + +# bun +bun run preview +``` + +Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. diff --git a/app.config.ts b/app.config.ts new file mode 100644 index 0000000..4c82f71 --- /dev/null +++ b/app.config.ts @@ -0,0 +1,7 @@ +export default defineAppConfig({ + ui: { + icons: { + dynamic: true + } + } +}) diff --git a/app.vue b/app.vue new file mode 100644 index 0000000..1f072e0 --- /dev/null +++ b/app.vue @@ -0,0 +1,16 @@ + + + diff --git a/assets/css/base.css b/assets/css/base.css new file mode 100644 index 0000000..bed0a98 --- /dev/null +++ b/assets/css/base.css @@ -0,0 +1,25 @@ +:root { + --primary-50: 255 251 235; + --primary-100: 254 243 199; + --primary-200: 253 230 138; + --primary-300: 252 211 77; + --primary-400: 251 191 36; + --primary-500: 245 158 11; + --primary-600: 217 119 6; + --primary-700: 180 83 9; + --primary-800: 146 64 14; + --primary-900: 120 53 15; + --primary-950: 69 26 3; + --surface-0: 255 255 255; + --surface-50: 248 250 252; + --surface-100: 241 245 249; + --surface-200: 226 232 240; + --surface-300: 203 213 225; + --surface-400: 148 163 184; + --surface-500: 100 116 139; + --surface-600: 71 85 105; + --surface-700: 45 55 72; + --surface-800: 30 41 59; + --surface-900: 15 23 42; + --surface-950: 3 6 23; +} diff --git a/components/CodeEditor.client.vue b/components/CodeEditor.client.vue new file mode 100644 index 0000000..fd172af --- /dev/null +++ b/components/CodeEditor.client.vue @@ -0,0 +1,100 @@ + + + diff --git a/components/GroupFormModal.vue b/components/GroupFormModal.vue new file mode 100644 index 0000000..5c3efa9 --- /dev/null +++ b/components/GroupFormModal.vue @@ -0,0 +1,5 @@ + + + diff --git a/components/ImportNodeModal.vue b/components/ImportNodeModal.vue new file mode 100644 index 0000000..69514f9 --- /dev/null +++ b/components/ImportNodeModal.vue @@ -0,0 +1,108 @@ + + + diff --git a/components/ImportSubscriptionModal.vue b/components/ImportSubscriptionModal.vue new file mode 100644 index 0000000..bb75200 --- /dev/null +++ b/components/ImportSubscriptionModal.vue @@ -0,0 +1,120 @@ + + + diff --git a/components/ResourceConfig.vue b/components/ResourceConfig.vue new file mode 100644 index 0000000..cd5aa9f --- /dev/null +++ b/components/ResourceConfig.vue @@ -0,0 +1,144 @@ + + + diff --git a/components/ResourceDNS.vue b/components/ResourceDNS.vue new file mode 100644 index 0000000..757afa3 --- /dev/null +++ b/components/ResourceDNS.vue @@ -0,0 +1,77 @@ + + + diff --git a/components/ResourceGroup.vue b/components/ResourceGroup.vue new file mode 100644 index 0000000..171cec6 --- /dev/null +++ b/components/ResourceGroup.vue @@ -0,0 +1,98 @@ + + + diff --git a/components/ResourceNode.vue b/components/ResourceNode.vue new file mode 100644 index 0000000..68bfdf8 --- /dev/null +++ b/components/ResourceNode.vue @@ -0,0 +1,115 @@ + + + diff --git a/components/ResourceRouting.vue b/components/ResourceRouting.vue new file mode 100644 index 0000000..1dea157 --- /dev/null +++ b/components/ResourceRouting.vue @@ -0,0 +1,110 @@ + + + diff --git a/components/ResourceSubscription.vue b/components/ResourceSubscription.vue new file mode 100644 index 0000000..a01b9b4 --- /dev/null +++ b/components/ResourceSubscription.vue @@ -0,0 +1,169 @@ + + + diff --git a/components/RoutingFormModal.vue b/components/RoutingFormModal.vue new file mode 100644 index 0000000..64a3580 --- /dev/null +++ b/components/RoutingFormModal.vue @@ -0,0 +1,28 @@ + + + diff --git a/components/TextLogo.vue b/components/TextLogo.vue new file mode 100644 index 0000000..ad9d1a4 --- /dev/null +++ b/components/TextLogo.vue @@ -0,0 +1,6 @@ + diff --git a/components/TheHeader.vue b/components/TheHeader.vue new file mode 100644 index 0000000..305d7af --- /dev/null +++ b/components/TheHeader.vue @@ -0,0 +1,161 @@ + + + diff --git a/components/form/FormControl.vue b/components/form/FormControl.vue new file mode 100644 index 0000000..6c84062 --- /dev/null +++ b/components/form/FormControl.vue @@ -0,0 +1,18 @@ + + + diff --git a/components/form/FormDescription.vue b/components/form/FormDescription.vue new file mode 100644 index 0000000..263b58a --- /dev/null +++ b/components/form/FormDescription.vue @@ -0,0 +1,20 @@ + + + diff --git a/components/form/FormItem.vue b/components/form/FormItem.vue new file mode 100644 index 0000000..3c70b66 --- /dev/null +++ b/components/form/FormItem.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/components/form/FormLabel.vue b/components/form/FormLabel.vue new file mode 100644 index 0000000..7af8dff --- /dev/null +++ b/components/form/FormLabel.vue @@ -0,0 +1,26 @@ + + + diff --git a/components/form/FormMessage.vue b/components/form/FormMessage.vue new file mode 100644 index 0000000..6dad542 --- /dev/null +++ b/components/form/FormMessage.vue @@ -0,0 +1,14 @@ + + + diff --git a/components/form/index.ts b/components/form/index.ts new file mode 100644 index 0000000..24e8038 --- /dev/null +++ b/components/form/index.ts @@ -0,0 +1,5 @@ +export { default as FormControl } from './FormControl.vue' +export { default as FormDescription } from './FormDescription.vue' +export { default as FormItem } from './FormItem.vue' +export { default as FormLabel } from './FormLabel.vue' +export { default as FormMessage } from './FormMessage.vue' diff --git a/components/form/useFormField.ts b/components/form/useFormField.ts new file mode 100644 index 0000000..7ef2833 --- /dev/null +++ b/components/form/useFormField.ts @@ -0,0 +1,29 @@ +import { FieldContextKey } from 'vee-validate' +import { FORM_ITEM_INJECTION_KEY } from './FormItem.vue' + +export const useFormField = () => { + const fieldContext = inject(FieldContextKey) + const fieldItemContext = inject(FORM_ITEM_INJECTION_KEY) + + const fieldState = { + valid: useIsFieldValid(), + isDirty: useIsFieldDirty(), + isTouched: useIsFieldTouched(), + error: useFieldError() + } + + if (!fieldContext) + throw new Error('useFormField should be used within ') + + const { name } = fieldContext + const id = fieldItemContext + + return { + id, + name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState + } +} diff --git a/docs/api-examples.md b/docs/api-examples.md new file mode 100644 index 0000000..691df9c --- /dev/null +++ b/docs/api-examples.md @@ -0,0 +1,55 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data + +
{{ theme }}
+ +### Page Data + +
{{ page }}
+ +### Page Frontmatter + +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data + +
{{ theme }}
+ +### Page Data + +
{{ page }}
+ +### Page Frontmatter + +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..e52380c --- /dev/null +++ b/docs/index.md @@ -0,0 +1,24 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: 'dae-web' + text: 'A VitePress Site' + tagline: My great project tagline + actions: + - theme: brand + text: Markdown Examples + link: /markdown-examples + - theme: alt + text: API Examples + link: /api-examples + +features: + - title: Feature A + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature B + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature C + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit +--- diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md new file mode 100644 index 0000000..f9258a5 --- /dev/null +++ b/docs/markdown-examples.md @@ -0,0 +1,85 @@ +# Markdown Extension Examples + +This page demonstrates some of the built-in markdown extensions provided by VitePress. + +## Syntax Highlighting + +VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: + +**Input** + +````md +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` +```` + +**Output** + +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` + +## Custom Containers + +**Input** + +```md +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: +``` + +**Output** + +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: + +## More + +Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..4f86125 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,11 @@ +import prettierRecommended from 'eslint-plugin-prettier/recommended' +import withNuxt from './.nuxt/eslint.config.mjs' + +export default withNuxt( + { + rules: { + 'import/first': 'off' + } + }, + prettierRecommended +) diff --git a/graphql-env.d.ts b/graphql-env.d.ts new file mode 100644 index 0000000..49c3190 --- /dev/null +++ b/graphql-env.d.ts @@ -0,0 +1,65 @@ +/* eslint-disable */ +/* prettier-ignore */ + +/** An IntrospectionQuery representation of your schema. + * + * @remarks + * This is an introspection of your schema saved as a file by GraphQLSP. + * It will automatically be used by `gql.tada` to infer the types of your GraphQL documents. + * If you need to reuse this data or update your `scalars`, update `tadaOutputLocation` to + * instead save to a .ts instead of a .d.ts file. + */ +export type introspection = { + query: 'Query'; + mutation: 'Mutation'; + subscription: never; + types: { + 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'healthCheck': { name: 'healthCheck'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'token': { name: 'token'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'numberUsers': { name: 'numberUsers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'jsonStorage': { name: 'jsonStorage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'user': { name: 'user'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; 'configFlatDesc': { name: 'configFlatDesc'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigFlatDesc'; ofType: null; }; }; }; } }; 'configs': { name: 'configs'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Config'; ofType: null; }; }; }; } }; 'dnss': { name: 'dnss'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Dns'; ofType: null; }; }; }; } }; 'routings': { name: 'routings'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Routing'; ofType: null; }; }; }; } }; 'parsedRouting': { name: 'parsedRouting'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DaeRouting'; ofType: null; }; } }; 'parsedDns': { name: 'parsedDns'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DaeDns'; ofType: null; }; } }; 'subscriptions': { name: 'subscriptions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Subscription'; ofType: null; }; }; }; } }; 'groups': { name: 'groups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; }; }; } }; 'group': { name: 'group'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'nodes': { name: 'nodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'NodesConnection'; ofType: null; }; } }; 'general': { name: 'general'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'General'; ofType: null; }; } }; }; }; + 'Int': unknown; + 'String': unknown; + 'ID': unknown; + 'Boolean': unknown; + 'Mutation': { kind: 'OBJECT'; name: 'Mutation'; fields: { 'createUser': { name: 'createUser'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createConfig': { name: 'createConfig'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Config'; ofType: null; }; } }; 'createDns': { name: 'createDns'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Dns'; ofType: null; }; } }; 'createRouting': { name: 'createRouting'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Routing'; ofType: null; }; } }; 'setJsonStorage': { name: 'setJsonStorage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'removeJsonStorage': { name: 'removeJsonStorage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'updateAvatar': { name: 'updateAvatar'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'updateName': { name: 'updateName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'updateUsername': { name: 'updateUsername'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'updatePassword': { name: 'updatePassword'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updateConfig': { name: 'updateConfig'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Config'; ofType: null; }; } }; 'updateDns': { name: 'updateDns'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Dns'; ofType: null; }; } }; 'updateRouting': { name: 'updateRouting'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Routing'; ofType: null; }; } }; 'renameConfig': { name: 'renameConfig'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'renameDns': { name: 'renameDns'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'renameRouting': { name: 'renameRouting'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'removeConfig': { name: 'removeConfig'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'removeDns': { name: 'removeDns'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'removeRouting': { name: 'removeRouting'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'selectConfig': { name: 'selectConfig'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'selectDns': { name: 'selectDns'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'selectRouting': { name: 'selectRouting'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'run': { name: 'run'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'importNodes': { name: 'importNodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'NodeImportResult'; ofType: null; }; }; }; } }; 'updateNode': { name: 'updateNode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Node'; ofType: null; }; } }; 'removeNodes': { name: 'removeNodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'tagNode': { name: 'tagNode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'importSubscription': { name: 'importSubscription'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SubscriptionImportResult'; ofType: null; }; } }; 'removeSubscriptions': { name: 'removeSubscriptions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'tagSubscription': { name: 'tagSubscription'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'updateSubscription': { name: 'updateSubscription'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Subscription'; ofType: null; }; } }; 'createGroup': { name: 'createGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'groupSetPolicy': { name: 'groupSetPolicy'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'groupAddSubscriptions': { name: 'groupAddSubscriptions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'groupDelSubscriptions': { name: 'groupDelSubscriptions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'groupAddNodes': { name: 'groupAddNodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'groupDelNodes': { name: 'groupDelNodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'renameGroup': { name: 'renameGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'removeGroup': { name: 'removeGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'Role': { kind: 'ENUM'; name: 'Role'; type: 'admin'; }; + 'ImportArgument': { kind: 'INPUT_OBJECT'; name: 'ImportArgument'; inputFields: [{ name: 'link'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'tag'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'NodeImportResult': { kind: 'OBJECT'; name: 'NodeImportResult'; fields: { 'link': { name: 'link'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'error': { name: 'error'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'node': { name: 'node'; type: { kind: 'OBJECT'; name: 'Node'; ofType: null; } }; }; }; + 'SubscriptionImportResult': { kind: 'OBJECT'; name: 'SubscriptionImportResult'; fields: { 'link': { name: 'link'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nodeImportResult': { name: 'nodeImportResult'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'NodeImportResult'; ofType: null; }; }; }; } }; 'sub': { name: 'sub'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Subscription'; ofType: null; }; } }; }; }; + 'PolicyParam': { kind: 'INPUT_OBJECT'; name: 'PolicyParam'; inputFields: [{ name: 'key'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'val'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'ConfigFlatDesc': { kind: 'OBJECT'; name: 'ConfigFlatDesc'; fields: { 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'mapping': { name: 'mapping'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'isArray': { name: 'isArray'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'defaultValue': { name: 'defaultValue'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'required': { name: 'required'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'desc': { name: 'desc'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'General': { kind: 'OBJECT'; name: 'General'; fields: { 'dae': { name: 'dae'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Dae'; ofType: null; }; } }; 'interfaces': { name: 'interfaces'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Interface'; ofType: null; }; }; }; } }; 'schema': { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Dae': { kind: 'OBJECT'; name: 'Dae'; fields: { 'running': { name: 'running'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'modified': { name: 'modified'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'version': { name: 'version'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Interface': { kind: 'OBJECT'; name: 'Interface'; fields: { 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'flag': { name: 'flag'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'InterfaceFlag'; ofType: null; }; } }; 'ifindex': { name: 'ifindex'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'ip': { name: 'ip'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; }; }; + 'InterfaceFlag': { kind: 'OBJECT'; name: 'InterfaceFlag'; fields: { 'up': { name: 'up'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'default': { name: 'default'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DefaultRoute'; ofType: null; }; }; } }; }; }; + 'DefaultRoute': { kind: 'OBJECT'; name: 'DefaultRoute'; fields: { 'ipVersion': { name: 'ipVersion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'gateway': { name: 'gateway'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'source': { name: 'source'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; }; + 'Config': { kind: 'OBJECT'; name: 'Config'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'global': { name: 'global'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Global'; ofType: null; }; } }; 'selected': { name: 'selected'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'Global': { kind: 'OBJECT'; name: 'Global'; fields: { 'tproxyPort': { name: 'tproxyPort'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'tproxyPortProtect': { name: 'tproxyPortProtect'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'soMarkFromDae': { name: 'soMarkFromDae'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'logLevel': { name: 'logLevel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'tcpCheckUrl': { name: 'tcpCheckUrl'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'tcpCheckHttpMethod': { name: 'tcpCheckHttpMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'udpCheckDns': { name: 'udpCheckDns'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'checkInterval': { name: 'checkInterval'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'checkTolerance': { name: 'checkTolerance'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'lanInterface': { name: 'lanInterface'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'wanInterface': { name: 'wanInterface'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'allowInsecure': { name: 'allowInsecure'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'dialMode': { name: 'dialMode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'disableWaitingNetwork': { name: 'disableWaitingNetwork'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'autoConfigKernelParameter': { name: 'autoConfigKernelParameter'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'autoConfigFirewallRule': { name: 'autoConfigFirewallRule'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'sniffingTimeout': { name: 'sniffingTimeout'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'tlsImplementation': { name: 'tlsImplementation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'utlsImitate': { name: 'utlsImitate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'globalInput': { kind: 'INPUT_OBJECT'; name: 'globalInput'; inputFields: [{ name: 'tproxyPort'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'tproxyPortProtect'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'soMarkFromDae'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'logLevel'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'tcpCheckUrl'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'tcpCheckHttpMethod'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'udpCheckDns'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'checkInterval'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'checkTolerance'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lanInterface'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'wanInterface'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'allowInsecure'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'dialMode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'disableWaitingNetwork'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'autoConfigKernelParameter'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'autoConfigFirewallRule'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'sniffingTimeout'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'tlsImplementation'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'utlsImitate'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'Group': { kind: 'OBJECT'; name: 'Group'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nodes': { name: 'nodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Node'; ofType: null; }; }; }; } }; 'subscriptions': { name: 'subscriptions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Subscription'; ofType: null; }; }; }; } }; 'policy': { name: 'policy'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Policy'; ofType: null; }; } }; 'policyParams': { name: 'policyParams'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Param'; ofType: null; }; }; }; } }; }; }; + 'Policy': { kind: 'ENUM'; name: 'Policy'; type: 'random' | 'fixed' | 'min_avg10' | 'min_moving_avg' | 'min'; }; + 'Routing': { kind: 'OBJECT'; name: 'Routing'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'routing': { name: 'routing'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DaeRouting'; ofType: null; }; } }; 'selected': { name: 'selected'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'referenceGroups': { name: 'referenceGroups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; }; }; + 'DaeRouting': { kind: 'OBJECT'; name: 'DaeRouting'; fields: { 'string': { name: 'string'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'rules': { name: 'rules'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RoutingRule'; ofType: null; }; }; }; } }; 'fallback': { name: 'fallback'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'FunctionOrPlaintext'; ofType: null; }; } }; }; }; + 'RoutingRule': { kind: 'OBJECT'; name: 'RoutingRule'; fields: { 'conditions': { name: 'conditions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AndFunctions'; ofType: null; }; } }; 'outbound': { name: 'outbound'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Function'; ofType: null; }; } }; }; }; + 'Function': { kind: 'OBJECT'; name: 'Function'; fields: { 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'not': { name: 'not'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'params': { name: 'params'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Param'; ofType: null; }; }; }; } }; }; }; + 'Param': { kind: 'OBJECT'; name: 'Param'; fields: { 'key': { name: 'key'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'val': { name: 'val'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'AndFunctions': { kind: 'OBJECT'; name: 'AndFunctions'; fields: { 'and': { name: 'and'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Function'; ofType: null; }; }; }; } }; }; }; + 'Plaintext': { kind: 'OBJECT'; name: 'Plaintext'; fields: { 'val': { name: 'val'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'AndFunctionsOrPlaintext': { kind: 'UNION'; name: 'AndFunctionsOrPlaintext'; fields: {}; possibleTypes: 'AndFunctions' | 'Plaintext'; }; + 'FunctionOrPlaintext': { kind: 'UNION'; name: 'FunctionOrPlaintext'; fields: {}; possibleTypes: 'Function' | 'Plaintext'; }; + 'Dns': { kind: 'OBJECT'; name: 'Dns'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'dns': { name: 'dns'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DaeDns'; ofType: null; }; } }; 'selected': { name: 'selected'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'DaeDns': { kind: 'OBJECT'; name: 'DaeDns'; fields: { 'string': { name: 'string'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'upstream': { name: 'upstream'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Param'; ofType: null; }; }; }; } }; 'routing': { name: 'routing'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DnsRouting'; ofType: null; }; } }; }; }; + 'DnsRouting': { kind: 'OBJECT'; name: 'DnsRouting'; fields: { 'request': { name: 'request'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DaeRouting'; ofType: null; }; } }; 'response': { name: 'response'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DaeRouting'; ofType: null; }; } }; }; }; + 'PageInfo': { kind: 'OBJECT'; name: 'PageInfo'; fields: { 'startCursor': { name: 'startCursor'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'endCursor': { name: 'endCursor'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'hasNextPage': { name: 'hasNextPage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'Node': { kind: 'OBJECT'; name: 'Node'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'link': { name: 'link'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'address': { name: 'address'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'protocol': { name: 'protocol'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'tag': { name: 'tag'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'subscriptionID': { name: 'subscriptionID'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; }; }; + 'NodesConnection': { kind: 'OBJECT'; name: 'NodesConnection'; fields: { 'totalCount': { name: 'totalCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'edges': { name: 'edges'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Node'; ofType: null; }; }; }; } }; 'pageInfo': { name: 'pageInfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PageInfo'; ofType: null; }; } }; }; }; + 'Subscription': { kind: 'OBJECT'; name: 'Subscription'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'tag': { name: 'tag'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'link': { name: 'link'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'status': { name: 'status'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'info': { name: 'info'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nodes': { name: 'nodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'NodesConnection'; ofType: null; }; } }; }; }; + 'User': { kind: 'OBJECT'; name: 'User'; fields: { 'username': { name: 'username'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'avatar': { name: 'avatar'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; }; + }; +}; + +import * as gqlTada from 'gql.tada' + +declare module 'gql.tada' { + interface setupSchema { + introspection: introspection + } +} diff --git a/layouts/default.vue b/layouts/default.vue new file mode 100644 index 0000000..b3d4cee --- /dev/null +++ b/layouts/default.vue @@ -0,0 +1,15 @@ + + + diff --git a/locales/en-US.json b/locales/en-US.json new file mode 100644 index 0000000..a7014a7 --- /dev/null +++ b/locales/en-US.json @@ -0,0 +1,13 @@ +{ + "routing": "Routing", + "dns": "DNS", + "config": "Config", + "group": "Group", + "node": "Node", + "subscription": "Subscription", + + "software options": "Software Options", + "interface and kernel options": "Interface and Kernel Options", + "node connectivity check": "Node Connectivity Check", + "connecting options": "Connecting Options" +} diff --git a/locales/zh-CN.json b/locales/zh-CN.json new file mode 100644 index 0000000..eff6660 --- /dev/null +++ b/locales/zh-CN.json @@ -0,0 +1,13 @@ +{ + "routing": "路由", + "dns": "DNS", + "config": "配置", + "group": "群组", + "node": "节点", + "subscription": "订阅", + + "software options": "软件选项", + "interface and kernel options": "接口及内核选项", + "node connectivity check": "节点连通性检测", + "connecting options": "连接选项" +} diff --git a/modules/1.bootstrap.ts b/modules/1.bootstrap.ts new file mode 100644 index 0000000..dce2d8f --- /dev/null +++ b/modules/1.bootstrap.ts @@ -0,0 +1,13 @@ +import envPaths from 'env-paths' +import fs from 'node:fs/promises' +import { defineNuxtModule } from 'nuxt/kit' +import { resolveAvatarDataPath } from '../utils/path.server' + +export default defineNuxtModule({ + async setup() { + const { data } = envPaths('daed') + + await fs.mkdir(data, { recursive: true }) + await fs.mkdir(resolveAvatarDataPath(), { recursive: true }) + } +}) diff --git a/mutations/index.ts b/mutations/index.ts new file mode 100644 index 0000000..04404c0 --- /dev/null +++ b/mutations/index.ts @@ -0,0 +1,281 @@ +// graphql mutation + +// 设置 JSON 对象存储 +export const setJsonStorage = graphql(` + mutation SetJsonStorage($paths: [String!]!, $values: [String!]!) { + setJsonStorage(paths: $paths, values: $values) + } +`) + +// 新建用户 +export const createUser = graphql(` + mutation CreateUser($username: String!, $password: String!) { + createUser(username: $username, password: $password) + } +`) + +// 新建配置 +export const createConfig = graphql(` + mutation CreateConfig($name: String, $global: globalInput) { + createConfig(name: $name, global: $global) { + id + } + } +`) + +// 更新配置 +export const updateConfig = graphql(` + mutation UpdateConfig($id: ID!, $global: globalInput!) { + updateConfig(id: $id, global: $global) { + id + } + } +`) + +// 移除配置 +export const removeConfig = graphql(` + mutation RemoveConfig($id: ID!) { + removeConfig(id: $id) + } +`) + +// 选择配置 +export const selectConfig = graphql(` + mutation SelectConfig($id: ID!) { + selectConfig(id: $id) + } +`) + +// 重命名配置 +export const renameConfig = graphql(` + mutation RenameConfig($id: ID!, $name: String!) { + renameConfig(id: $id, name: $name) + } +`) + +// 新建路由 +export const createRouting = graphql(` + mutation CreateRouting($name: String, $routing: String) { + createRouting(name: $name, routing: $routing) { + id + } + } +`) + +// 更新路由 +export const updateRouting = graphql(` + mutation UpdateRouting($id: ID!, $routing: String!) { + updateRouting(id: $id, routing: $routing) { + id + } + } +`) + +// 移除路由 +export const removeRouting = graphql(` + mutation RemoveRouting($id: ID!) { + removeRouting(id: $id) + } +`) + +// 选择路由 +export const selectRouting = graphql(` + mutation SelectRouting($id: ID!) { + selectRouting(id: $id) + } +`) + +// 重命名路由 +export const renameRouting = graphql(` + mutation RenameRouting($id: ID!, $name: String!) { + renameRouting(id: $id, name: $name) + } +`) + +// 新建 DNS +export const createDNS = graphql(` + mutation CreateDNS($name: String, $dns: String) { + createDns(name: $name, dns: $dns) { + id + } + } +`) + +// 更新 DNS +export const updateDNS = graphql(` + mutation UpdateDNS($id: ID!, $dns: String!) { + updateDns(id: $id, dns: $dns) { + id + } + } +`) + +// 移除 DNS +export const removeDNS = graphql(` + mutation RemoveDNS($id: ID!) { + removeDns(id: $id) + } +`) + +// 选择 DNS +export const selectDNS = graphql(` + mutation SelectDNS($id: ID!) { + selectDns(id: $id) + } +`) + +// 重命名 DNS +export const renameDNS = graphql(` + mutation RenameDNS($id: ID!, $name: String!) { + renameDns(id: $id, name: $name) + } +`) + +// 新建群组 +export const createGroup = graphql(` + mutation CreateGroup( + $name: String! + $policy: Policy! + $policyParams: [PolicyParam!] + ) { + createGroup(name: $name, policy: $policy, policyParams: $policyParams) { + id + } + } +`) + +// 移除群组 +export const removeGroup = graphql(` + mutation RemoveGroup($id: ID!) { + removeGroup(id: $id) + } +`) + +// 设置群组策略 +export const setGroupPolicy = graphql(` + mutation GroupSetPolicy( + $id: ID! + $policy: Policy! + $policyParams: [PolicyParam!] + ) { + groupSetPolicy(id: $id, policy: $policy, policyParams: $policyParams) + } +`) + +// 重命名群组 +export const renameGroup = graphql(` + mutation RenameGroup($id: ID!, $name: String!) { + renameGroup(id: $id, name: $name) + } +`) + +// 向群组添加节点 +export const addGroupNodes = graphql(` + mutation GroupAddNodes($id: ID!, $nodeIDs: [ID!]!) { + groupAddNodes(id: $id, nodeIDs: $nodeIDs) + } +`) + +// 从群组移除节点 +export const removeGroupNodes = graphql(` + mutation GroupDelNodes($id: ID!, $nodeIDs: [ID!]!) { + groupDelNodes(id: $id, nodeIDs: $nodeIDs) + } +`) + +// 向群组添加订阅 +export const addGroupSubscriptions = graphql(` + mutation GroupAddSubscriptions($id: ID!, $subscriptionIDs: [ID!]!) { + groupAddSubscriptions(id: $id, subscriptionIDs: $subscriptionIDs) + } +`) + +// 从群组移除订阅 +export const removeGroupSubscriptions = graphql(` + mutation GroupDelSubscriptions($id: ID!, $subscriptionIDs: [ID!]!) { + groupDelSubscriptions(id: $id, subscriptionIDs: $subscriptionIDs) + } +`) + +// 导入节点 +export const importNodes = graphql(` + mutation ImportNodes($rollbackError: Boolean!, $args: [ImportArgument!]!) { + importNodes(rollbackError: $rollbackError, args: $args) { + link + error + node { + id + } + } + } +`) + +// 更新节点 +export const updateNode = graphql(` + mutation UpdateNode($id: ID!, $newLink: String!) { + updateNode(id: $id, newLink: $newLink) { + id + } + } +`) + +// 移除节点 +export const removeNodes = graphql(` + mutation RemoveNodes($ids: [ID!]!) { + removeNodes(ids: $ids) + } +`) + +// 导入订阅 +export const importSubscription = graphql(` + mutation ImportSubscription($rollbackError: Boolean!, $arg: ImportArgument!) { + importSubscription(rollbackError: $rollbackError, arg: $arg) { + link + sub { + id + } + nodeImportResult { + node { + id + } + } + } + } +`) + +// 更新订阅 +export const updateSubscription = graphql(` + mutation UpdateSubscription($id: ID!) { + updateSubscription(id: $id) { + id + } + } +`) + +// 移除订阅 +export const removeSubscriptions = graphql(` + mutation RemoveSubscriptions($ids: [ID!]!) { + removeSubscriptions(ids: $ids) + } +`) + +// 启动/挂起 +export const run = graphql(` + mutation Run($dry: Boolean!) { + run(dry: $dry) + } +`) + +// 更新头像 +export const updateAvatar = graphql(` + mutation UpdateAvatar($avatar: String!) { + updateAvatar(avatar: $avatar) + } +`) + +// 更新名称 +export const updateName = graphql(` + mutation UpdateName($name: String!) { + updateName(name: $name) + } +`) diff --git a/nuxt.config.ts b/nuxt.config.ts new file mode 100644 index 0000000..d55df8a --- /dev/null +++ b/nuxt.config.ts @@ -0,0 +1,63 @@ +import path from 'node:path' + +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + devtools: { enabled: true }, + + modules: [ + '@nuxt/eslint', + '@pinia/nuxt', + '@vueuse/nuxt', + '@nuxt/fonts', + 'nuxt-monaco-editor', + 'nuxt-zod-i18n', + '@nuxtjs/i18n', + 'nuxt-icon', + '@vee-validate/nuxt', + '@nuxtjs/tailwindcss', + 'nuxt-primevue' + ], + + css: ['~/assets/css/base.css'], + + primevue: { + options: { unstyled: true }, + importPT: { as: 'Wind', from: path.resolve('./presets/wind/') } + }, + + nitro: { + experimental: { + websocket: true + } + }, + + imports: { + presets: [ + { + from: 'gql.tada', + imports: ['graphql'] + } + ] + }, + + i18n: { + defaultLocale: 'zh-CN', + langDir: 'locales', + locales: [ + { + name: 'Chinese (Simplified)', + code: 'zh-CN', + file: 'zh-CN.json' + }, + { + name: 'English (United States)', + code: 'en-US', + file: 'en-US.json' + } + ], + detectBrowserLanguage: { + useCookie: true, + fallbackLocale: 'zh-CN' + } + } +}) diff --git a/package.json b/package.json new file mode 100644 index 0000000..74d81dc --- /dev/null +++ b/package.json @@ -0,0 +1,70 @@ +{ + "name": "dae-web", + "private": true, + "license": "MIT", + "type": "module", + "scripts": { + "build": "nuxt build", + "dev": "nuxt dev", + "docs:build": "vitepress build", + "docs:dev": "vitepress dev", + "docs:preview": "vitepress preview", + "generate": "nuxt generate", + "postinstall": "nuxt prepare", + "prepare": "husky", + "preview": "nuxt preview" + }, + "dependencies": { + "@0no-co/graphqlsp": "^1.11.0", + "@commitlint/config-conventional": "^19.2.2", + "@nuxt/eslint": "^0.3.9", + "@nuxt/fonts": "^0.6.1", + "@nuxt/ui": "^2.15.2", + "@nuxtjs/color-mode": "^3.4.0", + "@nuxtjs/i18n": "^8.3.1", + "@nuxtjs/tailwindcss": "^6.12.0", + "@pinia/nuxt": "^0.5.1", + "@shikijs/monaco": "^1.3.0", + "@types/lodash-es": "^4.17.12", + "@urql/core": "^5.0.2", + "@vee-validate/nuxt": "^4.12.6", + "@vee-validate/zod": "^4.12.6", + "@volar/vue-typescript": "^1.6.5", + "@vueuse/components": "^10.9.0", + "@vueuse/core": "^10.9.0", + "@vueuse/nuxt": "^10.9.0", + "clsx": "^2.1.1", + "commitlint": "^19.3.0", + "dayjs": "^1.11.10", + "env-paths": "^3.0.0", + "eslint": "^9.1.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "gql.tada": "^1.5.7", + "husky": "^9.0.11", + "lint-staged": "^15.2.2", + "lodash-es": "^4.17.21", + "monaco-editor": "^0.48.0", + "nuxt": "^3.11.2", + "nuxt-icon": "^0.6.10", + "nuxt-monaco-editor": "^1.2.9", + "nuxt-primevue": "^0.3.1", + "nuxt-zod-i18n": "^1.6.0", + "prettier": "^3.2.5", + "prettier-plugin-organize-imports": "^3.2.4", + "prettier-plugin-tailwindcss": "^0.5.14", + "primevue": "^3.51.0", + "radix-vue": "^1.7.2", + "shiki": "^1.3.0", + "sort-package-json": "^2.10.0", + "tailwind-merge": "^2.3.0", + "tailwindcss": "^3.4.3", + "typescript": "^5.4.5", + "vee-validate": "^4.12.6", + "vitepress": "^1.1.3", + "vue": "^3.4.25", + "vue-router": "^4.3.2", + "vue-sonner": "^1.1.2", + "zod": "^3.23.4" + } +} diff --git a/pages/index.vue b/pages/index.vue new file mode 100644 index 0000000..01265bc --- /dev/null +++ b/pages/index.vue @@ -0,0 +1,54 @@ + + + diff --git a/pages/setup.vue b/pages/setup.vue new file mode 100644 index 0000000..65fbcc2 --- /dev/null +++ b/pages/setup.vue @@ -0,0 +1,105 @@ + + + diff --git a/pages/test.vue b/pages/test.vue new file mode 100644 index 0000000..af4f952 --- /dev/null +++ b/pages/test.vue @@ -0,0 +1,11 @@ + + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..4458eff --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,16298 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + .: + dependencies: + '@0no-co/graphqlsp': + specifier: ^1.11.0 + version: 1.11.0(encoding@0.1.13)(typescript@5.4.5) + '@commitlint/config-conventional': + specifier: ^19.2.2 + version: 19.2.2 + '@nuxt/eslint': + specifier: ^0.3.9 + version: 0.3.9(eslint@9.1.1)(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(typescript@5.4.5)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + '@nuxt/fonts': + specifier: ^0.6.1 + version: 0.6.1(encoding@0.1.13)(ioredis@5.3.2)(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + '@nuxt/ui': + specifier: ^2.15.2 + version: 2.15.2(focus-trap@7.5.4)(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + '@nuxtjs/color-mode': + specifier: ^3.4.0 + version: 3.4.0(rollup@4.13.2) + '@nuxtjs/i18n': + specifier: ^8.3.1 + version: 8.3.1(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5)) + '@nuxtjs/tailwindcss': + specifier: ^6.12.0 + version: 6.12.0(rollup@4.13.2) + '@pinia/nuxt': + specifier: ^0.5.1 + version: 0.5.1(rollup@4.13.2)(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5)) + '@shikijs/monaco': + specifier: ^1.3.0 + version: 1.3.0 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 + '@urql/core': + specifier: ^5.0.2 + version: 5.0.2(graphql@16.8.1) + '@vee-validate/nuxt': + specifier: ^4.12.6 + version: 4.12.6(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5)) + '@vee-validate/zod': + specifier: ^4.12.6 + version: 4.12.6(vue@3.4.25(typescript@5.4.5)) + '@volar/vue-typescript': + specifier: ^1.6.5 + version: 1.6.5(typescript@5.4.5) + '@vueuse/components': + specifier: ^10.9.0 + version: 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/core': + specifier: ^10.9.0 + version: 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/nuxt': + specifier: ^10.9.0 + version: 10.9.0(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5)) + clsx: + specifier: ^2.1.1 + version: 2.1.1 + commitlint: + specifier: ^19.3.0 + version: 19.3.0(@types/node@20.12.2)(typescript@5.4.5) + dayjs: + specifier: ^1.11.10 + version: 1.11.10 + env-paths: + specifier: ^3.0.0 + version: 3.0.0 + eslint: + specifier: ^9.1.1 + version: 9.1.1 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@9.1.1) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@9.1.1))(eslint@9.1.1)(prettier@3.2.5) + gql.tada: + specifier: ^1.5.7 + version: 1.5.7(encoding@0.1.13)(graphql@16.8.1)(svelte@4.2.15)(typescript@5.4.5) + husky: + specifier: ^9.0.11 + version: 9.0.11 + lint-staged: + specifier: ^15.2.2 + version: 15.2.2 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + monaco-editor: + specifier: ^0.48.0 + version: 0.48.0 + nuxt: + specifier: ^3.11.2 + version: 3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + nuxt-icon: + specifier: ^0.6.10 + version: 0.6.10(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + nuxt-monaco-editor: + specifier: ^1.2.9 + version: 1.2.9(monaco-editor@0.48.0)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + nuxt-primevue: + specifier: ^0.3.1 + version: 0.3.1(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5)) + nuxt-zod-i18n: + specifier: ^1.6.0 + version: 1.6.0(rollup@4.13.2) + prettier: + specifier: ^3.2.5 + version: 3.2.5 + prettier-plugin-organize-imports: + specifier: ^3.2.4 + version: 3.2.4(@volar/vue-typescript@1.6.5(typescript@5.4.5))(prettier@3.2.5)(typescript@5.4.5) + prettier-plugin-tailwindcss: + specifier: ^0.5.14 + version: 0.5.14(prettier-plugin-organize-imports@3.2.4(@volar/vue-typescript@1.6.5(typescript@5.4.5))(prettier@3.2.5)(typescript@5.4.5))(prettier@3.2.5) + primevue: + specifier: ^3.51.0 + version: 3.51.0(vue@3.4.25(typescript@5.4.5)) + radix-vue: + specifier: ^1.7.2 + version: 1.7.2(vue@3.4.25(typescript@5.4.5)) + shiki: + specifier: ^1.3.0 + version: 1.3.0 + sort-package-json: + specifier: ^2.10.0 + version: 2.10.0 + tailwind-merge: + specifier: ^2.3.0 + version: 2.3.0 + tailwindcss: + specifier: ^3.4.3 + version: 3.4.3 + typescript: + specifier: ^5.4.5 + version: 5.4.5 + vee-validate: + specifier: ^4.12.6 + version: 4.12.6(vue@3.4.25(typescript@5.4.5)) + vitepress: + specifier: ^1.1.3 + version: 1.1.3(@algolia/client-search@4.23.2)(@types/node@20.12.2)(fuse.js@6.6.2)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.30.2)(typescript@5.4.5) + vue: + specifier: ^3.4.25 + version: 3.4.25(typescript@5.4.5) + vue-router: + specifier: ^4.3.2 + version: 4.3.2(vue@3.4.25(typescript@5.4.5)) + vue-sonner: + specifier: ^1.1.2 + version: 1.1.2 + zod: + specifier: ^3.23.4 + version: 3.23.4 + +packages: + '@0no-co/graphql.web@1.0.5': + resolution: + { + integrity: sha512-/ODdeNNFksS9hUvpjWFldMEpq0OqCFEIV3NVM0eU8HLUYU0Szf+2iKvr63kkbGchQwk2/1IxPF1PfoCabVkgLw== + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.11.0': + resolution: + { + integrity: sha512-P8DRsT+pRgXXZ+8szO1ISUXLxtaL9ukKddjLqSh+oBvWVCzUDyUM4Une0Co0Y7XC017wI4pdcrR/3hWqw9uuDg== + } + peerDependencies: + typescript: ^5.0.0 + + '@aashutoshrathi/word-wrap@1.2.6': + resolution: + { + integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + } + engines: { node: '>=0.10.0' } + + '@algolia/autocomplete-core@1.9.3': + resolution: + { + integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== + } + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3': + resolution: + { + integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== + } + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.9.3': + resolution: + { + integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== + } + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.9.3': + resolution: + { + integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== + } + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/cache-browser-local-storage@4.23.2': + resolution: + { + integrity: sha512-PvRQdCmtiU22dw9ZcTJkrVKgNBVAxKgD0/cfiqyxhA5+PHzA2WDt6jOmZ9QASkeM2BpyzClJb/Wr1yt2/t78Kw== + } + + '@algolia/cache-common@4.23.2': + resolution: + { + integrity: sha512-OUK/6mqr6CQWxzl/QY0/mwhlGvS6fMtvEPyn/7AHUx96NjqDA4X4+Ju7aXFQKh+m3jW9VPB0B9xvEQgyAnRPNw== + } + + '@algolia/cache-in-memory@4.23.2': + resolution: + { + integrity: sha512-rfbi/SnhEa3MmlqQvgYz/9NNJ156NkU6xFxjbxBtLWnHbpj+qnlMoKd+amoiacHRITpajg6zYbLM9dnaD3Bczw== + } + + '@algolia/client-account@4.23.2': + resolution: + { + integrity: sha512-VbrOCLIN/5I7iIdskSoSw3uOUPF516k4SjDD4Qz3BFwa3of7D9A0lzBMAvQEJJEPHWdVraBJlGgdJq/ttmquJQ== + } + + '@algolia/client-analytics@4.23.2': + resolution: + { + integrity: sha512-lLj7irsAztGhMoEx/SwKd1cwLY6Daf1Q5f2AOsZacpppSvuFvuBrmkzT7pap1OD/OePjLKxicJS8wNA0+zKtuw== + } + + '@algolia/client-common@4.23.2': + resolution: + { + integrity: sha512-Q2K1FRJBern8kIfZ0EqPvUr3V29ICxCm/q42zInV+VJRjldAD9oTsMGwqUQ26GFMdFYmqkEfCbY4VGAiQhh22g== + } + + '@algolia/client-personalization@4.23.2': + resolution: + { + integrity: sha512-vwPsgnCGhUcHhhQG5IM27z8q7dWrN9itjdvgA6uKf2e9r7vB+WXt4OocK0CeoYQt3OGEAExryzsB8DWqdMK5wg== + } + + '@algolia/client-search@4.23.2': + resolution: + { + integrity: sha512-CxSB29OVGSE7l/iyoHvamMonzq7Ev8lnk/OkzleODZ1iBcCs3JC/XgTIKzN/4RSTrJ9QybsnlrN/bYCGufo7qw== + } + + '@algolia/logger-common@4.23.2': + resolution: + { + integrity: sha512-jGM49Q7626cXZ7qRAWXn0jDlzvoA1FvN4rKTi1g0hxKsTTSReyYk0i1ADWjChDPl3Q+nSDhJuosM2bBUAay7xw== + } + + '@algolia/logger-console@4.23.2': + resolution: + { + integrity: sha512-oo+lnxxEmlhTBTFZ3fGz1O8PJ+G+8FiAoMY2Qo3Q4w23xocQev6KqDTA1JQAGPDxAewNA2VBwWOsVXeXFjrI/Q== + } + + '@algolia/recommend@4.23.2': + resolution: + { + integrity: sha512-Q75CjnzRCDzgIlgWfPnkLtrfF4t82JCirhalXkSSwe/c1GH5pWh4xUyDOR3KTMo+YxxX3zTlrL/FjHmUJEWEcg== + } + + '@algolia/requester-browser-xhr@4.23.2': + resolution: + { + integrity: sha512-TO9wLlp8+rvW9LnIfyHsu8mNAMYrqNdQ0oLF6eTWFxXfxG3k8F/Bh7nFYGk2rFAYty4Fw4XUtrv/YjeNDtM5og== + } + + '@algolia/requester-common@4.23.2': + resolution: + { + integrity: sha512-3EfpBS0Hri0lGDB5H/BocLt7Vkop0bTTLVUBB844HH6tVycwShmsV6bDR7yXbQvFP1uNpgePRD3cdBCjeHmk6Q== + } + + '@algolia/requester-node-http@4.23.2': + resolution: + { + integrity: sha512-SVzgkZM/malo+2SB0NWDXpnT7nO5IZwuDTaaH6SjLeOHcya1o56LSWXk+3F3rNLz2GVH+I/rpYKiqmHhSOjerw== + } + + '@algolia/transporter@4.23.2': + resolution: + { + integrity: sha512-GY3aGKBy+8AK4vZh8sfkatDciDVKad5rTY2S10Aefyjh7e7UGBP4zigf42qVXwU8VOPwi7l/L7OACGMOFcjB0Q== + } + + '@alloc/quick-lru@5.2.0': + resolution: + { + integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + } + engines: { node: '>=10' } + + '@ampproject/remapping@2.3.0': + resolution: + { + integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + } + engines: { node: '>=6.0.0' } + + '@antfu/install-pkg@0.1.1': + resolution: + { + integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ== + } + + '@antfu/utils@0.7.7': + resolution: + { + integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg== + } + + '@apidevtools/json-schema-ref-parser@11.6.1': + resolution: + { + integrity: sha512-DxjgKBCoyReu4p5HMvpmgSOfRhhBcuf5V5soDDRgOTZMwsA4KSFzol1abFZgiCTE11L2kKGca5Md9GwDdXVBwQ== + } + engines: { node: '>= 16' } + + '@babel/code-frame@7.24.2': + resolution: + { + integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + } + engines: { node: '>=6.9.0' } + + '@babel/compat-data@7.24.1': + resolution: + { + integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== + } + engines: { node: '>=6.9.0' } + + '@babel/core@7.24.3': + resolution: + { + integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== + } + engines: { node: '>=6.9.0' } + + '@babel/generator@7.24.1': + resolution: + { + integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-annotate-as-pure@7.22.5': + resolution: + { + integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-compilation-targets@7.23.6': + resolution: + { + integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-create-class-features-plugin@7.24.1': + resolution: + { + integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-environment-visitor@7.22.20': + resolution: + { + integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-function-name@7.23.0': + resolution: + { + integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-hoist-variables@7.22.5': + resolution: + { + integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-member-expression-to-functions@7.23.0': + resolution: + { + integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-module-imports@7.22.15': + resolution: + { + integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-module-imports@7.24.3': + resolution: + { + integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-module-transforms@7.23.3': + resolution: + { + integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.22.5': + resolution: + { + integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-plugin-utils@7.24.0': + resolution: + { + integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-replace-supers@7.24.1': + resolution: + { + integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.22.5': + resolution: + { + integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + resolution: + { + integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-split-export-declaration@7.22.6': + resolution: + { + integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-string-parser@7.24.1': + resolution: + { + integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-validator-identifier@7.22.20': + resolution: + { + integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + } + engines: { node: '>=6.9.0' } + + '@babel/helper-validator-option@7.23.5': + resolution: + { + integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + } + engines: { node: '>=6.9.0' } + + '@babel/helpers@7.24.1': + resolution: + { + integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== + } + engines: { node: '>=6.9.0' } + + '@babel/highlight@7.24.2': + resolution: + { + integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + } + engines: { node: '>=6.9.0' } + + '@babel/parser@7.24.1': + resolution: + { + integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== + } + engines: { node: '>=6.0.0' } + hasBin: true + + '@babel/parser@7.24.4': + resolution: + { + integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== + } + engines: { node: '>=6.0.0' } + hasBin: true + + '@babel/plugin-proposal-decorators@7.24.1': + resolution: + { + integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.24.1': + resolution: + { + integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.1': + resolution: + { + integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: + { + integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.1': + resolution: + { + integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.24.1': + resolution: + { + integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.1': + resolution: + { + integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.24.1': + resolution: + { + integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.24.1': + resolution: + { + integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.24.1': + resolution: + { + integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ== + } + engines: { node: '>=6.9.0' } + + '@babel/standalone@7.24.3': + resolution: + { + integrity: sha512-PbObiI21Z/1DoJLr6DKsdmyp7uUIuw6zv5zIMorH98rOBE/TehkjK7xqXiwJmbCqi7deVbIksDerZ9Ds9hRLGw== + } + engines: { node: '>=6.9.0' } + + '@babel/template@7.24.0': + resolution: + { + integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + } + engines: { node: '>=6.9.0' } + + '@babel/traverse@7.24.1': + resolution: + { + integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== + } + engines: { node: '>=6.9.0' } + + '@babel/types@7.24.0': + resolution: + { + integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + } + engines: { node: '>=6.9.0' } + + '@capsizecss/metrics@2.2.0': + resolution: + { + integrity: sha512-DkFIser1KbGxWyG2hhQQeCit72TnOQDx5pr9bkA7+XlIy7qv+4lYtslH3bidVxm2qkY2guAgypSIPYuQQuk70A== + } + + '@capsizecss/unpack@2.1.0': + resolution: + { + integrity: sha512-k+wAZylHNaBwfcGGeKV+tTf6G0Zd4SyiTMmzlVFKkkBVV70DzwC7KOtmV/ojLbjwRT4QSPcMvjmiws309CSPgQ== + } + + '@cloudflare/kv-asset-handler@0.3.1': + resolution: + { + integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA== + } + + '@commitlint/cli@19.3.0': + resolution: + { + integrity: sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g== + } + engines: { node: '>=v18' } + hasBin: true + + '@commitlint/config-conventional@19.2.2': + resolution: + { + integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw== + } + engines: { node: '>=v18' } + + '@commitlint/config-validator@19.0.3': + resolution: + { + integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q== + } + engines: { node: '>=v18' } + + '@commitlint/ensure@19.0.3': + resolution: + { + integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ== + } + engines: { node: '>=v18' } + + '@commitlint/execute-rule@19.0.0': + resolution: + { + integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw== + } + engines: { node: '>=v18' } + + '@commitlint/format@19.3.0': + resolution: + { + integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg== + } + engines: { node: '>=v18' } + + '@commitlint/is-ignored@19.2.2': + resolution: + { + integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g== + } + engines: { node: '>=v18' } + + '@commitlint/lint@19.2.2': + resolution: + { + integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA== + } + engines: { node: '>=v18' } + + '@commitlint/load@19.2.0': + resolution: + { + integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ== + } + engines: { node: '>=v18' } + + '@commitlint/message@19.0.0': + resolution: + { + integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw== + } + engines: { node: '>=v18' } + + '@commitlint/parse@19.0.3': + resolution: + { + integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA== + } + engines: { node: '>=v18' } + + '@commitlint/read@19.2.1': + resolution: + { + integrity: sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw== + } + engines: { node: '>=v18' } + + '@commitlint/resolve-extends@19.1.0': + resolution: + { + integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg== + } + engines: { node: '>=v18' } + + '@commitlint/rules@19.0.3': + resolution: + { + integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw== + } + engines: { node: '>=v18' } + + '@commitlint/to-lines@19.0.0': + resolution: + { + integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw== + } + engines: { node: '>=v18' } + + '@commitlint/top-level@19.0.0': + resolution: + { + integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ== + } + engines: { node: '>=v18' } + + '@commitlint/types@19.0.3': + resolution: + { + integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA== + } + engines: { node: '>=v18' } + + '@csstools/selector-resolve-nested@1.1.0': + resolution: + { + integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg== + } + engines: { node: ^14 || ^16 || >=18 } + peerDependencies: + postcss-selector-parser: ^6.0.13 + + '@csstools/selector-specificity@3.0.3': + resolution: + { + integrity: sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q== + } + engines: { node: ^14 || ^16 || >=18 } + peerDependencies: + postcss-selector-parser: ^6.0.13 + + '@docsearch/css@3.6.0': + resolution: + { + integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ== + } + + '@docsearch/js@3.6.0': + resolution: + { + integrity: sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ== + } + + '@docsearch/react@3.6.0': + resolution: + { + integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w== + } + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + + '@egoist/tailwindcss-icons@1.7.4': + resolution: + { + integrity: sha512-883qx0sqeNb8km7os0w8K6UYue88dbgTWwyEUwW74Bgz0H7t+m7PMIIEvSQ4JqHwA823Qd5ciz+NoTBWKaMYfg== + } + peerDependencies: + tailwindcss: '*' + + '@es-joy/jsdoccomment@0.42.0': + resolution: + { + integrity: sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw== + } + engines: { node: '>=16' } + + '@esbuild/aix-ppc64@0.20.2': + resolution: + { + integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== + } + engines: { node: '>=12' } + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: + { + integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== + } + engines: { node: '>=12' } + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: + { + integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== + } + engines: { node: '>=12' } + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: + { + integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== + } + engines: { node: '>=12' } + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: + { + integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== + } + engines: { node: '>=12' } + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: + { + integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== + } + engines: { node: '>=12' } + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: + { + integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== + } + engines: { node: '>=12' } + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: + { + integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== + } + engines: { node: '>=12' } + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: + { + integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== + } + engines: { node: '>=12' } + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: + { + integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== + } + engines: { node: '>=12' } + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: + { + integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== + } + engines: { node: '>=12' } + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: + { + integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== + } + engines: { node: '>=12' } + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: + { + integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== + } + engines: { node: '>=12' } + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: + { + integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== + } + engines: { node: '>=12' } + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: + { + integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== + } + engines: { node: '>=12' } + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: + { + integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== + } + engines: { node: '>=12' } + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: + { + integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== + } + engines: { node: '>=12' } + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.20.2': + resolution: + { + integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== + } + engines: { node: '>=12' } + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: + { + integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== + } + engines: { node: '>=12' } + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: + { + integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== + } + engines: { node: '>=12' } + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: + { + integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== + } + engines: { node: '>=12' } + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: + { + integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== + } + engines: { node: '>=12' } + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: + { + integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== + } + engines: { node: '>=12' } + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: + { + integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.10.0': + resolution: + { + integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + '@eslint/config-inspector@0.4.7': + resolution: + { + integrity: sha512-F3zctj+MVBO6vaNHxEDH3+WKhHsMx5e+FGXsQG9apFE1yYUvxSwztgF0xxTfkPvQDdFfYWlaNKDXdh3kgOyXKw== + } + hasBin: true + peerDependencies: + eslint: ^8.50.0 || ^9.0.0 + + '@eslint/eslintrc@2.1.4': + resolution: + { + integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + '@eslint/eslintrc@3.0.2': + resolution: + { + integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg== + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + '@eslint/js@9.1.1': + resolution: + { + integrity: sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ== + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + '@fastify/busboy@2.1.1': + resolution: + { + integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + } + engines: { node: '>=14' } + + '@floating-ui/core@1.6.0': + resolution: + { + integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== + } + + '@floating-ui/dom@1.1.1': + resolution: + { + integrity: sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw== + } + + '@floating-ui/dom@1.6.3': + resolution: + { + integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw== + } + + '@floating-ui/utils@0.2.1': + resolution: + { + integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== + } + + '@floating-ui/vue@1.0.6': + resolution: + { + integrity: sha512-EdrOljjkpkkqZnrpqUcPoz9NvHxuTjUtSInh6GMv3+Mcy+giY2cE2pHh9rpacRcZ2eMSCxel9jWkWXTjLmY55w== + } + + '@gql.tada/cli-utils@1.2.1': + resolution: + { + integrity: sha512-WU5TE/V3McGGY+05X1ncI9qbUEeDAU6LRnWzezr9pEBPAfXP9cOId0ihalMkhZ2dXZasCAZ2MykGTU+Xj1cAww== + } + peerDependencies: + typescript: ^5.0.0 + + '@gql.tada/internal@0.1.3': + resolution: + { + integrity: sha512-wIvykBId7O0gaizmSl5n5AhbQsgJVLTUsFBm3RsfQ9dVfpmT+Fhy2yHX+yNgiVECg2EimXMhs4ltcE4EuZ2WOA== + } + peerDependencies: + graphql: ^16.8.1 + typescript: ^5.0.0 + + '@gql.tada/internal@0.2.3': + resolution: + { + integrity: sha512-K8MZgUTXu89Ji+eED43xU1U1kZclWmC2CdQh/hmwSGUF3OHoXu0/cUX4fxqS990+/IvSKXgyWSemoWCHjKJyBQ== + } + peerDependencies: + graphql: ^16.8.1 + typescript: ^5.0.0 + + '@headlessui/tailwindcss@0.2.0': + resolution: + { + integrity: sha512-fpL830Fln1SykOCboExsWr3JIVeQKieLJ3XytLe/tt1A0XzqUthOftDmjcCYLW62w7mQI7wXcoPXr3tZ9QfGxw== + } + engines: { node: '>=10' } + peerDependencies: + tailwindcss: ^3.0 + + '@headlessui/vue@1.7.19': + resolution: + { + integrity: sha512-VFjKPybogux/5/QYGSq4zgG/x3RcxId15W8uguAJAjPBxelI23dwjOjTx/mIiMkM/Hd3rzFxcf2aIp56eEWRcA== + } + engines: { node: '>=10' } + peerDependencies: + vue: ^3.2.0 + + '@humanwhocodes/config-array@0.13.0': + resolution: + { + integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + } + engines: { node: '>=10.10.0' } + + '@humanwhocodes/module-importer@1.0.1': + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + } + engines: { node: '>=12.22' } + + '@humanwhocodes/object-schema@2.0.3': + resolution: + { + integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + } + + '@humanwhocodes/retry@0.2.3': + resolution: + { + integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g== + } + engines: { node: '>=18.18' } + + '@iconify-json/heroicons@1.1.20': + resolution: + { + integrity: sha512-puNt1al/rDw8Rb5x8sfk20UA8AQjMskLMh63nSUBj+8I0lQ7LtX+0Qn8wow2xTXTEsynJ9xXLD8Aat53e0qi8A== + } + + '@iconify/collections@1.0.408': + resolution: + { + integrity: sha512-huq0rgLQveO5DeWw4SQpq69GwU2xBuC9UPw664Mh/yruc1BYYNvyfvWowQ2ZG4mpBO1BUmIB/T/EtTcLoCeuAA== + } + + '@iconify/types@2.0.0': + resolution: + { + integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== + } + + '@iconify/utils@2.1.22': + resolution: + { + integrity: sha512-6UHVzTVXmvO8uS6xFF+L/QTSpTzA/JZxtgU+KYGFyDYMEObZ1bu/b5l+zNJjHy+0leWjHI+C0pXlzGvv3oXZMA== + } + + '@iconify/vue@4.1.1': + resolution: + { + integrity: sha512-RL85Bm/DAe8y6rT6pux7D2FJSiUEM/TPfyK7GrbAOfTSwrhvwJW+S5yijdGcmtXouA8MtuH9C7l4hiSE4mLMjg== + } + peerDependencies: + vue: '>=3' + + '@internationalized/date@3.5.2': + resolution: + { + integrity: sha512-vo1yOMUt2hzp63IutEaTUxROdvQg1qlMRsbCvbay2AK2Gai7wIgCyK5weEX3nHkiLgo4qCXHijFNC/ILhlRpOQ== + } + + '@intlify/bundle-utils@7.5.1': + resolution: + { + integrity: sha512-UovJl10oBIlmYEcWw+VIHdKY5Uv5sdPG0b/b6bOYxGLln3UwB75+2dlc0F3Fsa0RhoznQ5Rp589/BZpABpE4Xw== + } + engines: { node: '>= 14.16' } + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + + '@intlify/core-base@9.10.2': + resolution: + { + integrity: sha512-HGStVnKobsJL0DoYIyRCGXBH63DMQqEZxDUGrkNI05FuTcruYUtOAxyL3zoAZu/uDGO6mcUvm3VXBaHG2GdZCg== + } + engines: { node: '>= 16' } + + '@intlify/core@9.10.2': + resolution: + { + integrity: sha512-t/RVemtM3bTE/wa7zqR+zkumy4dda5skVhxAh+3oYbOyJRw1y3B0FWiuB2Awa1HgoYC0DuPYrsAsQoeLy2eQPQ== + } + engines: { node: '>= 16' } + + '@intlify/h3@0.5.0': + resolution: + { + integrity: sha512-cgfrtD3qu3BPJ47gfZ35J2LJpI64Riic0K8NGgid5ilyPXRQTNY7mXlT/B+HZYQg1hmBxKa5G5HJXyAZ4R2H5A== + } + engines: { node: '>= 18' } + + '@intlify/message-compiler@9.10.2': + resolution: + { + integrity: sha512-ntY/kfBwQRtX5Zh6wL8cSATujPzWW2ZQd1QwKyWwAy5fMqJyyixHMeovN4fmEyCqSu+hFfYOE63nU94evsy4YA== + } + engines: { node: '>= 16' } + + '@intlify/shared@9.10.2': + resolution: + { + integrity: sha512-ttHCAJkRy7R5W2S9RVnN9KYQYPIpV2+GiS79T4EE37nrPyH6/1SrOh3bmdCRC1T3ocL8qCDx7x2lBJ0xaITU7Q== + } + engines: { node: '>= 16' } + + '@intlify/unplugin-vue-i18n@3.0.1': + resolution: + { + integrity: sha512-q1zJhA/WpoLBzAAuKA5/AEp0e+bMOM10ll/HxT4g1VAw/9JhC4TTobP9KobKH90JMZ4U2daLFlYQfKNd29lpqw== + } + engines: { node: '>= 14.16' } + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + vue-i18n-bridge: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + vue-i18n-bridge: + optional: true + + '@intlify/utils@0.12.0': + resolution: + { + integrity: sha512-yCBNcuZQ49iInqmWC2xfW0rgEQyNtCM8C8KcWKTXxyscgUE1+48gjLgZZqP75MjhlApxwph7ZMWLqyABkSgxQA== + } + engines: { node: '>= 18' } + + '@ioredis/commands@1.2.0': + resolution: + { + integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== + } + + '@isaacs/cliui@8.0.2': + resolution: + { + integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + } + engines: { node: '>=12' } + + '@jridgewell/gen-mapping@0.3.5': + resolution: + { + integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + } + engines: { node: '>=6.0.0' } + + '@jridgewell/resolve-uri@3.1.2': + resolution: + { + integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + } + engines: { node: '>=6.0.0' } + + '@jridgewell/set-array@1.2.1': + resolution: + { + integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + } + engines: { node: '>=6.0.0' } + + '@jridgewell/source-map@0.3.6': + resolution: + { + integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + } + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: + { + integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + } + + '@jridgewell/trace-mapping@0.3.25': + resolution: + { + integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + } + + '@jsdevtools/ono@7.1.3': + resolution: + { + integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + } + + '@koa/router@12.0.1': + resolution: + { + integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q== + } + engines: { node: '>= 12' } + + '@kwsites/file-exists@1.1.1': + resolution: + { + integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== + } + + '@kwsites/promise-deferred@1.1.1': + resolution: + { + integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== + } + + '@mapbox/node-pre-gyp@1.0.11': + resolution: + { + integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== + } + hasBin: true + + '@miyaneee/rollup-plugin-json5@1.2.0': + resolution: + { + integrity: sha512-JjTIaXZp9WzhUHpElrqPnl1AzBi/rvRs065F71+aTmlqvTMVkdbjZ8vfFl4nRlgJy+TPBw69ZK4pwFdmOAt4aA== + } + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + + '@netlify/functions@2.6.0': + resolution: + { + integrity: sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ== + } + engines: { node: '>=14.0.0' } + + '@netlify/node-cookies@0.1.0': + resolution: + { + integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g== + } + engines: { node: ^14.16.0 || >=16.0.0 } + + '@netlify/serverless-functions-api@1.14.0': + resolution: + { + integrity: sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q== + } + engines: { node: ^14.18.0 || >=16.0.0 } + + '@nodelib/fs.scandir@2.1.5': + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + } + engines: { node: '>= 8' } + + '@nodelib/fs.stat@2.0.5': + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + } + engines: { node: '>= 8' } + + '@nodelib/fs.walk@1.2.8': + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + } + engines: { node: '>= 8' } + + '@npmcli/agent@2.2.2': + resolution: + { + integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@npmcli/fs@3.1.0': + resolution: + { + integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + '@npmcli/git@5.0.4': + resolution: + { + integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@npmcli/installed-package-contents@2.0.2': + resolution: + { + integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true + + '@npmcli/node-gyp@3.0.0': + resolution: + { + integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + '@npmcli/package-json@5.0.0': + resolution: + { + integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@npmcli/promise-spawn@7.0.1': + resolution: + { + integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@npmcli/run-script@7.0.4': + resolution: + { + integrity: sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@nuxt/devalue@2.0.2': + resolution: + { + integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA== + } + + '@nuxt/devtools-kit@1.1.5': + resolution: + { + integrity: sha512-Nb/NKFCRtxyqcPD6snB52rXtbRQMjGtn3ncpa8cLWsnoqnkd9emQ4uwV8IwCNxTnqUBtbGU79/TlJ79SKH9TAw== + } + peerDependencies: + nuxt: ^3.9.0 + vite: '*' + + '@nuxt/devtools-kit@1.2.0': + resolution: + { + integrity: sha512-T81TQuaN6hbQFzgvQeRAMJjcL4mgWtYvlGTAvtuvd3TFuHV7bMK+tFZaxgJXzIu1/UPO7/aO4VLCB0xl5sSwZw== + } + peerDependencies: + nuxt: ^3.9.0 + vite: '*' + + '@nuxt/devtools-wizard@1.1.5': + resolution: + { + integrity: sha512-bWLgLvYFbYCQYlLPttZaUo58cS1VJo1uEFguHaCwZ7Fzkm4Iv+lFTv5BzD+gOHwohaXLr3YecgZOO4YNJTgXyA== + } + hasBin: true + + '@nuxt/devtools@1.1.5': + resolution: + { + integrity: sha512-aDEqz4L1GDj4DDnX7PL9ety3Wx0kLyKTb2JOSoJR8uX09fC3gonCvj/gYHLSSIKqhPasUjoOO5RPCtT+r9dtsA== + } + hasBin: true + peerDependencies: + nuxt: ^3.9.0 + vite: '*' + + '@nuxt/eslint-config@0.3.9': + resolution: + { + integrity: sha512-/rxuXWRjin8QV5wM2OtNnYtEr02V9ze8TmCXV5ehmuW6PVexA6lQT/D72P0VK4y+JtuW4G3BUlb8pywtNaPtEw== + } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@nuxt/eslint-plugin@0.3.9': + resolution: + { + integrity: sha512-10aIZfdrgzTGwUkITIAZ+eegJqAS4imSePVBoTwJ2DhL1zQY7BWMiVa60a0P7mt1H1oFZau9W+DSSrmukeObmA== + } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@nuxt/eslint@0.3.9': + resolution: + { + integrity: sha512-i1fY6YV3+71L7BAA82af2qSFOCW18LdxTJ4uUqLdEPbtlfh6AOPZBGH/KuHQfPIdiDxvCYG7Nhk7jdBRKb4Kbg== + } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + eslint-webpack-plugin: ^4.1.0 + vite-plugin-eslint2: ^4.4.0 + peerDependenciesMeta: + eslint-webpack-plugin: + optional: true + vite-plugin-eslint2: + optional: true + + '@nuxt/fonts@0.6.1': + resolution: + { + integrity: sha512-YeoXSHgRGoKYGLYu/gw7XDQ9mqyO+ihrCCwjxtH6Ke/2r5A9xI3frPzC5RVCgzZjxbd7W3EDAlyVwwEjCb9x+g== + } + + '@nuxt/kit@3.11.1': + resolution: + { + integrity: sha512-8VVlhaY4N+wipgHmSXP+gLM+esms9TEBz13I/J++PbOUJuf2cJlUUTyqMoRVL0xudVKK/8fJgSndRkyidy1m2w== + } + engines: { node: ^14.18.0 || >=16.10.0 } + + '@nuxt/kit@3.11.2': + resolution: + { + integrity: sha512-yiYKP0ZWMW7T3TCmsv4H8+jEsB/nFriRAR8bKoSqSV9bkVYWPE36sf7JDux30dQ91jSlQG6LQkB3vCHYTS2cIg== + } + engines: { node: ^14.18.0 || >=16.10.0 } + + '@nuxt/schema@3.11.1': + resolution: + { + integrity: sha512-XyGlJsf3DtkouBCvBHlvjz+xvN4vza3W7pY3YBNMnktxlMQtfFiF3aB3A2NGLmBnJPqD3oY0j7lljraELb5hkg== + } + engines: { node: ^14.18.0 || >=16.10.0 } + + '@nuxt/schema@3.11.2': + resolution: + { + integrity: sha512-Z0bx7N08itD5edtpkstImLctWMNvxTArsKXzS35ZuqyAyKBPcRjO1CU01slH0ahO30Gg9kbck3/RKNZPwfOjJg== + } + engines: { node: ^14.18.0 || >=16.10.0 } + + '@nuxt/telemetry@2.5.3': + resolution: + { + integrity: sha512-Ghv2MgWbJcUM9G5Dy3oQP0cJkUwEgaiuQxEF61FXJdn0a69Q4StZEP/hLF0MWPM9m6EvAwI7orxkJHM7MrmtVg== + } + hasBin: true + + '@nuxt/ui-templates@1.3.2': + resolution: + { + integrity: sha512-aLHpV7Nj2cAHM2hPtwOtT2OIeOy4p6GN5qvNm6zBt6wke33t1jn0PR/FNwvKROIxM0xTAwB6jdmRJLXRPVGNhA== + } + + '@nuxt/ui@2.15.2': + resolution: + { + integrity: sha512-3NxFcC0KN4bdTePNKKEVp4tj2BgeuGlucnnOFLVYSdhw60xU0LpFq9wDGeP7BBUl622xF9FnPNiXW5/6RS4i6w== + } + engines: { node: '>=v16.20.2' } + + '@nuxt/vite-builder@3.11.2': + resolution: + { + integrity: sha512-eXTZsAAN4dPz4eA2UD5YU2kD/DqgfyQp1UYsIdCe6+PAVe1ifkUboBjbc0piR5+3qI/S/eqk3nzxRGbiYF7Ccg== + } + engines: { node: ^14.18.0 || >=16.10.0 } + peerDependencies: + vue: ^3.3.4 + + '@nuxtjs/color-mode@3.4.0': + resolution: + { + integrity: sha512-rS51nG3zW8ksOwNubIP3BPQ+vBL0r2M6td1kkB/VaR1e1uVtNfWlBPfZjb604bgNCE2AeRNqaI0CrxkfnQ6h6Q== + } + + '@nuxtjs/i18n@8.3.1': + resolution: + { + integrity: sha512-VHnnjFTTep2oC5++61WY06y4c/h943NyHQh1CRUJQvjsdbGSMX3WQjMGk+X05a3pyPFN70aq0YbgtsEoEoTEjQ== + } + engines: { node: ^14.16.0 || >=16.11.0 } + + '@nuxtjs/tailwindcss@6.12.0': + resolution: + { + integrity: sha512-vXvEq8z177TQcx0tc10mw3O6T9WeN0iTL8hIKGDfidmr+HKReexJU01aPgHefFrCu4LJB70egYFYnywzB9lMyQ== + } + + '@parcel/watcher-android-arm64@2.4.1': + resolution: + { + integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: + { + integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: + { + integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: + { + integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: + { + integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== + } + engines: { node: '>= 10.0.0' } + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: + { + integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: + { + integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: + { + integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: + { + integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [linux] + + '@parcel/watcher-wasm@2.4.1': + resolution: + { + integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA== + } + engines: { node: '>= 10.0.0' } + bundledDependencies: + - napi-wasm + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: + { + integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: + { + integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== + } + engines: { node: '>= 10.0.0' } + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: + { + integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: + { + integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== + } + engines: { node: '>= 10.0.0' } + + '@pinia/nuxt@0.5.1': + resolution: + { + integrity: sha512-6wT6TqY81n+7/x3Yhf0yfaJVKkZU42AGqOR0T3+UvChcaOJhSma7OWPN64v+ptYlznat+fS1VTwNAcbi2lzHnw== + } + + '@pkgjs/parseargs@0.11.0': + resolution: + { + integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + } + engines: { node: '>=14' } + + '@pkgr/core@0.1.1': + resolution: + { + integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + + '@polka/url@1.0.0-next.25': + resolution: + { + integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== + } + + '@popperjs/core@2.11.8': + resolution: + { + integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + } + + '@rollup/plugin-alias@5.1.0': + resolution: + { + integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-commonjs@25.0.7': + resolution: + { + integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-inject@5.0.5': + resolution: + { + integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-json@6.1.0': + resolution: + { + integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@15.2.3': + resolution: + { + integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-replace@5.0.5': + resolution: + { + integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-terser@0.4.4': + resolution: + { + integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-yaml@4.1.2': + resolution: + { + integrity: sha512-RpupciIeZMUqhgFE97ba0s98mOFS7CWzN3EJNhJkqSv9XLlWYtwVdtE6cDw6ASOF/sZVFS7kRJXftaqM2Vakdw== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@4.2.1': + resolution: + { + integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + } + engines: { node: '>= 8.0.0' } + + '@rollup/pluginutils@5.1.0': + resolution: + { + integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.13.2': + resolution: + { + integrity: sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g== + } + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.13.2': + resolution: + { + integrity: sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ== + } + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.13.2': + resolution: + { + integrity: sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA== + } + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.13.2': + resolution: + { + integrity: sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A== + } + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.13.2': + resolution: + { + integrity: sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ== + } + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.13.2': + resolution: + { + integrity: sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ== + } + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.13.2': + resolution: + { + integrity: sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA== + } + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.13.2': + resolution: + { + integrity: sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ== + } + cpu: [ppc64le] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.13.2': + resolution: + { + integrity: sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw== + } + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.13.2': + resolution: + { + integrity: sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg== + } + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.13.2': + resolution: + { + integrity: sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A== + } + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.13.2': + resolution: + { + integrity: sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA== + } + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.13.2': + resolution: + { + integrity: sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA== + } + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.13.2': + resolution: + { + integrity: sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw== + } + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.13.2': + resolution: + { + integrity: sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ== + } + cpu: [x64] + os: [win32] + + '@rushstack/eslint-patch@1.10.2': + resolution: + { + integrity: sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw== + } + + '@shikijs/core@1.3.0': + resolution: + { + integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA== + } + + '@shikijs/monaco@1.3.0': + resolution: + { + integrity: sha512-wLpfTx67psxoZSxUjGEMgsLfaQ7owds6wBWnfOSDcqe13Z2BUO3oCvKaRGFgNB8O2Nt3XxE9dW3TqnfYzvXyeg== + } + + '@shikijs/transformers@1.3.0': + resolution: + { + integrity: sha512-3mlpg2I9CjhjE96dEWQOGeCWoPcyTov3s4aAsHmgvnTHa8MBknEnCQy8/xivJPSpD+olqOqIEoHnLfbNJK29AA== + } + + '@sigstore/bundle@2.2.0': + resolution: + { + integrity: sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@sigstore/core@1.1.0': + resolution: + { + integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@sigstore/protobuf-specs@0.3.1': + resolution: + { + integrity: sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@sigstore/sign@2.2.3': + resolution: + { + integrity: sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@sigstore/tuf@2.3.2': + resolution: + { + integrity: sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@sigstore/verify@1.1.1': + resolution: + { + integrity: sha512-BNANJms49rw9Q5J+fJjrDqOQSzjXDcOq/pgKDaVdDoIvQwqIfaoUriy+fQfh8sBX04hr4bkkrwu3EbhQqoQH7A== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@sindresorhus/merge-streams@2.3.0': + resolution: + { + integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== + } + engines: { node: '>=18' } + + '@stylistic/eslint-plugin-js@1.7.2': + resolution: + { + integrity: sha512-ZYX7C5p7zlHbACwFLU+lISVh6tdcRP/++PWegh2Sy0UgMT5kU0XkPa2tKWEtJYzZmPhJxu9LxbnWcnE/tTwSDQ== + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: '>=8.40.0' + + '@stylistic/eslint-plugin-jsx@1.7.2': + resolution: + { + integrity: sha512-lNZR5PR0HLJPs+kY0y8fy6KroKlYqA5PwsYWpVYWzqZWiL5jgAeUo4s9yLFYjJjzildJ5MsTVMy/xP81Qz6GXg== + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: '>=8.40.0' + + '@stylistic/eslint-plugin-plus@1.7.2': + resolution: + { + integrity: sha512-luUfRVbBVtt0+/FNt8/76BANJEzb/nHWasHD7UUjyMrch2U9xUKpObrkTCzqBuisKek+uFupwGjqXqDP07+fQw== + } + peerDependencies: + eslint: '*' + + '@stylistic/eslint-plugin-ts@1.7.2': + resolution: + { + integrity: sha512-szX89YPocwCe4T0eT3alj7MwEzDHt5+B+kb/vQfSSLIjI9CGgoWrgj50zU8PtaDctTh4ZieFBzU/lRmkSUo0RQ== + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: '>=8.40.0' + + '@stylistic/eslint-plugin@1.7.2': + resolution: + { + integrity: sha512-TesaPR4AOCeD4unwu9gZCdTe8SsUpykriICuwXV8GFBgESuVbfVp+S8g6xTWe9ntVR803bNMtnr2UhxHW0iFqg== + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: '>=8.40.0' + + '@swc/helpers@0.4.14': + resolution: + { + integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== + } + + '@swc/helpers@0.4.36': + resolution: + { + integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q== + } + + '@swc/helpers@0.5.10': + resolution: + { + integrity: sha512-CU+RF9FySljn7HVSkkjiB84hWkvTaI3rtLvF433+jRSBL2hMu3zX5bGhHS8C80SM++h4xy8hBSnUHFQHmRXSBw== + } + + '@tailwindcss/aspect-ratio@0.4.2': + resolution: + { + integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ== + } + peerDependencies: + tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' + + '@tailwindcss/container-queries@0.1.1': + resolution: + { + integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA== + } + peerDependencies: + tailwindcss: '>=3.2.0' + + '@tailwindcss/forms@0.5.7': + resolution: + { + integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw== + } + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' + + '@tailwindcss/typography@0.5.12': + resolution: + { + integrity: sha512-CNwpBpconcP7ppxmuq3qvaCxiRWnbhANpY/ruH4L5qs2GCiVDJXde/pjj2HWPV1+Q4G9+V/etrwUYopdcjAlyg== + } + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + '@tanstack/virtual-core@3.2.0': + resolution: + { + integrity: sha512-P5XgYoAw/vfW65byBbJQCw+cagdXDT/qH6wmABiLt4v4YBT2q2vqCOhihe+D1Nt325F/S/0Tkv6C5z0Lv+VBQQ== + } + + '@tanstack/vue-virtual@3.2.0': + resolution: + { + integrity: sha512-KbmQVvw1k5Js2Fk4DJw9aDxFT5+e8a2Ba4UBJAFCRnWBCnzd3NlmEHI9JCeLv1tYDZ/iHwwv+Z9Le0BENIEP8A== + } + peerDependencies: + vue: ^2.7.0 || ^3.0.0 + + '@trysound/sax@0.2.0': + resolution: + { + integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + } + engines: { node: '>=10.13.0' } + + '@tufjs/canonical-json@2.0.0': + resolution: + { + integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@tufjs/models@2.0.0': + resolution: + { + integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + '@types/conventional-commits-parser@5.0.0': + resolution: + { + integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ== + } + + '@types/eslint@8.56.10': + resolution: + { + integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + } + + '@types/eslint@8.56.9': + resolution: + { + integrity: sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg== + } + + '@types/estree@1.0.5': + resolution: + { + integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + } + + '@types/http-proxy@1.17.14': + resolution: + { + integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + } + + '@types/json-schema@7.0.15': + resolution: + { + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + } + + '@types/linkify-it@3.0.5': + resolution: + { + integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== + } + + '@types/lodash-es@4.17.12': + resolution: + { + integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ== + } + + '@types/lodash@4.17.0': + resolution: + { + integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA== + } + + '@types/markdown-it@14.0.1': + resolution: + { + integrity: sha512-6WfOG3jXR78DW8L5cTYCVVGAsIFZskRHCDo5tbqa+qtKVt4oDRVH7hyIWu1SpDQJlmIoEivNQZ5h+AGAOrgOtQ== + } + + '@types/mdurl@1.0.5': + resolution: + { + integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== + } + + '@types/node@20.12.2': + resolution: + { + integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ== + } + + '@types/normalize-package-data@2.4.4': + resolution: + { + integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + } + + '@types/resolve@1.20.2': + resolution: + { + integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + } + + '@types/semver@7.5.8': + resolution: + { + integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + } + + '@types/web-bluetooth@0.0.20': + resolution: + { + integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== + } + + '@typescript-eslint/eslint-plugin@7.7.0': + resolution: + { + integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ== + } + engines: { node: ^18.18.0 || >=20.0.0 } + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.7.0': + resolution: + { + integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg== + } + engines: { node: ^18.18.0 || >=20.0.0 } + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.21.0': + resolution: + { + integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== + } + engines: { node: ^16.0.0 || >=18.0.0 } + + '@typescript-eslint/scope-manager@7.7.0': + resolution: + { + integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw== + } + engines: { node: ^18.18.0 || >=20.0.0 } + + '@typescript-eslint/type-utils@7.7.0': + resolution: + { + integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg== + } + engines: { node: ^18.18.0 || >=20.0.0 } + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.21.0': + resolution: + { + integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + } + engines: { node: ^16.0.0 || >=18.0.0 } + + '@typescript-eslint/types@7.7.0': + resolution: + { + integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w== + } + engines: { node: ^18.18.0 || >=20.0.0 } + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: + { + integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.7.0': + resolution: + { + integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ== + } + engines: { node: ^18.18.0 || >=20.0.0 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.21.0': + resolution: + { + integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@7.7.0': + resolution: + { + integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig== + } + engines: { node: ^18.18.0 || >=20.0.0 } + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: + { + integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + } + engines: { node: ^16.0.0 || >=18.0.0 } + + '@typescript-eslint/visitor-keys@7.7.0': + resolution: + { + integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA== + } + engines: { node: ^18.18.0 || >=20.0.0 } + + '@unhead/dom@1.9.4': + resolution: + { + integrity: sha512-nEaHOcCL0u56g4XOV5XGwRMFZ05eEINfp8nxVrPiIGLrS9BoFrZS7/6IYSkalkNRTmw8M5xqxt6BalBr594SaA== + } + + '@unhead/schema@1.9.4': + resolution: + { + integrity: sha512-/J6KYQ+aqKO5uLDTU9BXfiRAfJ3mQNmF5gh3Iyd4qZaWfqjsDGYIaAe4xAGPnJxwBn6FHlnvQvZBSGqru1MByw== + } + + '@unhead/shared@1.9.4': + resolution: + { + integrity: sha512-ErP6SUzPPRX9Df4fqGlwlLInoG+iBiH0nDudRuIpoFGyTnv1uO9BQ+lfFld8s1gI1WCdoBwVkISBp9/f/E/GLA== + } + + '@unhead/ssr@1.9.4': + resolution: + { + integrity: sha512-+32lSX6q+c+PcF0NsywBMmwDgxApjo4R7yxjRBB0gmeEcr58hejS/Ju82D8dLKvHqafLB1cQA7I4XUPyrDUx3Q== + } + + '@unhead/vue@1.9.4': + resolution: + { + integrity: sha512-F37bDhhieWQJyXvFV8NmrOXoIVJMhxVI/0ZUDrI9uTkMCofjfKWDJ+Gz0iYdhYF9mjQ5BN+pM31Zpxi+fN5Cfg== + } + peerDependencies: + vue: '>=2.7 || >=3' + + '@unocss/astro@0.58.9': + resolution: + { + integrity: sha512-VWfHNC0EfawFxLfb3uI+QcMGBN+ju+BYtutzeZTjilLKj31X2UpqIh8fepixL6ljgZzB3fweqg2xtUMC0gMnoQ== + } + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@0.58.9': + resolution: + { + integrity: sha512-q7qlwX3V6UaqljWUQ5gMj36yTA9eLuuRywahdQWt1ioy4aPF/MEEfnMBZf/ntrqf5tIT5TO8fE11nvCco2Q/sA== + } + engines: { node: '>=14' } + hasBin: true + + '@unocss/config@0.58.9': + resolution: + { + integrity: sha512-90wRXIyGNI8UenWxvHUcH4l4rgq813MsTzYWsf6ZKyLLvkFjV2b2EfGXI27GPvZ7fVE1OAqx+wJNTw8CyQxwag== + } + engines: { node: '>=14' } + + '@unocss/core@0.58.9': + resolution: + { + integrity: sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw== + } + + '@unocss/extractor-arbitrary-variants@0.58.9': + resolution: + { + integrity: sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg== + } + + '@unocss/inspector@0.58.9': + resolution: + { + integrity: sha512-uRzqkCNeBmEvFePXcfIFcQPMlCXd9/bLwa5OkBthiOILwQdH1uRIW3GWAa2SWspu+kZLP0Ly3SjZ9Wqi+5ZtTw== + } + + '@unocss/postcss@0.58.9': + resolution: + { + integrity: sha512-PnKmH6Qhimw35yO6u6yx9SHaX2NmvbRNPDvMDHA/1xr3M8L0o8U88tgKbWfm65NEGF3R1zJ9A8rjtZn/LPkgPA== + } + engines: { node: '>=14' } + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@0.58.9': + resolution: + { + integrity: sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ== + } + + '@unocss/preset-icons@0.58.9': + resolution: + { + integrity: sha512-9dS48+yAunsbS0ylOW2Wisozwpn3nGY1CqTiidkUnrMnrZK3al579A7srUX9NyPWWDjprO7eU/JkWbdDQSmFFA== + } + + '@unocss/preset-mini@0.58.9': + resolution: + { + integrity: sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ== + } + + '@unocss/preset-tagify@0.58.9': + resolution: + { + integrity: sha512-obh75XrRmxYwrQMflzvhQUMeHwd/R9bEDhTWUW9aBTolBy4eNypmQwOhHCKh5Xi4Dg6o0xj6GWC/jcCj1SPLog== + } + + '@unocss/preset-typography@0.58.9': + resolution: + { + integrity: sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA== + } + + '@unocss/preset-uno@0.58.9': + resolution: + { + integrity: sha512-Fze+X2Z/EegCkRdDRgwwvFBmXBenNR1AG8KxAyz8iPeWbhOBaRra2sn2ScryrfH6SbJHpw26ZyJXycAdS0Fq3A== + } + + '@unocss/preset-web-fonts@0.58.9': + resolution: + { + integrity: sha512-XtiO+Z+RYnNYomNkS2XxaQiY++CrQZKOfNGw5htgIrb32QtYVQSkyYQ3jDw7JmMiCWlZ4E72cV/zUb++WrZLxg== + } + + '@unocss/preset-wind@0.58.9': + resolution: + { + integrity: sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw== + } + + '@unocss/reset@0.58.9': + resolution: + { + integrity: sha512-nA2pg3tnwlquq+FDOHyKwZvs20A6iBsKPU7Yjb48JrNnzoaXqE+O9oN6782IG2yKVW4AcnsAnAnM4cxXhGzy1w== + } + + '@unocss/rule-utils@0.58.9': + resolution: + { + integrity: sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ== + } + engines: { node: '>=14' } + + '@unocss/scope@0.58.9': + resolution: + { + integrity: sha512-BIwcpx0R3bE0rYa9JVDJTk0GX32EBvnbvufBpNkWfC5tb7g+B7nMkVq9ichanksYCCxrIQQo0mrIz5PNzu9sGA== + } + + '@unocss/transformer-attributify-jsx-babel@0.58.9': + resolution: + { + integrity: sha512-UGaQoGZg+3QrsPtnGHPECmsGn4EQb2KSdZ4eGEn2YssjKv+CcQhzRvpEUgnuF/F+jGPkCkS/G/YEQBHRWBY54Q== + } + + '@unocss/transformer-attributify-jsx@0.58.9': + resolution: + { + integrity: sha512-jpL3PRwf8t43v1agUdQn2EHGgfdWfvzsMxFtoybO88xzOikzAJaaouteNtojc/fQat2T9iBduDxVj5egdKmhdQ== + } + + '@unocss/transformer-compile-class@0.58.9': + resolution: + { + integrity: sha512-l2VpCqelJ6Tgc1kfSODxBtg7fCGPVRr2EUzTg1LrGYKa2McbKuc/wV/2DWKHGxL6+voWi7a2C9XflqGDXXutuQ== + } + + '@unocss/transformer-directives@0.58.9': + resolution: + { + integrity: sha512-pLOUsdoY2ugVntJXg0xuGjO9XZ2xCiMxTPRtpZ4TsEzUtdEzMswR06Y8VWvNciTB/Zqxcz9ta8rD0DKePOfSuw== + } + + '@unocss/transformer-variant-group@0.58.9': + resolution: + { + integrity: sha512-3A6voHSnFcyw6xpcZT6oxE+KN4SHRnG4z862tdtWvRGcN+jGyNr20ylEZtnbk4xj0VNMeGHHQRZ0WLvmrAwvOQ== + } + + '@unocss/vite@0.58.9': + resolution: + { + integrity: sha512-mmppBuulAHCal+sC0Qz36Y99t0HicAmznpj70Kzwl7g/yvXwm58/DW2OnpCWw+uA8/JBft/+z3zE+XvrI+T1HA== + } + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + + '@urql/core@5.0.2': + resolution: + { + integrity: sha512-gxMYkhbZg43cPftRv9K/A8lLjbZm2aam+K5AfPyQyADQVKkQ0V5hC/XtH++Zdi3swhBvgjbvVG/YjdkZTh8PVg== + } + + '@vee-validate/nuxt@4.12.6': + resolution: + { + integrity: sha512-QYz8RDgboLoGRr8J3daB2BQ1eMdBY5XRqtTvieeNhRfSBWweUpjuWRZJx6XqNyT1/K3dEgbrRvR07uTFAK4D0g== + } + + '@vee-validate/zod@4.12.6': + resolution: + { + integrity: sha512-LCP/hBWRyOgciwxVYvh4UrowVOJT/v5rJvUKCqEn+4ccx3bNtjVlOI4OvA6T1esg7LvmgseQiNQRxUvE2Pn9ng== + } + + '@vercel/nft@0.26.4': + resolution: + { + integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA== + } + engines: { node: '>=16' } + hasBin: true + + '@vitejs/plugin-vue-jsx@3.1.0': + resolution: + { + integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA== + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.0.4': + resolution: + { + integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ== + } + engines: { node: ^18.0.0 || >=20.0.0 } + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@volar/language-core@1.4.1': + resolution: + { + integrity: sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ== + } + + '@volar/language-core@2.2.0-alpha.8': + resolution: + { + integrity: sha512-Ew1Iw7/RIRNuDLn60fWJdOLApAlfTVPxbPiSLzc434PReC9kleYtaa//Wo2WlN1oiRqneW0pWQQV0CwYqaimLQ== + } + + '@volar/source-map@1.4.1': + resolution: + { + integrity: sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA== + } + + '@volar/source-map@2.2.0-alpha.8': + resolution: + { + integrity: sha512-E1ZVmXFJ5DU4fWDcWHzi8OLqqReqIDwhXvIMhVdk6+VipfMVv4SkryXu7/rs4GA/GsebcRyJdaSkKBB3OAkIcA== + } + + '@volar/typescript@1.4.1-patch.2': + resolution: + { + integrity: sha512-lPFYaGt8OdMEzNGJJChF40uYqMO4Z/7Q9fHPQC/NRVtht43KotSXLrkPandVVMf9aPbiJ059eAT+fwHGX16k4w== + } + peerDependencies: + typescript: '*' + + '@volar/vue-language-core@1.6.5': + resolution: + { + integrity: sha512-IF2b6hW4QAxfsLd5mePmLgtkXzNi+YnH6ltCd80gb7+cbdpFMjM1I+w+nSg2kfBTyfu+W8useCZvW89kPTBpzg== + } + + '@volar/vue-typescript@1.6.5': + resolution: + { + integrity: sha512-er9rVClS4PHztMUmtPMDTl+7c7JyrxweKSAEe/o/Noeq2bQx6v3/jZHVHBe8ZNUti5ubJL/+Tg8L3bzmlalV8A== + } + deprecated: 'WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.' + peerDependencies: + typescript: '*' + + '@vue-macros/common@1.10.2': + resolution: + { + integrity: sha512-WC66NPVh2mJWqm4L0l/u/cOqm4pNOIwVdMGnDYAH2rHcOWy5x68GkhpkYTBu1+xwCSeHWOQn1TCGGbD+98fFpA== + } + engines: { node: '>=16.14.0' } + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + + '@vue/babel-helper-vue-transform-on@1.2.2': + resolution: + { + integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw== + } + + '@vue/babel-plugin-jsx@1.2.2': + resolution: + { + integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA== + } + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.2.2': + resolution: + { + integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A== + } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.4.23': + resolution: + { + integrity: sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ== + } + + '@vue/compiler-core@3.4.25': + resolution: + { + integrity: sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg== + } + + '@vue/compiler-dom@3.4.23': + resolution: + { + integrity: sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw== + } + + '@vue/compiler-dom@3.4.25': + resolution: + { + integrity: sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg== + } + + '@vue/compiler-sfc@3.4.23': + resolution: + { + integrity: sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw== + } + + '@vue/compiler-sfc@3.4.25': + resolution: + { + integrity: sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ== + } + + '@vue/compiler-ssr@3.4.23': + resolution: + { + integrity: sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg== + } + + '@vue/compiler-ssr@3.4.25': + resolution: + { + integrity: sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ== + } + + '@vue/devtools-api@6.6.1': + resolution: + { + integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA== + } + + '@vue/devtools-api@7.0.27': + resolution: + { + integrity: sha512-BFCFCusSDcw2UcOFD/QeK7OxD1x2C/m+uAN30Q7jLKECSW53hmz0urzJmX834GuWDZX/hIxkyUKnLLfEIP1c/w== + } + + '@vue/devtools-applet@7.0.25': + resolution: + { + integrity: sha512-9JwnjRO2tAHxFjA+cHSpQ/DKIqUKILvYaWJkOt1KqkedXPHzUWU1NfQAto+p6ycaKInA5A0VdXdmIl4N8YJCrw== + } + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-core@7.0.25': + resolution: + { + integrity: sha512-aCsY4J6SvSBDuGdYADszByT0wy0GgpgdCApxcZzQEqYlyVchX7vqznJQrm7Y1GCLqAvoLaxsQqew7Cz+KQ3Idg== + } + + '@vue/devtools-kit@7.0.25': + resolution: + { + integrity: sha512-wbLkSnOTsKHPb1mB9koFHUoSAF8Dp6Ii/ocR2+DeXFY4oKqIjCeJb/4Lihk4rgqEhCy1WwxLfTgNDo83VvDYkQ== + } + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-kit@7.0.27': + resolution: + { + integrity: sha512-/A5xM38pPCFX5Yhl/lRFAzjyK6VNsH670nww2WbjFKWqlu3I+lMxWKzQkCW6A1V8bduITgl2kHORfg2gTw6QaA== + } + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-shared@7.0.25': + resolution: + { + integrity: sha512-5+XYhcHSXuJSguYnNwL6/e6VTmXwCfryWQOkffh9ZU2zMByybqqqBrMWqvBkqTmMFCjPdzulo66xXbVbwLaElQ== + } + + '@vue/devtools-shared@7.0.27': + resolution: + { + integrity: sha512-4VxtmZ6yjhiSloqZZq2UYU0TBGxOJ8GxWvp5OlAH70zYqi0FIAyWGPkOhvfoZ7DKQyv2UU0mmKzFHjsEkelGyQ== + } + + '@vue/devtools-ui@7.0.25': + resolution: + { + integrity: sha512-OxcwecnKmKm/zIG/VSixRgSqzjRU9UFld26LIq8kunxvr4zswjHT2xHMb/iauBC2c9TNo8Uk5muUTFLmNbYwnA== + } + peerDependencies: + '@unocss/reset': '>=0.50.0-0' + floating-vue: '>=2.0.0-0' + unocss: '>=0.50.0-0' + vue: '>=3.0.0-0' + + '@vue/language-core@2.0.13': + resolution: + { + integrity: sha512-oQgM+BM66SU5GKtUMLQSQN0bxHFkFpLSSAiY87wVziPaiNQZuKVDt/3yA7GB9PiQw0y/bTNL0bOc0jM/siYjKg== + } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.4.25': + resolution: + { + integrity: sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ== + } + + '@vue/runtime-core@3.4.25': + resolution: + { + integrity: sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q== + } + + '@vue/runtime-dom@3.4.25': + resolution: + { + integrity: sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA== + } + + '@vue/server-renderer@3.4.25': + resolution: + { + integrity: sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ== + } + peerDependencies: + vue: 3.4.25 + + '@vue/shared@3.4.21': + resolution: + { + integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g== + } + + '@vue/shared@3.4.23': + resolution: + { + integrity: sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg== + } + + '@vue/shared@3.4.25': + resolution: + { + integrity: sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA== + } + + '@vueuse/components@10.9.0': + resolution: + { + integrity: sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A== + } + + '@vueuse/core@10.9.0': + resolution: + { + integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg== + } + + '@vueuse/integrations@10.9.0': + resolution: + { + integrity: sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q== + } + peerDependencies: + async-validator: '*' + axios: '*' + change-case: '*' + drauu: '*' + focus-trap: '*' + fuse.js: '*' + idb-keyval: '*' + jwt-decode: '*' + nprogress: '*' + qrcode: '*' + sortablejs: '*' + universal-cookie: '*' + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + + '@vueuse/math@10.9.0': + resolution: + { + integrity: sha512-qb60AzFKzg8Gw85c4YiheEMC2AMkk+eO/nB9MmuQFU/HAHvfVckesiPlwaQqUlZQ4MJt0z8qP18/H7ozpj0sKQ== + } + + '@vueuse/metadata@10.9.0': + resolution: + { + integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA== + } + + '@vueuse/nuxt@10.9.0': + resolution: + { + integrity: sha512-nC4Efg28Q6E41fUD5R+zM9uT5c+NfaDzaJCpqaEV/qHj+/BNJmkDBK8POLIUsiVOY35d0oD/YxZ+eVizqWBZow== + } + peerDependencies: + nuxt: ^3.0.0 + + '@vueuse/shared@10.9.0': + resolution: + { + integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw== + } + + JSONStream@1.3.5: + resolution: + { + integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + } + hasBin: true + + abbrev@1.1.1: + resolution: + { + integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + } + + abbrev@2.0.0: + resolution: + { + integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + abort-controller@3.0.0: + resolution: + { + integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + } + engines: { node: '>=6.5' } + + accepts@1.3.8: + resolution: + { + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + } + engines: { node: '>= 0.6' } + + acorn-import-attributes@1.9.5: + resolution: + { + integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + } + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.11.3: + resolution: + { + integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + } + engines: { node: '>=0.4.0' } + hasBin: true + + agent-base@6.0.2: + resolution: + { + integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + } + engines: { node: '>= 6.0.0' } + + agent-base@7.1.1: + resolution: + { + integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + } + engines: { node: '>= 14' } + + aggregate-error@3.1.0: + resolution: + { + integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + } + engines: { node: '>=8' } + + ajv@6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + } + + ajv@8.12.0: + resolution: + { + integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + } + + algoliasearch@4.23.2: + resolution: + { + integrity: sha512-8aCl055IsokLuPU8BzLjwzXjb7ty9TPcUFFOk0pYOwsE5DMVhE3kwCMFtsCFKcnoPZK7oObm+H5mbnSO/9ioxQ== + } + + ansi-colors@4.1.3: + resolution: + { + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + } + engines: { node: '>=6' } + + ansi-escapes@4.3.2: + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + } + engines: { node: '>=8' } + + ansi-escapes@6.2.1: + resolution: + { + integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== + } + engines: { node: '>=14.16' } + + ansi-regex@5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + } + engines: { node: '>=8' } + + ansi-regex@6.0.1: + resolution: + { + integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + } + engines: { node: '>=12' } + + ansi-styles@3.2.1: + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + } + engines: { node: '>=4' } + + ansi-styles@4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + } + engines: { node: '>=8' } + + ansi-styles@6.2.1: + resolution: + { + integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + } + engines: { node: '>=12' } + + any-promise@1.3.0: + resolution: + { + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + } + + anymatch@3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + } + engines: { node: '>= 8' } + + aproba@2.0.0: + resolution: + { + integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + } + + archiver-utils@5.0.2: + resolution: + { + integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA== + } + engines: { node: '>= 14' } + + archiver@7.0.1: + resolution: + { + integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ== + } + engines: { node: '>= 14' } + + are-docs-informative@0.0.2: + resolution: + { + integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== + } + engines: { node: '>=14' } + + are-we-there-yet@2.0.0: + resolution: + { + integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + } + engines: { node: '>=10' } + + arg@5.0.2: + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + } + + argparse@2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + } + + aria-hidden@1.2.4: + resolution: + { + integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== + } + engines: { node: '>=10' } + + aria-query@5.3.0: + resolution: + { + integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + } + + array-ify@1.0.0: + resolution: + { + integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + } + + array-union@2.1.0: + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + } + engines: { node: '>=8' } + + ast-kit@0.12.1: + resolution: + { + integrity: sha512-O+33g7x6irsESUcd47KdfWUrS2F6aGp9KeVJFGj0YjIznfXpBxVGjA0w+y/1OKqX4mFOfmZ9Xpf1ixPT4n9xxw== + } + engines: { node: '>=16.14.0' } + + ast-kit@0.9.5: + resolution: + { + integrity: sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg== + } + engines: { node: '>=16.14.0' } + + ast-walker-scope@0.5.0: + resolution: + { + integrity: sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q== + } + engines: { node: '>=16.14.0' } + + async-sema@3.1.1: + resolution: + { + integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg== + } + + async@2.6.4: + resolution: + { + integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + } + + async@3.2.5: + resolution: + { + integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + } + + at-least-node@1.0.0: + resolution: + { + integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + } + engines: { node: '>= 4.0.0' } + + autoprefixer@10.4.19: + resolution: + { + integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== + } + engines: { node: ^10 || ^12 || >=14 } + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axobject-query@4.0.0: + resolution: + { + integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw== + } + + b4a@1.6.6: + resolution: + { + integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== + } + + balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + } + + bare-events@2.2.2: + resolution: + { + integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ== + } + + base64-js@1.5.1: + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + } + + binary-extensions@2.3.0: + resolution: + { + integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + } + engines: { node: '>=8' } + + bindings@1.5.0: + resolution: + { + integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + } + + birpc@0.2.17: + resolution: + { + integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg== + } + + blob-to-buffer@1.2.9: + resolution: + { + integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA== + } + + boolbase@1.0.0: + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + } + + brace-expansion@1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + } + + brace-expansion@2.0.1: + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + } + + braces@3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + } + engines: { node: '>=8' } + + brotli@1.3.3: + resolution: + { + integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg== + } + + browserslist@4.23.0: + resolution: + { + integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + + buffer-crc32@1.0.0: + resolution: + { + integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w== + } + engines: { node: '>=8.0.0' } + + buffer-from@1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + } + + buffer@6.0.3: + resolution: + { + integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + } + + builtin-modules@3.3.0: + resolution: + { + integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + } + engines: { node: '>=6' } + + builtins@5.0.1: + resolution: + { + integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + } + + bundle-name@4.1.0: + resolution: + { + integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + } + engines: { node: '>=18' } + + c12@1.10.0: + resolution: + { + integrity: sha512-0SsG7UDhoRWcuSvKWHaXmu5uNjDCDN3nkQLRL4Q42IlFy+ze58FcCoI3uPwINXinkz7ZinbhEgyzYFw9u9ZV8g== + } + + cac@6.7.14: + resolution: + { + integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + } + engines: { node: '>=8' } + + cacache@18.0.2: + resolution: + { + integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + cache-content-type@1.0.1: + resolution: + { + integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== + } + engines: { node: '>= 6.0.0' } + + callsites@3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + } + engines: { node: '>=6' } + + camelcase-css@2.0.1: + resolution: + { + integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + } + engines: { node: '>= 6' } + + camelcase@6.3.0: + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + } + engines: { node: '>=10' } + + caniuse-api@3.0.0: + resolution: + { + integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + } + + caniuse-lite@1.0.30001605: + resolution: + { + integrity: sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ== + } + + chalk@2.4.2: + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + } + engines: { node: '>=4' } + + chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + } + engines: { node: '>=10' } + + chalk@5.3.0: + resolution: + { + integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + + chokidar@3.6.0: + resolution: + { + integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + } + engines: { node: '>= 8.10.0' } + + chownr@2.0.0: + resolution: + { + integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + } + engines: { node: '>=10' } + + ci-info@4.0.0: + resolution: + { + integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== + } + engines: { node: '>=8' } + + citty@0.1.6: + resolution: + { + integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ== + } + + clean-regexp@1.0.0: + resolution: + { + integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== + } + engines: { node: '>=4' } + + clean-stack@2.2.0: + resolution: + { + integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + } + engines: { node: '>=6' } + + clear@0.1.0: + resolution: + { + integrity: sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw== + } + + cli-cursor@4.0.0: + resolution: + { + integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + cli-truncate@4.0.0: + resolution: + { + integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== + } + engines: { node: '>=18' } + + clipboardy@4.0.0: + resolution: + { + integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w== + } + engines: { node: '>=18' } + + cliui@8.0.1: + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + } + engines: { node: '>=12' } + + clone@2.1.2: + resolution: + { + integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + } + engines: { node: '>=0.8' } + + clsx@2.1.1: + resolution: + { + integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + } + engines: { node: '>=6' } + + cluster-key-slot@1.1.2: + resolution: + { + integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== + } + engines: { node: '>=0.10.0' } + + co@4.6.0: + resolution: + { + integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + } + engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } + + code-red@1.0.4: + resolution: + { + integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw== + } + + color-convert@1.9.3: + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + } + + color-convert@2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + } + engines: { node: '>=7.0.0' } + + color-name@1.1.3: + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + } + + color-name@1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + } + + color-support@1.1.3: + resolution: + { + integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + } + hasBin: true + + colord@2.9.3: + resolution: + { + integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + } + + colorette@2.0.20: + resolution: + { + integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + } + + commander@11.1.0: + resolution: + { + integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + } + engines: { node: '>=16' } + + commander@2.20.3: + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + } + + commander@4.1.1: + resolution: + { + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + } + engines: { node: '>= 6' } + + commander@6.2.1: + resolution: + { + integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + } + engines: { node: '>= 6' } + + commander@7.2.0: + resolution: + { + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + } + engines: { node: '>= 10' } + + commander@8.3.0: + resolution: + { + integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + } + engines: { node: '>= 12' } + + comment-parser@1.4.1: + resolution: + { + integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== + } + engines: { node: '>= 12.0.0' } + + commitlint@19.3.0: + resolution: + { + integrity: sha512-B8eUVQCjz+1ZAjR3LC3+vzKg7c4/qN4QhSxkjp0u0v7Pi79t9CsnGAluvveKmFh56e885zgToPL5ax+l8BHTPg== + } + engines: { node: '>=v18' } + hasBin: true + + commondir@1.0.1: + resolution: + { + integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + } + + compare-func@2.0.0: + resolution: + { + integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + } + + compress-commons@6.0.2: + resolution: + { + integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg== + } + engines: { node: '>= 14' } + + computeds@0.0.1: + resolution: + { + integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q== + } + + concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + } + + confbox@0.1.3: + resolution: + { + integrity: sha512-eH3ZxAihl1PhKfpr4VfEN6/vUd87fmgb6JkldHgg/YR6aEBhW63qUDgzP2Y6WM0UumdsYp5H3kibalXAdHfbgg== + } + + consola@3.2.3: + resolution: + { + integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== + } + engines: { node: ^14.18.0 || >=16.10.0 } + + console-control-strings@1.1.0: + resolution: + { + integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + } + + content-disposition@0.5.4: + resolution: + { + integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + } + engines: { node: '>= 0.6' } + + content-type@1.0.5: + resolution: + { + integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + } + engines: { node: '>= 0.6' } + + conventional-changelog-angular@7.0.0: + resolution: + { + integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== + } + engines: { node: '>=16' } + + conventional-changelog-conventionalcommits@7.0.2: + resolution: + { + integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w== + } + engines: { node: '>=16' } + + conventional-commits-parser@5.0.0: + resolution: + { + integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== + } + engines: { node: '>=16' } + hasBin: true + + convert-source-map@2.0.0: + resolution: + { + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + } + + cookie-es@1.1.0: + resolution: + { + integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw== + } + + cookies@0.9.1: + resolution: + { + integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== + } + engines: { node: '>= 0.8' } + + core-js-compat@3.36.1: + resolution: + { + integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== + } + + core-util-is@1.0.3: + resolution: + { + integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + } + + cosmiconfig-typescript-loader@5.0.0: + resolution: + { + integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA== + } + engines: { node: '>=v16' } + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + + cosmiconfig@9.0.0: + resolution: + { + integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + } + engines: { node: '>=14' } + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc-32@1.2.2: + resolution: + { + integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + } + engines: { node: '>=0.8' } + hasBin: true + + crc32-stream@6.0.0: + resolution: + { + integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g== + } + engines: { node: '>= 14' } + + create-require@1.1.1: + resolution: + { + integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + } + + croner@8.0.1: + resolution: + { + integrity: sha512-Hq1+lXVgjJjcS/U+uk6+yVmtxami0r0b+xVtlGyABgdz110l/kOnHWvlSI7nVzrTl8GCdZHwZS4pbBFT7hSL/g== + } + engines: { node: '>=18.0' } + + cronstrue@2.49.0: + resolution: + { + integrity: sha512-FWZBqdStQaPR8ZTBQGALh1EK9Hl1HcG70dyGvD1rKLPafFO3H73o38dz/e8YkIlbLn3JxmBI/f6Doe3Nh+DcEQ== + } + hasBin: true + + cross-fetch@3.1.8: + resolution: + { + integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + } + + cross-spawn@7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + } + engines: { node: '>= 8' } + + crossws@0.2.4: + resolution: + { + integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg== + } + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true + + css-declaration-sorter@7.2.0: + resolution: + { + integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== + } + engines: { node: ^14 || ^16 || >=18 } + peerDependencies: + postcss: ^8.0.9 + + css-select@5.1.0: + resolution: + { + integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + } + + css-tree@2.2.1: + resolution: + { + integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } + + css-tree@2.3.1: + resolution: + { + integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } + + css-what@6.1.0: + resolution: + { + integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + } + engines: { node: '>= 6' } + + cssesc@3.0.0: + resolution: + { + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + } + engines: { node: '>=4' } + hasBin: true + + cssnano-preset-default@6.1.2: + resolution: + { + integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + cssnano-utils@4.0.2: + resolution: + { + integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + cssnano@6.1.2: + resolution: + { + integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + csso@5.0.5: + resolution: + { + integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } + + csstype@3.1.3: + resolution: + { + integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + } + + dargs@8.1.0: + resolution: + { + integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== + } + engines: { node: '>=12' } + + dayjs@1.11.10: + resolution: + { + integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + } + + db0@0.1.4: + resolution: + { + integrity: sha512-Ft6eCwONYxlwLjBXSJxw0t0RYtA5gW9mq8JfBXn9TtC0nDPlqePAhpv9v4g9aONBi6JI1OXHTKKkUYGd+BOrCA== + } + peerDependencies: + '@libsql/client': ^0.5.2 + better-sqlite3: ^9.4.3 + drizzle-orm: ^0.29.4 + peerDependenciesMeta: + '@libsql/client': + optional: true + better-sqlite3: + optional: true + drizzle-orm: + optional: true + + de-indent@1.0.2: + resolution: + { + integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + } + + debug@2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent-js@1.0.1: + resolution: + { + integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ== + } + + deep-equal@1.0.1: + resolution: + { + integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== + } + + deep-is@0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + } + + deepmerge@4.3.1: + resolution: + { + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + } + engines: { node: '>=0.10.0' } + + default-browser-id@5.0.0: + resolution: + { + integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + } + engines: { node: '>=18' } + + default-browser@5.2.1: + resolution: + { + integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + } + engines: { node: '>=18' } + + define-lazy-prop@2.0.0: + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + } + engines: { node: '>=8' } + + define-lazy-prop@3.0.0: + resolution: + { + integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + } + engines: { node: '>=12' } + + defu@6.1.4: + resolution: + { + integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== + } + + delegates@1.0.0: + resolution: + { + integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + } + + denque@2.1.0: + resolution: + { + integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + } + engines: { node: '>=0.10' } + + depd@1.1.2: + resolution: + { + integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + } + engines: { node: '>= 0.6' } + + depd@2.0.0: + resolution: + { + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + } + engines: { node: '>= 0.8' } + + dequal@2.0.3: + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + } + engines: { node: '>=6' } + + destr@2.0.3: + resolution: + { + integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ== + } + + destroy@1.2.0: + resolution: + { + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + } + engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + + detect-indent@7.0.1: + resolution: + { + integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g== + } + engines: { node: '>=12.20' } + + detect-libc@1.0.3: + resolution: + { + integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + } + engines: { node: '>=0.10' } + hasBin: true + + detect-libc@2.0.3: + resolution: + { + integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + } + engines: { node: '>=8' } + + detect-newline@4.0.1: + resolution: + { + integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + devalue@4.3.2: + resolution: + { + integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg== + } + + dfa@1.2.0: + resolution: + { + integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q== + } + + didyoumean@1.2.2: + resolution: + { + integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + } + + diff@5.2.0: + resolution: + { + integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + } + engines: { node: '>=0.3.1' } + + dir-glob@3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + } + engines: { node: '>=8' } + + dlv@1.1.3: + resolution: + { + integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + } + + doctrine@3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + } + engines: { node: '>=6.0.0' } + + dom-serializer@2.0.0: + resolution: + { + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + } + + domelementtype@2.3.0: + resolution: + { + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + } + + domhandler@5.0.3: + resolution: + { + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + } + engines: { node: '>= 4' } + + domutils@3.1.0: + resolution: + { + integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + } + + dot-prop@5.3.0: + resolution: + { + integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + } + engines: { node: '>=8' } + + dot-prop@8.0.2: + resolution: + { + integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ== + } + engines: { node: '>=16' } + + dotenv@16.4.5: + resolution: + { + integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + } + engines: { node: '>=12' } + + duplexer@0.1.2: + resolution: + { + integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + } + + eastasianwidth@0.2.0: + resolution: + { + integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + } + + ee-first@1.1.1: + resolution: + { + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + } + + electron-to-chromium@1.4.724: + resolution: + { + integrity: sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA== + } + + emoji-regex@10.3.0: + resolution: + { + integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + } + + emoji-regex@8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + } + + emoji-regex@9.2.2: + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + } + + encodeurl@1.0.2: + resolution: + { + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + } + engines: { node: '>= 0.8' } + + encoding@0.1.13: + resolution: + { + integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + } + + enhanced-resolve@5.16.0: + resolution: + { + integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== + } + engines: { node: '>=10.13.0' } + + entities@4.5.0: + resolution: + { + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + } + engines: { node: '>=0.12' } + + env-paths@2.2.1: + resolution: + { + integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + } + engines: { node: '>=6' } + + env-paths@3.0.0: + resolution: + { + integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + err-code@2.0.3: + resolution: + { + integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + } + + error-ex@1.3.2: + resolution: + { + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + } + + error-stack-parser-es@0.1.1: + resolution: + { + integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA== + } + + esbuild@0.20.2: + resolution: + { + integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== + } + engines: { node: '>=12' } + hasBin: true + + escalade@3.1.2: + resolution: + { + integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + } + engines: { node: '>=6' } + + escape-html@1.0.3: + resolution: + { + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + } + + escape-string-regexp@1.0.5: + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + } + engines: { node: '>=0.8.0' } + + escape-string-regexp@4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + } + engines: { node: '>=10' } + + escape-string-regexp@5.0.0: + resolution: + { + integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + } + engines: { node: '>=12' } + + escodegen@2.1.0: + resolution: + { + integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + } + engines: { node: '>=6.0' } + hasBin: true + + eslint-config-flat-gitignore@0.1.5: + resolution: + { + integrity: sha512-hEZLwuZjDBGDERA49c2q7vxc8sCGv8EdBp6PQYzGOMcHIgrfG9YOM6s/4jx24zhD+wnK9AI8mgN5RxSss5nClQ== + } + + eslint-config-prettier@9.1.0: + resolution: + { + integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== + } + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-flat-config-utils@0.2.3: + resolution: + { + integrity: sha512-tfrMNXZfuN4q7sFi1Cr//BN3qdI7c8fLJhbshlp8l9PZIqZ7eVeeyd2Regtu/P9kjOlv18lRlBALzsZaF7ByUg== + } + + eslint-import-resolver-node@0.3.9: + resolution: + { + integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + } + + eslint-plugin-import-x@0.5.0: + resolution: + { + integrity: sha512-C7R8Z4IzxmsoOPMtSzwuOBW5FH6iRlxHR6iTks+MzVlrk3r3TUxokkWTx3ypdj9nGOEP+CG/5e6ebZzHbxgbbQ== + } + engines: { node: '>=16' } + peerDependencies: + eslint: ^8.56.0 || ^9.0.0-0 + + eslint-plugin-jsdoc@48.2.3: + resolution: + { + integrity: sha512-r9DMAmFs66VNvNqRLLjHejdnJtILrt3xGi+Qx0op0oRfFGVpOR1Hb3BC++MacseHx93d8SKYPhyrC9BS7Os2QA== + } + engines: { node: '>=18' } + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-prettier@5.1.3: + resolution: + { + integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-unicorn@52.0.0: + resolution: + { + integrity: sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng== + } + engines: { node: '>=16' } + peerDependencies: + eslint: '>=8.56.0' + + eslint-plugin-vue@9.25.0: + resolution: + { + integrity: sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA== + } + engines: { node: ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-scope@7.2.2: + resolution: + { + integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + eslint-scope@8.0.1: + resolution: + { + integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og== + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + eslint-typegen@0.2.4: + resolution: + { + integrity: sha512-NQAsPiq7U8VT4Xue5JWu3/gP7O5M4M7OhF49Vpx3iuxEq6oyLmdVBFyB1u0QLiby7luGDHLrMl1wfqZClZU6eg== + } + peerDependencies: + eslint: ^8.45.0 || ^9.0.0 + + eslint-visitor-keys@3.4.3: + resolution: + { + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + eslint-visitor-keys@4.0.0: + resolution: + { + integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + eslint@9.1.1: + resolution: + { + integrity: sha512-b4cRQ0BeZcSEzPpY2PjFY70VbO32K7BStTGtBsnIGdTSEEQzBi8hPBcGQmTG2zUvFr9uLe0TK42bw8YszuHEqg== + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + hasBin: true + + espree@10.0.1: + resolution: + { + integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww== + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + espree@9.6.1: + resolution: + { + integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + esprima@4.0.1: + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + } + engines: { node: '>=4' } + hasBin: true + + esquery@1.5.0: + resolution: + { + integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + } + engines: { node: '>=0.10' } + + esrecurse@4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + } + engines: { node: '>=4.0' } + + estraverse@5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + } + engines: { node: '>=4.0' } + + estree-walker@2.0.2: + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + } + + estree-walker@3.0.3: + resolution: + { + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + } + + esutils@2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + } + engines: { node: '>=0.10.0' } + + etag@1.8.1: + resolution: + { + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + } + engines: { node: '>= 0.6' } + + event-target-shim@5.0.1: + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + } + engines: { node: '>=6' } + + eventemitter3@5.0.1: + resolution: + { + integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + } + + events@3.3.0: + resolution: + { + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + } + engines: { node: '>=0.8.x' } + + execa@5.1.1: + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + } + engines: { node: '>=10' } + + execa@7.2.0: + resolution: + { + integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + } + engines: { node: ^14.18.0 || ^16.14.0 || >=18.0.0 } + + execa@8.0.1: + resolution: + { + integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + } + engines: { node: '>=16.17' } + + exponential-backoff@3.1.1: + resolution: + { + integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + } + + externality@1.0.2: + resolution: + { + integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw== + } + + fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + } + + fast-diff@1.3.0: + resolution: + { + integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + } + + fast-fifo@1.3.2: + resolution: + { + integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + } + + fast-glob@3.3.2: + resolution: + { + integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + } + engines: { node: '>=8.6.0' } + + fast-json-stable-stringify@2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + } + + fast-levenshtein@2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + } + + fastq@1.17.1: + resolution: + { + integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + } + + file-entry-cache@8.0.0: + resolution: + { + integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + } + engines: { node: '>=16.0.0' } + + file-uri-to-path@1.0.0: + resolution: + { + integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + } + + fill-range@7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + } + engines: { node: '>=8' } + + find-up@4.1.0: + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + } + engines: { node: '>=8' } + + find-up@5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + } + engines: { node: '>=10' } + + find-up@7.0.0: + resolution: + { + integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== + } + engines: { node: '>=18' } + + flat-cache@4.0.1: + resolution: + { + integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + } + engines: { node: '>=16' } + + flat@5.0.2: + resolution: + { + integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + } + hasBin: true + + flatted@3.3.1: + resolution: + { + integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + } + + floating-vue@5.2.2: + resolution: + { + integrity: sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg== + } + peerDependencies: + '@nuxt/kit': ^3.2.0 + vue: ^3.2.0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + focus-trap@7.5.4: + resolution: + { + integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w== + } + + fontaine@0.5.0: + resolution: + { + integrity: sha512-vPDSWKhVAfTx4hRKT777+N6Szh2pAosAuzLpbppZ6O3UdD/1m6OlHjNcC3vIbgkRTIcLjzySLHXzPeLO2rE8cA== + } + + fontkit@2.0.2: + resolution: + { + integrity: sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA== + } + + foreground-child@3.1.1: + resolution: + { + integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + } + engines: { node: '>=14' } + + fraction.js@4.3.7: + resolution: + { + integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + } + + fresh@0.5.2: + resolution: + { + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + } + engines: { node: '>= 0.6' } + + fs-extra@11.2.0: + resolution: + { + integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + } + engines: { node: '>=14.14' } + + fs-extra@9.1.0: + resolution: + { + integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + } + engines: { node: '>=10' } + + fs-minipass@2.1.0: + resolution: + { + integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + } + engines: { node: '>= 8' } + + fs-minipass@3.0.3: + resolution: + { + integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + fs.realpath@1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + } + + fsevents@2.3.3: + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + + function-bind@1.1.2: + resolution: + { + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + } + + fuse.js@6.6.2: + resolution: + { + integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA== + } + engines: { node: '>=10' } + + gauge@3.0.2: + resolution: + { + integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + } + engines: { node: '>=10' } + + gensync@1.0.0-beta.2: + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + } + engines: { node: '>=6.9.0' } + + get-caller-file@2.0.5: + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + } + engines: { node: 6.* || 8.* || >= 10.* } + + get-east-asian-width@1.2.0: + resolution: + { + integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== + } + engines: { node: '>=18' } + + get-port-please@3.1.2: + resolution: + { + integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ== + } + + get-stdin@9.0.0: + resolution: + { + integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== + } + engines: { node: '>=12' } + + get-stream@6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + } + engines: { node: '>=10' } + + get-stream@8.0.1: + resolution: + { + integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + } + engines: { node: '>=16' } + + get-tsconfig@4.7.3: + resolution: + { + integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg== + } + + giget@1.2.3: + resolution: + { + integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA== + } + hasBin: true + + git-config-path@2.0.0: + resolution: + { + integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA== + } + engines: { node: '>=4' } + + git-hooks-list@3.1.0: + resolution: + { + integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA== + } + + git-raw-commits@4.0.0: + resolution: + { + integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== + } + engines: { node: '>=16' } + hasBin: true + + git-up@7.0.0: + resolution: + { + integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== + } + + git-url-parse@13.1.1: + resolution: + { + integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ== + } + + glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + } + engines: { node: '>= 6' } + + glob-parent@6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + } + engines: { node: '>=10.13.0' } + + glob@10.3.12: + resolution: + { + integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg== + } + engines: { node: '>=16 || 14 >=14.17' } + hasBin: true + + glob@7.2.3: + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + } + + glob@8.1.0: + resolution: + { + integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + } + engines: { node: '>=12' } + + global-directory@4.0.1: + resolution: + { + integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== + } + engines: { node: '>=18' } + + globals@11.12.0: + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + } + engines: { node: '>=4' } + + globals@13.24.0: + resolution: + { + integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + } + engines: { node: '>=8' } + + globals@14.0.0: + resolution: + { + integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + } + engines: { node: '>=18' } + + globals@15.0.0: + resolution: + { + integrity: sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw== + } + engines: { node: '>=18' } + + globby@11.1.0: + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + } + engines: { node: '>=10' } + + globby@13.2.2: + resolution: + { + integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + globby@14.0.1: + resolution: + { + integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ== + } + engines: { node: '>=18' } + + gql.tada@1.5.7: + resolution: + { + integrity: sha512-5Qg0sUF+NnRf4d0d0u4+k06G3edtyiQ/JsoyEnJSFsq6iwRuxBL8boa3LvX0bQ8SfaPRaiLbWiMvWnT0mJKxcw== + } + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + graceful-fs@4.2.11: + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + } + + graphemer@1.4.0: + resolution: + { + integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + } + + graphql@16.8.1: + resolution: + { + integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== + } + engines: { node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0 } + + gzip-size@6.0.0: + resolution: + { + integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + } + engines: { node: '>=10' } + + gzip-size@7.0.0: + resolution: + { + integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + h3@1.11.1: + resolution: + { + integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A== + } + + has-flag@3.0.0: + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + } + engines: { node: '>=4' } + + has-flag@4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + } + engines: { node: '>=8' } + + has-symbols@1.0.3: + resolution: + { + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + } + engines: { node: '>= 0.4' } + + has-tostringtag@1.0.2: + resolution: + { + integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + } + engines: { node: '>= 0.4' } + + has-unicode@2.0.1: + resolution: + { + integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + } + + hash-sum@2.0.0: + resolution: + { + integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + } + + hasown@2.0.2: + resolution: + { + integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + } + engines: { node: '>= 0.4' } + + he@1.2.0: + resolution: + { + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + } + hasBin: true + + hookable@5.5.3: + resolution: + { + integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== + } + + hosted-git-info@2.8.9: + resolution: + { + integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + } + + hosted-git-info@7.0.1: + resolution: + { + integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + html-tags@3.3.1: + resolution: + { + integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== + } + engines: { node: '>=8' } + + http-assert@1.5.0: + resolution: + { + integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== + } + engines: { node: '>= 0.8' } + + http-cache-semantics@4.1.1: + resolution: + { + integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + } + + http-errors@1.6.3: + resolution: + { + integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + } + engines: { node: '>= 0.6' } + + http-errors@1.8.1: + resolution: + { + integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + } + engines: { node: '>= 0.6' } + + http-errors@2.0.0: + resolution: + { + integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + } + engines: { node: '>= 0.8' } + + http-proxy-agent@7.0.2: + resolution: + { + integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + } + engines: { node: '>= 14' } + + http-shutdown@1.2.2: + resolution: + { + integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== + } + engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } + + https-proxy-agent@5.0.1: + resolution: + { + integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + } + engines: { node: '>= 6' } + + https-proxy-agent@7.0.4: + resolution: + { + integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + } + engines: { node: '>= 14' } + + httpxy@0.1.5: + resolution: + { + integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ== + } + + human-signals@2.1.0: + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + } + engines: { node: '>=10.17.0' } + + human-signals@4.3.1: + resolution: + { + integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + } + engines: { node: '>=14.18.0' } + + human-signals@5.0.0: + resolution: + { + integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + } + engines: { node: '>=16.17.0' } + + husky@9.0.11: + resolution: + { + integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== + } + engines: { node: '>=18' } + hasBin: true + + iconv-lite@0.6.3: + resolution: + { + integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + } + engines: { node: '>=0.10.0' } + + ieee754@1.2.1: + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + } + + ignore-walk@6.0.4: + resolution: + { + integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + ignore@5.3.1: + resolution: + { + integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + } + engines: { node: '>= 4' } + + image-meta@0.2.0: + resolution: + { + integrity: sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg== + } + + import-fresh@3.3.0: + resolution: + { + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + } + engines: { node: '>=6' } + + import-meta-resolve@4.0.0: + resolution: + { + integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA== + } + + imurmurhash@0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + } + engines: { node: '>=0.8.19' } + + indent-string@4.0.0: + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + } + engines: { node: '>=8' } + + inflight@1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + } + + inherits@2.0.3: + resolution: + { + integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + } + + inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + } + + ini@1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + } + + ini@4.1.1: + resolution: + { + integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + ioredis@5.3.2: + resolution: + { + integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA== + } + engines: { node: '>=12.22.0' } + + ip-address@9.0.5: + resolution: + { + integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + } + engines: { node: '>= 12' } + + iron-webcrypto@1.1.0: + resolution: + { + integrity: sha512-5vgYsCakNlaQub1orZK5QmNYhwYtcllTkZBp5sfIaCqY93Cf6l+v2rtE+E4TMbcfjxDMCdrO8wmp7+ZvhDECLA== + } + + is-arrayish@0.2.1: + resolution: + { + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + } + + is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + } + engines: { node: '>=8' } + + is-builtin-module@3.2.1: + resolution: + { + integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + } + engines: { node: '>=6' } + + is-core-module@2.13.1: + resolution: + { + integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + } + + is-docker@2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + } + engines: { node: '>=8' } + hasBin: true + + is-docker@3.0.0: + resolution: + { + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hasBin: true + + is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + } + engines: { node: '>=0.10.0' } + + is-fullwidth-code-point@3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + } + engines: { node: '>=8' } + + is-fullwidth-code-point@4.0.0: + resolution: + { + integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + } + engines: { node: '>=12' } + + is-fullwidth-code-point@5.0.0: + resolution: + { + integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== + } + engines: { node: '>=18' } + + is-generator-function@1.0.10: + resolution: + { + integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + } + engines: { node: '>= 0.4' } + + is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + } + engines: { node: '>=0.10.0' } + + is-https@4.0.0: + resolution: + { + integrity: sha512-FeMLiqf8E5g6SdiVJsPcNZX8k4h2fBs1wp5Bb6uaNxn58ufK1axBqQZdmAQsqh0t9BuwFObybrdVJh6MKyPlyg== + } + + is-inside-container@1.0.0: + resolution: + { + integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + } + engines: { node: '>=14.16' } + hasBin: true + + is-installed-globally@1.0.0: + resolution: + { + integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ== + } + engines: { node: '>=18' } + + is-lambda@1.0.1: + resolution: + { + integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + } + + is-module@1.0.0: + resolution: + { + integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + } + + is-number@7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + } + engines: { node: '>=0.12.0' } + + is-obj@2.0.0: + resolution: + { + integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + } + engines: { node: '>=8' } + + is-path-inside@3.0.3: + resolution: + { + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + } + engines: { node: '>=8' } + + is-path-inside@4.0.0: + resolution: + { + integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA== + } + engines: { node: '>=12' } + + is-plain-obj@4.1.0: + resolution: + { + integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + } + engines: { node: '>=12' } + + is-primitive@3.0.1: + resolution: + { + integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== + } + engines: { node: '>=0.10.0' } + + is-reference@1.2.1: + resolution: + { + integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + } + + is-reference@3.0.2: + resolution: + { + integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== + } + + is-ssh@1.4.0: + resolution: + { + integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== + } + + is-stream@2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + } + engines: { node: '>=8' } + + is-stream@3.0.0: + resolution: + { + integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + is-text-path@2.0.0: + resolution: + { + integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== + } + engines: { node: '>=8' } + + is-wsl@2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + } + engines: { node: '>=8' } + + is-wsl@3.1.0: + resolution: + { + integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + } + engines: { node: '>=16' } + + is64bit@2.0.0: + resolution: + { + integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw== + } + engines: { node: '>=18' } + + isarray@1.0.0: + resolution: + { + integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + } + + isexe@2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + } + + isexe@3.1.1: + resolution: + { + integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + } + engines: { node: '>=16' } + + jackspeak@2.3.6: + resolution: + { + integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + } + engines: { node: '>=14' } + + jiti@1.21.0: + resolution: + { + integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + } + hasBin: true + + js-tokens@4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + } + + js-tokens@9.0.0: + resolution: + { + integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ== + } + + js-yaml@4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + } + hasBin: true + + jsbn@1.1.0: + resolution: + { + integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + } + + jsdoc-type-pratt-parser@4.0.0: + resolution: + { + integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ== + } + engines: { node: '>=12.0.0' } + + jsesc@0.5.0: + resolution: + { + integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + } + hasBin: true + + jsesc@2.5.2: + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + } + engines: { node: '>=4' } + hasBin: true + + jsesc@3.0.2: + resolution: + { + integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + } + engines: { node: '>=6' } + hasBin: true + + json-buffer@3.0.1: + resolution: + { + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + } + + json-parse-even-better-errors@2.3.1: + resolution: + { + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + } + + json-parse-even-better-errors@3.0.1: + resolution: + { + integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + json-schema-to-typescript-lite@14.0.1: + resolution: + { + integrity: sha512-MhjvNC3MfEyYmKiC1rEzwDTCc22+hWU/2HKVfnklar4tifbkT8oZvvamEG1n550JeCmJ0V+2ly+5fF5K+lIExg== + } + + json-schema-traverse@0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + } + + json-schema-traverse@1.0.0: + resolution: + { + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + } + + json-stable-stringify-without-jsonify@1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + } + + json5@2.2.3: + resolution: + { + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + } + engines: { node: '>=6' } + hasBin: true + + jsonc-eslint-parser@2.4.0: + resolution: + { + integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + jsonc-parser@3.2.1: + resolution: + { + integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== + } + + jsonfile@6.1.0: + resolution: + { + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + } + + jsonparse@1.3.1: + resolution: + { + integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + } + engines: { '0': node >= 0.2.0 } + + keygrip@1.1.0: + resolution: + { + integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + } + engines: { node: '>= 0.6' } + + keyv@4.5.4: + resolution: + { + integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + } + + kleur@3.0.3: + resolution: + { + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + } + engines: { node: '>=6' } + + klona@2.0.6: + resolution: + { + integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + } + engines: { node: '>= 8' } + + knitwork@1.1.0: + resolution: + { + integrity: sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw== + } + + koa-compose@4.1.0: + resolution: + { + integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== + } + + koa-convert@2.0.0: + resolution: + { + integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== + } + engines: { node: '>= 10' } + + koa-send@5.0.1: + resolution: + { + integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ== + } + engines: { node: '>= 8' } + + koa-static@5.0.0: + resolution: + { + integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ== + } + engines: { node: '>= 7.6.0' } + + koa@2.15.2: + resolution: + { + integrity: sha512-MXTeZH3M6AJ8ukW2QZ8wqO3Dcdfh2WRRmjCBkEP+NhKNCiqlO5RDqHmSnsyNrbRJrdjyvIGSJho4vQiWgQJSVA== + } + engines: { node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4 } + + kolorist@1.8.0: + resolution: + { + integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== + } + + launch-editor@2.6.1: + resolution: + { + integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + } + + lazystream@1.0.1: + resolution: + { + integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + } + engines: { node: '>= 0.6.3' } + + levn@0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + } + engines: { node: '>= 0.8.0' } + + lilconfig@2.1.0: + resolution: + { + integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + } + engines: { node: '>=10' } + + lilconfig@3.0.0: + resolution: + { + integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + } + engines: { node: '>=14' } + + lilconfig@3.1.1: + resolution: + { + integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== + } + engines: { node: '>=14' } + + lines-and-columns@1.2.4: + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + } + + lint-staged@15.2.2: + resolution: + { + integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw== + } + engines: { node: '>=18.12.0' } + hasBin: true + + listhen@1.7.2: + resolution: + { + integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g== + } + hasBin: true + + listr2@8.0.1: + resolution: + { + integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA== + } + engines: { node: '>=18.0.0' } + + load-tsconfig@0.2.5: + resolution: + { + integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + local-pkg@0.4.3: + resolution: + { + integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== + } + engines: { node: '>=14' } + + local-pkg@0.5.0: + resolution: + { + integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + } + engines: { node: '>=14' } + + locate-character@3.0.0: + resolution: + { + integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA== + } + + locate-path@5.0.0: + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + } + engines: { node: '>=8' } + + locate-path@6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + } + engines: { node: '>=10' } + + locate-path@7.2.0: + resolution: + { + integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + lodash-es@4.17.21: + resolution: + { + integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + } + + lodash.camelcase@4.3.0: + resolution: + { + integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + } + + lodash.castarray@4.4.0: + resolution: + { + integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== + } + + lodash.defaults@4.2.0: + resolution: + { + integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + } + + lodash.isarguments@3.1.0: + resolution: + { + integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== + } + + lodash.isplainobject@4.0.6: + resolution: + { + integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + } + + lodash.kebabcase@4.1.1: + resolution: + { + integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + } + + lodash.memoize@4.1.2: + resolution: + { + integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + } + + lodash.merge@4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + } + + lodash.mergewith@4.6.2: + resolution: + { + integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + } + + lodash.snakecase@4.1.1: + resolution: + { + integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== + } + + lodash.startcase@4.4.0: + resolution: + { + integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== + } + + lodash.uniq@4.5.0: + resolution: + { + integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + } + + lodash.upperfirst@4.3.1: + resolution: + { + integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== + } + + lodash@4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + } + + log-update@6.0.0: + resolution: + { + integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw== + } + engines: { node: '>=18' } + + lower-case@2.0.2: + resolution: + { + integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + } + + lru-cache@10.2.0: + resolution: + { + integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + } + engines: { node: 14 || >=16.14 } + + lru-cache@5.1.1: + resolution: + { + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + } + + lru-cache@6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + } + engines: { node: '>=10' } + + magic-regexp@0.8.0: + resolution: + { + integrity: sha512-lOSLWdE156csDYwCTIGiAymOLN7Epu/TU5e/oAnISZfU6qP+pgjkE+xbVjVn3yLPKN8n1G2yIAYTAM5KRk6/ow== + } + + magic-string-ast@0.3.0: + resolution: + { + integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA== + } + engines: { node: '>=16.14.0' } + + magic-string@0.30.10: + resolution: + { + integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== + } + + magic-string@0.30.8: + resolution: + { + integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== + } + engines: { node: '>=12' } + + magic-string@0.30.9: + resolution: + { + integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw== + } + engines: { node: '>=12' } + + magicast@0.3.3: + resolution: + { + integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw== + } + + make-dir@3.1.0: + resolution: + { + integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + } + engines: { node: '>=8' } + + make-fetch-happen@13.0.0: + resolution: + { + integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + mark.js@8.11.1: + resolution: + { + integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== + } + + mdn-data@2.0.28: + resolution: + { + integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + } + + mdn-data@2.0.30: + resolution: + { + integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + } + + media-typer@0.3.0: + resolution: + { + integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + } + engines: { node: '>= 0.6' } + + meow@12.1.1: + resolution: + { + integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== + } + engines: { node: '>=16.10' } + + merge-stream@2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + } + + merge2@1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + } + engines: { node: '>= 8' } + + methods@1.1.2: + resolution: + { + integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + } + engines: { node: '>= 0.6' } + + micromatch@4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + } + engines: { node: '>=8.6' } + + mime-db@1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + } + engines: { node: '>= 0.6' } + + mime-types@2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + } + engines: { node: '>= 0.6' } + + mime@1.6.0: + resolution: + { + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + } + engines: { node: '>=4' } + hasBin: true + + mime@3.0.0: + resolution: + { + integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + } + engines: { node: '>=10.0.0' } + hasBin: true + + mime@4.0.1: + resolution: + { + integrity: sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA== + } + engines: { node: '>=16' } + hasBin: true + + mimic-fn@2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + } + engines: { node: '>=6' } + + mimic-fn@4.0.0: + resolution: + { + integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + } + engines: { node: '>=12' } + + min-indent@1.0.1: + resolution: + { + integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + } + engines: { node: '>=4' } + + mini-svg-data-uri@1.4.4: + resolution: + { + integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== + } + hasBin: true + + minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + } + + minimatch@5.1.6: + resolution: + { + integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + } + engines: { node: '>=10' } + + minimatch@9.0.3: + resolution: + { + integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + } + engines: { node: '>=16 || 14 >=14.17' } + + minimatch@9.0.4: + resolution: + { + integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + } + engines: { node: '>=16 || 14 >=14.17' } + + minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + } + + minipass-collect@2.0.1: + resolution: + { + integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + } + engines: { node: '>=16 || 14 >=14.17' } + + minipass-fetch@3.0.4: + resolution: + { + integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + minipass-flush@1.0.5: + resolution: + { + integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + } + engines: { node: '>= 8' } + + minipass-json-stream@1.0.1: + resolution: + { + integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + } + + minipass-pipeline@1.2.4: + resolution: + { + integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + } + engines: { node: '>=8' } + + minipass-sized@1.0.3: + resolution: + { + integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + } + engines: { node: '>=8' } + + minipass@3.3.6: + resolution: + { + integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + } + engines: { node: '>=8' } + + minipass@5.0.0: + resolution: + { + integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + } + engines: { node: '>=8' } + + minipass@7.0.4: + resolution: + { + integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + } + engines: { node: '>=16 || 14 >=14.17' } + + minisearch@6.3.0: + resolution: + { + integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ== + } + + minizlib@2.1.2: + resolution: + { + integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + } + engines: { node: '>= 8' } + + mitt@2.1.0: + resolution: + { + integrity: sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg== + } + + mitt@3.0.1: + resolution: + { + integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== + } + + mkdirp@0.5.6: + resolution: + { + integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + } + hasBin: true + + mkdirp@1.0.4: + resolution: + { + integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + } + engines: { node: '>=10' } + hasBin: true + + mlly@1.6.1: + resolution: + { + integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA== + } + + monaco-editor@0.48.0: + resolution: + { + integrity: sha512-goSDElNqFfw7iDHMg8WDATkfcyeLTNpBHQpO8incK6p5qZt5G/1j41X0xdGzpIkGojGXM+QiRQyLjnfDVvrpwA== + } + + mri@1.2.0: + resolution: + { + integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + } + engines: { node: '>=4' } + + mrmime@2.0.0: + resolution: + { + integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + } + engines: { node: '>=10' } + + ms@2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + } + + ms@2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + } + + ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + } + + muggle-string@0.2.2: + resolution: + { + integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg== + } + + muggle-string@0.4.1: + resolution: + { + integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ== + } + + mz@2.7.0: + resolution: + { + integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + } + + nanoid@3.3.7: + resolution: + { + integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + nanoid@4.0.2: + resolution: + { + integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== + } + engines: { node: ^14 || ^16 || >=18 } + hasBin: true + + nanoid@5.0.7: + resolution: + { + integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ== + } + engines: { node: ^18 || >=20 } + hasBin: true + + natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + } + + negotiator@0.6.3: + resolution: + { + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + } + engines: { node: '>= 0.6' } + + nitropack@2.9.6: + resolution: + { + integrity: sha512-HP2PE0dREcDIBVkL8Zm6eVyrDd10/GI9hTL00PHvjUM8I9Y/2cv73wRDmxNyInfrx/CJKHATb2U/pQrqpzJyXA== + } + engines: { node: ^16.11.0 || >=17.0.0 } + hasBin: true + peerDependencies: + xml2js: ^0.6.2 + peerDependenciesMeta: + xml2js: + optional: true + + no-case@3.0.4: + resolution: + { + integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + } + + node-addon-api@7.1.0: + resolution: + { + integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== + } + engines: { node: ^16 || ^18 || >= 20 } + + node-fetch-native@1.6.4: + resolution: + { + integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== + } + + node-fetch@2.7.0: + resolution: + { + integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + } + engines: { node: 4.x || >=6.0.0 } + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-forge@1.3.1: + resolution: + { + integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + } + engines: { node: '>= 6.13.0' } + + node-gyp-build@4.8.0: + resolution: + { + integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== + } + hasBin: true + + node-gyp@10.1.0: + resolution: + { + integrity: sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA== + } + engines: { node: ^16.14.0 || >=18.0.0 } + hasBin: true + + node-releases@2.0.14: + resolution: + { + integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + } + + nopt@5.0.0: + resolution: + { + integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + } + engines: { node: '>=6' } + hasBin: true + + nopt@7.2.0: + resolution: + { + integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true + + normalize-package-data@2.5.0: + resolution: + { + integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + } + + normalize-package-data@6.0.0: + resolution: + { + integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + } + engines: { node: '>=0.10.0' } + + normalize-range@0.1.2: + resolution: + { + integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + } + engines: { node: '>=0.10.0' } + + npm-bundled@3.0.0: + resolution: + { + integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + npm-install-checks@6.3.0: + resolution: + { + integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + npm-normalize-package-bin@3.0.1: + resolution: + { + integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + npm-package-arg@11.0.1: + resolution: + { + integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + npm-packlist@8.0.2: + resolution: + { + integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + npm-pick-manifest@9.0.0: + resolution: + { + integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + npm-registry-fetch@16.1.0: + resolution: + { + integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + npm-run-path@4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + } + engines: { node: '>=8' } + + npm-run-path@5.3.0: + resolution: + { + integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + npmlog@5.0.1: + resolution: + { + integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + } + + nth-check@2.1.1: + resolution: + { + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + } + + nuxi@3.11.1: + resolution: + { + integrity: sha512-AW71TpxRHNg8MplQVju9tEFvXPvX42e0wPYknutSStDuAjV99vWTWYed4jxr/grk2FtKAuv2KvdJxcn2W59qyg== + } + engines: { node: ^16.10.0 || >=18.0.0 } + hasBin: true + + nuxt-icon@0.6.10: + resolution: + { + integrity: sha512-S9zHVA66ox4ZSpMWvCjqKZC4ZogC0s2z3vZs+M4D95YXGPEXwxDZu+insMKvkbe8+k7gvEmtTk0eq3KusKlxiw== + } + + nuxt-monaco-editor@1.2.9: + resolution: + { + integrity: sha512-O51sng1MxDAmmm1drOvlUyu6sMdRQtC7ZeSU/r+Hp8KWDDi0JWblPwMOJ+oxMDBnvWw1mOXEhaUBlLjUTEeU/Q== + } + peerDependencies: + monaco-editor: '*' + + nuxt-primevue@0.3.1: + resolution: + { + integrity: sha512-wTFvUbniEhntFamnRP4znMqU9a4lYr7eXvA7FW5nGX51YCV3nJzXZlCML4l6kEL0pyJsSV4DTb0Qo61nZnn9JQ== + } + + nuxt-zod-i18n@1.6.0: + resolution: + { + integrity: sha512-kHTS8vAyMqAFmJi0AxUuWitGNAMREeoMM4rUIlZgaX+DSgsHS35ENy2zRZcNgTJXEzedwsoQd8+ij8Ts1SKhYg== + } + + nuxt@3.11.2: + resolution: + { + integrity: sha512-Be1d4oyFo60pdF+diBolYDcfNemoMYM3R8PDjhnGrs/w3xJoDH1YMUVWHXXY8WhSmYZI7dyBehx/6kTfGFliVA== + } + engines: { node: ^14.18.0 || >=16.10.0 } + hasBin: true + peerDependencies: + '@parcel/watcher': ^2.1.0 + '@types/node': ^14.18.0 || >=16.10.0 + peerDependenciesMeta: + '@parcel/watcher': + optional: true + '@types/node': + optional: true + + nypm@0.3.8: + resolution: + { + integrity: sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og== + } + engines: { node: ^14.16.0 || >=16.10.0 } + hasBin: true + + object-assign@4.1.1: + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + } + engines: { node: '>=0.10.0' } + + object-hash@3.0.0: + resolution: + { + integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + } + engines: { node: '>= 6' } + + ofetch@1.3.4: + resolution: + { + integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw== + } + + ohash@1.1.3: + resolution: + { + integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw== + } + + on-finished@2.4.1: + resolution: + { + integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + } + engines: { node: '>= 0.8' } + + once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + } + + onetime@5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + } + engines: { node: '>=6' } + + onetime@6.0.0: + resolution: + { + integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + } + engines: { node: '>=12' } + + only@0.0.2: + resolution: + { + integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== + } + + open@10.1.0: + resolution: + { + integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== + } + engines: { node: '>=18' } + + open@7.4.2: + resolution: + { + integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + } + engines: { node: '>=8' } + + open@8.4.2: + resolution: + { + integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + } + engines: { node: '>=12' } + + openapi-typescript@6.7.5: + resolution: + { + integrity: sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA== + } + hasBin: true + + optionator@0.9.3: + resolution: + { + integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + } + engines: { node: '>= 0.8.0' } + + p-limit@2.3.0: + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + } + engines: { node: '>=6' } + + p-limit@3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + } + engines: { node: '>=10' } + + p-limit@4.0.0: + resolution: + { + integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + p-locate@4.1.0: + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + } + engines: { node: '>=8' } + + p-locate@5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + } + engines: { node: '>=10' } + + p-locate@6.0.0: + resolution: + { + integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + p-map@4.0.0: + resolution: + { + integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + } + engines: { node: '>=10' } + + p-try@2.2.0: + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + } + engines: { node: '>=6' } + + pacote@17.0.6: + resolution: + { + integrity: sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ== + } + engines: { node: ^16.14.0 || >=18.0.0 } + hasBin: true + + pako@0.2.9: + resolution: + { + integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== + } + + parent-module@1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + } + engines: { node: '>=6' } + + parse-git-config@3.0.0: + resolution: + { + integrity: sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA== + } + engines: { node: '>=8' } + + parse-gitignore@2.0.0: + resolution: + { + integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog== + } + engines: { node: '>=14' } + + parse-json@5.2.0: + resolution: + { + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + } + engines: { node: '>=8' } + + parse-path@7.0.0: + resolution: + { + integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== + } + + parse-url@8.1.0: + resolution: + { + integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== + } + + parseurl@1.3.3: + resolution: + { + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + } + engines: { node: '>= 0.8' } + + pascal-case@3.1.2: + resolution: + { + integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + } + + path-browserify@1.0.1: + resolution: + { + integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + } + + path-exists@4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + } + engines: { node: '>=8' } + + path-exists@5.0.0: + resolution: + { + integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + path-is-absolute@1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + } + engines: { node: '>=0.10.0' } + + path-key@3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + } + engines: { node: '>=8' } + + path-key@4.0.0: + resolution: + { + integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + } + engines: { node: '>=12' } + + path-parse@1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + } + + path-scurry@1.10.2: + resolution: + { + integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA== + } + engines: { node: '>=16 || 14 >=14.17' } + + path-to-regexp@6.2.1: + resolution: + { + integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== + } + + path-type@4.0.0: + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + } + engines: { node: '>=8' } + + path-type@5.0.0: + resolution: + { + integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== + } + engines: { node: '>=12' } + + pathe@1.1.2: + resolution: + { + integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + } + + perfect-debounce@1.0.0: + resolution: + { + integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== + } + + periscopic@3.1.0: + resolution: + { + integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== + } + + picocolors@1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + } + + picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + } + engines: { node: '>=8.6' } + + picomatch@4.0.2: + resolution: + { + integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + } + engines: { node: '>=12' } + + pidtree@0.6.0: + resolution: + { + integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + } + engines: { node: '>=0.10' } + hasBin: true + + pify@2.3.0: + resolution: + { + integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + } + engines: { node: '>=0.10.0' } + + pinia@2.1.7: + resolution: + { + integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ== + } + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pirates@4.0.6: + resolution: + { + integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + } + engines: { node: '>= 6' } + + pkg-types@1.0.3: + resolution: + { + integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + } + + pluralize@8.0.0: + resolution: + { + integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + } + engines: { node: '>=4' } + + portfinder@1.0.32: + resolution: + { + integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== + } + engines: { node: '>= 0.12.0' } + + postcss-calc@9.0.1: + resolution: + { + integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.2.2 + + postcss-colormin@6.1.0: + resolution: + { + integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-convert-values@6.1.0: + resolution: + { + integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-comments@6.0.2: + resolution: + { + integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-duplicates@6.0.3: + resolution: + { + integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-empty@6.0.3: + resolution: + { + integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-overridden@6.0.2: + resolution: + { + integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-import@15.1.0: + resolution: + { + integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + } + engines: { node: '>=14.0.0' } + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: + { + integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + } + engines: { node: ^12 || ^14 || >= 16 } + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: + { + integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + } + engines: { node: '>= 14' } + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-merge-longhand@6.0.5: + resolution: + { + integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-rules@6.1.1: + resolution: + { + integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-font-values@6.1.0: + resolution: + { + integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-gradients@6.0.3: + resolution: + { + integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-params@6.1.0: + resolution: + { + integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-selectors@6.0.4: + resolution: + { + integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-nested@6.0.1: + resolution: + { + integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + } + engines: { node: '>=12.0' } + peerDependencies: + postcss: ^8.2.14 + + postcss-nesting@12.1.1: + resolution: + { + integrity: sha512-qc74KvIAQNa5ujZKG1UV286dhaDW6basbUy2i9AzNU/T8C9hpvGu9NZzm1SfePe2yP7sPYgpA8d4sPVopn2Hhw== + } + engines: { node: ^14 || ^16 || >=18 } + peerDependencies: + postcss: ^8.4 + + postcss-normalize-charset@6.0.2: + resolution: + { + integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-display-values@6.0.2: + resolution: + { + integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-positions@6.0.2: + resolution: + { + integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-repeat-style@6.0.2: + resolution: + { + integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-string@6.0.2: + resolution: + { + integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-timing-functions@6.0.2: + resolution: + { + integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-unicode@6.1.0: + resolution: + { + integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-url@6.0.2: + resolution: + { + integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-whitespace@6.0.2: + resolution: + { + integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-ordered-values@6.0.2: + resolution: + { + integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-initial@6.1.0: + resolution: + { + integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-transforms@6.0.2: + resolution: + { + integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-selector-parser@6.0.10: + resolution: + { + integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + } + engines: { node: '>=4' } + + postcss-selector-parser@6.0.16: + resolution: + { + integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + } + engines: { node: '>=4' } + + postcss-svgo@6.0.3: + resolution: + { + integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== + } + engines: { node: ^14 || ^16 || >= 18 } + peerDependencies: + postcss: ^8.4.31 + + postcss-unique-selectors@6.0.4: + resolution: + { + integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + postcss-value-parser@4.2.0: + resolution: + { + integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + } + + postcss@8.4.38: + resolution: + { + integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + } + engines: { node: ^10 || ^12 || >=14 } + + preact@10.20.1: + resolution: + { + integrity: sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw== + } + + prelude-ls@1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + } + engines: { node: '>= 0.8.0' } + + prettier-linter-helpers@1.0.0: + resolution: + { + integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + } + engines: { node: '>=6.0.0' } + + prettier-plugin-organize-imports@3.2.4: + resolution: + { + integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog== + } + peerDependencies: + '@volar/vue-language-plugin-pug': ^1.0.4 + '@volar/vue-typescript': ^1.0.4 + prettier: '>=2.0' + typescript: '>=2.9' + peerDependenciesMeta: + '@volar/vue-language-plugin-pug': + optional: true + '@volar/vue-typescript': + optional: true + + prettier-plugin-tailwindcss@0.5.14: + resolution: + { + integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q== + } + engines: { node: '>=14.21.3' } + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@3.2.5: + resolution: + { + integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + } + engines: { node: '>=14' } + hasBin: true + + pretty-bytes@6.1.1: + resolution: + { + integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== + } + engines: { node: ^14.13.1 || >=16.0.0 } + + primevue@3.49.1: + resolution: + { + integrity: sha512-OmUTqbKbPB63Zqf7uA49cipDi+Qh+/13AYJPwgvsVsI4QmAKIkeibBwkOgj1CNIFlopfF79YmyBshFUAPqlw9A== + } + peerDependencies: + vue: ^3.0.0 + + primevue@3.51.0: + resolution: + { + integrity: sha512-BdMveidLSr0fNJ5+mxuke8mMCHyiXwvfDP4iwPr6R98rl3E0Wcm1u4/RKVrL7o0Iq606SXyhPQL3LGyAfXngcA== + } + peerDependencies: + vue: ^3.0.0 + + proc-log@3.0.0: + resolution: + { + integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + process-nextick-args@2.0.1: + resolution: + { + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + } + + process@0.11.10: + resolution: + { + integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + } + engines: { node: '>= 0.6.0' } + + promise-inflight@1.0.1: + resolution: + { + integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + } + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: + { + integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + } + engines: { node: '>=10' } + + prompts@2.4.2: + resolution: + { + integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + } + engines: { node: '>= 6' } + + protocols@2.0.1: + resolution: + { + integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + } + + punycode@2.3.1: + resolution: + { + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + } + engines: { node: '>=6' } + + queue-microtask@1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + } + + queue-tick@1.0.1: + resolution: + { + integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== + } + + radix-vue@1.7.2: + resolution: + { + integrity: sha512-KczYzzflm8todIk3flaQIWQ6P1wqtUh0cwMBRhp8Pr2JXs8FMG2qfL4lJly2mhMFXc199bG0U4bNLLsrhn5xoA== + } + peerDependencies: + vue: '>= 3.2.0' + + radix3@1.1.2: + resolution: + { + integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== + } + + randombytes@2.1.0: + resolution: + { + integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + } + + range-parser@1.2.1: + resolution: + { + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + } + engines: { node: '>= 0.6' } + + rc9@2.1.1: + resolution: + { + integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q== + } + + read-cache@1.0.0: + resolution: + { + integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + } + + read-package-json-fast@3.0.2: + resolution: + { + integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + read-package-json@7.0.0: + resolution: + { + integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + read-pkg-up@7.0.1: + resolution: + { + integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + } + engines: { node: '>=8' } + + read-pkg@5.2.0: + resolution: + { + integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + } + engines: { node: '>=8' } + + readable-stream@2.3.8: + resolution: + { + integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + } + + readable-stream@3.6.2: + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + } + engines: { node: '>= 6' } + + readable-stream@4.5.2: + resolution: + { + integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + readdir-glob@1.1.3: + resolution: + { + integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== + } + + readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + } + engines: { node: '>=8.10.0' } + + redis-errors@1.2.0: + resolution: + { + integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== + } + engines: { node: '>=4' } + + redis-parser@3.0.0: + resolution: + { + integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== + } + engines: { node: '>=4' } + + regenerator-runtime@0.14.1: + resolution: + { + integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + } + + regexp-tree@0.1.27: + resolution: + { + integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== + } + hasBin: true + + regjsparser@0.10.0: + resolution: + { + integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA== + } + hasBin: true + + replace-in-file@6.3.5: + resolution: + { + integrity: sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg== + } + engines: { node: '>=10' } + hasBin: true + + require-directory@2.1.1: + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + } + engines: { node: '>=0.10.0' } + + require-from-string@2.0.2: + resolution: + { + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + } + engines: { node: '>=0.10.0' } + + resolve-from@4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + } + engines: { node: '>=4' } + + resolve-from@5.0.0: + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + } + engines: { node: '>=8' } + + resolve-path@1.4.0: + resolution: + { + integrity: sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w== + } + engines: { node: '>= 0.8' } + + resolve-pkg-maps@1.0.0: + resolution: + { + integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + } + + resolve@1.22.8: + resolution: + { + integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + } + hasBin: true + + restore-cursor@4.0.0: + resolution: + { + integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + restructure@3.0.1: + resolution: + { + integrity: sha512-6neDpI/yE9eogQo22qmWwKIA9wFPRyYjQleDEh6zaNAf2ZPqLJYUvNBJBWEWNoBlCeQMQkvIOe2YI/K2GOag+g== + } + + retry@0.12.0: + resolution: + { + integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + } + engines: { node: '>= 4' } + + reusify@1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + } + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + + rfdc@1.3.1: + resolution: + { + integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== + } + + rimraf@3.0.2: + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + } + hasBin: true + + rollup-plugin-visualizer@5.12.0: + resolution: + { + integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== + } + engines: { node: '>=14' } + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + + rollup@4.13.2: + resolution: + { + integrity: sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g== + } + engines: { node: '>=18.0.0', npm: '>=8.0.0' } + hasBin: true + + run-applescript@7.0.0: + resolution: + { + integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + } + engines: { node: '>=18' } + + run-parallel@1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + } + + safe-buffer@5.1.2: + resolution: + { + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + } + + safe-buffer@5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + } + + safer-buffer@2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + } + + scule@1.3.0: + resolution: + { + integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g== + } + + search-insights@2.13.0: + resolution: + { + integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw== + } + + semver@5.7.2: + resolution: + { + integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + } + hasBin: true + + semver@6.3.1: + resolution: + { + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + } + hasBin: true + + semver@7.6.0: + resolution: + { + integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + } + engines: { node: '>=10' } + hasBin: true + + send@0.18.0: + resolution: + { + integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + } + engines: { node: '>= 0.8.0' } + + serialize-javascript@6.0.2: + resolution: + { + integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + } + + serve-placeholder@2.0.1: + resolution: + { + integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ== + } + + serve-static@1.15.0: + resolution: + { + integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + } + engines: { node: '>= 0.8.0' } + + set-blocking@2.0.0: + resolution: + { + integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + } + + setprototypeof@1.1.0: + resolution: + { + integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + } + + setprototypeof@1.2.0: + resolution: + { + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + } + + shebang-command@2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + } + engines: { node: '>=8' } + + shebang-regex@3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + } + engines: { node: '>=8' } + + shell-quote@1.8.1: + resolution: + { + integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + } + + shiki@1.3.0: + resolution: + { + integrity: sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww== + } + + signal-exit@3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + } + + signal-exit@4.1.0: + resolution: + { + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + } + engines: { node: '>=14' } + + sigstore@2.2.2: + resolution: + { + integrity: sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + simple-git@3.24.0: + resolution: + { + integrity: sha512-QqAKee9Twv+3k8IFOFfPB2hnk6as6Y6ACUpwCtQvRYBAes23Wv3SZlHVobAzqcE8gfsisCvPw3HGW3HYM+VYYw== + } + + sirv@2.0.4: + resolution: + { + integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + } + engines: { node: '>= 10' } + + sisteransi@1.0.5: + resolution: + { + integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + } + + slash@3.0.0: + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + } + engines: { node: '>=8' } + + slash@4.0.0: + resolution: + { + integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + } + engines: { node: '>=12' } + + slash@5.1.0: + resolution: + { + integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + } + engines: { node: '>=14.16' } + + slice-ansi@5.0.0: + resolution: + { + integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + } + engines: { node: '>=12' } + + slice-ansi@7.1.0: + resolution: + { + integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== + } + engines: { node: '>=18' } + + smart-buffer@4.2.0: + resolution: + { + integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + } + engines: { node: '>= 6.0.0', npm: '>= 3.0.0' } + + smob@1.5.0: + resolution: + { + integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig== + } + + socks-proxy-agent@8.0.3: + resolution: + { + integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A== + } + engines: { node: '>= 14' } + + socks@2.8.1: + resolution: + { + integrity: sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ== + } + engines: { node: '>= 10.0.0', npm: '>= 3.0.0' } + + sort-object-keys@1.1.3: + resolution: + { + integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== + } + + sort-package-json@2.10.0: + resolution: + { + integrity: sha512-MYecfvObMwJjjJskhxYfuOADkXp1ZMMnCFC8yhp+9HDsk7HhR336hd7eiBs96lTXfiqmUNI+WQCeCMRBhl251g== + } + hasBin: true + + source-map-js@1.2.0: + resolution: + { + integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + } + engines: { node: '>=0.10.0' } + + source-map-support@0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + } + + source-map@0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + } + engines: { node: '>=0.10.0' } + + source-map@0.7.4: + resolution: + { + integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + } + engines: { node: '>= 8' } + + spdx-correct@3.2.0: + resolution: + { + integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + } + + spdx-exceptions@2.5.0: + resolution: + { + integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + } + + spdx-expression-parse@3.0.1: + resolution: + { + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + } + + spdx-expression-parse@4.0.0: + resolution: + { + integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== + } + + spdx-license-ids@3.0.17: + resolution: + { + integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== + } + + speakingurl@14.0.1: + resolution: + { + integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== + } + engines: { node: '>=0.10.0' } + + split2@4.2.0: + resolution: + { + integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + } + engines: { node: '>= 10.x' } + + splitpanes@3.1.5: + resolution: + { + integrity: sha512-r3Mq2ITFQ5a2VXLOy4/Sb2Ptp7OfEO8YIbhVJqJXoFc9hc5nTXXkCvtVDjIGbvC0vdE7tse+xTM9BMjsszP6bw== + } + + sprintf-js@1.1.3: + resolution: + { + integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + } + + ssri@10.0.5: + resolution: + { + integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + standard-as-callback@2.1.0: + resolution: + { + integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + } + + statuses@1.5.0: + resolution: + { + integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + } + engines: { node: '>= 0.6' } + + statuses@2.0.1: + resolution: + { + integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + } + engines: { node: '>= 0.8' } + + std-env@3.7.0: + resolution: + { + integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + } + + streamx@2.16.1: + resolution: + { + integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ== + } + + string-argv@0.3.2: + resolution: + { + integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== + } + engines: { node: '>=0.6.19' } + + string-width@4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + } + engines: { node: '>=8' } + + string-width@5.1.2: + resolution: + { + integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + } + engines: { node: '>=12' } + + string-width@7.1.0: + resolution: + { + integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + } + engines: { node: '>=18' } + + string_decoder@1.1.1: + resolution: + { + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + } + + string_decoder@1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + } + + strip-ansi@6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + } + engines: { node: '>=8' } + + strip-ansi@7.1.0: + resolution: + { + integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + } + engines: { node: '>=12' } + + strip-final-newline@2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + } + engines: { node: '>=6' } + + strip-final-newline@3.0.0: + resolution: + { + integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + } + engines: { node: '>=12' } + + strip-indent@3.0.0: + resolution: + { + integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + } + engines: { node: '>=8' } + + strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + } + engines: { node: '>=8' } + + strip-literal@1.3.0: + resolution: + { + integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg== + } + + strip-literal@2.1.0: + resolution: + { + integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw== + } + + stylehacks@6.1.1: + resolution: + { + integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== + } + engines: { node: ^14 || ^16 || >=18.0 } + peerDependencies: + postcss: ^8.4.31 + + sucrase@3.35.0: + resolution: + { + integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + } + engines: { node: '>=16 || 14 >=14.17' } + hasBin: true + + supports-color@5.5.0: + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + } + engines: { node: '>=4' } + + supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + } + engines: { node: '>=8' } + + supports-color@9.4.0: + resolution: + { + integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== + } + engines: { node: '>=12' } + + supports-preserve-symlinks-flag@1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + } + engines: { node: '>= 0.4' } + + svelte2tsx@0.7.6: + resolution: + { + integrity: sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ== + } + peerDependencies: + svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 + typescript: ^4.9.4 || ^5.0.0 + + svelte@4.2.15: + resolution: + { + integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg== + } + engines: { node: '>=16' } + + svg-tags@1.0.0: + resolution: + { + integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== + } + + svgo@3.2.0: + resolution: + { + integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ== + } + engines: { node: '>=14.0.0' } + hasBin: true + + synckit@0.8.8: + resolution: + { + integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== + } + engines: { node: ^14.18.0 || >=16.0.0 } + + system-architecture@0.1.0: + resolution: + { + integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== + } + engines: { node: '>=18' } + + tabbable@6.2.0: + resolution: + { + integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + } + + tailwind-config-viewer@2.0.1: + resolution: + { + integrity: sha512-0mfPRjxzKvQNW5YNh1EXhURV54ZtBvK4489tD8iosAVO8MZagC5BSdcl1i2b0tG+TiYIyEzBwDGQpE9vV/5gaA== + } + engines: { node: '>=13' } + hasBin: true + peerDependencies: + tailwindcss: 1 || 2 || 2.0.1-compat || 3 + + tailwind-merge@2.3.0: + resolution: + { + integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA== + } + + tailwindcss@3.4.3: + resolution: + { + integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A== + } + engines: { node: '>=14.0.0' } + hasBin: true + + tapable@2.2.1: + resolution: + { + integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + } + engines: { node: '>=6' } + + tar-stream@3.1.7: + resolution: + { + integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== + } + + tar@6.2.1: + resolution: + { + integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + } + engines: { node: '>=10' } + + terser@5.30.2: + resolution: + { + integrity: sha512-vTDjRKYKip4dOFL5VizdoxHTYDfEXPdz5t+FbxCC5Rp2s+KbEO8w5wqMDPgj7CtFKZuzq7PXv28fZoXfqqBVuw== + } + engines: { node: '>=10' } + hasBin: true + + text-extensions@2.4.0: + resolution: + { + integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== + } + engines: { node: '>=8' } + + text-table@0.2.0: + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + } + + thenify-all@1.6.0: + resolution: + { + integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + } + engines: { node: '>=0.8' } + + thenify@3.3.1: + resolution: + { + integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + } + + through@2.3.8: + resolution: + { + integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + } + + tiny-inflate@1.0.3: + resolution: + { + integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + } + + tiny-invariant@1.3.3: + resolution: + { + integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + } + + to-fast-properties@2.0.0: + resolution: + { + integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + } + engines: { node: '>=4' } + + to-regex-range@5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + } + engines: { node: '>=8.0' } + + toidentifier@1.0.1: + resolution: + { + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + } + engines: { node: '>=0.6' } + + tosource@2.0.0-alpha.3: + resolution: + { + integrity: sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug== + } + engines: { node: '>=10' } + + totalist@3.0.1: + resolution: + { + integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + } + engines: { node: '>=6' } + + tr46@0.0.3: + resolution: + { + integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + } + + ts-api-utils@1.3.0: + resolution: + { + integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + } + engines: { node: '>=16' } + peerDependencies: + typescript: '>=4.2.0' + + ts-interface-checker@0.1.13: + resolution: + { + integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + } + + tslib@2.6.2: + resolution: + { + integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + } + + tsscmp@1.0.6: + resolution: + { + integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + } + engines: { node: '>=0.6.x' } + + tuf-js@2.2.0: + resolution: + { + integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg== + } + engines: { node: ^16.14.0 || >=18.0.0 } + + type-check@0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + } + engines: { node: '>= 0.8.0' } + + type-fest@0.20.2: + resolution: + { + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + } + engines: { node: '>=10' } + + type-fest@0.21.3: + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + } + engines: { node: '>=10' } + + type-fest@0.6.0: + resolution: + { + integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + } + engines: { node: '>=8' } + + type-fest@0.8.1: + resolution: + { + integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + } + engines: { node: '>=8' } + + type-fest@3.13.1: + resolution: + { + integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + } + engines: { node: '>=14.16' } + + type-fest@4.14.0: + resolution: + { + integrity: sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q== + } + engines: { node: '>=16' } + + type-is@1.6.18: + resolution: + { + integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + } + engines: { node: '>= 0.6' } + + type-level-regexp@0.1.17: + resolution: + { + integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg== + } + + typescript@5.4.5: + resolution: + { + integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + } + engines: { node: '>=14.17' } + hasBin: true + + ufo@1.5.3: + resolution: + { + integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== + } + + ultrahtml@1.5.3: + resolution: + { + integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg== + } + + unconfig@0.3.12: + resolution: + { + integrity: sha512-oDtfWDC0TMYFuwdt7E7CaqYZGqq1wAiC12PRTFe/93IkgNi+wVlF/LCjcD/bgNkGoopb0RsU363Ge3YXy7NGSw== + } + + uncrypto@0.1.3: + resolution: + { + integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== + } + + unctx@2.3.1: + resolution: + { + integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A== + } + + undici-types@5.26.5: + resolution: + { + integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + } + + undici@5.28.4: + resolution: + { + integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== + } + engines: { node: '>=14.0' } + + unenv@1.9.0: + resolution: + { + integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g== + } + + unhead@1.9.4: + resolution: + { + integrity: sha512-QVU0y3KowRu2cLjXxfemTKNohK4vdEwyahoszlEnRz0E5BTNRZQSs8AnommorGmVM7DvB2t4dwWadB51wDlPzw== + } + + unicode-properties@1.4.1: + resolution: + { + integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg== + } + + unicode-trie@2.0.0: + resolution: + { + integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ== + } + + unicorn-magic@0.1.0: + resolution: + { + integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + } + engines: { node: '>=18' } + + unimport@3.7.1: + resolution: + { + integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ== + } + + unique-filename@3.0.0: + resolution: + { + integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + unique-slug@4.0.0: + resolution: + { + integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + universalify@2.0.1: + resolution: + { + integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + } + engines: { node: '>= 10.0.0' } + + unocss@0.58.9: + resolution: + { + integrity: sha512-aqANXXP0RrtN4kSaTLn/7I6wh8o45LUdVgPzGu7Fan2DfH2+wpIs6frlnlHlOymnb+52dp6kXluQinddaUKW1A== + } + engines: { node: '>=14' } + peerDependencies: + '@unocss/webpack': 0.58.9 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + + unplugin-vue-router@0.7.0: + resolution: + { + integrity: sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw== + } + peerDependencies: + vue-router: ^4.1.0 + peerDependenciesMeta: + vue-router: + optional: true + + unplugin@1.10.1: + resolution: + { + integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg== + } + engines: { node: '>=14.0.0' } + + unstorage@1.10.2: + resolution: + { + integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ== + } + peerDependencies: + '@azure/app-configuration': ^1.5.0 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + + untun@0.1.3: + resolution: + { + integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ== + } + hasBin: true + + untyped@1.4.2: + resolution: + { + integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q== + } + hasBin: true + + unwasm@0.3.9: + resolution: + { + integrity: sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg== + } + + update-browserslist-db@1.0.13: + resolution: + { + integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + } + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uqr@0.1.2: + resolution: + { + integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== + } + + uri-js@4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + } + + urlpattern-polyfill@8.0.2: + resolution: + { + integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + } + + util-deprecate@1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + } + + validate-npm-package-license@3.0.4: + resolution: + { + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + } + + validate-npm-package-name@5.0.0: + resolution: + { + integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + + vary@1.1.2: + resolution: + { + integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + } + engines: { node: '>= 0.8' } + + vee-validate@4.12.6: + resolution: + { + integrity: sha512-EKM3YHy8t1miPh30d5X6xOrfG/Ctq0nbN4eMpCK7ezvI6T98/S66vswP+ihL4QqAK/k5KqreWOxof09+JG7N/A== + } + peerDependencies: + vue: ^3.3.11 + + vite-hot-client@0.2.3: + resolution: + { + integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg== + } + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 + + vite-node@1.4.0: + resolution: + { + integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw== + } + engines: { node: ^18.0.0 || >=20.0.0 } + hasBin: true + + vite-plugin-checker@0.6.4: + resolution: + { + integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA== + } + engines: { node: '>=14.16' } + peerDependencies: + eslint: '>=7' + meow: ^9.0.0 + optionator: ^0.9.1 + stylelint: '>=13' + typescript: '*' + vite: '>=2.0.0' + vls: '*' + vti: '*' + vue-tsc: '>=1.3.9' + peerDependenciesMeta: + eslint: + optional: true + meow: + optional: true + optionator: + optional: true + stylelint: + optional: true + typescript: + optional: true + vls: + optional: true + vti: + optional: true + vue-tsc: + optional: true + + vite-plugin-inspect@0.8.3: + resolution: + { + integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og== + } + engines: { node: '>=14' } + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-static-copy@1.0.3: + resolution: + { + integrity: sha512-hBCCz6T0uNI3oF5oJ/Ju73rhoR+ADrJ2iLAea5+wA7kpQ8clYgY8BD+GL0w0BrqsYCbgBITOByBP/3y9Y+h93A== + } + engines: { node: ^18.0.0 || >=20.0.0 } + peerDependencies: + vite: ^5.0.0 + + vite-plugin-vue-inspector@4.0.2: + resolution: + { + integrity: sha512-KPvLEuafPG13T7JJuQbSm5PwSxKFnVS965+MP1we2xGw9BPkkc/+LPix5MMWenpKWqtjr0ws8THrR+KuoDC8hg== + } + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 + + vite@5.2.8: + resolution: + { + integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA== + } + engines: { node: ^18.0.0 || >=20.0.0 } + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vite@5.2.9: + resolution: + { + integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw== + } + engines: { node: ^18.0.0 || >=20.0.0 } + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitepress@1.1.3: + resolution: + { + integrity: sha512-hGrIYN0w9IHWs0NQSnlMjKV/v/HLfD+Ywv5QdvCSkiT32mpNOOwUrZjnqZv/JL/WBPpUc94eghTUvmipxw0xrA== + } + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + + vscode-jsonrpc@6.0.0: + resolution: + { + integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg== + } + engines: { node: '>=8.0.0 || >=10.0.0' } + + vscode-languageclient@7.0.0: + resolution: + { + integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg== + } + engines: { vscode: ^1.52.0 } + + vscode-languageserver-protocol@3.16.0: + resolution: + { + integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A== + } + + vscode-languageserver-textdocument@1.0.11: + resolution: + { + integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA== + } + + vscode-languageserver-types@3.16.0: + resolution: + { + integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== + } + + vscode-languageserver@7.0.0: + resolution: + { + integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw== + } + hasBin: true + + vscode-uri@3.0.8: + resolution: + { + integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== + } + + vue-bundle-renderer@2.0.0: + resolution: + { + integrity: sha512-oYATTQyh8XVkUWe2kaKxhxKVuuzK2Qcehe+yr3bGiaQAhK3ry2kYE4FWOfL+KO3hVFwCdLmzDQTzYhTi9C+R2A== + } + + vue-demi@0.14.7: + resolution: + { + integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA== + } + engines: { node: '>=12' } + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-devtools-stub@0.1.0: + resolution: + { + integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ== + } + + vue-eslint-parser@9.4.2: + resolution: + { + integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ== + } + engines: { node: ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: '>=6.0.0' + + vue-i18n@9.10.2: + resolution: + { + integrity: sha512-ECJ8RIFd+3c1d3m1pctQ6ywG5Yj8Efy1oYoAKQ9neRdkLbuKLVeW4gaY5HPkD/9ssf1pOnUrmIFjx2/gkGxmEw== + } + engines: { node: '>= 16' } + peerDependencies: + vue: ^3.0.0 + + vue-observe-visibility@2.0.0-alpha.1: + resolution: + { + integrity: sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g== + } + peerDependencies: + vue: ^3.0.0 + + vue-resize@2.0.0-alpha.1: + resolution: + { + integrity: sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg== + } + peerDependencies: + vue: ^3.0.0 + + vue-router@4.3.2: + resolution: + { + integrity: sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q== + } + peerDependencies: + vue: ^3.2.0 + + vue-sonner@1.1.2: + resolution: + { + integrity: sha512-yg4f5s0a3oiiI7cNvO0Dajux1Y7s04lxww3vnQtnwQawJ3KqaKA9RIRMdI9wGTosRGIOwgYFniFRGl4+IuKPZw== + } + + vue-template-compiler@2.7.16: + resolution: + { + integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ== + } + + vue-virtual-scroller@2.0.0-beta.8: + resolution: + { + integrity: sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ== + } + peerDependencies: + vue: ^3.2.0 + + vue@3.4.25: + resolution: + { + integrity: sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg== + } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + webidl-conversions@3.0.1: + resolution: + { + integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + } + + webpack-sources@3.2.3: + resolution: + { + integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + } + engines: { node: '>=10.13.0' } + + webpack-virtual-modules@0.6.1: + resolution: + { + integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg== + } + + whatwg-url@5.0.0: + resolution: + { + integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + } + + which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + } + engines: { node: '>= 8' } + hasBin: true + + which@3.0.1: + resolution: + { + integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true + + which@4.0.0: + resolution: + { + integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + } + engines: { node: ^16.13.0 || >=18.0.0 } + hasBin: true + + wide-align@1.1.5: + resolution: + { + integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + } + + wonka@6.3.4: + resolution: + { + integrity: sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg== + } + + wrap-ansi@7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + } + engines: { node: '>=10' } + + wrap-ansi@8.1.0: + resolution: + { + integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + } + engines: { node: '>=12' } + + wrap-ansi@9.0.0: + resolution: + { + integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + } + engines: { node: '>=18' } + + wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + } + + ws@8.16.0: + resolution: + { + integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + } + engines: { node: '>=10.0.0' } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@4.0.0: + resolution: + { + integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + } + engines: { node: '>=12' } + + y18n@5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + } + engines: { node: '>=10' } + + yallist@3.1.1: + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + } + + yallist@4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + } + + yaml-eslint-parser@1.2.2: + resolution: + { + integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg== + } + engines: { node: ^14.17.0 || >=16.0.0 } + + yaml@2.3.4: + resolution: + { + integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + } + engines: { node: '>= 14' } + + yaml@2.4.1: + resolution: + { + integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + } + engines: { node: '>= 14' } + hasBin: true + + yargs-parser@21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + } + engines: { node: '>=12' } + + yargs@17.7.2: + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + } + engines: { node: '>=12' } + + ylru@1.4.0: + resolution: + { + integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA== + } + engines: { node: '>= 4.0.0' } + + yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + } + engines: { node: '>=10' } + + yocto-queue@1.0.0: + resolution: + { + integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + } + engines: { node: '>=12.20' } + + zhead@2.2.4: + resolution: + { + integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag== + } + + zip-stream@6.0.1: + resolution: + { + integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA== + } + engines: { node: '>= 14' } + + zod@3.23.4: + resolution: + { + integrity: sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw== + } + +snapshots: + '@0no-co/graphql.web@1.0.5(graphql@16.8.1)': + optionalDependencies: + graphql: 16.8.1 + + '@0no-co/graphqlsp@1.11.0(encoding@0.1.13)(typescript@5.4.5)': + dependencies: + '@gql.tada/internal': 0.1.3(graphql@16.8.1)(typescript@5.4.5) + graphql: 16.8.1 + node-fetch: 2.7.0(encoding@0.1.13) + typescript: 5.4.5 + transitivePeerDependencies: + - encoding + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) + '@algolia/client-search': 4.23.2 + algoliasearch: 4.23.2 + + '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)': + dependencies: + '@algolia/client-search': 4.23.2 + algoliasearch: 4.23.2 + + '@algolia/cache-browser-local-storage@4.23.2': + dependencies: + '@algolia/cache-common': 4.23.2 + + '@algolia/cache-common@4.23.2': {} + + '@algolia/cache-in-memory@4.23.2': + dependencies: + '@algolia/cache-common': 4.23.2 + + '@algolia/client-account@4.23.2': + dependencies: + '@algolia/client-common': 4.23.2 + '@algolia/client-search': 4.23.2 + '@algolia/transporter': 4.23.2 + + '@algolia/client-analytics@4.23.2': + dependencies: + '@algolia/client-common': 4.23.2 + '@algolia/client-search': 4.23.2 + '@algolia/requester-common': 4.23.2 + '@algolia/transporter': 4.23.2 + + '@algolia/client-common@4.23.2': + dependencies: + '@algolia/requester-common': 4.23.2 + '@algolia/transporter': 4.23.2 + + '@algolia/client-personalization@4.23.2': + dependencies: + '@algolia/client-common': 4.23.2 + '@algolia/requester-common': 4.23.2 + '@algolia/transporter': 4.23.2 + + '@algolia/client-search@4.23.2': + dependencies: + '@algolia/client-common': 4.23.2 + '@algolia/requester-common': 4.23.2 + '@algolia/transporter': 4.23.2 + + '@algolia/logger-common@4.23.2': {} + + '@algolia/logger-console@4.23.2': + dependencies: + '@algolia/logger-common': 4.23.2 + + '@algolia/recommend@4.23.2': + dependencies: + '@algolia/cache-browser-local-storage': 4.23.2 + '@algolia/cache-common': 4.23.2 + '@algolia/cache-in-memory': 4.23.2 + '@algolia/client-common': 4.23.2 + '@algolia/client-search': 4.23.2 + '@algolia/logger-common': 4.23.2 + '@algolia/logger-console': 4.23.2 + '@algolia/requester-browser-xhr': 4.23.2 + '@algolia/requester-common': 4.23.2 + '@algolia/requester-node-http': 4.23.2 + '@algolia/transporter': 4.23.2 + + '@algolia/requester-browser-xhr@4.23.2': + dependencies: + '@algolia/requester-common': 4.23.2 + + '@algolia/requester-common@4.23.2': {} + + '@algolia/requester-node-http@4.23.2': + dependencies: + '@algolia/requester-common': 4.23.2 + + '@algolia/transporter@4.23.2': + dependencies: + '@algolia/cache-common': 4.23.2 + '@algolia/logger-common': 4.23.2 + '@algolia/requester-common': 4.23.2 + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/install-pkg@0.1.1': + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + + '@antfu/utils@0.7.7': {} + + '@apidevtools/json-schema-ref-parser@11.6.1': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 + + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + + '@babel/compat-data@7.24.1': {} + + '@babel/core@7.24.3': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helpers': 7.24.1 + '@babel/parser': 7.24.1 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.24.1': + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-compilation-targets@7.23.6': + dependencies: + '@babel/compat-data': 7.24.1 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-function-name@7.23.0': + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-member-expression-to-functions@7.23.0': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-module-imports@7.24.3': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/helper-optimise-call-expression@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-plugin-utils@7.24.0': {} + + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-string-parser@7.24.1': {} + + '@babel/helper-validator-identifier@7.22.20': {} + + '@babel/helper-validator-option@7.23.5': {} + + '@babel/helpers@7.24.1': + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + + '@babel/highlight@7.24.2': + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + + '@babel/parser@7.24.1': + dependencies: + '@babel/types': 7.24.0 + + '@babel/parser@7.24.4': + dependencies: + '@babel/types': 7.24.0 + + '@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.24.3) + + '@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.22.5 + + '@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) + + '@babel/preset-typescript@7.24.1(@babel/core@7.24.3)': + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) + + '@babel/runtime@7.24.1': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/standalone@7.24.3': {} + + '@babel/template@7.24.0': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + + '@babel/traverse@7.24.1': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.24.0': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@capsizecss/metrics@2.2.0': {} + + '@capsizecss/unpack@2.1.0(encoding@0.1.13)': + dependencies: + blob-to-buffer: 1.2.9 + cross-fetch: 3.1.8(encoding@0.1.13) + fontkit: 2.0.2 + transitivePeerDependencies: + - encoding + + '@cloudflare/kv-asset-handler@0.3.1': + dependencies: + mime: 3.0.0 + + '@commitlint/cli@19.3.0(@types/node@20.12.2)(typescript@5.4.5)': + dependencies: + '@commitlint/format': 19.3.0 + '@commitlint/lint': 19.2.2 + '@commitlint/load': 19.2.0(@types/node@20.12.2)(typescript@5.4.5) + '@commitlint/read': 19.2.1 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.2.2': + dependencies: + '@commitlint/types': 19.0.3 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.0.3': + dependencies: + '@commitlint/types': 19.0.3 + ajv: 8.12.0 + + '@commitlint/ensure@19.0.3': + dependencies: + '@commitlint/types': 19.0.3 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.0.0': {} + + '@commitlint/format@19.3.0': + dependencies: + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + + '@commitlint/is-ignored@19.2.2': + dependencies: + '@commitlint/types': 19.0.3 + semver: 7.6.0 + + '@commitlint/lint@19.2.2': + dependencies: + '@commitlint/is-ignored': 19.2.2 + '@commitlint/parse': 19.0.3 + '@commitlint/rules': 19.0.3 + '@commitlint/types': 19.0.3 + + '@commitlint/load@19.2.0(@types/node@20.12.2)(typescript@5.4.5)': + dependencies: + '@commitlint/config-validator': 19.0.3 + '@commitlint/execute-rule': 19.0.0 + '@commitlint/resolve-extends': 19.1.0 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.4.5) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.2)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.0.0': {} + + '@commitlint/parse@19.0.3': + dependencies: + '@commitlint/types': 19.0.3 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.2.1': + dependencies: + '@commitlint/top-level': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + + '@commitlint/resolve-extends@19.1.0': + dependencies: + '@commitlint/config-validator': 19.0.3 + '@commitlint/types': 19.0.3 + global-directory: 4.0.1 + import-meta-resolve: 4.0.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.0.3': + dependencies: + '@commitlint/ensure': 19.0.3 + '@commitlint/message': 19.0.0 + '@commitlint/to-lines': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + + '@commitlint/to-lines@19.0.0': {} + + '@commitlint/top-level@19.0.0': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.0.3': + dependencies: + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 + + '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16)': + dependencies: + postcss-selector-parser: 6.0.16 + + '@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16)': + dependencies: + postcss-selector-parser: 6.0.16 + + '@docsearch/css@3.6.0': {} + + '@docsearch/js@3.6.0(@algolia/client-search@4.23.2)(search-insights@2.13.0)': + dependencies: + '@docsearch/react': 3.6.0(@algolia/client-search@4.23.2)(search-insights@2.13.0) + preact: 10.20.1 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.6.0(@algolia/client-search@4.23.2)(search-insights@2.13.0)': + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) + '@docsearch/css': 3.6.0 + algoliasearch: 4.23.2 + optionalDependencies: + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + + '@egoist/tailwindcss-icons@1.7.4(tailwindcss@3.4.3)': + dependencies: + '@iconify/utils': 2.1.22 + tailwindcss: 3.4.3 + transitivePeerDependencies: + - supports-color + + '@es-joy/jsdoccomment@0.42.0': + dependencies: + comment-parser: 1.4.1 + esquery: 1.5.0 + jsdoc-type-pratt-parser: 4.0.0 + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.1.1)': + dependencies: + eslint: 9.1.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.10.0': {} + + '@eslint/config-inspector@0.4.7(eslint@9.1.1)': + dependencies: + cac: 6.7.14 + chokidar: 3.6.0 + esbuild: 0.20.2 + eslint: 9.1.1 + fast-glob: 3.3.2 + find-up: 7.0.0 + get-port-please: 3.1.2 + h3: 1.11.1 + load-tsconfig: 0.2.5 + minimatch: 9.0.4 + mrmime: 2.0.0 + open: 10.1.0 + picocolors: 1.0.0 + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - uWebSockets.js + - utf-8-validate + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.0.2': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 10.0.1 + globals: 14.0.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.1.1': {} + + '@fastify/busboy@2.1.1': {} + + '@floating-ui/core@1.6.0': + dependencies: + '@floating-ui/utils': 0.2.1 + + '@floating-ui/dom@1.1.1': + dependencies: + '@floating-ui/core': 1.6.0 + + '@floating-ui/dom@1.6.3': + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + + '@floating-ui/utils@0.2.1': {} + + '@floating-ui/vue@1.0.6(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@floating-ui/dom': 1.6.3 + '@floating-ui/utils': 0.2.1 + vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@gql.tada/cli-utils@1.2.1(encoding@0.1.13)(svelte@4.2.15)(typescript@5.4.5)': + dependencies: + '@0no-co/graphqlsp': 1.11.0(encoding@0.1.13)(typescript@5.4.5) + '@gql.tada/internal': 0.2.3(graphql@16.8.1)(typescript@5.4.5) + '@vue/compiler-dom': 3.4.25 + '@vue/language-core': 2.0.13(typescript@5.4.5) + graphql: 16.8.1 + svelte2tsx: 0.7.6(svelte@4.2.15)(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - encoding + - svelte + + '@gql.tada/internal@0.1.3(graphql@16.8.1)(typescript@5.4.5)': + dependencies: + '@0no-co/graphql.web': 1.0.5(graphql@16.8.1) + graphql: 16.8.1 + typescript: 5.4.5 + + '@gql.tada/internal@0.2.3(graphql@16.8.1)(typescript@5.4.5)': + dependencies: + '@0no-co/graphql.web': 1.0.5(graphql@16.8.1) + graphql: 16.8.1 + typescript: 5.4.5 + + '@headlessui/tailwindcss@0.2.0(tailwindcss@3.4.3)': + dependencies: + tailwindcss: 3.4.3 + + '@headlessui/vue@1.7.19(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@tanstack/vue-virtual': 3.2.0(vue@3.4.25(typescript@5.4.5)) + vue: 3.4.25(typescript@5.4.5) + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@humanwhocodes/retry@0.2.3': {} + + '@iconify-json/heroicons@1.1.20': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/collections@1.0.408': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.22': + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.7 + '@iconify/types': 2.0.0 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.6.1 + transitivePeerDependencies: + - supports-color + + '@iconify/vue@4.1.1(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.4.25(typescript@5.4.5) + + '@internationalized/date@3.5.2': + dependencies: + '@swc/helpers': 0.5.10 + + '@intlify/bundle-utils@7.5.1(vue-i18n@9.10.2(vue@3.4.25(typescript@5.4.5)))': + dependencies: + '@intlify/message-compiler': 9.10.2 + '@intlify/shared': 9.10.2 + acorn: 8.11.3 + escodegen: 2.1.0 + estree-walker: 2.0.2 + jsonc-eslint-parser: 2.4.0 + magic-string: 0.30.9 + mlly: 1.6.1 + source-map-js: 1.2.0 + yaml-eslint-parser: 1.2.2 + optionalDependencies: + vue-i18n: 9.10.2(vue@3.4.25(typescript@5.4.5)) + + '@intlify/core-base@9.10.2': + dependencies: + '@intlify/message-compiler': 9.10.2 + '@intlify/shared': 9.10.2 + + '@intlify/core@9.10.2': + dependencies: + '@intlify/core-base': 9.10.2 + '@intlify/shared': 9.10.2 + + '@intlify/h3@0.5.0': + dependencies: + '@intlify/core': 9.10.2 + '@intlify/utils': 0.12.0 + + '@intlify/message-compiler@9.10.2': + dependencies: + '@intlify/shared': 9.10.2 + source-map-js: 1.2.0 + + '@intlify/shared@9.10.2': {} + + '@intlify/unplugin-vue-i18n@3.0.1(rollup@4.13.2)(vue-i18n@9.10.2(vue@3.4.25(typescript@5.4.5)))': + dependencies: + '@intlify/bundle-utils': 7.5.1(vue-i18n@9.10.2(vue@3.4.25(typescript@5.4.5))) + '@intlify/shared': 9.10.2 + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@vue/compiler-sfc': 3.4.23 + debug: 4.3.4 + fast-glob: 3.3.2 + js-yaml: 4.1.0 + json5: 2.2.3 + pathe: 1.1.2 + picocolors: 1.0.0 + source-map-js: 1.2.0 + unplugin: 1.10.1 + optionalDependencies: + vue-i18n: 9.10.2(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - rollup + - supports-color + + '@intlify/utils@0.12.0': {} + + '@ioredis/commands@1.2.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jsdevtools/ono@7.1.3': {} + + '@koa/router@12.0.1': + dependencies: + debug: 4.3.4 + http-errors: 2.0.0 + koa-compose: 4.1.0 + methods: 1.1.2 + path-to-regexp: 6.2.1 + transitivePeerDependencies: + - supports-color + + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + '@kwsites/promise-deferred@1.1.1': {} + + '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': + dependencies: + detect-libc: 2.0.3 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0(encoding@0.1.13) + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.6.0 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + json5: 2.2.3 + rollup: 4.13.2 + + '@netlify/functions@2.6.0': + dependencies: + '@netlify/serverless-functions-api': 1.14.0 + + '@netlify/node-cookies@0.1.0': {} + + '@netlify/serverless-functions-api@1.14.0': + dependencies: + '@netlify/node-cookies': 0.1.0 + urlpattern-polyfill: 8.0.2 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@npmcli/agent@2.2.2': + dependencies: + agent-base: 7.1.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + lru-cache: 10.2.0 + socks-proxy-agent: 8.0.3 + transitivePeerDependencies: + - supports-color + + '@npmcli/fs@3.1.0': + dependencies: + semver: 7.6.0 + + '@npmcli/git@5.0.4': + dependencies: + '@npmcli/promise-spawn': 7.0.1 + lru-cache: 10.2.0 + npm-pick-manifest: 9.0.0 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.6.0 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + + '@npmcli/installed-package-contents@2.0.2': + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + + '@npmcli/node-gyp@3.0.0': {} + + '@npmcli/package-json@5.0.0': + dependencies: + '@npmcli/git': 5.0.4 + glob: 10.3.12 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + proc-log: 3.0.0 + semver: 7.6.0 + transitivePeerDependencies: + - bluebird + + '@npmcli/promise-spawn@7.0.1': + dependencies: + which: 4.0.0 + + '@npmcli/run-script@7.0.4': + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.0.0 + '@npmcli/promise-spawn': 7.0.1 + node-gyp: 10.1.0 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@nuxt/devalue@2.0.2': {} + + '@nuxt/devtools-kit@1.1.5(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))': + dependencies: + '@nuxt/kit': 3.11.1(rollup@4.13.2) + '@nuxt/schema': 3.11.1(rollup@4.13.2) + execa: 7.2.0 + nuxt: 3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + transitivePeerDependencies: + - rollup + - supports-color + + '@nuxt/devtools-kit@1.2.0(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))': + dependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + '@nuxt/schema': 3.11.2(rollup@4.13.2) + execa: 7.2.0 + nuxt: 3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + transitivePeerDependencies: + - rollup + - supports-color + + '@nuxt/devtools-wizard@1.1.5': + dependencies: + consola: 3.2.3 + diff: 5.2.0 + execa: 7.2.0 + global-directory: 4.0.1 + magicast: 0.3.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + prompts: 2.4.2 + rc9: 2.1.1 + semver: 7.6.0 + + '@nuxt/devtools@1.1.5(@unocss/reset@0.58.9)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@antfu/utils': 0.7.7 + '@nuxt/devtools-kit': 1.1.5(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + '@nuxt/devtools-wizard': 1.1.5 + '@nuxt/kit': 3.11.2(rollup@4.13.2) + '@vue/devtools-applet': 7.0.25(@unocss/reset@0.58.9)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + '@vue/devtools-core': 7.0.25(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + '@vue/devtools-kit': 7.0.25(vue@3.4.25(typescript@5.4.5)) + birpc: 0.2.17 + consola: 3.2.3 + cronstrue: 2.49.0 + destr: 2.0.3 + error-stack-parser-es: 0.1.1 + execa: 7.2.0 + fast-glob: 3.3.2 + flatted: 3.3.1 + get-port-please: 3.1.2 + hookable: 5.5.3 + image-meta: 0.2.0 + is-installed-globally: 1.0.0 + launch-editor: 2.6.1 + local-pkg: 0.5.0 + magicast: 0.3.3 + nuxt: 3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + nypm: 0.3.8 + ohash: 1.1.3 + pacote: 17.0.6 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + rc9: 2.1.1 + scule: 1.3.0 + semver: 7.6.0 + simple-git: 3.24.0 + sirv: 2.0.4 + unimport: 3.7.1(rollup@4.13.2) + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + vite-plugin-inspect: 0.8.3(@nuxt/kit@3.11.2(rollup@4.13.2))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + vite-plugin-vue-inspector: 4.0.2(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + which: 3.0.1 + ws: 8.16.0 + transitivePeerDependencies: + - '@unocss/reset' + - '@vue/composition-api' + - async-validator + - axios + - bluebird + - bufferutil + - change-case + - drauu + - floating-vue + - fuse.js + - idb-keyval + - jwt-decode + - nprogress + - qrcode + - rollup + - sortablejs + - supports-color + - universal-cookie + - unocss + - utf-8-validate + - vue + + '@nuxt/eslint-config@0.3.9(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@eslint/js': 9.1.1 + '@nuxt/eslint-plugin': 0.3.9(eslint@9.1.1)(typescript@5.4.5) + '@rushstack/eslint-patch': 1.10.2 + '@stylistic/eslint-plugin': 1.7.2(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.7.0(@typescript-eslint/parser@7.7.0(eslint@9.1.1)(typescript@5.4.5))(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.0(eslint@9.1.1)(typescript@5.4.5) + eslint: 9.1.1 + eslint-config-flat-gitignore: 0.1.5 + eslint-flat-config-utils: 0.2.3 + eslint-plugin-import-x: 0.5.0(eslint@9.1.1)(typescript@5.4.5) + eslint-plugin-jsdoc: 48.2.3(eslint@9.1.1) + eslint-plugin-unicorn: 52.0.0(eslint@9.1.1) + eslint-plugin-vue: 9.25.0(eslint@9.1.1) + globals: 15.0.0 + pathe: 1.1.2 + tslib: 2.6.2 + vue-eslint-parser: 9.4.2(eslint@9.1.1) + transitivePeerDependencies: + - supports-color + - typescript + + '@nuxt/eslint-plugin@0.3.9(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/utils': 7.7.0(eslint@9.1.1)(typescript@5.4.5) + eslint: 9.1.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@nuxt/eslint@0.3.9(eslint@9.1.1)(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(typescript@5.4.5)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))': + dependencies: + '@eslint/config-inspector': 0.4.7(eslint@9.1.1) + '@nuxt/devtools-kit': 1.2.0(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + '@nuxt/eslint-config': 0.3.9(eslint@9.1.1)(typescript@5.4.5) + '@nuxt/eslint-plugin': 0.3.9(eslint@9.1.1)(typescript@5.4.5) + '@nuxt/kit': 3.11.2(rollup@4.13.2) + chokidar: 3.6.0 + eslint: 9.1.1 + eslint-flat-config-utils: 0.2.3 + eslint-typegen: 0.2.4(eslint@9.1.1) + find-up: 7.0.0 + get-port-please: 3.1.2 + mlly: 1.6.1 + pathe: 1.1.2 + unimport: 3.7.1(rollup@4.13.2) + transitivePeerDependencies: + - bufferutil + - nuxt + - rollup + - supports-color + - typescript + - uWebSockets.js + - utf-8-validate + - vite + + '@nuxt/fonts@0.6.1(encoding@0.1.13)(ioredis@5.3.2)(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))': + dependencies: + '@nuxt/devtools-kit': 1.1.5(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + '@nuxt/kit': 3.11.1(rollup@4.13.2) + chalk: 5.3.0 + css-tree: 2.3.1 + defu: 6.1.4 + esbuild: 0.20.2 + fontaine: 0.5.0(encoding@0.1.13) + globby: 14.0.1 + h3: 1.11.1 + jiti: 1.21.0 + magic-regexp: 0.8.0 + magic-string: 0.30.8 + node-fetch-native: 1.6.4 + ohash: 1.1.3 + pathe: 1.1.2 + sirv: 2.0.4 + ufo: 1.5.3 + unplugin: 1.10.1 + unstorage: 1.10.2(ioredis@5.3.2) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - encoding + - idb-keyval + - ioredis + - nuxt + - rollup + - supports-color + - uWebSockets.js + - vite + + '@nuxt/kit@3.11.1(rollup@4.13.2)': + dependencies: + '@nuxt/schema': 3.11.1(rollup@4.13.2) + c12: 1.10.0 + consola: 3.2.3 + defu: 6.1.4 + globby: 14.0.1 + hash-sum: 2.0.0 + ignore: 5.3.1 + jiti: 1.21.0 + knitwork: 1.1.0 + mlly: 1.6.1 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.3.0 + semver: 7.6.0 + ufo: 1.5.3 + unctx: 2.3.1 + unimport: 3.7.1(rollup@4.13.2) + untyped: 1.4.2 + transitivePeerDependencies: + - rollup + - supports-color + + '@nuxt/kit@3.11.2(rollup@4.13.2)': + dependencies: + '@nuxt/schema': 3.11.2(rollup@4.13.2) + c12: 1.10.0 + consola: 3.2.3 + defu: 6.1.4 + globby: 14.0.1 + hash-sum: 2.0.0 + ignore: 5.3.1 + jiti: 1.21.0 + knitwork: 1.1.0 + mlly: 1.6.1 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.3.0 + semver: 7.6.0 + ufo: 1.5.3 + unctx: 2.3.1 + unimport: 3.7.1(rollup@4.13.2) + untyped: 1.4.2 + transitivePeerDependencies: + - rollup + - supports-color + + '@nuxt/schema@3.11.1(rollup@4.13.2)': + dependencies: + '@nuxt/ui-templates': 1.3.2 + consola: 3.2.3 + defu: 6.1.4 + hookable: 5.5.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.3.0 + std-env: 3.7.0 + ufo: 1.5.3 + unimport: 3.7.1(rollup@4.13.2) + untyped: 1.4.2 + transitivePeerDependencies: + - rollup + - supports-color + + '@nuxt/schema@3.11.2(rollup@4.13.2)': + dependencies: + '@nuxt/ui-templates': 1.3.2 + consola: 3.2.3 + defu: 6.1.4 + hookable: 5.5.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.3.0 + std-env: 3.7.0 + ufo: 1.5.3 + unimport: 3.7.1(rollup@4.13.2) + untyped: 1.4.2 + transitivePeerDependencies: + - rollup + - supports-color + + '@nuxt/telemetry@2.5.3(rollup@4.13.2)': + dependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + ci-info: 4.0.0 + consola: 3.2.3 + create-require: 1.1.1 + defu: 6.1.4 + destr: 2.0.3 + dotenv: 16.4.5 + git-url-parse: 13.1.1 + is-docker: 3.0.0 + jiti: 1.21.0 + mri: 1.2.0 + nanoid: 4.0.2 + ofetch: 1.3.4 + parse-git-config: 3.0.0 + pathe: 1.1.2 + rc9: 2.1.1 + std-env: 3.7.0 + transitivePeerDependencies: + - rollup + - supports-color + + '@nuxt/ui-templates@1.3.2': {} + + '@nuxt/ui@2.15.2(focus-trap@7.5.4)(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@egoist/tailwindcss-icons': 1.7.4(tailwindcss@3.4.3) + '@headlessui/tailwindcss': 0.2.0(tailwindcss@3.4.3) + '@headlessui/vue': 1.7.19(vue@3.4.25(typescript@5.4.5)) + '@iconify-json/heroicons': 1.1.20 + '@nuxt/kit': 3.11.2(rollup@4.13.2) + '@nuxtjs/color-mode': 3.4.0(rollup@4.13.2) + '@nuxtjs/tailwindcss': 6.12.0(rollup@4.13.2) + '@popperjs/core': 2.11.8 + '@tailwindcss/aspect-ratio': 0.4.2(tailwindcss@3.4.3) + '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.3) + '@tailwindcss/forms': 0.5.7(tailwindcss@3.4.3) + '@tailwindcss/typography': 0.5.12(tailwindcss@3.4.3) + '@vueuse/core': 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(fuse.js@6.6.2)(vue@3.4.25(typescript@5.4.5)) + '@vueuse/math': 10.9.0(vue@3.4.25(typescript@5.4.5)) + defu: 6.1.4 + fuse.js: 6.6.2 + nuxt-icon: 0.6.10(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + ohash: 1.1.3 + pathe: 1.1.2 + scule: 1.3.0 + tailwind-merge: 2.3.0 + tailwindcss: 3.4.3 + transitivePeerDependencies: + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - focus-trap + - idb-keyval + - jwt-decode + - nprogress + - nuxt + - qrcode + - rollup + - sortablejs + - supports-color + - ts-node + - uWebSockets.js + - universal-cookie + - vite + - vue + + '@nuxt/vite-builder@3.11.2(@types/node@20.12.2)(eslint@9.1.1)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + '@rollup/plugin-replace': 5.0.5(rollup@4.13.2) + '@vitejs/plugin-vue': 5.0.4(vite@5.2.8(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.2.8(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + autoprefixer: 10.4.19(postcss@8.4.38) + clear: 0.1.0 + consola: 3.2.3 + cssnano: 6.1.2(postcss@8.4.38) + defu: 6.1.4 + esbuild: 0.20.2 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + externality: 1.0.2 + fs-extra: 11.2.0 + get-port-please: 3.1.2 + h3: 1.11.1 + knitwork: 1.1.0 + magic-string: 0.30.9 + mlly: 1.6.1 + ohash: 1.1.3 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + postcss: 8.4.38 + rollup-plugin-visualizer: 5.12.0(rollup@4.13.2) + std-env: 3.7.0 + strip-literal: 2.1.0 + ufo: 1.5.3 + unenv: 1.9.0 + unplugin: 1.10.1 + vite: 5.2.8(@types/node@20.12.2)(terser@5.30.2) + vite-node: 1.4.0(@types/node@20.12.2)(terser@5.30.2) + vite-plugin-checker: 0.6.4(eslint@9.1.1)(meow@12.1.1)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.8(@types/node@20.12.2)(terser@5.30.2)) + vue: 3.4.25(typescript@5.4.5) + vue-bundle-renderer: 2.0.0 + transitivePeerDependencies: + - '@types/node' + - eslint + - less + - lightningcss + - meow + - optionator + - rollup + - sass + - stylelint + - stylus + - sugarss + - supports-color + - terser + - typescript + - uWebSockets.js + - vls + - vti + - vue-tsc + + '@nuxtjs/color-mode@3.4.0(rollup@4.13.2)': + dependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + pathe: 1.1.2 + pkg-types: 1.0.3 + semver: 7.6.0 + transitivePeerDependencies: + - rollup + - supports-color + + '@nuxtjs/i18n@8.3.1(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@intlify/h3': 0.5.0 + '@intlify/shared': 9.10.2 + '@intlify/unplugin-vue-i18n': 3.0.1(rollup@4.13.2)(vue-i18n@9.10.2(vue@3.4.25(typescript@5.4.5))) + '@intlify/utils': 0.12.0 + '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.13.2) + '@nuxt/kit': 3.11.2(rollup@4.13.2) + '@rollup/plugin-yaml': 4.1.2(rollup@4.13.2) + '@vue/compiler-sfc': 3.4.23 + debug: 4.3.4 + defu: 6.1.4 + estree-walker: 3.0.3 + is-https: 4.0.0 + knitwork: 1.1.0 + magic-string: 0.30.9 + mlly: 1.6.1 + pathe: 1.1.2 + scule: 1.3.0 + sucrase: 3.35.0 + ufo: 1.5.3 + unplugin: 1.10.1 + vue-i18n: 9.10.2(vue@3.4.25(typescript@5.4.5)) + vue-router: 4.3.2(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - petite-vue-i18n + - rollup + - supports-color + - vue + - vue-i18n-bridge + + '@nuxtjs/tailwindcss@6.12.0(rollup@4.13.2)': + dependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + autoprefixer: 10.4.19(postcss@8.4.38) + consola: 3.2.3 + defu: 6.1.4 + h3: 1.11.1 + pathe: 1.1.2 + postcss: 8.4.38 + postcss-nesting: 12.1.1(postcss@8.4.38) + tailwind-config-viewer: 2.0.1(tailwindcss@3.4.3) + tailwindcss: 3.4.3 + ufo: 1.5.3 + unctx: 2.3.1 + transitivePeerDependencies: + - rollup + - supports-color + - ts-node + - uWebSockets.js + + '@parcel/watcher-android-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-x64@2.4.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.4.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.4.1': + optional: true + + '@parcel/watcher-wasm@2.4.1': + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.5 + + '@parcel/watcher-win32-arm64@2.4.1': + optional: true + + '@parcel/watcher-win32-ia32@2.4.1': + optional: true + + '@parcel/watcher-win32-x64@2.4.1': + optional: true + + '@parcel/watcher@2.4.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.5 + node-addon-api: 7.1.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + + '@pinia/nuxt@0.5.1(rollup@4.13.2)(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@nuxt/kit': 3.11.1(rollup@4.13.2) + pinia: 2.1.7(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - rollup + - supports-color + - typescript + - vue + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@polka/url@1.0.0-next.25': {} + + '@popperjs/core@2.11.8': {} + + '@rollup/plugin-alias@5.1.0(rollup@4.13.2)': + dependencies: + slash: 4.0.0 + optionalDependencies: + rollup: 4.13.2 + + '@rollup/plugin-commonjs@25.0.7(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.30.9 + optionalDependencies: + rollup: 4.13.2 + + '@rollup/plugin-inject@5.0.5(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + estree-walker: 2.0.2 + magic-string: 0.30.9 + optionalDependencies: + rollup: 4.13.2 + + '@rollup/plugin-json@6.1.0(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + optionalDependencies: + rollup: 4.13.2 + + '@rollup/plugin-node-resolve@15.2.3(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 4.13.2 + + '@rollup/plugin-replace@5.0.5(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + magic-string: 0.30.9 + optionalDependencies: + rollup: 4.13.2 + + '@rollup/plugin-terser@0.4.4(rollup@4.13.2)': + dependencies: + serialize-javascript: 6.0.2 + smob: 1.5.0 + terser: 5.30.2 + optionalDependencies: + rollup: 4.13.2 + + '@rollup/plugin-yaml@4.1.2(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + js-yaml: 4.1.0 + tosource: 2.0.0-alpha.3 + optionalDependencies: + rollup: 4.13.2 + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/pluginutils@5.1.0(rollup@4.13.2)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.13.2 + + '@rollup/rollup-android-arm-eabi@4.13.2': + optional: true + + '@rollup/rollup-android-arm64@4.13.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.13.2': + optional: true + + '@rollup/rollup-darwin-x64@4.13.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.13.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.13.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.13.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.13.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.13.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.13.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.13.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.13.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.13.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.13.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.13.2': + optional: true + + '@rushstack/eslint-patch@1.10.2': {} + + '@shikijs/core@1.3.0': {} + + '@shikijs/monaco@1.3.0': + dependencies: + '@shikijs/core': 1.3.0 + + '@shikijs/transformers@1.3.0': + dependencies: + shiki: 1.3.0 + + '@sigstore/bundle@2.2.0': + dependencies: + '@sigstore/protobuf-specs': 0.3.1 + + '@sigstore/core@1.1.0': {} + + '@sigstore/protobuf-specs@0.3.1': {} + + '@sigstore/sign@2.2.3': + dependencies: + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.1 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + + '@sigstore/tuf@2.3.2': + dependencies: + '@sigstore/protobuf-specs': 0.3.1 + tuf-js: 2.2.0 + transitivePeerDependencies: + - supports-color + + '@sigstore/verify@1.1.1': + dependencies: + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.1 + + '@sindresorhus/merge-streams@2.3.0': {} + + '@stylistic/eslint-plugin-js@1.7.2(eslint@9.1.1)': + dependencies: + '@types/eslint': 8.56.9 + acorn: 8.11.3 + escape-string-regexp: 4.0.0 + eslint: 9.1.1 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + + '@stylistic/eslint-plugin-jsx@1.7.2(eslint@9.1.1)': + dependencies: + '@stylistic/eslint-plugin-js': 1.7.2(eslint@9.1.1) + '@types/eslint': 8.56.9 + eslint: 9.1.1 + estraverse: 5.3.0 + picomatch: 4.0.2 + + '@stylistic/eslint-plugin-plus@1.7.2(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@types/eslint': 8.56.9 + '@typescript-eslint/utils': 6.21.0(eslint@9.1.1)(typescript@5.4.5) + eslint: 9.1.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@stylistic/eslint-plugin-ts@1.7.2(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@stylistic/eslint-plugin-js': 1.7.2(eslint@9.1.1) + '@types/eslint': 8.56.9 + '@typescript-eslint/utils': 6.21.0(eslint@9.1.1)(typescript@5.4.5) + eslint: 9.1.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@stylistic/eslint-plugin@1.7.2(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@stylistic/eslint-plugin-js': 1.7.2(eslint@9.1.1) + '@stylistic/eslint-plugin-jsx': 1.7.2(eslint@9.1.1) + '@stylistic/eslint-plugin-plus': 1.7.2(eslint@9.1.1)(typescript@5.4.5) + '@stylistic/eslint-plugin-ts': 1.7.2(eslint@9.1.1)(typescript@5.4.5) + '@types/eslint': 8.56.9 + eslint: 9.1.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@swc/helpers@0.4.14': + dependencies: + tslib: 2.6.2 + + '@swc/helpers@0.4.36': + dependencies: + legacy-swc-helpers: '@swc/helpers@0.4.14' + tslib: 2.6.2 + + '@swc/helpers@0.5.10': + dependencies: + tslib: 2.6.2 + + '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.3)': + dependencies: + tailwindcss: 3.4.3 + + '@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.3)': + dependencies: + tailwindcss: 3.4.3 + + '@tailwindcss/forms@0.5.7(tailwindcss@3.4.3)': + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 3.4.3 + + '@tailwindcss/typography@0.5.12(tailwindcss@3.4.3)': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.3 + + '@tanstack/virtual-core@3.2.0': {} + + '@tanstack/vue-virtual@3.2.0(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@tanstack/virtual-core': 3.2.0 + vue: 3.4.25(typescript@5.4.5) + + '@trysound/sax@0.2.0': {} + + '@tufjs/canonical-json@2.0.0': {} + + '@tufjs/models@2.0.0': + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.4 + + '@types/conventional-commits-parser@5.0.0': + dependencies: + '@types/node': 20.12.2 + + '@types/eslint@8.56.10': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/eslint@8.56.9': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.5': {} + + '@types/http-proxy@1.17.14': + dependencies: + '@types/node': 20.12.2 + + '@types/json-schema@7.0.15': {} + + '@types/linkify-it@3.0.5': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.0 + + '@types/lodash@4.17.0': {} + + '@types/markdown-it@14.0.1': + dependencies: + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 + + '@types/mdurl@1.0.5': {} + + '@types/node@20.12.2': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} + + '@types/resolve@1.20.2': {} + + '@types/semver@7.5.8': {} + + '@types/web-bluetooth@0.0.20': {} + + '@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@9.1.1)(typescript@5.4.5))(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.7.0(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/type-utils': 7.7.0(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + eslint: 9.1.1 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.7.0(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + eslint: 9.1.1 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + + '@typescript-eslint/scope-manager@7.7.0': + dependencies: + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 + + '@typescript-eslint/type-utils@7.7.0(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.1.1)(typescript@5.4.5) + debug: 4.3.4 + eslint: 9.1.1 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.21.0': {} + + '@typescript-eslint/types@7.7.0': {} + + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5)': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5)': + dependencies: + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.21.0(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + eslint: 9.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.7.0(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + eslint: 9.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.7.0': + dependencies: + '@typescript-eslint/types': 7.7.0 + eslint-visitor-keys: 3.4.3 + + '@unhead/dom@1.9.4': + dependencies: + '@unhead/schema': 1.9.4 + '@unhead/shared': 1.9.4 + + '@unhead/schema@1.9.4': + dependencies: + hookable: 5.5.3 + zhead: 2.2.4 + + '@unhead/shared@1.9.4': + dependencies: + '@unhead/schema': 1.9.4 + + '@unhead/ssr@1.9.4': + dependencies: + '@unhead/schema': 1.9.4 + '@unhead/shared': 1.9.4 + + '@unhead/vue@1.9.4(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@unhead/schema': 1.9.4 + '@unhead/shared': 1.9.4 + hookable: 5.5.3 + unhead: 1.9.4 + vue: 3.4.25(typescript@5.4.5) + + '@unocss/astro@0.58.9(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + optionalDependencies: + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + transitivePeerDependencies: + - rollup + + '@unocss/cli@0.58.9(rollup@4.13.2)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/preset-uno': 0.58.9 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.10 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + + '@unocss/config@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + unconfig: 0.3.12 + + '@unocss/core@0.58.9': {} + + '@unocss/extractor-arbitrary-variants@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/inspector@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + gzip-size: 6.0.0 + sirv: 2.0.4 + + '@unocss/postcss@0.58.9(postcss@8.4.38)': + dependencies: + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + fast-glob: 3.3.2 + magic-string: 0.30.10 + postcss: 8.4.38 + + '@unocss/preset-attributify@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/preset-icons@0.58.9': + dependencies: + '@iconify/utils': 2.1.22 + '@unocss/core': 0.58.9 + ofetch: 1.3.4 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/preset-tagify@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/preset-typography@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + + '@unocss/preset-uno@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/preset-web-fonts@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + ofetch: 1.3.4 + + '@unocss/preset-wind@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/reset@0.58.9': {} + + '@unocss/rule-utils@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + magic-string: 0.30.10 + + '@unocss/scope@0.58.9': {} + + '@unocss/transformer-attributify-jsx-babel@0.58.9': + dependencies: + '@babel/core': 7.24.3 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) + '@unocss/core': 0.58.9 + transitivePeerDependencies: + - supports-color + + '@unocss/transformer-attributify-jsx@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/transformer-compile-class@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/transformer-directives@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + + '@unocss/transformer-variant-group@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/vite@0.58.9(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/inspector': 0.58.9 + '@unocss/scope': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.10 + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + transitivePeerDependencies: + - rollup + + '@urql/core@5.0.2(graphql@16.8.1)': + dependencies: + '@0no-co/graphql.web': 1.0.5(graphql@16.8.1) + wonka: 6.3.4 + transitivePeerDependencies: + - graphql + + '@vee-validate/nuxt@4.12.6(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + local-pkg: 0.5.0 + vee-validate: 4.12.6(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - rollup + - supports-color + - vue + + '@vee-validate/zod@4.12.6(vue@3.4.25(typescript@5.4.5))': + dependencies: + type-fest: 4.14.0 + vee-validate: 4.12.6(vue@3.4.25(typescript@5.4.5)) + zod: 3.23.4 + transitivePeerDependencies: + - vue + + '@vercel/nft@0.26.4(encoding@0.1.13)': + dependencies: + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) + '@rollup/pluginutils': 4.2.1 + acorn: 8.11.3 + acorn-import-attributes: 1.9.5(acorn@8.11.3) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + node-gyp-build: 4.8.0 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.8(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@babel/core': 7.24.3 + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.3) + vite: 5.2.8(@types/node@20.12.2)(terser@5.30.2) + vue: 3.4.25(typescript@5.4.5) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.0.4(vite@5.2.8(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5))': + dependencies: + vite: 5.2.8(@types/node@20.12.2)(terser@5.30.2) + vue: 3.4.25(typescript@5.4.5) + + '@vitejs/plugin-vue@5.0.4(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5))': + dependencies: + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + vue: 3.4.25(typescript@5.4.5) + + '@volar/language-core@1.4.1': + dependencies: + '@volar/source-map': 1.4.1 + + '@volar/language-core@2.2.0-alpha.8': + dependencies: + '@volar/source-map': 2.2.0-alpha.8 + + '@volar/source-map@1.4.1': + dependencies: + muggle-string: 0.2.2 + + '@volar/source-map@2.2.0-alpha.8': + dependencies: + muggle-string: 0.4.1 + + '@volar/typescript@1.4.1-patch.2(typescript@5.4.5)': + dependencies: + '@volar/language-core': 1.4.1 + typescript: 5.4.5 + + '@volar/vue-language-core@1.6.5': + dependencies: + '@volar/language-core': 1.4.1 + '@volar/source-map': 1.4.1 + '@vue/compiler-dom': 3.4.25 + '@vue/compiler-sfc': 3.4.25 + '@vue/reactivity': 3.4.25 + '@vue/shared': 3.4.25 + minimatch: 9.0.4 + muggle-string: 0.2.2 + vue-template-compiler: 2.7.16 + + '@volar/vue-typescript@1.6.5(typescript@5.4.5)': + dependencies: + '@volar/typescript': 1.4.1-patch.2(typescript@5.4.5) + '@volar/vue-language-core': 1.6.5 + typescript: 5.4.5 + + '@vue-macros/common@1.10.2(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@babel/types': 7.24.0 + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@vue/compiler-sfc': 3.4.23 + ast-kit: 0.12.1 + local-pkg: 0.5.0 + magic-string-ast: 0.3.0 + optionalDependencies: + vue: 3.4.25(typescript@5.4.5) + transitivePeerDependencies: + - rollup + + '@vue/babel-helper-vue-transform-on@1.2.2': {} + + '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.24.3)': + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + '@vue/babel-helper-vue-transform-on': 1.2.2 + '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.24.3) + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + optionalDependencies: + '@babel/core': 7.24.3 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.24.3)': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.3 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/parser': 7.24.1 + '@vue/compiler-sfc': 3.4.23 + + '@vue/compiler-core@3.4.23': + dependencies: + '@babel/parser': 7.24.1 + '@vue/shared': 3.4.23 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-core@3.4.25': + dependencies: + '@babel/parser': 7.24.4 + '@vue/shared': 3.4.25 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-dom@3.4.23': + dependencies: + '@vue/compiler-core': 3.4.23 + '@vue/shared': 3.4.23 + + '@vue/compiler-dom@3.4.25': + dependencies: + '@vue/compiler-core': 3.4.25 + '@vue/shared': 3.4.25 + + '@vue/compiler-sfc@3.4.23': + dependencies: + '@babel/parser': 7.24.1 + '@vue/compiler-core': 3.4.23 + '@vue/compiler-dom': 3.4.23 + '@vue/compiler-ssr': 3.4.23 + '@vue/shared': 3.4.23 + estree-walker: 2.0.2 + magic-string: 0.30.9 + postcss: 8.4.38 + source-map-js: 1.2.0 + + '@vue/compiler-sfc@3.4.25': + dependencies: + '@babel/parser': 7.24.4 + '@vue/compiler-core': 3.4.25 + '@vue/compiler-dom': 3.4.25 + '@vue/compiler-ssr': 3.4.25 + '@vue/shared': 3.4.25 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.38 + source-map-js: 1.2.0 + + '@vue/compiler-ssr@3.4.23': + dependencies: + '@vue/compiler-dom': 3.4.23 + '@vue/shared': 3.4.23 + + '@vue/compiler-ssr@3.4.25': + dependencies: + '@vue/compiler-dom': 3.4.25 + '@vue/shared': 3.4.25 + + '@vue/devtools-api@6.6.1': {} + + '@vue/devtools-api@7.0.27(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vue/devtools-kit': 7.0.27(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - vue + + '@vue/devtools-applet@7.0.25(@unocss/reset@0.58.9)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vue/devtools-core': 7.0.25(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + '@vue/devtools-kit': 7.0.25(vue@3.4.25(typescript@5.4.5)) + '@vue/devtools-shared': 7.0.25 + '@vue/devtools-ui': 7.0.25(@unocss/reset@0.58.9)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vue@3.4.25(typescript@5.4.5)) + perfect-debounce: 1.0.0 + splitpanes: 3.1.5 + vue: 3.4.25(typescript@5.4.5) + vue-virtual-scroller: 2.0.0-beta.8(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - '@unocss/reset' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - floating-vue + - fuse.js + - idb-keyval + - jwt-decode + - nprogress + - qrcode + - sortablejs + - universal-cookie + - unocss + - vite + + '@vue/devtools-core@7.0.25(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vue/devtools-kit': 7.0.25(vue@3.4.25(typescript@5.4.5)) + '@vue/devtools-shared': 7.0.25 + mitt: 3.0.1 + nanoid: 3.3.7 + pathe: 1.1.2 + vite-hot-client: 0.2.3(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + transitivePeerDependencies: + - vite + - vue + + '@vue/devtools-kit@7.0.25(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vue/devtools-shared': 7.0.25 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + vue: 3.4.25(typescript@5.4.5) + + '@vue/devtools-kit@7.0.27(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vue/devtools-shared': 7.0.27 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + vue: 3.4.25(typescript@5.4.5) + + '@vue/devtools-shared@7.0.25': + dependencies: + rfdc: 1.3.1 + + '@vue/devtools-shared@7.0.27': + dependencies: + rfdc: 1.3.1 + + '@vue/devtools-ui@7.0.25(@unocss/reset@0.58.9)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@unocss/reset': 0.58.9 + '@vueuse/components': 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/core': 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(fuse.js@6.6.2)(vue@3.4.25(typescript@5.4.5)) + colord: 2.9.3 + floating-vue: 5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)) + focus-trap: 7.5.4 + unocss: 0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + vue: 3.4.25(typescript@5.4.5) + transitivePeerDependencies: + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - nprogress + - qrcode + - sortablejs + - universal-cookie + + '@vue/language-core@2.0.13(typescript@5.4.5)': + dependencies: + '@volar/language-core': 2.2.0-alpha.8 + '@vue/compiler-dom': 3.4.25 + '@vue/shared': 3.4.25 + computeds: 0.0.1 + minimatch: 9.0.4 + path-browserify: 1.0.1 + vue-template-compiler: 2.7.16 + optionalDependencies: + typescript: 5.4.5 + + '@vue/reactivity@3.4.25': + dependencies: + '@vue/shared': 3.4.25 + + '@vue/runtime-core@3.4.25': + dependencies: + '@vue/reactivity': 3.4.25 + '@vue/shared': 3.4.25 + + '@vue/runtime-dom@3.4.25': + dependencies: + '@vue/runtime-core': 3.4.25 + '@vue/shared': 3.4.25 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.25(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vue/compiler-ssr': 3.4.25 + '@vue/shared': 3.4.25 + vue: 3.4.25(typescript@5.4.5) + + '@vue/shared@3.4.21': {} + + '@vue/shared@3.4.23': {} + + '@vue/shared@3.4.25': {} + + '@vueuse/components@10.9.0(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vueuse/core': 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/shared': 10.9.0(vue@3.4.25(typescript@5.4.5)) + vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/core@10.9.0(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.9.0 + '@vueuse/shared': 10.9.0(vue@3.4.25(typescript@5.4.5)) + vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/integrations@10.9.0(focus-trap@7.5.4)(fuse.js@6.6.2)(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vueuse/core': 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/shared': 10.9.0(vue@3.4.25(typescript@5.4.5)) + vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) + optionalDependencies: + focus-trap: 7.5.4 + fuse.js: 6.6.2 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/math@10.9.0(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@vueuse/shared': 10.9.0(vue@3.4.25(typescript@5.4.5)) + vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@10.9.0': {} + + '@vueuse/nuxt@10.9.0(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5))': + dependencies: + '@nuxt/kit': 3.11.1(rollup@4.13.2) + '@vueuse/core': 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/metadata': 10.9.0 + local-pkg: 0.5.0 + nuxt: 3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - rollup + - supports-color + - vue + + '@vueuse/shared@10.9.0(vue@3.4.25(typescript@5.4.5))': + dependencies: + vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abbrev@1.1.1: {} + + abbrev@2.0.0: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-import-attributes@1.9.5(acorn@8.11.3): + dependencies: + acorn: 8.11.3 + + acorn-jsx@5.3.2(acorn@8.11.3): + dependencies: + acorn: 8.11.3 + + acorn@8.11.3: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.1: + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + algoliasearch@4.23.2: + dependencies: + '@algolia/cache-browser-local-storage': 4.23.2 + '@algolia/cache-common': 4.23.2 + '@algolia/cache-in-memory': 4.23.2 + '@algolia/client-account': 4.23.2 + '@algolia/client-analytics': 4.23.2 + '@algolia/client-common': 4.23.2 + '@algolia/client-personalization': 4.23.2 + '@algolia/client-search': 4.23.2 + '@algolia/logger-common': 4.23.2 + '@algolia/logger-console': 4.23.2 + '@algolia/recommend': 4.23.2 + '@algolia/requester-browser-xhr': 4.23.2 + '@algolia/requester-common': 4.23.2 + '@algolia/requester-node-http': 4.23.2 + '@algolia/transporter': 4.23.2 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@6.2.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@2.0.0: {} + + archiver-utils@5.0.2: + dependencies: + glob: 10.3.12 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.17.21 + normalize-path: 3.0.0 + readable-stream: 4.5.2 + + archiver@7.0.1: + dependencies: + archiver-utils: 5.0.2 + async: 3.2.5 + buffer-crc32: 1.0.0 + readable-stream: 4.5.2 + readdir-glob: 1.1.3 + tar-stream: 3.1.7 + zip-stream: 6.0.1 + + are-docs-informative@0.0.2: {} + + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.6.2 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + array-ify@1.0.0: {} + + array-union@2.1.0: {} + + ast-kit@0.12.1: + dependencies: + '@babel/parser': 7.24.1 + pathe: 1.1.2 + + ast-kit@0.9.5(rollup@4.13.2): + dependencies: + '@babel/parser': 7.24.1 + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + + ast-walker-scope@0.5.0(rollup@4.13.2): + dependencies: + '@babel/parser': 7.24.1 + ast-kit: 0.9.5(rollup@4.13.2) + transitivePeerDependencies: + - rollup + + async-sema@3.1.1: {} + + async@2.6.4: + dependencies: + lodash: 4.17.21 + + async@3.2.5: {} + + at-least-node@1.0.0: {} + + autoprefixer@10.4.19(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001605 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + axobject-query@4.0.0: + dependencies: + dequal: 2.0.3 + + b4a@1.6.6: {} + + balanced-match@1.0.2: {} + + bare-events@2.2.2: + optional: true + + base64-js@1.5.1: {} + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + birpc@0.2.17: {} + + blob-to-buffer@1.2.9: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + + brotli@1.3.3: + dependencies: + base64-js: 1.5.1 + + browserslist@4.23.0: + dependencies: + caniuse-lite: 1.0.30001605 + electron-to-chromium: 1.4.724 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + + buffer-crc32@1.0.0: {} + + buffer-from@1.1.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@3.3.0: {} + + builtins@5.0.1: + dependencies: + semver: 7.6.0 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + + c12@1.10.0: + dependencies: + chokidar: 3.6.0 + confbox: 0.1.3 + defu: 6.1.4 + dotenv: 16.4.5 + giget: 1.2.3 + jiti: 1.21.0 + mlly: 1.6.1 + ohash: 1.1.3 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + rc9: 2.1.1 + + cac@6.7.14: {} + + cacache@18.0.2: + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.12 + lru-cache: 10.2.0 + minipass: 7.0.4 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.1 + unique-filename: 3.0.0 + + cache-content-type@1.0.1: + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + camelcase@6.3.0: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001605 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001605: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@2.0.0: {} + + ci-info@4.0.0: {} + + citty@0.1.6: + dependencies: + consola: 3.2.3 + + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + clean-stack@2.2.0: {} + + clear@0.1.0: {} + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.1.0 + + clipboardy@4.0.0: + dependencies: + execa: 8.0.1 + is-wsl: 3.1.0 + is64bit: 2.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@2.1.2: {} + + clsx@2.1.1: {} + + cluster-key-slot@1.1.2: {} + + co@4.6.0: {} + + code-red@1.0.4: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.5 + acorn: 8.11.3 + estree-walker: 3.0.3 + periscopic: 3.1.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + commander@11.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@6.2.1: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + comment-parser@1.4.1: {} + + commitlint@19.3.0(@types/node@20.12.2)(typescript@5.4.5): + dependencies: + '@commitlint/cli': 19.3.0(@types/node@20.12.2)(typescript@5.4.5) + '@commitlint/types': 19.0.3 + transitivePeerDependencies: + - '@types/node' + - typescript + + commondir@1.0.1: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + compress-commons@6.0.2: + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.5.2 + + computeds@0.0.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.3: {} + + consola@3.2.3: {} + + console-control-strings@1.1.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + convert-source-map@2.0.0: {} + + cookie-es@1.1.0: {} + + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + + core-js-compat@3.36.1: + dependencies: + browserslist: 4.23.0 + + core-util-is@1.0.3: {} + + cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.2)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5): + dependencies: + '@types/node': 20.12.2 + cosmiconfig: 9.0.0(typescript@5.4.5) + jiti: 1.21.0 + typescript: 5.4.5 + + cosmiconfig@9.0.0(typescript@5.4.5): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.4.5 + + crc-32@1.2.2: {} + + crc32-stream@6.0.0: + dependencies: + crc-32: 1.2.2 + readable-stream: 4.5.2 + + create-require@1.1.1: {} + + croner@8.0.1: {} + + cronstrue@2.49.0: {} + + cross-fetch@3.1.8(encoding@0.1.13): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crossws@0.2.4: {} + + css-declaration-sorter@7.2.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.0 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@6.1.2(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + css-declaration-sorter: 7.2.0(postcss@8.4.38) + cssnano-utils: 4.0.2(postcss@8.4.38) + postcss: 8.4.38 + postcss-calc: 9.0.1(postcss@8.4.38) + postcss-colormin: 6.1.0(postcss@8.4.38) + postcss-convert-values: 6.1.0(postcss@8.4.38) + postcss-discard-comments: 6.0.2(postcss@8.4.38) + postcss-discard-duplicates: 6.0.3(postcss@8.4.38) + postcss-discard-empty: 6.0.3(postcss@8.4.38) + postcss-discard-overridden: 6.0.2(postcss@8.4.38) + postcss-merge-longhand: 6.0.5(postcss@8.4.38) + postcss-merge-rules: 6.1.1(postcss@8.4.38) + postcss-minify-font-values: 6.1.0(postcss@8.4.38) + postcss-minify-gradients: 6.0.3(postcss@8.4.38) + postcss-minify-params: 6.1.0(postcss@8.4.38) + postcss-minify-selectors: 6.0.4(postcss@8.4.38) + postcss-normalize-charset: 6.0.2(postcss@8.4.38) + postcss-normalize-display-values: 6.0.2(postcss@8.4.38) + postcss-normalize-positions: 6.0.2(postcss@8.4.38) + postcss-normalize-repeat-style: 6.0.2(postcss@8.4.38) + postcss-normalize-string: 6.0.2(postcss@8.4.38) + postcss-normalize-timing-functions: 6.0.2(postcss@8.4.38) + postcss-normalize-unicode: 6.1.0(postcss@8.4.38) + postcss-normalize-url: 6.0.2(postcss@8.4.38) + postcss-normalize-whitespace: 6.0.2(postcss@8.4.38) + postcss-ordered-values: 6.0.2(postcss@8.4.38) + postcss-reduce-initial: 6.1.0(postcss@8.4.38) + postcss-reduce-transforms: 6.0.2(postcss@8.4.38) + postcss-svgo: 6.0.3(postcss@8.4.38) + postcss-unique-selectors: 6.0.4(postcss@8.4.38) + + cssnano-utils@4.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + cssnano@6.1.2(postcss@8.4.38): + dependencies: + cssnano-preset-default: 6.1.2(postcss@8.4.38) + lilconfig: 3.1.1 + postcss: 8.4.38 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + csstype@3.1.3: {} + + dargs@8.1.0: {} + + dayjs@1.11.10: {} + + db0@0.1.4: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + dedent-js@1.0.1: {} + + deep-equal@1.0.1: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + defu@6.1.4: {} + + delegates@1.0.0: {} + + denque@2.1.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.3: {} + + destroy@1.2.0: {} + + detect-indent@7.0.1: {} + + detect-libc@1.0.3: {} + + detect-libc@2.0.3: {} + + detect-newline@4.0.1: {} + + devalue@4.3.2: {} + + dfa@1.2.0: {} + + didyoumean@1.2.2: {} + + diff@5.2.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dot-prop@8.0.2: + dependencies: + type-fest: 3.13.1 + + dotenv@16.4.5: {} + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.4.724: {} + + emoji-regex@10.3.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + enhanced-resolve@5.16.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + env-paths@3.0.0: {} + + err-code@2.0.3: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser-es@0.1.1: {} + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + escalade@3.1.2: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-flat-gitignore@0.1.5: + dependencies: + find-up: 7.0.0 + parse-gitignore: 2.0.0 + + eslint-config-prettier@9.1.0(eslint@9.1.1): + dependencies: + eslint: 9.1.1 + + eslint-flat-config-utils@0.2.3: + dependencies: + '@types/eslint': 8.56.9 + pathe: 1.1.2 + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import-x@0.5.0(eslint@9.1.1)(typescript@5.4.5): + dependencies: + '@typescript-eslint/utils': 7.7.0(eslint@9.1.1)(typescript@5.4.5) + debug: 4.3.4 + doctrine: 3.0.0 + eslint: 9.1.1 + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.7.3 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsdoc@48.2.3(eslint@9.1.1): + dependencies: + '@es-joy/jsdoccomment': 0.42.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.3.4 + escape-string-regexp: 4.0.0 + eslint: 9.1.1 + esquery: 1.5.0 + is-builtin-module: 3.2.1 + semver: 7.6.0 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-prettier@5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@9.1.1))(eslint@9.1.1)(prettier@3.2.5): + dependencies: + eslint: 9.1.1 + prettier: 3.2.5 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.8 + optionalDependencies: + '@types/eslint': 8.56.10 + eslint-config-prettier: 9.1.0(eslint@9.1.1) + + eslint-plugin-unicorn@52.0.0(eslint@9.1.1): + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) + '@eslint/eslintrc': 2.1.4 + ci-info: 4.0.0 + clean-regexp: 1.0.0 + core-js-compat: 3.36.1 + eslint: 9.1.1 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.0 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-vue@9.25.0(eslint@9.1.1): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) + eslint: 9.1.1 + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.16 + semver: 7.6.0 + vue-eslint-parser: 9.4.2(eslint@9.1.1) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@8.0.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-typegen@0.2.4(eslint@9.1.1): + dependencies: + '@types/eslint': 8.56.10 + eslint: 9.1.1 + json-schema-to-typescript-lite: 14.0.1 + ohash: 1.1.3 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.0.0: {} + + eslint@9.1.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 3.0.2 + '@eslint/js': 9.1.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.2.3 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + escape-string-regexp: 4.0.0 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.0.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@10.0.1: + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 4.0.0 + + espree@9.6.1: + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + exponential-backoff@3.1.1: {} + + externality@1.0.2: + dependencies: + enhanced-resolve: 5.16.0 + mlly: 1.6.1 + pathe: 1.1.2 + ufo: 1.5.3 + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-uri-to-path@1.0.0: {} + + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flat@5.0.2: {} + + flatted@3.3.1: {} + + floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@floating-ui/dom': 1.1.1 + vue: 3.4.25(typescript@5.4.5) + vue-resize: 2.0.0-alpha.1(vue@3.4.25(typescript@5.4.5)) + optionalDependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + + focus-trap@7.5.4: + dependencies: + tabbable: 6.2.0 + + fontaine@0.5.0(encoding@0.1.13): + dependencies: + '@capsizecss/metrics': 2.2.0 + '@capsizecss/unpack': 2.1.0(encoding@0.1.13) + magic-regexp: 0.8.0 + magic-string: 0.30.8 + pathe: 1.1.2 + ufo: 1.5.3 + unplugin: 1.10.1 + transitivePeerDependencies: + - encoding + + fontkit@2.0.2: + dependencies: + '@swc/helpers': 0.4.36 + brotli: 1.3.3 + clone: 2.1.2 + dfa: 1.2.0 + fast-deep-equal: 3.1.3 + restructure: 3.0.1 + tiny-inflate: 1.0.3 + unicode-properties: 1.4.1 + unicode-trie: 2.0.0 + + foreground-child@3.1.1: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.0.4 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + fuse.js@6.6.2: {} + + gauge@3.0.2: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.2.0: {} + + get-port-please@3.1.2: {} + + get-stdin@9.0.0: {} + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-tsconfig@4.7.3: + dependencies: + resolve-pkg-maps: 1.0.0 + + giget@1.2.3: + dependencies: + citty: 0.1.6 + consola: 3.2.3 + defu: 6.1.4 + node-fetch-native: 1.6.4 + nypm: 0.3.8 + ohash: 1.1.3 + pathe: 1.1.2 + tar: 6.2.1 + + git-config-path@2.0.0: {} + + git-hooks-list@3.1.0: {} + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + git-up@7.0.0: + dependencies: + is-ssh: 1.4.0 + parse-url: 8.1.0 + + git-url-parse@13.1.1: + dependencies: + git-up: 7.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.3.12: + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.4 + minipass: 7.0.4 + path-scurry: 1.10.2 + + glob@7.2.3: + 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 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globals@14.0.0: {} + + globals@15.0.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + + globby@14.0.1: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + + gql.tada@1.5.7(encoding@0.1.13)(graphql@16.8.1)(svelte@4.2.15)(typescript@5.4.5): + dependencies: + '@0no-co/graphql.web': 1.0.5(graphql@16.8.1) + '@gql.tada/cli-utils': 1.2.1(encoding@0.1.13)(svelte@4.2.15)(typescript@5.4.5) + '@gql.tada/internal': 0.2.3(graphql@16.8.1)(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - encoding + - graphql + - svelte + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + graphql@16.8.1: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + gzip-size@7.0.0: + dependencies: + duplexer: 0.1.2 + + h3@1.11.1: + dependencies: + cookie-es: 1.1.0 + crossws: 0.2.4 + defu: 6.1.4 + destr: 2.0.3 + iron-webcrypto: 1.1.0 + ohash: 1.1.3 + radix3: 1.1.2 + ufo: 1.5.3 + uncrypto: 0.1.3 + unenv: 1.9.0 + transitivePeerDependencies: + - uWebSockets.js + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + has-unicode@2.0.1: {} + + hash-sum@2.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + hookable@5.5.3: {} + + hosted-git-info@2.8.9: {} + + hosted-git-info@7.0.1: + dependencies: + lru-cache: 10.2.0 + + html-tags@3.3.1: {} + + http-assert@1.5.0: + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + + http-cache-semantics@4.1.1: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + http-shutdown@1.2.2: {} + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.4: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + httpxy@0.1.5: {} + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + human-signals@5.0.0: {} + + husky@9.0.11: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ieee754@1.2.1: {} + + ignore-walk@6.0.4: + dependencies: + minimatch: 9.0.4 + + ignore@5.3.1: {} + + image-meta@0.2.0: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.0.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: {} + + ioredis@5.3.2: + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.3.4 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + iron-webcrypto@1.1.0: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + + is-core-module@2.13.1: + dependencies: + hasown: 2.0.2 + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.2.0 + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-https@4.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-installed-globally@1.0.0: + dependencies: + global-directory: 4.0.1 + is-path-inside: 4.0.0 + + is-lambda@1.0.1: {} + + is-module@1.0.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-path-inside@4.0.0: {} + + is-plain-obj@4.1.0: {} + + is-primitive@3.0.1: {} + + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.5 + + is-reference@3.0.2: + dependencies: + '@types/estree': 1.0.5 + + is-ssh@1.4.0: + dependencies: + protocols: 2.0.1 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + is64bit@2.0.0: + dependencies: + system-architecture: 0.1.0 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isexe@3.1.1: {} + + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.0: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@1.1.0: {} + + jsdoc-type-pratt-parser@4.0.0: {} + + jsesc@0.5.0: {} + + jsesc@2.5.2: {} + + jsesc@3.0.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@3.0.1: {} + + json-schema-to-typescript-lite@14.0.1: + dependencies: + '@apidevtools/json-schema-ref-parser': 11.6.1 + '@types/json-schema': 7.0.15 + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.11.3 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.0 + + jsonc-parser@3.2.1: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kleur@3.0.3: {} + + klona@2.0.6: {} + + knitwork@1.1.0: {} + + koa-compose@4.1.0: {} + + koa-convert@2.0.0: + dependencies: + co: 4.6.0 + koa-compose: 4.1.0 + + koa-send@5.0.1: + dependencies: + debug: 4.3.4 + http-errors: 1.8.1 + resolve-path: 1.4.0 + transitivePeerDependencies: + - supports-color + + koa-static@5.0.0: + dependencies: + debug: 3.2.7 + koa-send: 5.0.1 + transitivePeerDependencies: + - supports-color + + koa@2.15.2: + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + debug: 4.3.4 + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.0.10 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + kolorist@1.8.0: {} + + launch-editor@2.6.1: + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + lilconfig@3.0.0: {} + + lilconfig@3.1.1: {} + + lines-and-columns@1.2.4: {} + + lint-staged@15.2.2: + dependencies: + chalk: 5.3.0 + commander: 11.1.0 + debug: 4.3.4 + execa: 8.0.1 + lilconfig: 3.0.0 + listr2: 8.0.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.4 + transitivePeerDependencies: + - supports-color + + listhen@1.7.2: + dependencies: + '@parcel/watcher': 2.4.1 + '@parcel/watcher-wasm': 2.4.1 + citty: 0.1.6 + clipboardy: 4.0.0 + consola: 3.2.3 + crossws: 0.2.4 + defu: 6.1.4 + get-port-please: 3.1.2 + h3: 1.11.1 + http-shutdown: 1.2.2 + jiti: 1.21.0 + mlly: 1.6.1 + node-forge: 1.3.1 + pathe: 1.1.2 + std-env: 3.7.0 + ufo: 1.5.3 + untun: 0.1.3 + uqr: 0.1.2 + transitivePeerDependencies: + - uWebSockets.js + + listr2@8.0.1: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.0.0 + rfdc: 1.3.1 + wrap-ansi: 9.0.0 + + load-tsconfig@0.2.5: {} + + local-pkg@0.4.3: {} + + local-pkg@0.5.0: + dependencies: + mlly: 1.6.1 + pkg-types: 1.0.3 + + locate-character@3.0.0: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash-es@4.17.21: {} + + lodash.camelcase@4.3.0: {} + + lodash.castarray@4.4.0: {} + + lodash.defaults@4.2.0: {} + + lodash.isarguments@3.1.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-update@6.0.0: + dependencies: + ansi-escapes: 6.2.1 + cli-cursor: 4.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + lower-case@2.0.2: + dependencies: + tslib: 2.6.2 + + lru-cache@10.2.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-regexp@0.8.0: + dependencies: + estree-walker: 3.0.3 + magic-string: 0.30.8 + mlly: 1.6.1 + regexp-tree: 0.1.27 + type-level-regexp: 0.1.17 + ufo: 1.5.3 + unplugin: 1.10.1 + + magic-string-ast@0.3.0: + dependencies: + magic-string: 0.30.9 + + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magic-string@0.30.8: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magic-string@0.30.9: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magicast@0.3.3: + dependencies: + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + source-map-js: 1.2.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-fetch-happen@13.0.0: + dependencies: + '@npmcli/agent': 2.2.2 + cacache: 18.0.2 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + + mark.js@8.11.1: {} + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + media-typer@0.3.0: {} + + meow@12.1.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromatch@4.0.5: + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mime@4.0.1: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-indent@1.0.1: {} + + mini-svg-data-uri@1.4.4: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.4: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@2.0.1: + dependencies: + minipass: 7.0.4 + + minipass-fetch@3.0.4: + dependencies: + minipass: 7.0.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-json-stream@1.0.1: + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.0.4: {} + + minisearch@6.3.0: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mitt@2.1.0: {} + + mitt@3.0.1: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mlly@1.6.1: + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.5.3 + + monaco-editor@0.48.0: {} + + mri@1.2.0: {} + + mrmime@2.0.0: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + muggle-string@0.2.2: {} + + muggle-string@0.4.1: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.7: {} + + nanoid@4.0.2: {} + + nanoid@5.0.7: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + nitropack@2.9.6(encoding@0.1.13): + dependencies: + '@cloudflare/kv-asset-handler': 0.3.1 + '@netlify/functions': 2.6.0 + '@rollup/plugin-alias': 5.1.0(rollup@4.13.2) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.13.2) + '@rollup/plugin-inject': 5.0.5(rollup@4.13.2) + '@rollup/plugin-json': 6.1.0(rollup@4.13.2) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.13.2) + '@rollup/plugin-replace': 5.0.5(rollup@4.13.2) + '@rollup/plugin-terser': 0.4.4(rollup@4.13.2) + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@types/http-proxy': 1.17.14 + '@vercel/nft': 0.26.4(encoding@0.1.13) + archiver: 7.0.1 + c12: 1.10.0 + chalk: 5.3.0 + chokidar: 3.6.0 + citty: 0.1.6 + consola: 3.2.3 + cookie-es: 1.1.0 + croner: 8.0.1 + crossws: 0.2.4 + db0: 0.1.4 + defu: 6.1.4 + destr: 2.0.3 + dot-prop: 8.0.2 + esbuild: 0.20.2 + escape-string-regexp: 5.0.0 + etag: 1.8.1 + fs-extra: 11.2.0 + globby: 14.0.1 + gzip-size: 7.0.0 + h3: 1.11.1 + hookable: 5.5.3 + httpxy: 0.1.5 + ioredis: 5.3.2 + is-primitive: 3.0.1 + jiti: 1.21.0 + klona: 2.0.6 + knitwork: 1.1.0 + listhen: 1.7.2 + magic-string: 0.30.9 + mime: 4.0.1 + mlly: 1.6.1 + mri: 1.2.0 + node-fetch-native: 1.6.4 + ofetch: 1.3.4 + ohash: 1.1.3 + openapi-typescript: 6.7.5 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + pretty-bytes: 6.1.1 + radix3: 1.1.2 + rollup: 4.13.2 + rollup-plugin-visualizer: 5.12.0(rollup@4.13.2) + scule: 1.3.0 + semver: 7.6.0 + serve-placeholder: 2.0.1 + serve-static: 1.15.0 + std-env: 3.7.0 + ufo: 1.5.3 + uncrypto: 0.1.3 + unctx: 2.3.1 + unenv: 1.9.0 + unimport: 3.7.1(rollup@4.13.2) + unstorage: 1.10.2(ioredis@5.3.2) + unwasm: 0.3.9 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@libsql/client' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - better-sqlite3 + - drizzle-orm + - encoding + - idb-keyval + - supports-color + - uWebSockets.js + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + + node-addon-api@7.1.0: {} + + node-fetch-native@1.6.4: {} + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-forge@1.3.1: {} + + node-gyp-build@4.8.0: {} + + node-gyp@10.1.0: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 10.3.12 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 + semver: 7.6.0 + tar: 6.2.1 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + + node-releases@2.0.14: {} + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + + nopt@7.2.0: + dependencies: + abbrev: 2.0.0 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@6.0.0: + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.1 + semver: 7.6.0 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-bundled@3.0.0: + dependencies: + npm-normalize-package-bin: 3.0.1 + + npm-install-checks@6.3.0: + dependencies: + semver: 7.6.0 + + npm-normalize-package-bin@3.0.1: {} + + npm-package-arg@11.0.1: + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.6.0 + validate-npm-package-name: 5.0.0 + + npm-packlist@8.0.2: + dependencies: + ignore-walk: 6.0.4 + + npm-pick-manifest@9.0.0: + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.1 + semver: 7.6.0 + + npm-registry-fetch@16.1.0: + dependencies: + make-fetch-happen: 13.0.0 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 11.0.1 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nuxi@3.11.1: + optionalDependencies: + fsevents: 2.3.3 + + nuxt-icon@0.6.10(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@iconify/collections': 1.0.408 + '@iconify/vue': 4.1.1(vue@3.4.25(typescript@5.4.5)) + '@nuxt/devtools-kit': 1.1.5(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + '@nuxt/kit': 3.11.1(rollup@4.13.2) + transitivePeerDependencies: + - nuxt + - rollup + - supports-color + - vite + - vue + + nuxt-monaco-editor@1.2.9(monaco-editor@0.48.0)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)): + dependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + defu: 6.1.4 + monaco-editor: 0.48.0 + vite-plugin-static-copy: 1.0.3(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + transitivePeerDependencies: + - rollup + - supports-color + - vite + + nuxt-primevue@0.3.1(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + primevue: 3.49.1(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - rollup + - supports-color + - vue + + nuxt-zod-i18n@1.6.0(rollup@4.13.2): + dependencies: + '@intlify/shared': 9.10.2 + '@nuxt/kit': 3.11.2(rollup@4.13.2) + defu: 6.1.4 + zod: 3.23.4 + transitivePeerDependencies: + - rollup + - supports-color + + nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)): + dependencies: + '@nuxt/devalue': 2.0.2 + '@nuxt/devtools': 1.1.5(@unocss/reset@0.58.9)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(nuxt@3.11.2(@parcel/watcher@2.4.1)(@types/node@20.12.2)(@unocss/reset@0.58.9)(encoding@0.1.13)(eslint@9.1.1)(floating-vue@5.2.2(@nuxt/kit@3.11.2(rollup@4.13.2))(vue@3.4.25(typescript@5.4.5)))(fuse.js@6.6.2)(ioredis@5.3.2)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(rollup@4.13.2)(unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)))(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + '@nuxt/kit': 3.11.2(rollup@4.13.2) + '@nuxt/schema': 3.11.2(rollup@4.13.2) + '@nuxt/telemetry': 2.5.3(rollup@4.13.2) + '@nuxt/ui-templates': 1.3.2 + '@nuxt/vite-builder': 3.11.2(@types/node@20.12.2)(eslint@9.1.1)(meow@12.1.1)(optionator@0.9.3)(rollup@4.13.2)(terser@5.30.2)(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5)) + '@unhead/dom': 1.9.4 + '@unhead/ssr': 1.9.4 + '@unhead/vue': 1.9.4(vue@3.4.25(typescript@5.4.5)) + '@vue/shared': 3.4.21 + acorn: 8.11.3 + c12: 1.10.0 + chokidar: 3.6.0 + cookie-es: 1.1.0 + defu: 6.1.4 + destr: 2.0.3 + devalue: 4.3.2 + esbuild: 0.20.2 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fs-extra: 11.2.0 + globby: 14.0.1 + h3: 1.11.1 + hookable: 5.5.3 + jiti: 1.21.0 + klona: 2.0.6 + knitwork: 1.1.0 + magic-string: 0.30.9 + mlly: 1.6.1 + nitropack: 2.9.6(encoding@0.1.13) + nuxi: 3.11.1 + nypm: 0.3.8 + ofetch: 1.3.4 + ohash: 1.1.3 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + radix3: 1.1.2 + scule: 1.3.0 + std-env: 3.7.0 + strip-literal: 2.1.0 + ufo: 1.5.3 + ultrahtml: 1.5.3 + uncrypto: 0.1.3 + unctx: 2.3.1 + unenv: 1.9.0 + unimport: 3.7.1(rollup@4.13.2) + unplugin: 1.10.1 + unplugin-vue-router: 0.7.0(rollup@4.13.2)(vue-router@4.3.2(vue@3.4.25(typescript@5.4.5)))(vue@3.4.25(typescript@5.4.5)) + unstorage: 1.10.2(ioredis@5.3.2) + untyped: 1.4.2 + vue: 3.4.25(typescript@5.4.5) + vue-bundle-renderer: 2.0.0 + vue-devtools-stub: 0.1.0 + vue-router: 4.3.2(vue@3.4.25(typescript@5.4.5)) + optionalDependencies: + '@parcel/watcher': 2.4.1 + '@types/node': 20.12.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@libsql/client' + - '@netlify/blobs' + - '@planetscale/database' + - '@unocss/reset' + - '@upstash/redis' + - '@vercel/kv' + - '@vue/composition-api' + - async-validator + - axios + - better-sqlite3 + - bluebird + - bufferutil + - change-case + - drauu + - drizzle-orm + - encoding + - eslint + - floating-vue + - fuse.js + - idb-keyval + - ioredis + - jwt-decode + - less + - lightningcss + - meow + - nprogress + - optionator + - qrcode + - rollup + - sass + - sortablejs + - stylelint + - stylus + - sugarss + - supports-color + - terser + - typescript + - uWebSockets.js + - universal-cookie + - unocss + - utf-8-validate + - vite + - vls + - vti + - vue-tsc + - xml2js + + nypm@0.3.8: + dependencies: + citty: 0.1.6 + consola: 3.2.3 + execa: 8.0.1 + pathe: 1.1.2 + ufo: 1.5.3 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + ofetch@1.3.4: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.3 + + ohash@1.1.3: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + only@0.0.2: {} + + open@10.1.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + openapi-typescript@6.7.5: + dependencies: + ansi-colors: 4.1.3 + fast-glob: 3.3.2 + js-yaml: 4.1.0 + supports-color: 9.4.0 + undici: 5.28.4 + yargs-parser: 21.1.1 + + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.0.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-try@2.2.0: {} + + pacote@17.0.6: + dependencies: + '@npmcli/git': 5.0.4 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 7.0.1 + '@npmcli/run-script': 7.0.4 + cacache: 18.0.2 + fs-minipass: 3.0.3 + minipass: 7.0.4 + npm-package-arg: 11.0.1 + npm-packlist: 8.0.2 + npm-pick-manifest: 9.0.0 + npm-registry-fetch: 16.1.0 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 7.0.0 + read-package-json-fast: 3.0.2 + sigstore: 2.2.2 + ssri: 10.0.5 + tar: 6.2.1 + transitivePeerDependencies: + - bluebird + - supports-color + + pako@0.2.9: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-git-config@3.0.0: + dependencies: + git-config-path: 2.0.0 + ini: 1.3.8 + + parse-gitignore@2.0.0: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-path@7.0.0: + dependencies: + protocols: 2.0.1 + + parse-url@8.1.0: + dependencies: + parse-path: 7.0.0 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.10.2: + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + + path-to-regexp@6.2.1: {} + + path-type@4.0.0: {} + + path-type@5.0.0: {} + + pathe@1.1.2: {} + + perfect-debounce@1.0.0: {} + + periscopic@3.1.0: + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + + picocolors@1.0.0: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pinia@2.1.7(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@vue/devtools-api': 6.6.1 + vue: 3.4.25(typescript@5.4.5) + vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) + optionalDependencies: + typescript: 5.4.5 + + pirates@4.0.6: {} + + pkg-types@1.0.3: + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.6.1 + pathe: 1.1.2 + + pluralize@8.0.0: {} + + portfinder@1.0.32: + dependencies: + async: 2.6.4 + debug: 3.2.7 + mkdirp: 0.5.6 + transitivePeerDependencies: + - supports-color + + postcss-calc@9.0.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + postcss-value-parser: 4.2.0 + + postcss-colormin@6.1.0(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-convert-values@6.1.0(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-discard-duplicates@6.0.3(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-discard-empty@6.0.3(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-discard-overridden@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-import@15.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.38): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.38 + + postcss-load-config@4.0.2(postcss@8.4.38): + dependencies: + lilconfig: 3.1.1 + yaml: 2.4.1 + optionalDependencies: + postcss: 8.4.38 + + postcss-merge-longhand@6.0.5(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + stylehacks: 6.1.1(postcss@8.4.38) + + postcss-merge-rules@6.1.1(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.2(postcss@8.4.38) + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + + postcss-minify-font-values@6.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@6.0.3(postcss@8.4.38): + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.2(postcss@8.4.38) + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-minify-params@6.1.0(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + cssnano-utils: 4.0.2(postcss@8.4.38) + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@6.0.4(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + + postcss-nested@6.0.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + + postcss-nesting@12.1.1(postcss@8.4.38): + dependencies: + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.16) + '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + + postcss-normalize-charset@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-normalize-display-values@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@6.1.0(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@6.0.2(postcss@8.4.38): + dependencies: + cssnano-utils: 4.0.2(postcss@8.4.38) + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@6.1.0(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + postcss: 8.4.38 + + postcss-reduce-transforms@6.0.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.0.16: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@6.0.3(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + svgo: 3.2.0 + + postcss-unique-selectors@6.0.4(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.38: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + + preact@10.20.1: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier-plugin-organize-imports@3.2.4(@volar/vue-typescript@1.6.5(typescript@5.4.5))(prettier@3.2.5)(typescript@5.4.5): + dependencies: + prettier: 3.2.5 + typescript: 5.4.5 + optionalDependencies: + '@volar/vue-typescript': 1.6.5(typescript@5.4.5) + + prettier-plugin-tailwindcss@0.5.14(prettier-plugin-organize-imports@3.2.4(@volar/vue-typescript@1.6.5(typescript@5.4.5))(prettier@3.2.5)(typescript@5.4.5))(prettier@3.2.5): + dependencies: + prettier: 3.2.5 + optionalDependencies: + prettier-plugin-organize-imports: 3.2.4(@volar/vue-typescript@1.6.5(typescript@5.4.5))(prettier@3.2.5)(typescript@5.4.5) + + prettier@3.2.5: {} + + pretty-bytes@6.1.1: {} + + primevue@3.49.1(vue@3.4.25(typescript@5.4.5)): + dependencies: + vue: 3.4.25(typescript@5.4.5) + + primevue@3.51.0(vue@3.4.25(typescript@5.4.5)): + dependencies: + vue: 3.4.25(typescript@5.4.5) + + proc-log@3.0.0: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + protocols@2.0.1: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + queue-tick@1.0.1: {} + + radix-vue@1.7.2(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@floating-ui/dom': 1.6.3 + '@floating-ui/vue': 1.0.6(vue@3.4.25(typescript@5.4.5)) + '@internationalized/date': 3.5.2 + '@tanstack/vue-virtual': 3.2.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/core': 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/shared': 10.9.0(vue@3.4.25(typescript@5.4.5)) + aria-hidden: 1.2.4 + defu: 6.1.4 + fast-deep-equal: 3.1.3 + nanoid: 5.0.7 + vue: 3.4.25(typescript@5.4.5) + transitivePeerDependencies: + - '@vue/composition-api' + + radix3@1.1.2: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + rc9@2.1.1: + dependencies: + defu: 6.1.4 + destr: 2.0.3 + flat: 5.0.2 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-package-json-fast@3.0.2: + dependencies: + json-parse-even-better-errors: 3.0.1 + npm-normalize-package-bin: 3.0.1 + + read-package-json@7.0.0: + dependencies: + glob: 10.3.12 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + npm-normalize-package-bin: 3.0.1 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.5.2: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.6 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + + regenerator-runtime@0.14.1: {} + + regexp-tree@0.1.27: {} + + regjsparser@0.10.0: + dependencies: + jsesc: 0.5.0 + + replace-in-file@6.3.5: + dependencies: + chalk: 4.1.2 + glob: 7.2.3 + yargs: 17.7.2 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-path@1.4.0: + dependencies: + http-errors: 1.6.3 + path-is-absolute: 1.0.1 + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restructure@3.0.1: {} + + retry@0.12.0: {} + + reusify@1.0.4: {} + + rfdc@1.3.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup-plugin-visualizer@5.12.0(rollup@4.13.2): + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.7.2 + optionalDependencies: + rollup: 4.13.2 + + rollup@4.13.2: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.13.2 + '@rollup/rollup-android-arm64': 4.13.2 + '@rollup/rollup-darwin-arm64': 4.13.2 + '@rollup/rollup-darwin-x64': 4.13.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.2 + '@rollup/rollup-linux-arm64-gnu': 4.13.2 + '@rollup/rollup-linux-arm64-musl': 4.13.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.13.2 + '@rollup/rollup-linux-riscv64-gnu': 4.13.2 + '@rollup/rollup-linux-s390x-gnu': 4.13.2 + '@rollup/rollup-linux-x64-gnu': 4.13.2 + '@rollup/rollup-linux-x64-musl': 4.13.2 + '@rollup/rollup-win32-arm64-msvc': 4.13.2 + '@rollup/rollup-win32-ia32-msvc': 4.13.2 + '@rollup/rollup-win32-x64-msvc': 4.13.2 + fsevents: 2.3.3 + + run-applescript@7.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: + optional: true + + scule@1.3.0: {} + + search-insights@2.13.0: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.6.0: + dependencies: + lru-cache: 6.0.0 + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-placeholder@2.0.1: + dependencies: + defu: 6.1.4 + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.1: {} + + shiki@1.3.0: + dependencies: + '@shikijs/core': 1.3.0 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sigstore@2.2.2: + dependencies: + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.1 + '@sigstore/sign': 2.2.3 + '@sigstore/tuf': 2.3.2 + '@sigstore/verify': 1.1.1 + transitivePeerDependencies: + - supports-color + + simple-git@3.24.0: + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + slash@5.1.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + smart-buffer@4.2.0: {} + + smob@1.5.0: {} + + socks-proxy-agent@8.0.3: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4 + socks: 2.8.1 + transitivePeerDependencies: + - supports-color + + socks@2.8.1: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + sort-object-keys@1.1.3: {} + + sort-package-json@2.10.0: + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.1 + get-stdin: 9.0.0 + git-hooks-list: 3.1.0 + globby: 13.2.2 + is-plain-obj: 4.1.0 + semver: 7.6.0 + sort-object-keys: 1.1.3 + + source-map-js@1.2.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.17 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 + + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 + + spdx-license-ids@3.0.17: {} + + speakingurl@14.0.1: {} + + split2@4.2.0: {} + + splitpanes@3.1.5: {} + + sprintf-js@1.1.3: {} + + ssri@10.0.5: + dependencies: + minipass: 7.0.4 + + standard-as-callback@2.1.0: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + std-env@3.7.0: {} + + streamx@2.16.1: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + optionalDependencies: + bare-events: 2.2.2 + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.1.0: + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + strip-literal@1.3.0: + dependencies: + acorn: 8.11.3 + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + stylehacks@6.1.1(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.3.12 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@9.4.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + svelte2tsx@0.7.6(svelte@4.2.15)(typescript@5.4.5): + dependencies: + dedent-js: 1.0.1 + pascal-case: 3.1.2 + svelte: 4.2.15 + typescript: 5.4.5 + + svelte@4.2.15: + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + '@types/estree': 1.0.5 + acorn: 8.11.3 + aria-query: 5.3.0 + axobject-query: 4.0.0 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.10 + periscopic: 3.1.0 + + svg-tags@1.0.0: {} + + svgo@3.2.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.0.0 + + synckit@0.8.8: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.2 + + system-architecture@0.1.0: {} + + tabbable@6.2.0: {} + + tailwind-config-viewer@2.0.1(tailwindcss@3.4.3): + dependencies: + '@koa/router': 12.0.1 + commander: 6.2.1 + fs-extra: 9.1.0 + koa: 2.15.2 + koa-static: 5.0.0 + open: 7.4.2 + portfinder: 1.0.32 + replace-in-file: 6.3.5 + tailwindcss: 3.4.3 + transitivePeerDependencies: + - supports-color + + tailwind-merge@2.3.0: + dependencies: + '@babel/runtime': 7.24.1 + + tailwindcss@3.4.3: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@2.2.1: {} + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.2 + streamx: 2.16.1 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + terser@5.30.2: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-extensions@2.4.0: {} + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through@2.3.8: {} + + tiny-inflate@1.0.3: {} + + tiny-invariant@1.3.3: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tosource@2.0.0-alpha.3: {} + + totalist@3.0.1: {} + + tr46@0.0.3: {} + + ts-api-utils@1.3.0(typescript@5.4.5): + dependencies: + typescript: 5.4.5 + + ts-interface-checker@0.1.13: {} + + tslib@2.6.2: {} + + tsscmp@1.0.6: {} + + tuf-js@2.2.0: + dependencies: + '@tufjs/models': 2.0.0 + debug: 4.3.4 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@3.13.1: {} + + type-fest@4.14.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type-level-regexp@0.1.17: {} + + typescript@5.4.5: {} + + ufo@1.5.3: {} + + ultrahtml@1.5.3: {} + + unconfig@0.3.12: + dependencies: + '@antfu/utils': 0.7.7 + defu: 6.1.4 + jiti: 1.21.0 + mlly: 1.6.1 + + uncrypto@0.1.3: {} + + unctx@2.3.1: + dependencies: + acorn: 8.11.3 + estree-walker: 3.0.3 + magic-string: 0.30.8 + unplugin: 1.10.1 + + undici-types@5.26.5: {} + + undici@5.28.4: + dependencies: + '@fastify/busboy': 2.1.1 + + unenv@1.9.0: + dependencies: + consola: 3.2.3 + defu: 6.1.4 + mime: 3.0.0 + node-fetch-native: 1.6.4 + pathe: 1.1.2 + + unhead@1.9.4: + dependencies: + '@unhead/dom': 1.9.4 + '@unhead/schema': 1.9.4 + '@unhead/shared': 1.9.4 + hookable: 5.5.3 + + unicode-properties@1.4.1: + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + + unicode-trie@2.0.0: + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + + unicorn-magic@0.1.0: {} + + unimport@3.7.1(rollup@4.13.2): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + acorn: 8.11.3 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.9 + mlly: 1.6.1 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.3.0 + strip-literal: 1.3.0 + unplugin: 1.10.1 + transitivePeerDependencies: + - rollup + + unique-filename@3.0.0: + dependencies: + unique-slug: 4.0.0 + + unique-slug@4.0.0: + dependencies: + imurmurhash: 0.1.4 + + universalify@2.0.1: {} + + unocss@0.58.9(postcss@8.4.38)(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)): + dependencies: + '@unocss/astro': 0.58.9(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + '@unocss/cli': 0.58.9(rollup@4.13.2) + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/postcss': 0.58.9(postcss@8.4.38) + '@unocss/preset-attributify': 0.58.9 + '@unocss/preset-icons': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-tagify': 0.58.9 + '@unocss/preset-typography': 0.58.9 + '@unocss/preset-uno': 0.58.9 + '@unocss/preset-web-fonts': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/transformer-attributify-jsx': 0.58.9 + '@unocss/transformer-attributify-jsx-babel': 0.58.9 + '@unocss/transformer-compile-class': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + '@unocss/transformer-variant-group': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)) + optionalDependencies: + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + + unplugin-vue-router@0.7.0(rollup@4.13.2)(vue-router@4.3.2(vue@3.4.25(typescript@5.4.5)))(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@babel/types': 7.24.0 + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@vue-macros/common': 1.10.2(rollup@4.13.2)(vue@3.4.25(typescript@5.4.5)) + ast-walker-scope: 0.5.0(rollup@4.13.2) + chokidar: 3.6.0 + fast-glob: 3.3.2 + json5: 2.2.3 + local-pkg: 0.4.3 + mlly: 1.6.1 + pathe: 1.1.2 + scule: 1.3.0 + unplugin: 1.10.1 + yaml: 2.4.1 + optionalDependencies: + vue-router: 4.3.2(vue@3.4.25(typescript@5.4.5)) + transitivePeerDependencies: + - rollup + - vue + + unplugin@1.10.1: + dependencies: + acorn: 8.11.3 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + + unstorage@1.10.2(ioredis@5.3.2): + dependencies: + anymatch: 3.1.3 + chokidar: 3.6.0 + destr: 2.0.3 + h3: 1.11.1 + listhen: 1.7.2 + lru-cache: 10.2.0 + mri: 1.2.0 + node-fetch-native: 1.6.4 + ofetch: 1.3.4 + ufo: 1.5.3 + optionalDependencies: + ioredis: 5.3.2 + transitivePeerDependencies: + - uWebSockets.js + + untun@0.1.3: + dependencies: + citty: 0.1.6 + consola: 3.2.3 + pathe: 1.1.2 + + untyped@1.4.2: + dependencies: + '@babel/core': 7.24.3 + '@babel/standalone': 7.24.3 + '@babel/types': 7.24.0 + defu: 6.1.4 + jiti: 1.21.0 + mri: 1.2.0 + scule: 1.3.0 + transitivePeerDependencies: + - supports-color + + unwasm@0.3.9: + dependencies: + knitwork: 1.1.0 + magic-string: 0.30.9 + mlly: 1.6.1 + pathe: 1.1.2 + pkg-types: 1.0.3 + unplugin: 1.10.1 + + update-browserslist-db@1.0.13(browserslist@4.23.0): + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + + uqr@0.1.2: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urlpattern-polyfill@8.0.2: {} + + util-deprecate@1.0.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@5.0.0: + dependencies: + builtins: 5.0.1 + + vary@1.1.2: {} + + vee-validate@4.12.6(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@vue/devtools-api': 6.6.1 + type-fest: 4.14.0 + vue: 3.4.25(typescript@5.4.5) + + vite-hot-client@0.2.3(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)): + dependencies: + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + + vite-node@1.4.0(@types/node@20.12.2)(terser@5.30.2): + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.2.8(@types/node@20.12.2)(terser@5.30.2) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-plugin-checker@0.6.4(eslint@9.1.1)(meow@12.1.1)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.8(@types/node@20.12.2)(terser@5.30.2)): + dependencies: + '@babel/code-frame': 7.24.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + chokidar: 3.6.0 + commander: 8.3.0 + fast-glob: 3.3.2 + fs-extra: 11.2.0 + npm-run-path: 4.0.1 + semver: 7.6.0 + strip-ansi: 6.0.1 + tiny-invariant: 1.3.3 + vite: 5.2.8(@types/node@20.12.2)(terser@5.30.2) + vscode-languageclient: 7.0.0 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + optionalDependencies: + eslint: 9.1.1 + meow: 12.1.1 + optionator: 0.9.3 + typescript: 5.4.5 + + vite-plugin-inspect@0.8.3(@nuxt/kit@3.11.2(rollup@4.13.2))(rollup@4.13.2)(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)): + dependencies: + '@antfu/utils': 0.7.7 + '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + debug: 4.3.4 + error-stack-parser-es: 0.1.1 + fs-extra: 11.2.0 + open: 10.1.0 + perfect-debounce: 1.0.0 + picocolors: 1.0.0 + sirv: 2.0.4 + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + optionalDependencies: + '@nuxt/kit': 3.11.2(rollup@4.13.2) + transitivePeerDependencies: + - rollup + - supports-color + + vite-plugin-static-copy@1.0.3(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)): + dependencies: + chokidar: 3.6.0 + fast-glob: 3.3.2 + fs-extra: 11.2.0 + picocolors: 1.0.0 + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + + vite-plugin-vue-inspector@4.0.2(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2)): + dependencies: + '@babel/core': 7.24.3 + '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.3) + '@vue/compiler-dom': 3.4.23 + kolorist: 1.8.0 + magic-string: 0.30.9 + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + transitivePeerDependencies: + - supports-color + + vite@5.2.8(@types/node@20.12.2)(terser@5.30.2): + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.13.2 + optionalDependencies: + '@types/node': 20.12.2 + fsevents: 2.3.3 + terser: 5.30.2 + + vite@5.2.9(@types/node@20.12.2)(terser@5.30.2): + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.13.2 + optionalDependencies: + '@types/node': 20.12.2 + fsevents: 2.3.3 + terser: 5.30.2 + + vitepress@1.1.3(@algolia/client-search@4.23.2)(@types/node@20.12.2)(fuse.js@6.6.2)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.30.2)(typescript@5.4.5): + dependencies: + '@docsearch/css': 3.6.0 + '@docsearch/js': 3.6.0(@algolia/client-search@4.23.2)(search-insights@2.13.0) + '@shikijs/core': 1.3.0 + '@shikijs/transformers': 1.3.0 + '@types/markdown-it': 14.0.1 + '@vitejs/plugin-vue': 5.0.4(vite@5.2.9(@types/node@20.12.2)(terser@5.30.2))(vue@3.4.25(typescript@5.4.5)) + '@vue/devtools-api': 7.0.27(vue@3.4.25(typescript@5.4.5)) + '@vueuse/core': 10.9.0(vue@3.4.25(typescript@5.4.5)) + '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(fuse.js@6.6.2)(vue@3.4.25(typescript@5.4.5)) + focus-trap: 7.5.4 + mark.js: 8.11.1 + minisearch: 6.3.0 + shiki: 1.3.0 + vite: 5.2.9(@types/node@20.12.2)(terser@5.30.2) + vue: 3.4.25(typescript@5.4.5) + optionalDependencies: + postcss: 8.4.38 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + vscode-jsonrpc@6.0.0: {} + + vscode-languageclient@7.0.0: + dependencies: + minimatch: 3.1.2 + semver: 7.6.0 + vscode-languageserver-protocol: 3.16.0 + + vscode-languageserver-protocol@3.16.0: + dependencies: + vscode-jsonrpc: 6.0.0 + vscode-languageserver-types: 3.16.0 + + vscode-languageserver-textdocument@1.0.11: {} + + vscode-languageserver-types@3.16.0: {} + + vscode-languageserver@7.0.0: + dependencies: + vscode-languageserver-protocol: 3.16.0 + + vscode-uri@3.0.8: {} + + vue-bundle-renderer@2.0.0: + dependencies: + ufo: 1.5.3 + + vue-demi@0.14.7(vue@3.4.25(typescript@5.4.5)): + dependencies: + vue: 3.4.25(typescript@5.4.5) + + vue-devtools-stub@0.1.0: {} + + vue-eslint-parser@9.4.2(eslint@9.1.1): + dependencies: + debug: 4.3.4 + eslint: 9.1.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + + vue-i18n@9.10.2(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@intlify/core-base': 9.10.2 + '@intlify/shared': 9.10.2 + '@vue/devtools-api': 6.6.1 + vue: 3.4.25(typescript@5.4.5) + + vue-observe-visibility@2.0.0-alpha.1(vue@3.4.25(typescript@5.4.5)): + dependencies: + vue: 3.4.25(typescript@5.4.5) + + vue-resize@2.0.0-alpha.1(vue@3.4.25(typescript@5.4.5)): + dependencies: + vue: 3.4.25(typescript@5.4.5) + + vue-router@4.3.2(vue@3.4.25(typescript@5.4.5)): + dependencies: + '@vue/devtools-api': 6.6.1 + vue: 3.4.25(typescript@5.4.5) + + vue-sonner@1.1.2: {} + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-virtual-scroller@2.0.0-beta.8(vue@3.4.25(typescript@5.4.5)): + dependencies: + mitt: 2.1.0 + vue: 3.4.25(typescript@5.4.5) + vue-observe-visibility: 2.0.0-alpha.1(vue@3.4.25(typescript@5.4.5)) + vue-resize: 2.0.0-alpha.1(vue@3.4.25(typescript@5.4.5)) + + vue@3.4.25(typescript@5.4.5): + dependencies: + '@vue/compiler-dom': 3.4.25 + '@vue/compiler-sfc': 3.4.25 + '@vue/runtime-dom': 3.4.25 + '@vue/server-renderer': 3.4.25(vue@3.4.25(typescript@5.4.5)) + '@vue/shared': 3.4.25 + optionalDependencies: + typescript: 5.4.5 + + webidl-conversions@3.0.1: {} + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@3.0.1: + dependencies: + isexe: 2.0.0 + + which@4.0.0: + dependencies: + isexe: 3.1.1 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + wonka@6.3.4: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.1.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@8.16.0: {} + + xml-name-validator@4.0.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml-eslint-parser@1.2.2: + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.4.1 + + yaml@2.3.4: {} + + yaml@2.4.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + ylru@1.4.0: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.0.0: {} + + zhead@2.2.4: {} + + zip-stream@6.0.1: + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.5.2 + + zod@3.23.4: {} diff --git a/presets/lara/accordion/index.js b/presets/lara/accordion/index.js new file mode 100755 index 0000000..c2f266d --- /dev/null +++ b/presets/lara/accordion/index.js @@ -0,0 +1,86 @@ +export default { + accordiontab: { + root: { + class: 'mb-1' + }, + header: ({ props }) => ({ + class: [ + // State + { + 'select-none pointer-events-none cursor-default opacity-60': + props?.disabled + } + ] + }), + headerAction: ({ context }) => ({ + class: [ + //Font + 'font-bold', + 'leading-none', + + // Alignments + 'flex items-center', + 'relative', + + // Sizing + 'p-5', + + // Shape + 'rounded-t-md', + { + 'rounded-br-md rounded-bl-md': !context.active, + 'rounded-br-0 rounded-bl-0': context.active + }, + + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-50 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-0/80', + { 'text-surface-900': context.active }, + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200', + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700/40', + 'hover:text-surface-900', + 'focus:outline-none focus:outline-offset-0 focus-visible:ring focus-visible:ring-primary-400/50 ring-inset dark:focus-visible:ring-primary-300/50', // Focus + + // Misc + 'cursor-pointer no-underline select-none' + ] + }), + headerIcon: { + class: 'inline-block mr-2' + }, + headerTitle: { + class: 'leading-none' + }, + content: { + class: [ + // Spacing + 'p-5', + + //Shape + 'rounded-tl-none rounded-tr-none rounded-br-lg rounded-bl-lg', + 'border-t-0', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } + } +} diff --git a/presets/lara/autocomplete/index.js b/presets/lara/autocomplete/index.js new file mode 100755 index 0000000..0c1469c --- /dev/null +++ b/presets/lara/autocomplete/index.js @@ -0,0 +1,283 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex + 'inline-flex', + + // Size + { 'w-full': props.multiple }, + + // Color + 'text-surface-900 dark:text-surface-0', + + //States + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + container: ({ props, state }) => ({ + class: [ + // Font + 'font-sans text-base leading-none', + + // Flex + 'flex items-center flex-wrap', + 'gap-2', + + // Spacing + 'm-0 list-none', + 'px-3 py-1.5', + + // Size + 'w-full', + 'min-h-[2.877rem]', + + // Shape + 'appearance-none rounded-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': !props.invalid + }, + 'focus:outline-none focus:outline-offset-0', + { 'ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + { 'ring ring-primary-400/50 dark:ring-primary-300/50': state.hovered }, + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-text overflow-hidden' + ] + }), + inputtoken: { + class: ['py-1.5 px-0', 'inline-flex flex-auto'] + }, + input: ({ props }) => ({ + class: [ + // Font + 'font-sans text-base leading-none', + + // Shape + 'appearance-none rounded-md', + { 'rounded-tr-none rounded-br-none': props.dropdown }, + { 'outline-none shadow-none rounded-none': props.multiple }, + + // Size + { 'w-full': props.multiple }, + + // Spacing + 'm-0', + { 'p-3': !props.multiple, 'p-0': props.multiple }, + + // Colors + 'text-surface-700 dark:text-white/80', + 'border', + { + 'bg-surface-0 dark:bg-surface-900': !props.multiple, + ' border-surface-300 dark:border-surface-700': + !props.multiple && !props.invalid, + 'border-0 bg-transparent': props.multiple + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !props.multiple + }, + + // Transition + 'transition-colors duration-200' + ] + }), + token: { + class: [ + // Flex + 'inline-flex items-center', + + // Spacings + 'py-1.5 px-3', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'bg-surface-200 dark:bg-surface-700', + 'text-surface-700 dark:text-white/70', + + // Misc + 'cursor-default' + ] + }, + label: { + class: 'leading-5' + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + }, + dropdownbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom', + + // Shape + 'rounded-r-md', + + // Size + 'px-4 py-3 leading-none', + + // Colors + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + } + }, + loadingicon: { + class: [ + 'text-surface-500 dark:text-surface-0/70', + 'absolute top-[50%] right-[0.5rem] -mt-2 animate-spin' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Size + 'max-h-[200px] overflow-auto' + ] + }, + list: { + class: 'py-3 px-0 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'font-normal text-base leading-none', + + // Spacing + 'm-0 px-5 py-3', + + // Shape + 'border-0 rounded-none', + + // Colors + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': + context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': + context.focused && !context.selected, + + 'text-primary-700 dark:text-white/80': + context.focused && context.selected, + 'bg-primary-100 dark:bg-primary-400': + context.focused && context.selected, + 'text-primary-700 dark:text-white/80': + !context.focused && context.selected, + 'bg-primary-50 dark:bg-primary-300': + !context.focused && context.selected + }, + + //States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.focused && !context.selected + }, + { + 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': + context.focused && !context.selected + }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + 'font-bold', + + // Spacing + 'm-0 p-3', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-800 dark:text-white/80', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/avatar/index.js b/presets/lara/avatar/index.js new file mode 100755 index 0000000..2a5ecc5 --- /dev/null +++ b/presets/lara/avatar/index.js @@ -0,0 +1,46 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Font + { + 'text-xl': props.size == 'large', + 'text-2xl': props.size == 'xlarge' + }, + + // Alignments + 'inline-flex items-center justify-center', + 'relative', + + // Sizes + { + 'h-8 w-8': props.size == null || props.size == 'normal', + 'w-12 h-12': props.size == 'large', + 'w-16 h-16': props.size == 'xlarge' + }, + { '-ml-4': parent.instance.$style?.name == 'avatargroup' }, + + // Shapes + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + }, + { 'border-2': parent.instance.$style?.name == 'avatargroup' }, + + // Colors + 'bg-surface-300 dark:bg-surface-700', + { + 'border-white dark:border-surface-800': + parent.instance.$style?.name == 'avatargroup' + } + ] + }), + image: ({ props }) => ({ + class: [ + 'h-full w-full', + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + } + ] + }) +} diff --git a/presets/lara/avatargroup/index.js b/presets/lara/avatargroup/index.js new file mode 100755 index 0000000..2595944 --- /dev/null +++ b/presets/lara/avatargroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: 'flex items-center' + } +} diff --git a/presets/lara/badge/index.js b/presets/lara/badge/index.js new file mode 100755 index 0000000..ec00e03 --- /dev/null +++ b/presets/lara/badge/index.js @@ -0,0 +1,44 @@ +export default { + root: ({ props }) => ({ + class: [ + // Font + 'font-bold', + + { + 'text-xs leading-[1.5rem]': props.size == null, + 'text-lg leading-[2.25rem]': props.size == 'large', + 'text-2xl leading-[3rem]': props.size == 'xlarge' + }, + + // Alignment + 'text-center inline-block', + + // Size + 'p-0 px-1', + { + 'min-w-[1.5rem] h-[1.5rem]': props.size == null, + 'min-w-[2.25rem] h-[2.25rem]': props.size == 'large', + 'min-w-[3rem] h-[3rem]': props.size == 'xlarge' + }, + + // Shape + { + 'rounded-full': props.value.length == 1, + 'rounded-[0.71rem]': props.value.length !== 1 + }, + + // Color + 'text-white dark:text-surface-900', + { + 'bg-primary-500 dark:bg-primary-400': + props.severity == null || props.severity == 'primary', + 'bg-surface-500 dark:bg-surface-400': props.severity == 'secondary', + 'bg-green-500 dark:bg-green-400': props.severity == 'success', + 'bg-blue-500 dark:bg-blue-400': props.severity == 'info', + 'bg-orange-500 dark:bg-orange-400': props.severity == 'warning', + 'bg-purple-500 dark:bg-purple-400': props.severity == 'help', + 'bg-red-500 dark:bg-red-400': props.severity == 'danger' + } + ] + }) +} diff --git a/presets/lara/badgedirective/index.js b/presets/lara/badgedirective/index.js new file mode 100755 index 0000000..d0be726 --- /dev/null +++ b/presets/lara/badgedirective/index.js @@ -0,0 +1,49 @@ +export default { + root: ({ context }) => ({ + class: [ + // Font + 'font-bold font-sans', + 'text-xs leading-5', + + // Alignment + 'flex items-center justify-center', + 'text-center', + + // Position + 'absolute top-0 right-0 transform translate-x-1/2 -translate-y-1/2 origin-top-right', + + // Size + 'm-0', + { + 'p-0': context.nogutter || context.dot, + 'px-2': !context.nogutter && !context.dot, + 'min-w-[0.5rem] w-2 h-2': context.dot, + 'min-w-[1.5rem] h-6': !context.dot + }, + + // Shape + { + 'rounded-full': context.nogutter || context.dot, + 'rounded-[10px]': !context.nogutter && !context.dot + }, + + // Color + 'text-white dark:text-surface-900', + { + 'bg-primary-500 dark:bg-primary-400': + !context.info && + !context.success && + !context.warning && + !context.danger && + !context.help && + !context.secondary, + 'bg-surface-500 dark:bg-surface-400': context.secondary, + 'bg-green-500 dark:bg-green-400': context.success, + 'bg-blue-500 dark:bg-blue-400': context.info, + 'bg-orange-500 dark:bg-orange-400': context.warning, + 'bg-purple-500 dark:bg-purple-400': context.help, + 'bg-red-500 dark:bg-red-400': context.danger + } + ] + }) +} diff --git a/presets/lara/blockui/index.js b/presets/lara/blockui/index.js new file mode 100755 index 0000000..221b58b --- /dev/null +++ b/presets/lara/blockui/index.js @@ -0,0 +1,8 @@ +export default { + root: { + class: 'relative' + }, + mask: { + class: 'bg-black/40' + } +} diff --git a/presets/lara/breadcrumb/index.js b/presets/lara/breadcrumb/index.js new file mode 100755 index 0000000..d90f781 --- /dev/null +++ b/presets/lara/breadcrumb/index.js @@ -0,0 +1,64 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700', + + // Misc + 'overflow-x-auto' + ] + }, + menu: { + class: [ + // Flex & Alignment + 'flex items-center flex-nowrap', + + // Spacing + 'm-0 p-0 list-none leading-none' + ] + }, + action: { + class: [ + // Flex & Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-600 dark:text-white/70', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-shadow duration-200', + + // Misc + 'text-decoration-none' + ] + }, + icon: { + class: 'text-surface-600 dark:text-white/70' + }, + separator: { + class: [ + // Flex & Alignment + 'flex items-center', + + // Spacing + ' mx-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + } +} diff --git a/presets/lara/button/index.js b/presets/lara/button/index.js new file mode 100755 index 0000000..594a189 --- /dev/null +++ b/presets/lara/button/index.js @@ -0,0 +1,468 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-3': props.size === null, + 'text-sm py-2 px-3': props.size === 'small', + 'text-xl py-3 px-4': props.size === 'large' + }, + { + 'w-12 p-0 py-3': props.label == null && props.icon !== null + }, + + // Shapes + { 'shadow-lg': props.raised }, + { 'rounded-md': !props.rounded, 'rounded-full': props.rounded }, + { + 'rounded-none first:rounded-l-md last:rounded-r-md': + parent.instance.$name == 'InputGroup' + }, + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': props.link }, + + // Plain Button + { + 'text-white bg-gray-500 border border-gray-500': + props.plain && !props.outlined && !props.text + }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { + 'text-surface-500 border border-gray-500': props.plain && props.outlined + }, + + // Text Button + { 'bg-transparent border-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent border': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-white dark:text-surface-900': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain, + 'bg-primary-500 dark:bg-primary-400': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain, + 'border border-primary-500 dark:border-primary-400': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain + }, + // Primary Text Button + { + 'text-primary-500 dark:text-primary-400': + props.text && props.severity === null && !props.plain + }, + // Primary Outlined Button + { + 'text-primary-500 border border-primary-500 hover:bg-primary-300/20': + props.outlined && props.severity === null && !props.plain + }, + + // Secondary Button + { + 'text-white dark:text-surface-900': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain, + 'bg-surface-500 dark:bg-surface-400': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain, + 'border border-surface-500 dark:border-surface-400': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain + }, + // Secondary Text Button + { + 'text-surface-500 dark:text-surface-300': + props.text && props.severity === 'secondary' && !props.plain + }, + // Secondary Outlined Button + { + 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/20': + props.outlined && props.severity === 'secondary' && !props.plain + }, + + // Success Button + { + 'text-white dark:text-green-900': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain, + 'bg-green-500 dark:bg-green-400': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain, + 'border border-green-500 dark:border-green-400': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain + }, + // Success Text Button + { + 'text-green-500 dark:text-green-400': + props.text && props.severity === 'success' && !props.plain + }, + // Success Outlined Button + { + 'text-green-500 border border-green-500 hover:bg-green-300/20': + props.outlined && props.severity === 'success' && !props.plain + }, + + // Info Button + { + 'text-white dark:text-surface-900': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain, + 'bg-blue-500 dark:bg-blue-400': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain, + 'border border-blue-500 dark:border-blue-400': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain + }, + // Info Text Button + { + 'text-blue-500 dark:text-blue-400': + props.text && props.severity === 'info' && !props.plain + }, + // Info Outlined Button + { + 'text-blue-500 border border-blue-500 hover:bg-blue-300/20 ': + props.outlined && props.severity === 'info' && !props.plain + }, + + // Warning Button + { + 'text-white dark:text-surface-900': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain, + 'bg-orange-500 dark:bg-orange-400': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain, + 'border border-orange-500 dark:border-orange-400': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain + }, + // Warning Text Button + { + 'text-orange-500 dark:text-orange-400': + props.text && props.severity === 'warning' && !props.plain + }, + // Warning Outlined Button + { + 'text-orange-500 border border-orange-500 hover:bg-orange-300/20': + props.outlined && props.severity === 'warning' && !props.plain + }, + + // Help Button + { + 'text-white dark:text-surface-900': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain, + 'bg-purple-500 dark:bg-purple-400': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain, + 'border border-purple-500 dark:border-purple-400': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain + }, + // Help Text Button + { + 'text-purple-500 dark:text-purple-400': + props.text && props.severity === 'help' && !props.plain + }, + // Help Outlined Button + { + 'text-purple-500 border border-purple-500 hover:bg-purple-300/20': + props.outlined && props.severity === 'help' && !props.plain + }, + + // Danger Button + { + 'text-white dark:text-surface-900': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain, + 'bg-red-500 dark:bg-red-400': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain, + 'border border-red-500 dark:border-red-400': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain + }, + // Danger Text Button + { + 'text-red-500 dark:text-red-400': + props.text && props.severity === 'danger' && !props.plain + }, + // Danger Outlined Button + { + 'text-red-500 border border-red-500 hover:bg-red-300/20': + props.outlined && props.severity === 'danger' && !props.plain + }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring', + + // Link + { + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50': props.link + }, + + // Plain + { + 'hover:bg-gray-600 hover:border-gray-600': + props.plain && !props.outlined && !props.text + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': props.plain && (props.text || props.outlined) + }, + + // Primary + { + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + props.severity === null + }, + // Text & Outlined Button + { + 'hover:bg-primary-300/20': + (props.text || props.outlined) && + props.severity === null && + !props.plain + }, + + // Secondary + { + 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:border-surface-600 dark:hover:border-surface-300': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-surface-400/50 dark:focus:ring-surface-300/50': + props.severity === 'secondary' + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + (props.text || props.outlined) && + props.severity === 'secondary' && + !props.plain + }, + + // Success + { + 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-green-400/50 dark:focus:ring-green-300/50': + props.severity === 'success' + }, + // Text & Outlined Button + { + 'hover:bg-green-300/20': + (props.text || props.outlined) && + props.severity === 'success' && + !props.plain + }, + + // Info + { + 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-blue-400/50 dark:focus:ring-blue-300/50': + props.severity === 'info' + }, + // Text & Outlined Button + { + 'hover:bg-blue-300/20': + (props.text || props.outlined) && + props.severity === 'info' && + !props.plain + }, + + // Warning + { + 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-orange-400/50 dark:focus:ring-orange-300/50': + props.severity === 'warning' + }, + // Text & Outlined Button + { + 'hover:bg-orange-300/20': + (props.text || props.outlined) && + props.severity === 'warning' && + !props.plain + }, + + // Help + { + 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-purple-400/50 dark:focus:ring-purple-300/50': + props.severity === 'help' + }, + // Text & Outlined Button + { + 'hover:bg-purple-300/20': + (props.text || props.outlined) && + props.severity === 'help' && + !props.plain + }, + + // Danger + { + 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-red-400/50 dark:focus:ring-red-300/50': + props.severity === 'danger' + }, + // Text & Outlined Button + { + 'hover:bg-red-300/20': + (props.text || props.outlined) && + props.severity === 'danger' && + !props.plain + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-bold', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingicon: ({ props }) => ({ + class: [ + 'h-4 w-4', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [ + { + 'ml-2 w-4 h-4 leading-none flex items-center justify-center': + props.badge + } + ] + }) +} diff --git a/presets/lara/calendar/index.js b/presets/lara/calendar/index.js new file mode 100755 index 0000000..339c844 --- /dev/null +++ b/presets/lara/calendar/index.js @@ -0,0 +1,681 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'max-w-full', + 'relative', + + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + input: ({ props }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Font + 'font-sans leading-none', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Spacing + 'm-0 p-3', + + // Shape + 'appearance-none', + { 'rounded-md': !props.showIcon || props.iconDisplay == 'input' }, + { + 'rounded-l-md flex-1 pr-9': + props.showIcon && props.iconDisplay !== 'input' + }, + { + 'rounded-md flex-1 pr-9': + props.showIcon && props.iconDisplay === 'input' + }, + + // Transitions + 'transition-colors', + 'duration-200', + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': !props.invalid + }, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50' + ] + }), + inputicon: { + class: [ + 'absolute top-[50%] -mt-2', + 'text-surface-600 dark:text-surface-200', + 'right-[.75rem]' + ] + }, + dropdownbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom', + + // Shape + 'rounded-r-md', + + // Size + 'px-4 py-3 leading-none', + + // Colors + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + } + }, + panel: ({ props }) => ({ + class: [ + // Display & Position + { + absolute: !props.inline, + 'inline-block': props.inline + }, + + // Size + { 'w-auto p-2 ': !props.inline }, + { 'min-w-[80vw] w-auto p-2 ': props.touchUI }, + { 'p-2 min-w-full': props.inline }, + + // Shape + 'border rounded-lg', + { + 'shadow-md': !props.inline + }, + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + + //misc + { 'overflow-x-auto': props.inline } + ] + }), + datepickerMask: { + class: [ + 'fixed top-0 left-0 w-full h-full', + 'flex items-center justify-center', + 'bg-black bg-opacity-90' + ] + }, + header: { + class: [ + //Font + 'font-semibold', + + // Flexbox and Alignment + 'flex items-center justify-between', + + // Spacing + 'p-2', + 'm-0', + + // Shape + 'border-b', + 'rounded-t-md', + + // Colors + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700' + ] + }, + previousbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + title: { + class: [ + // Text + 'leading-8', + 'mx-auto my-0' + ] + }, + monthTitle: { + class: [ + // Font + 'text-base leading-5', + 'font-semibold', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'p-2', + 'm-0 mr-2', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + + // Misc + 'cursor-pointer' + ] + }, + yearTitle: { + class: [ + // Font + 'text-base leading-5', + 'font-semibold', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'p-2', + 'm-0', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + + // Misc + 'cursor-pointer' + ] + }, + nextbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + table: { + class: [ + // Font + 'text-base leading-none', + // Size & Shape + 'border-collapse', + 'w-full', + + // Spacing + 'm-0 my-2' + ] + }, + tableheadercell: { + class: [ + // Spacing + 'p-0 md:p-2' + ] + }, + weekheader: { + class: [ + 'leading-5', + 'text-surface-600 dark:text-white/70', + 'opacity-60 cursor-default' + ] + }, + weeknumber: { + class: ['text-surface-600 dark:text-white/70', 'opacity-60 cursor-default'] + }, + weekday: { + class: [ + // Colors + 'text-surface-500 dark:text-white/60' + ] + }, + day: { + class: [ + // Spacing + 'p-0 md:p-2' + ] + }, + weeklabelcontainer: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-10 h-10', + 'rounded-full', + 'border-transparent border', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': + !context.selected && !context.disabled, + 'text-primary-700 bg-primary-100': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-800/80': + !context.selected && !context.disabled, + 'hover:bg-primary-200': context.selected && !context.disabled + }, + { + 'opacity-60 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + daylabel: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-10 h-10', + 'rounded-full', + 'border-transparent border', + + // Colors + { + 'text-primary-500 dark:text-primary-400': context.date.today, + 'text-surface-600 dark:text-white/70 bg-transparent': + !context.selected && !context.disabled && !context.date.today, + 'text-primary-700 bg-primary-100 dark:text-surface-0 dark:bg-primary-300/40': + context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.selected && !context.disabled, + 'hover:bg-primary-200 dark:hover:bg-primary-200/40': + context.selected && !context.disabled + }, + { + 'opacity-60 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + monthpicker: { + class: [ + // Spacing + 'my-2' + ] + }, + month: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/3', + 'p-2', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': + !context.selected && !context.disabled, + 'text-primary-700 bg-primary-100 dark:text-surface-0 dark:bg-primary-300/40': + context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.selected && !context.disabled, + 'hover:bg-primary-200 dark:hover:bg-primary-200/40': + context.selected && !context.disabled + }, + + // Misc + 'cursor-pointer' + ] + }), + yearpicker: { + class: [ + // Spacing + 'my-2' + ] + }, + year: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/3', + 'p-2', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': + !context.selected && !context.disabled, + 'text-primary-700 bg-primary-100 dark:text-surface-0 dark:bg-primary-300/40': + context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.selected && !context.disabled, + 'hover:bg-primary-200 dark:hover:bg-primary-200/40': + context.selected && !context.disabled + }, + + // Misc + 'cursor-pointer' + ] + }), + timepicker: { + class: [ + // Flexbox + 'flex', + 'justify-center items-center', + + // Borders + 'border-t-1', + 'border-solid border-surface-200', + + // Spacing + 'p-2' + ] + }, + separatorcontainer: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + separator: { + class: [ + // Text + 'text-xl' + ] + }, + hourpicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + minutepicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + secondPicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + ampmpicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + incrementbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + decrementbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + groupcontainer: { + class: [ + // Flexbox + 'flex' + ] + }, + group: { + class: [ + // Flexbox and Sizing + 'flex-1', + + // Borders + 'border-l', + 'border-surface-200', + + // Spacing + 'pr-0.5', + 'pl-0.5', + 'pt-0', + 'pb-0', + + // Pseudo-Classes + 'first:pl-0', + 'first:border-l-0' + ] + }, + buttonbar: { + class: [ + // Flexbox + 'flex justify-between items-center', + + // Spacing + 'py-3 px-0', + + // Shape + 'border-t border-surface-200 dark:border-surface-700' + ] + }, + todaybutton: { + root: { + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Spacing + 'px-4 py-3 leading-none', + + // Shape + 'rounded-md', + + // Colors + 'bg-transparent border-transparent', + 'text-primary-500 dark:text-primary-400', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-300/20', + + // Misc + 'cursor-pointer' + ] + } + }, + clearbutton: { + root: { + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Spacing + 'px-4 py-3 leading-none', + + // Shape + 'rounded-md', + + // Colors + 'bg-transparent border-transparent', + 'text-primary-500 dark:text-primary-400', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-300/20', + + // Misc + 'cursor-pointer' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/card/index.js b/presets/lara/card/index.js new file mode 100755 index 0000000..1940c9e --- /dev/null +++ b/presets/lara/card/index.js @@ -0,0 +1,37 @@ +export default { + root: { + class: [ + //Shape + 'rounded-md', + 'shadow-md', + + //Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0' + ] + }, + body: { + class: 'p-5' + }, + title: { + class: 'text-2xl font-bold mb-2' + }, + subtitle: { + class: [ + //Font + 'font-normal', + + //Spacing + 'mb-2', + + //Color + 'text-surface-600 dark:text-surface-0/60' + ] + }, + content: { + class: 'py-5' // Vertical padding. + }, + footer: { + class: 'pt-5' // Top padding. + } +} diff --git a/presets/lara/carousel/index.js b/presets/lara/carousel/index.js new file mode 100755 index 0000000..f9a4ac0 --- /dev/null +++ b/presets/lara/carousel/index.js @@ -0,0 +1,152 @@ +export default { + root: { + class: [ + // Flexbox + 'flex flex-col' + ] + }, + content: { + class: [ + // Flexbox & Overflow + 'flex flex-col overflow-auto' + ] + }, + container: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col': props.orientation == 'vertical' + } + ] + }), + previousbutton: { + class: [ + // Flexbox & Alignment + 'flex justify-center items-center self-center', + + // Sizing & Overflow + 'overflow-hidden w-8 h-8', + + // Spacing + 'mx-2', + + // Shape + 'rounded-full', + + // Border & Background + 'border-0 bg-transparent', + + // Color + 'text-surface-600', + + // Transitions + 'transition duration-200 ease-in-out' + ] + }, + nextbutton: { + class: [ + // Flexbox & Alignment + 'flex justify-center items-center self-center', + + // Sizing & Overflow + 'overflow-hidden w-8 h-8', + + // Spacing + 'mx-2', + + // Shape + 'rounded-full', + + // Border & Background + 'border-0 bg-transparent', + + // Color + 'text-surface-600', + + // Transitions + 'transition duration-200 ease-in-out' + ] + }, + itemscontent: { + class: [ + // Overflow & Width + 'overflow-hidden w-full' + ] + }, + itemscontainer: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation & Sizing + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col h-full': props.orientation == 'vertical' + } + ] + }), + item: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow ', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': + props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + itemcloned: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow', + 'unvisible', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': + props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + indicators: { + class: [ + // Flexbox & Alignment + 'flex flex-row justify-center flex-wrap' + ] + }, + indicator: { + class: [ + // Spacing + 'mr-2 mb-2' + ] + }, + indicatorbutton: ({ context }) => ({ + class: [ + // Sizing & Shape + 'w-8 h-2 rounded-0', + + // Transitions + 'transition duration-200', + + // Focus Styles + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Color & Background + { + 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': + !context.highlighted, + 'bg-primary-500 hover:bg-primary-600': context.highlighted + } + ] + }) +} diff --git a/presets/lara/cascadeselect/index.js b/presets/lara/cascadeselect/index.js new file mode 100755 index 0000000..8038e70 --- /dev/null +++ b/presets/lara/cascadeselect/index.js @@ -0,0 +1,227 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-300': !props.invalid + }, + { + 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': + state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none', + { + 'opacity-60': props.disabled, + 'pointer-events-none': props.disabled, + 'cursor-default': props.disabled + } + ] + }), + label: ({ props }) => ({ + class: [ + //Font + 'font-sans', + 'leading-none', + + // Flex & Alignment + ' flex flex-auto', + + // Sizing and Spacing + 'w-[1%]', + 'p-3', + + //Shape + 'rounded-none', + + // Color and Background + 'bg-transparent', + 'border-0', + { + 'text-surface-800 dark:text-white/80': props.modelValue, + 'text-surface-400 dark:text-surface-500': !props.modelValue + }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + dropdownbutton: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': + context.focused && !context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + context.focused && context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-500/50 dark:hover:bg-primary-300/30 text-primary-700 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + content: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + groupicon: { + class: [ + // Alignment + 'ml-auto' + ] + }, + sublist: { + class: [ + // Size + 'w-full', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/checkbox/index.js b/presets/lara/checkbox/index.js new file mode 100755 index 0000000..6242c18 --- /dev/null +++ b/presets/lara/checkbox/index.js @@ -0,0 +1,106 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked && !props.invalid, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } +} diff --git a/presets/lara/chip/index.js b/presets/lara/chip/index.js new file mode 100755 index 0000000..2581158 --- /dev/null +++ b/presets/lara/chip/index.js @@ -0,0 +1,45 @@ +export default { + root: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'px-3', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-white/70', + 'bg-surface-200 dark:bg-surface-700' + ] + }, + label: { + class: 'leading-6 my-1.5 mx-0' + }, + icon: { + class: 'leading-6 mr-2' + }, + image: { + class: ['w-9 h-9 -ml-3 mr-2', 'rounded-full'] + }, + removeIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + } +} diff --git a/presets/lara/chips/index.js b/presets/lara/chips/index.js new file mode 100755 index 0000000..7c3eead --- /dev/null +++ b/presets/lara/chips/index.js @@ -0,0 +1,117 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex', + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + container: ({ state, props }) => ({ + class: [ + // Font + 'font-sans text-base leading-none', + + // Flex + 'flex items-center flex-wrap gap-2', + + // Spacing + 'm-0 py-1.5 px-3', + + // Size + 'w-full', + 'min-h-[2.877rem]', + + // Shape + 'list-none', + 'rounded-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': !props.invalid + }, + 'focus:outline-none focus:outline-offset-0', + { 'ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + { 'ring ring-primary-400/50 dark:ring-primary-300/50': state.hovered }, + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-text overflow-hidden', + 'appearance-none' + ] + }), + + inputtoken: { + class: ['py-1.5 px-0', 'inline-flex flex-auto'] + }, + input: { + class: [ + // Font + 'font-sans text-base leading-[1.2]', + + // Size + 'w-full', + + // Spacing + 'p-0 m-0', + + // Shape + 'appearance-none rounded-none', + 'border-0 outline-none', + 'shadow-none', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-transparent' + ] + }, + token: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'py-1.5 px-3', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-white/70', + 'bg-surface-200 dark:bg-surface-700' + ] + }, + label: { + class: 'leading-5' + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + } +} diff --git a/presets/lara/colorpicker/index.js b/presets/lara/colorpicker/index.js new file mode 100755 index 0000000..61eaaee --- /dev/null +++ b/presets/lara/colorpicker/index.js @@ -0,0 +1,129 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display + 'inline-block', + + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + input: { + class: [ + // Font + 'font-sans text-base ', + + // Spacing + 'm-0', + 'p-3', + + // Size & Shape + 'rounded-lg w-8 h-8', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // States + 'hover:border-primary-500 dark:hover:border-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }, + panel: ({ props }) => ({ + class: [ + // Position & Size + { + 'relative h-[166px] w-[193px]': props.inline, + 'absolute h-[166px] w-[193px]': !props.inline + }, + + // Shape + 'shadow-md border', + + // Colors + 'bg-surface-800 border-surface-900 dark:border-surface-600' + ] + }), + selector: { + class: [ + // Position + 'absolute top-[8px] left-[8px]', + + // Size + 'h-[150px] w-[150px]' + ] + }, + color: { + class: [ + // Size + 'h-[150px] w-[150px]' + ], + style: + 'background: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0) 100%), linear-gradient(to right, #fff 0%, rgb(255 255 255 / 0) 100%)' + }, + colorhandle: { + class: [ + 'absolute', + + // Shape + 'rounded-full border border-solid', + + // Size + 'h-[10px] w-[10px]', + + // Spacing + '-ml-[5px] -mt-[5px]', + + // Colors + 'border-white', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + hue: { + class: [ + // Position + 'absolute top-[8px] left-[167px]', + + // Size + 'h-[150px] w-[17px]', + + // Opacity + 'opacity-85' + ], + style: + 'background: linear-gradient(0deg, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red)' + }, + huehandle: { + class: [ + // Position + 'absolute left-0 -ml-[2px] -mt-[5px]', + + // Size + 'h-[10px] w-[21px]', + + // Shape + 'border-solid border-2', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/confirmpopup/index.js b/presets/lara/confirmpopup/index.js new file mode 100755 index 0000000..8bb1e6b --- /dev/null +++ b/presets/lara/confirmpopup/index.js @@ -0,0 +1,107 @@ +export default { + root: { + class: [ + // Shape + 'rounded-lg', + 'shadow-lg', + 'border-0', + + // Positioning + 'z-40 transform origin-center', + 'mt-3 absolute left-0 top-0', + + // Color + 'dark:border', + 'dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + + // Before: Arrow + 'before:absolute before:w-0 before:-top-3 before:h-0 before:border-transparent before:border-solid before:ml-6 before:border-x-[0.75rem] before:border-b-[0.75rem] before:border-t-0 before:border-b-surface-0 dark:before:border-b-surface-800' + ] + }, + content: { + class: 'p-5 items-center flex' + }, + icon: { + class: 'text-2xl mr-4' + }, + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-2', + + // Spacing + 'px-6', + 'pb-6', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + rejectbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-3 leading-none', + + // Shape + 'rounded-md', + + // Color + 'text-primary-500 dark:text-primary-400', + + // States + 'hover:bg-primary-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + } + }, + acceptbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-3 leading-none', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // States + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/contextmenu/index.js b/presets/lara/contextmenu/index.js new file mode 100755 index 0000000..eed5696 --- /dev/null +++ b/presets/lara/contextmenu/index.js @@ -0,0 +1,130 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + 'shadow-md', + + // Spacing + 'py-2', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white/80', + 'dark:border dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: 'relative' + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-none', + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': + context.focused && !context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + context.focused && context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + !context.focused && context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-400/30 dark:hover:bg-primary-300/30 text-primary-700 dark:text-surface-0/80': + context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenu: ({ props }) => ({ + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-md', + 'rounded-md', + 'dark:border dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }), + submenuicon: { + class: ['ml-auto'] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-250' + } +} diff --git a/presets/lara/datatable/index.js b/presets/lara/datatable/index.js new file mode 100755 index 0000000..c9e4112 --- /dev/null +++ b/presets/lara/datatable/index.js @@ -0,0 +1,1289 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + { 'flex flex-col': props.scrollable && props.scrollHeight === 'flex' }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + loadingoverlay: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-800/40', + + // Transition + 'transition duration-200' + ] + }, + loadingicon: { + class: 'w-8 h-8 animate-spin' + }, + wrapper: ({ props }) => ({ + class: [ + { + relative: props.scrollable, + 'flex flex-col grow': props.scrollable && props.scrollHeight === 'flex' + }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-bold', + + // Shape + props.showGridlines + ? 'border-x border-t border-b-0' + : 'border-y border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }), + table: { + class: 'w-full border-spacing-0 border-separate' + }, + thead: ({ context }) => ({ + class: [ + { + 'bg-surface-50 top-0 z-40 sticky': context.scrollable + } + ] + }), + tbody: ({ instance, context }) => ({ + class: [ + { + 'sticky z-20': instance.frozenRow && context.scrollable + } + ] + }), + tfoot: ({ context }) => ({ + class: [ + { + 'bg-surface-50 bottom-0 z-0': context.scrollable + } + ] + }), + footer: { + class: [ + 'font-bold', + + // Shape + 'border-t-0 border-b border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }, + column: { + headercell: ({ context, props }) => ({ + class: [ + 'font-bold', + + // Position + { 'sticky z-20 border-b': props.frozen || props.frozen === '' }, + + { relative: context.resizable }, + + // Alignment + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' + ? 'p-2' + : context?.size === 'large' + ? 'p-5' + : 'p-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted + ? 'bg-primary-50 text-primary-700' + : 'bg-surface-50 text-surface-700', + (props.sortable === '' || props.sortable) && context.sorted + ? 'dark:text-white dark:bg-primary-400/30' + : 'dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 ', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-400/30': + (props.sortable === '' || props.sortable) && !context?.sorted + }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { 'cursor-pointer': props.sortable === '' || props.sortable }, + { + 'overflow-hidden space-nowrap border-y bg-clip-padding': + context.resizable // Resizable + } + ] + }), + headercontent: { + class: 'flex items-center' + }, + sort: ({ context }) => ({ + class: [ + context.sorted ? 'text-primary-500' : 'text-surface-700', + context.sorted ? 'dark:text-primary-400' : 'dark:text-white/80' + ] + }), + bodycell: ({ props, context, state, parent }) => ({ + class: [ + //Position + { 'sticky box-border border-b': parent.instance.frozenRow }, + { 'sticky box-border border-b': props.frozen || props.frozen === '' }, + + // Alignment + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'first:border-l border-r border-b': context?.showGridlines }, + { + 'bg-surface-0 dark:bg-surface-800': + parent.instance.frozenRow || props.frozen || props.frozen === '' + }, + + // Spacing + { 'p-2': context?.size === 'small' && !state['d_editing'] }, + { 'p-5': context?.size === 'large' && !state['d_editing'] }, + { + 'p-4': + context?.size !== 'large' && + context?.size !== 'small' && + !state['d_editing'] + }, + { 'py-[0.6rem] px-2': state['d_editing'] }, + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }), + footercell: ({ context }) => ({ + class: [ + // Font + 'font-bold', + + // Alignment + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'border-x border-y': context?.showGridlines }, + + // Spacing + context?.size === 'small' + ? 'p-2' + : context?.size === 'large' + ? 'p-5' + : 'p-4', + + // Color + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800' + ] + }), + sorticon: ({ context }) => ({ + class: [ + 'ml-2', + context.sorted + ? 'text-primary-700 dark:text-white/80' + : 'text-surface-700 dark:text-white/70' + ] + }), + sortbadge: { + class: [ + // Flex & Alignment + 'flex items-center justify-center align-middle', + + // Shape + 'rounded-full', + + // Size + 'w-[1.143rem] leading-[1.143rem]', + + // Spacing + 'ml-2', + + // Color + 'text-primary-700 dark:text-white', + 'bg-primary-50 dark:bg-primary-400/30' + ] + }, + columnfilter: { + class: 'inline-flex items-center ml-auto' + }, + filteroverlay: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Size + 'min-w-[12.5rem]', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + filtermatchmodedropdown: { + root: ({ state }) => ({ + class: [ + // Display and Position + 'flex', + 'relative', + + // Spacing + 'my-2', + + // Shape + 'w-full', + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-300', + { + 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': + state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none' + ] + }) + }, + filterrowitems: { + class: 'm-0 p-0 py-3 list-none' + }, + filterrowitem: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { 'text-surface-700 dark:text-white/80': !context?.highlighted }, + { + 'bg-surface-0 dark:bg-surface-800 text-surface-700 dark:text-white/80': + !context?.highlighted + }, + { + 'bg-primary-100 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + context?.highlighted + }, + { + 'bg-primary-50 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + context?.highlighted + }, + + //States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context?.highlighted + }, + { + 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': + !context?.highlighted + }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + filteroperator: { + class: [ + // Spacing + 'px-5 py-3', + + // Shape + 'border-b border-solid', + 'rounded-t-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'border-surface-200 dark:border-surface-800', + 'bg-surface-0 dark:bg-surface-700' + ] + }, + filteroperatordropdown: { + root: ({ state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'w-full', + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-300', + { + 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': + state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none' + ] + }), + input: ({ props }) => ({ + class: [ + //Font + 'font-sans', + 'leading-none', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { + 'text-surface-800 dark:text-white/80': props.modelValue, + 'text-surface-400 dark:text-surface-500': !props.modelValue + }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Sizing and Spacing + 'w-[1%]', + 'p-3', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-surface-50 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-100 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + context.focused && context.selected + }, + { + 'bg-primary-50 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.focused && !context.selected + }, + { + 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': + context.focused && !context.selected + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + filterconstraint: { + class: [ + // Spacing + 'py-3 px-5', + + // Shape + 'border-b border-solid', + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }, + filteraddrule: { + class: 'py-3 px-5' + }, + filteraddrulebutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-2 px-3 w-full', + + // Shape + 'rounded-md', + + 'bg-transparent border-transparent', + 'text-primary-500 dark:text-primary-400', + 'hover:bg-primary-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }, + label: { + class: 'flex-auto grow-0' + }, + icon: { + class: 'mr-2' + } + }, + filterremovebutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-2 px-3 w-full mt-2', + + // Shape + 'rounded-md', + + 'bg-transparent border-transparent', + 'text-red-500 dark:text-red-400', + 'hover:bg-red-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }, + label: { + class: 'flex-auto grow-0' + }, + icon: { + class: 'mr-2' + } + }, + filterbuttonbar: { + class: [ + // Flex & Alignment + 'flex items-center justify-between', + + // Space + 'py-3 px-5' + ] + }, + filterclearbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-2 px-3', + + // Shape + 'rounded-md', + + 'text-primary-500 border border-primary-500', + 'hover:bg-primary-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + } + }, + filterapplybutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-2 px-3', + + // Shape + 'rounded-md', + + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + } + }, + filtermenubutton: ({ context }) => ({ + class: [ + 'relative', + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + + // Spacing + 'ml-2', + + // Shape + 'rounded-full', + + // Color + { 'bg-primary-50 text-primary-700': context.active }, + 'dark:text-white/70 dark:hover:text-white/80 dark:bg-surface-800', + + // States + 'hover:text-surface-700 hover:bg-surface-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer no-underline overflow-hidden' + ] + }), + headerfilterclearbutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Shape + 'border-none', + + // Spacing + 'm-0 p-0 ml-2', + + // Color + 'bg-transparent', + + // Misc + 'cursor-pointer no-underline overflow-hidden select-none', + { + invisible: !context.hidden + } + ] + }), + rowtoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + columnresizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + rowreordericon: { + class: 'cursor-move' + }, + roweditorinitbutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + roweditorsavebutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + roweditorcancelbutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + rowRadiobutton: { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-[1.571rem] h-[1.571rem]', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-[1.571rem] h-[1.571rem]', + + // Shape + 'border-2', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { + 'text-surface-700 dark:text-white/80': !props.modelValue, + 'bg-surface-0 dark:bg-surface-900': !props.modelValue, + 'border-surface-300 dark:border-surface-700': !props.modelValue, + 'border-primary-500 dark:border-primary-400': props.modelValue, + 'bg-primary-500 dark:bg-primary-400': props.modelValue + }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled, + 'peer-hover:border-primary-600 dark:peer-hover:border-primary-300 peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300': + !props.disabled && props.modelValue, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'opacity-60 cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ props }) => ({ + class: [ + 'block', + + // Shape + 'rounded-full', + + // Size + 'w-[0.857rem] h-[0.857rem]', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + + // Conditions + { + 'backface-hidden scale-10 invisible': !props.modelValue, + 'transform visible scale-[1.1]': props.modelValue + }, + + // Transition + 'transition duration-200' + ] + }) + }, + headercheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.checked, + 'peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + rowCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.checked, + 'peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + bodyrow: ({ context, props }) => ({ + class: [ + // Color + 'dark:text-white/80', + { + 'bg-primary-50 text-primary-700 dark:bg-primary-400/30': + context.selected + }, + { + 'bg-surface-0 text-surface-600 dark:bg-surface-800': !context.selected + }, + { 'font-bold bg-surface-0 dark:bg-surface-800': props.frozenRow }, + { + 'odd:bg-surface-0 odd:text-surface-600 dark:odd:bg-surface-800 even:bg-surface-50 even:text-surface-600 dark:even:bg-surface-900/50': + context.stripedRows + }, + + // State + { + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 ring-inset dark:focus:ring-primary-300/50': + context.selectable + }, + { + 'hover:bg-surface-300/20 hover:text-surface-600': + props.selectionMode && !context.selected + }, + + // Transition + { + 'transition duration-200': + (props.selectionMode && !context.selected) || props.rowHover + }, + + // Misc + { 'cursor-pointer': props.selectionMode } + ] + }), + rowexpansion: { + class: + 'bg-surface-0 dark:bg-surface-800 text-surface-600 dark:text-white/80' + }, + rowgroupheader: { + class: [ + 'sticky z-20', + 'bg-surface-0 text-surface-600 dark:text-white/70', + 'dark:bg-surface-800' + ] + }, + rowgroupfooter: { + class: [ + 'sticky z-20', + 'bg-surface-0 text-surface-600 dark:text-white/70', + 'dark:bg-surface-800' + ] + }, + rowgrouptoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + rowgrouptogglericon: { + class: 'inline-block w-4 h-4' + }, + resizehelper: { + class: 'absolute hidden w-[2px] z-20 bg-primary-500 dark:bg-primary-400' + } +} diff --git a/presets/lara/dataview/index.js b/presets/lara/dataview/index.js new file mode 100755 index 0000000..1d1c45b --- /dev/null +++ b/presets/lara/dataview/index.js @@ -0,0 +1,40 @@ +export default { + content: { + class: [ + // Spacing + 'p-0', + + // Shape + 'border-0', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800' + ] + }, + grid: { + class: [ + // flex + 'flex flex-wrap', + + // Spacing + 'ml-0 mr-0 mt-0', + + // Color + 'bg-surface-0 dark:bg-surface-800' + ] + }, + header: { + class: [ + 'font-bold', + + // Spacing + 'p-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 border-y' + ] + } +} diff --git a/presets/lara/dataviewlayoutoptions/index.js b/presets/lara/dataviewlayoutoptions/index.js new file mode 100755 index 0000000..f642cf3 --- /dev/null +++ b/presets/lara/dataviewlayoutoptions/index.js @@ -0,0 +1,66 @@ +export default { + listbutton: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Shape + 'border rounded-md rounded-r-none', + + // Spacing + 'px-4 py-3', + + // Color + props.modelValue === 'list' + ? 'bg-primary-500 dark:bg-primary-400 border-primary-500 dark:border-primary-400 text-white dark:text-surface-900' + : 'bg-surface-0 dark:bg-surface-900 border-surface-200 dark:border-surface-700 text-surface-700 dark:text-white/80', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + props.modelValue === 'list' + ? 'hover:bg-primary-600 dark:hover:bg-primary-300' + : 'hover:bg-surface-50 dark:hover:bg-surface-800/80', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }), + gridbutton: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Shape + 'border rounded-md rounded-l-none', + + // Spacing + 'px-4 py-3', + + // Color + props.modelValue === 'grid' + ? 'bg-primary-500 dark:bg-primary-400 border-primary-500 dark:border-primary-400 text-white dark:text-surface-900' + : 'bg-surface-0 dark:bg-surface-900 border-surface-200 dark:border-surface-700 text-surface-700 dark:text-white/80', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + props.modelValue === 'grid' + ? 'hover:bg-primary-600 dark:hover:bg-primary-300' + : 'hover:bg-surface-50 dark:hover:bg-surface-800/80', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }) +} diff --git a/presets/lara/deferred/index.js b/presets/lara/deferred/index.js new file mode 100755 index 0000000..1f97b06 --- /dev/null +++ b/presets/lara/deferred/index.js @@ -0,0 +1,3 @@ +export default { + root: {} +} diff --git a/presets/lara/dialog/index.js b/presets/lara/dialog/index.js new file mode 100755 index 0000000..2343e0a --- /dev/null +++ b/presets/lara/dialog/index.js @@ -0,0 +1,249 @@ +export default { + root: ({ state }) => ({ + class: [ + // Shape + 'rounded-lg', + 'shadow-lg', + 'border-0', + + // Size + 'max-h-[90vh]', + 'w-[50vw]', + 'm-0', + + // Color + 'dark:border', + 'dark:border-surface-700', + + // Transitions + 'transform', + 'scale-100', + + // Maximized State + { + 'transition-none': state.maximized, + 'transform-none': state.maximized, + '!w-screen': state.maximized, + '!h-screen': state.maximized, + '!max-h-full': state.maximized, + '!top-0': state.maximized, + '!left-0': state.maximized + } + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-6', + + // Shape + 'border-t-0', + 'rounded-tl-lg', + 'rounded-tr-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + title: { + class: ['font-bold text-lg'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden' + ] + }, + maximizablebutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + maximizableicon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + content: ({ state, instance }) => ({ + class: [ + // Spacing + 'px-6', + 'pb-8', + 'pt-0', + + // Shape + { + grow: state.maximized, + 'rounded-bl-lg': !instance.$slots.footer, + 'rounded-br-lg': !instance.$slots.footer + }, + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + + // Misc + 'overflow-y-auto' + ] + }), + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-2', + + // Spacing + 'px-6', + 'pb-6', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition-all', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { + 'has-[.mask-active]:bg-transparent bg-black/40': props.modal, + 'has-[.mask-active]:backdrop-blur-none backdrop-blur-sm': props.modal + } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: + 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: + 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: 'opacity-0 scale-75 translate-y-full mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: + 'opacity-0 scale-75 translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' || + props.position === 'topleft' || + props.position === 'bottomleft' + ? { + enterFromClass: + 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: + 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' || + props.position === 'topright' || + props.position === 'bottomright' + ? { + enterFromClass: + 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: + 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 scale-75 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 mask-active' + } + } +} diff --git a/presets/lara/divider/index.js b/presets/lara/divider/index.js new file mode 100755 index 0000000..121e83d --- /dev/null +++ b/presets/lara/divider/index.js @@ -0,0 +1,72 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex and Position + 'flex relative', + { 'justify-center': props.layout == 'vertical' }, + { 'items-center': props.layout == 'vertical' }, + { + 'justify-start': props?.align == 'left' && props.layout == 'horizontal', + 'justify-center': + props?.align == 'center' && props.layout == 'horizontal', + 'justify-end': props?.align == 'right' && props.layout == 'horizontal', + 'items-center': props?.align == 'top' && props.layout == 'vertical', + 'items-start': props?.align == 'center' && props.layout == 'vertical', + 'items-end': props?.align == 'bottom' && props.layout == 'vertical' + }, + + // Spacing + { + 'my-5 mx-0 py-0 px-5': props.layout == 'horizontal', + 'mx-4 md:mx-5 py-5': props.layout == 'vertical' + }, + + // Size + { + 'w-full': props.layout == 'horizontal', + 'min-h-full': props.layout == 'vertical' + }, + + // Before: Line + 'before:block', + + // Position + { + 'before:absolute before:left-0 before:top-1/2': + props.layout == 'horizontal', + 'before:absolute before:left-1/2 before:top-0 before:transform before:-translate-x-1/2': + props.layout == 'vertical' + }, + + // Size + { + 'before:w-full': props.layout == 'horizontal', + 'before:min-h-full': props.layout == 'vertical' + }, + + // Shape + { + 'before:border-solid': props.type == 'solid', + 'before:border-dotted': props.type == 'dotted', + 'before:border-dashed': props.type == 'dashed' + }, + + // Color + { + 'before:border-t before:border-surface-200 before:dark:border-surface-600': + props.layout == 'horizontal', + 'before:border-l before:border-surface-200 before:dark:border-surface-600': + props.layout == 'vertical' + } + ] + }), + content: { + class: [ + // Space and Position + 'px-1 z-10', + + // Color + 'bg-surface-0 dark:bg-surface-800' + ] + } +} diff --git a/presets/lara/dock/index.js b/presets/lara/dock/index.js new file mode 100755 index 0000000..6871410 --- /dev/null +++ b/presets/lara/dock/index.js @@ -0,0 +1,97 @@ +export default { + root: ({ props }) => ({ + class: [ + // Positioning + 'absolute z-1', + { + 'left-0 bottom-0 w-full': props.position == 'bottom', + 'left-0 top-0 w-full': props.position == 'top', + 'left-0 top-0 h-full': props.position == 'left', + 'right-0 top-0 h-full': props.position == 'right' + }, + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Interactivity + 'pointer-events-none' + ] + }), + container: { + class: [ + // Flexbox + 'flex', + + // Shape & Border + 'rounded-md', + + // Color + 'bg-surface-0/10 dark:bg-surface-900/20 border border-surface-0/20', + 'backdrop-blur-sm', + + // Spacing + 'p-2', + + // Misc + 'pointer-events-auto' + ] + }, + menu: ({ props }) => ({ + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + { + 'flex-col': props.position == 'left' || props.position == 'right' + }, + + // List Style + 'm-0 p-0 list-none', + + // Shape + 'outline-none' + ] + }), + menuitem: ({ props, context, instance }) => ({ + class: [ + // Spacing & Shape + 'p-2 rounded-md', + + // Conditional Scaling + { + 'hover:scale-150': instance.currentIndex === context.index, + 'scale-125': + instance.currentIndex - 1 === context.index || + instance.currentIndex + 1 === context.index, + 'scale-110': + instance.currentIndex - 2 === context.index || + instance.currentIndex + 2 === context.index + }, + + // Positioning & Hover States + { + 'origin-bottom hover:mx-6': props.position == 'bottom', + 'origin-top hover:mx-6': props.position == 'top', + 'origin-left hover:my-6': props.position == 'left', + 'origin-right hover:my-6': props.position == 'right' + }, + + // Transitions & Transform + 'transition-all duration-200 ease-cubic-bezier-will-change-transform transform' + ] + }), + action: { + class: [ + // Flexbox & Alignment + 'flex flex-col items-center justify-center', + + // Position + 'relative', + + // Size + 'w-16 h-16', + + // Misc + 'cursor-default overflow-hidden' + ] + } +} diff --git a/presets/lara/dropdown/index.js b/presets/lara/dropdown/index.js new file mode 100755 index 0000000..795c1e3 --- /dev/null +++ b/presets/lara/dropdown/index.js @@ -0,0 +1,299 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-300': !props.invalid + }, + { + 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': + state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none', + { + 'opacity-60': props.disabled, + 'pointer-events-none': props.disabled, + 'cursor-default': props.disabled + } + ] + }), + input: ({ props }) => ({ + class: [ + //Font + 'font-sans', + 'leading-none', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { + 'text-surface-800 dark:text-white/80': props.modelValue != undefined, + 'text-surface-400 dark:text-surface-500': props.modelValue == undefined + }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Sizing and Spacing + 'w-[1%]', + 'p-3', + { 'pr-7': props.showClear }, + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected && !context.disabled + }, + { + 'text-surface-600 dark:text-white/70': + !context.focused && !context.selected && context.disabled + }, + { + 'bg-surface-200 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-100 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + context.focused && context.selected + }, + { + 'bg-primary-50 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.focused && !context.selected + }, + { + 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': + context.focused && !context.selected + }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + { 'pointer-events-none cursor-default': context.disabled }, + { 'cursor-pointer': !context.disabled }, + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + header: { + class: [ + // Spacing + 'py-3 px-5', + 'm-0', + + //Shape + 'border-b', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-100 dark:bg-surface-800', + 'border-surface-300 dark:border-surface-700' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'font-sans', + 'leading-none', + + // Sizing + 'pr-7 py-3 px-3', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-300', + 'focus:ring focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + clearicon: { + class: [ + // Color + 'text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/fieldset/index.js b/presets/lara/fieldset/index.js new file mode 100755 index 0000000..6e33bc0 --- /dev/null +++ b/presets/lara/fieldset/index.js @@ -0,0 +1,98 @@ +export default { + root: { + class: [ + 'block', + + // Spacing + 'px-4 pt-2 py-3', + 'inline-size-min', + + // Shape + 'rounded-md', + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + legend: ({ props }) => ({ + class: [ + // Font + 'font-bold', + 'leading-none', + + //Spacing + { 'p-0': props.toggleable, 'p-5': !props.toggleable }, + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0/80', + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-50 dark:bg-surface-900', + + // Transition + 'transition-none', + + // States + { + 'hover:bg-surface-100 hover:border-surface-200 hover:text-surface-900 dark:hover:text-surface-0/80 dark:hover:bg-surface-800/80': + props.toggleable + } + ] + }), + toggler: ({ props }) => ({ + class: [ + // Alignments + 'flex items-center justify-center', + 'relative', + + //Spacing + { 'p-5': props.toggleable }, + + // Shape + { 'rounded-md': props.toggleable }, + + // Color + { + 'text-surface-700 dark:text-surface-200 hover:text-surface-900': + props.toggleable + }, + + // States + { + 'hover:text-surface-900 dark:hover:text-surface-100': props.toggleable + }, + { + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50': + props.toggleable + }, + + // Misc + { + 'transition-none cursor-pointer overflow-hidden select-none': + props.toggleable + } + ] + }), + togglerIcon: { + class: 'mr-2 inline-block' + }, + legendTitle: { + class: 'flex items-center justify-center leading-none' + }, + content: { + class: 'p-5' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +} diff --git a/presets/lara/fileupload/index.js b/presets/lara/fileupload/index.js new file mode 100755 index 0000000..e2e76ef --- /dev/null +++ b/presets/lara/fileupload/index.js @@ -0,0 +1,173 @@ +export default { + input: { + class: 'hidden' + }, + buttonbar: { + class: [ + // Flexbox + 'flex', + 'flex-wrap', + + // Colors + 'bg-surface-50', + 'dark:bg-surface-800', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-5', + 'gap-2', + + // Borders + 'border', + 'border-solid', + 'border-surface-200', + 'dark:border-surface-700', + 'border-b-0', + + // Shape + 'rounded-tr-lg', + 'rounded-tl-lg' + ] + }, + chooseButton: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Spacing + 'px-4 py-3', + + // Shape + 'rounded-md', + + // Font + 'leading-[normal]', + 'font-bold', + + // Colors + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border-primary-500 dark:border-primary-400', + + // States + 'hover:bg-primary-600 dark:hover:bg-primary-300', + + // Misc + 'overflow-hidden', + 'cursor-pointer' + ] + }, + chooseIcon: { + class: ['mr-2', 'inline-block'] + }, + chooseButtonLabel: { + class: ['flex-1', 'font-bold'] + }, + uploadbutton: { + icon: { + class: 'mr-2' + } + }, + cancelbutton: { + icon: { + class: 'mr-2' + } + }, + content: { + class: [ + // Position + 'relative', + + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-8', + + // Borders + 'border', + 'border-surface-200', + 'dark:border-surface-700', + + // Shape + 'rounded-b-lg' + ] + }, + file: { + class: [ + // Flexbox + 'flex', + 'items-center', + 'flex-wrap', + + // Spacing + 'p-4', + 'mb-2', + 'last:mb-0', + + // Borders + 'border', + 'border-surface-200', + 'dark:border-surface-700', + 'gap-2', + + // Shape + 'rounded' + ] + }, + thumbnail: { + class: 'shrink-0' + }, + fileName: { + class: 'mb-2 break-all' + }, + fileSize: { + class: 'mr-2' + }, + uploadicon: { + class: 'mr-2' + }, + progressbar: { + root: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'absolute top-0 left-0', + + // Shape and Size + 'border-0', + 'h-2', + 'rounded-md', + 'w-full', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + value: { + class: [ + // Flexbox & Overflow & Position + 'absolute flex items-center justify-center overflow-hidden', + + // Colors + 'bg-primary-500 dark:bg-primary-400', + + // Spacing & Sizing + 'm-0', + 'h-full w-0', + + // Shape + 'border-0', + + // Transitions + 'transition-width duration-1000 ease-in-out' + ] + } + } +} diff --git a/presets/lara/floatlabel/index.js b/presets/lara/floatlabel/index.js new file mode 100755 index 0000000..1ab017f --- /dev/null +++ b/presets/lara/floatlabel/index.js @@ -0,0 +1,26 @@ +export default { + root: { + class: [ + 'block relative', + + // Base Label Appearance + '[&>*:last-child]:text-surface-900/60 dark:[&>*:last-child]:text-white/60', + '[&>*:last-child]:absolute', + '[&>*:last-child]:top-1/2', + '[&>*:last-child]:-translate-y-1/2', + '[&>*:last-child]:left-3', + '[&>*:last-child]:pointer-events-none', + '[&>*:last-child]:transition-all', + '[&>*:last-child]:duration-200', + '[&>*:last-child]:ease', + + // Focus Label Appearance + '[&>*:last-child]:has-[:focus]:-top-3', + '[&>*:last-child]:has-[:focus]:text-sm', + + // Filled Input Label Appearance + '[&>*:last-child]:has-[.filled]:-top-3', + '[&>*:last-child]:has-[.filled]:text-sm' + ] + } +} diff --git a/presets/lara/galleria/index.js b/presets/lara/galleria/index.js new file mode 100755 index 0000000..dd0f64f --- /dev/null +++ b/presets/lara/galleria/index.js @@ -0,0 +1,351 @@ +export default { + content: ({ parent, props }) => ({ + class: [ + 'flex', + { + 'flex-col': props.fullScreen + }, + { + 'flex-col': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'bottom', + 'flex-row': + parent.props.thumbnailsPosition === 'right' || + parent.props.thumbnailsPosition === 'left' + } + ] + }), + itemwrapper: ({ parent, props }) => ({ + class: [ + 'group', + 'flex relative', + { + 'grow shrink w-0 justify-center': props.fullScreen + }, + { + 'flex-col': + parent.props.indicatorsPosition === 'bottom' || + parent.props.indicatorsPosition === 'top', + 'flex-row items-center': + parent.props.indicatorsPosition === 'left' || + parent.props.indicatorsPosition === 'right' + }, + { + 'order-2': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'left', + 'flex-row': parent.props.thumbnailsPosition === 'right' + } + ] + }), + + itemcontainer: ({ parent }) => ({ + class: [ + 'flex h-full relative', + { + 'order-1': + parent.props.indicatorsPosition === 'bottom' || + parent.props.indicatorsPosition === 'right', + 'order-2': + parent.props.indicatorsPosition === 'top' || + parent.props.indicatorsPosition === 'left' + } + ] + }), + item: { + class: [ + // Flex + 'flex justify-center items-center h-full w-full', + + // Sizing + 'h-full w-full' + ] + }, + thumbnailwrapper: ({ parent }) => ({ + class: [ + // Flex + 'flex flex-col shrink-0', + + { + 'order-1': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'left' + }, + + // Misc + 'overflow-auto' + ] + }), + thumbnailcontainer: ({ parent }) => ({ + class: [ + // Flex + 'flex', + + // Spacing + 'p-4', + + // Colors + 'bg-black/90', + + { + 'flex-row': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'bottom', + 'flex-col grow': + parent.props.thumbnailsPosition === 'right' || + parent.props.thumbnailsPosition === 'left' + } + ] + }), + previousthumbnailbutton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + thumbnailitemscontainer: { + class: 'overflow-hidden w-full' + }, + thumbnailitems: ({ parent }) => ({ + class: [ + 'flex', + { + 'flex-col h-full': + parent.props.thumbnailsPosition === 'right' || + parent.props.thumbnailsPosition === 'left' + } + ] + }), + thumbnailitem: ({ parent }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + 'grow shrink-0', + + // Sizing + { + 'w-full md:w-[25%] lg:w-[20%]': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'bottom' + }, + + // Misc + 'overflow-auto', + 'cursor-pointer', + 'opacity-50', + + // States + 'hover:opacity-100', + 'hover:transition-opacity', + 'hover:duration-300' + ] + }), + nextthumbnailbutton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + indicators: ({ parent }) => ({ + class: [ + // flex + 'flex items-center justify-center', + + // Spacing + 'p-4', + + // Indicators Position + { + 'order-2': parent.props.indicatorsPosition == 'bottom', + 'order-1': parent.props.indicatorsPosition == 'top', + 'order-1 flex-col': parent.props.indicatorsPosition == 'left', + 'flex-col order-2': parent.props.indicatorsPosition == 'right' + }, + { + 'absolute z-10 bg-black/50': parent.props.showIndicatorsOnItem + }, + + { + 'bottom-0 left-0 w-full items-start': + parent.props.indicatorsPosition == 'bottom' && + parent.props.showIndicatorsOnItem, + 'top-0 left-0 w-full items-start': + parent.props.indicatorsPosition == 'top' && + parent.props.showIndicatorsOnItem, + 'left-0 top-0 h-full items-start': + parent.props.indicatorsPosition == 'left' && + parent.props.showIndicatorsOnItem, + 'right-0 top-0 h-full items-start': + parent.props.indicatorsPosition == 'right' && + parent.props.showIndicatorsOnItem + } + ] + }), + indicator: ({ parent }) => ({ + class: [ + { + 'mr-2': + parent.props.indicatorsPosition == 'bottom' || + parent.props.indicatorsPosition == 'top', + 'mb-2': + parent.props.indicatorsPosition == 'left' || + parent.props.indicatorsPosition == 'right' + } + ] + }), + indicatorbutton: ({ context }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Appearance + 'rounded-full transition duration-200', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Conditional Appearance: Not Highlighted + { + 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': + !context.highlighted + }, + + // Conditional Appearance: Highlighted + { 'bg-primary-500 hover:bg-primary-600': context.highlighted } + ] + }), + mask: { + class: [ + 'fixed top-0 left-0 w-full h-full', + 'flex items-center justify-center', + 'bg-black/90' + ] + }, + closebutton: { + class: [ + // Positioning + '!absolute top-0 right-0', + + // Display & Flexbox + 'flex justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'text-white bg-transparent w-12 h-12 rounded-full transition duration-200 ease-in-out', + + // Hover Effect + 'hover:text-white hover:bg-surface-0/10', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + closeicon: { + class: 'w-6 h-6' + }, + previousitembutton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': + parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] left-0', + { + '!absolute': parent.props.showItemNavigators, + '!fixed': !parent.props.showItemNavigators + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }), + nextitembutton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': + parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] right-0', + { + '!absolute': parent.props.showItemNavigators, + '!fixed': !parent.props.showItemNavigators + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }), + caption: { + class: [ + // Positioning + 'absolute bottom-0 left-0 w-full', + + // Appearance + 'bg-black/50 text-white p-4' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +} diff --git a/presets/lara/global.js b/presets/lara/global.js new file mode 100755 index 0000000..e925008 --- /dev/null +++ b/presets/lara/global.js @@ -0,0 +1,90 @@ +export default { + css: ` + *[data-pd-ripple="true"]{ + overflow: hidden; + position: relative; + } + span[data-p-ink-active="true"]{ + animation: ripple 0.4s linear; + } + @keyframes ripple { + 100% { + opacity: 0; + transform: scale(2.5); + } + } + + .progress-spinner-circle { + stroke-dasharray: 89, 200; + stroke-dashoffset: 0; + animation: p-progress-spinner-dash 1.5s ease-in-out infinite, p-progress-spinner-color 6s ease-in-out infinite; + stroke-linecap: round; + } + + @keyframes p-progress-spinner-dash{ + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } + } + @keyframes p-progress-spinner-color { + 100%, 0% { + stroke: #ff5757; + } + 40% { + stroke: #696cff; + } + 66% { + stroke: #1ea97c; + } + 80%, 90% { + stroke: #cc8925; + } + } + + .progressbar-value-animate::after { + will-change: left, right; + animation: p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + } + .progressbar-value-animate::before { + will-change: left, right; + animation: p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + } + @keyframes p-progressbar-indeterminate-anim { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } + } + + .p-fadein { + animation: p-fadein 250ms linear; + } + + @keyframes p-fadein { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } +` +} diff --git a/presets/lara/iconfield/index.js b/presets/lara/iconfield/index.js new file mode 100755 index 0000000..b1bae4a --- /dev/null +++ b/presets/lara/iconfield/index.js @@ -0,0 +1,22 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + '[&>input]:w-full', + + '[&>*:first-child]:absolute', + '[&>*:first-child]:top-1/2', + '[&>*:first-child]:-mt-2', + '[&>*:first-child]:leading-none', + '[&>*:first-child]:text-surface-900/60 dark:[&>*:first-child]:text-white/60', + { + '[&>*:first-child]:right-3': props.iconPosition === 'right', + '[&>*:first-child]:left-3': props.iconPosition === 'left' + }, + { + '[&>*:last-child]:pr-10': props.iconPosition === 'right', + '[&>*:last-child]:pl-10': props.iconPosition === 'left' + } + ] + }) +} diff --git a/presets/lara/image/index.js b/presets/lara/image/index.js new file mode 100755 index 0000000..c337907 --- /dev/null +++ b/presets/lara/image/index.js @@ -0,0 +1,206 @@ +export default { + root: { + class: 'relative inline-block' + }, + button: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'absolute', + + // Shape + 'inset-0 opacity-0 transition-opacity duration-300', + + // Color + 'bg-transparent text-surface-100', + + // States + 'hover:opacity-100 hover:cursor-pointer hover:bg-black/50 hover:bg-opacity-50' + ] + }, + mask: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'fixed top-0 left-0', + + // Sizing + 'w-full h-full', + + // Color + 'bg-black/90' + ] + }, + toolbar: { + class: [ + // Flexbox + 'flex', + + // Positioning + 'absolute top-0 right-0', + + // Spacing + 'p-4' + ] + }, + rotaterightbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotaterighticon: { + class: 'w-6 h-6' + }, + rotateleftbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotatelefticon: { + class: 'w-6 h-6' + }, + zoomoutbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoomouticon: { + class: 'w-6 h-6' + }, + zoominbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoominicon: { + class: 'w-6 h-6' + }, + closebutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + closeicon: { + class: 'w-6 h-6' + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +} diff --git a/presets/lara/index.js b/presets/lara/index.js new file mode 100755 index 0000000..e715c08 --- /dev/null +++ b/presets/lara/index.js @@ -0,0 +1,207 @@ +import accordion from './accordion' +import autocomplete from './autocomplete' +import avatar from './avatar' +import avatargroup from './avatargroup' +import badge from './badge' +import badgedirective from './badgedirective' +import blockui from './blockui' +import breadcrumb from './breadcrumb' +import button from './button' +import calendar from './calendar' +import card from './card' +import carousel from './carousel' +import cascadeselect from './cascadeselect' +import checkbox from './checkbox' +import chip from './chip' +import chips from './chips' +import colorpicker from './colorpicker' +import confirmpopup from './confirmpopup' +import contextmenu from './contextmenu' +import datatable from './datatable' +import dataview from './dataview' +import dataviewlayoutoptions from './dataviewlayoutoptions' +import deferred from './deferred' +import dialog from './dialog' +import divider from './divider' +import dock from './dock' +import dropdown from './dropdown' +import fieldset from './fieldset' +import fileupload from './fileupload' +import floatlabel from './floatlabel' +import galleria from './galleria' +import global from './global' +import iconfield from './iconfield' +import image from './image' +import inlinemessage from './inlinemessage' +import inplace from './inplace' +import inputgroup from './inputgroup' +import inputgroupaddon from './inputgroupaddon' +import inputmask from './inputmask' +import inputnumber from './inputnumber' +import inputotp from './inputotp' +import inputswitch from './inputswitch' +import inputtext from './inputtext' +import knob from './knob' +import listbox from './listbox' +import megamenu from './megamenu' +import menu from './menu' +import menubar from './menubar' +import message from './message' +import metergroup from './metergroup' +import multiselect from './multiselect' +import orderlist from './orderlist' +import organizationchart from './organizationchart' +import overlaypanel from './overlaypanel' +import paginator from './paginator' +import panel from './panel' +import panelmenu from './panelmenu' +import password from './password' +import picklist from './picklist' +import progressbar from './progressbar' +import progressspinner from './progressspinner' +import radiobutton from './radiobutton' +import rating from './rating' +import ripple from './ripple' +import scrollpanel from './scrollpanel' +import scrolltop from './scrolltop' +import selectbutton from './selectbutton' +import sidebar from './sidebar' +import skeleton from './skeleton' +import slider from './slider' +import speeddial from './speeddial' +import splitbutton from './splitbutton' +import splitter from './splitter' +import splitterpanel from './splitterpanel' +import stepper from './stepper' +import steps from './steps' +import tabmenu from './tabmenu' +import tabview from './tabview' +import tag from './tag' +import terminal from './terminal' +import textarea from './textarea' +import tieredmenu from './tieredmenu' +import timeline from './timeline' +import toast from './toast' +import togglebutton from './togglebutton' +import toolbar from './toolbar' +import tooltip from './tooltip' +import tree from './tree' +import treeselect from './treeselect' +import treetable from './treetable' +import tristatecheckbox from './tristatecheckbox' + +export default { + global, + directives: { + badge: badgedirective, + ripple, + tooltip + }, + + //forms + autocomplete, + dropdown, + inputnumber, + inputtext, + calendar, + checkbox, + radiobutton, + inputswitch, + selectbutton, + slider, + chips, + rating, + multiselect, + togglebutton, + cascadeselect, + listbox, + colorpicker, + inputgroup, + inputgroupaddon, + inputmask, + knob, + treeselect, + tristatecheckbox, + textarea, + password, + iconfield, + floatlabel, + inputotp, + + //buttons + button, + splitbutton, + speeddial, + + //data + paginator, + datatable, + tree, + dataview, + dataviewlayoutoptions, + organizationchart, + orderlist, + picklist, + treetable, + timeline, + + //panels + accordion, + panel, + fieldset, + card, + tabview, + divider, + toolbar, + scrollpanel, + splitter, + splitterpanel, + stepper, + deferred, + + //file + fileupload, + + //menu + contextmenu, + menu, + menubar, + steps, + tieredmenu, + breadcrumb, + panelmenu, + megamenu, + dock, + tabmenu, + + //overlays + dialog, + overlaypanel, + sidebar, + confirmpopup, + + //messages + message, + inlinemessage, + toast, + + //media + carousel, + galleria, + image, + + //misc + badge, + avatar, + avatargroup, + tag, + chip, + progressbar, + skeleton, + scrolltop, + terminal, + blockui, + metergroup, + inplace, + progressspinner +} diff --git a/presets/lara/inlinemessage/index.js b/presets/lara/inlinemessage/index.js new file mode 100755 index 0000000..51eacb6 --- /dev/null +++ b/presets/lara/inlinemessage/index.js @@ -0,0 +1,36 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-flex items-center justify-center align-top gap-2', + 'p-3 m-0 rounded-md dark:border', + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': props.severity == 'success', + 'bg-orange-100/70 dark:bg-orange-500/20': props.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.severity == 'error' + }, + { + 'dark:border-blue-400': props.severity == 'info', + 'dark:border-green-400': props.severity == 'success', + 'dark:border-orange-400': props.severity == 'warn', + 'dark:border-red-400': props.severity == 'error' + }, + { + 'text-blue-700 dark:text-blue-300': props.severity == 'info', + 'text-green-700 dark:text-green-300': props.severity == 'success', + 'text-orange-700 dark:text-orange-300': props.severity == 'warn', + 'text-red-700 dark:text-red-300': props.severity == 'error' + } + ] + }), + icon: { + class: 'text-base' + }, + text: { + class: [ + // Font and Text + 'text-base leading-none', + 'font-medium' + ] + } +} diff --git a/presets/lara/inplace/index.js b/presets/lara/inplace/index.js new file mode 100755 index 0000000..248cf5a --- /dev/null +++ b/presets/lara/inplace/index.js @@ -0,0 +1,27 @@ +export default { + display: { + class: [ + // Display + 'inline', + + // Spacing + 'p-3', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 hover:text-surface-700 dark:hover:bg-surface-700/80 dark:hover:text-white/80', + + // Transitions + 'transition', + 'duration-200', + + // Misc + 'cursor-pointer' + ] + } +} diff --git a/presets/lara/inputgroup/index.js b/presets/lara/inputgroup/index.js new file mode 100755 index 0000000..27d877e --- /dev/null +++ b/presets/lara/inputgroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: ['flex items-stretch', 'w-full'] + } +} diff --git a/presets/lara/inputgroupaddon/index.js b/presets/lara/inputgroupaddon/index.js new file mode 100755 index 0000000..2831d7f --- /dev/null +++ b/presets/lara/inputgroupaddon/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex + 'flex items-center justify-center', + + // Shape + 'first:rounded-l-md', + 'last:rounded-r-md', + 'border-y', + + 'last:border-r', + 'border-l', + 'border-r-0', + + // Space + 'p-3', + + // Size + 'min-w-[3rem]', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-400', + 'border-surface-300 dark:border-surface-600' + ] + } +} diff --git a/presets/lara/inputmask/index.js b/presets/lara/inputmask/index.js new file mode 100755 index 0000000..519cc24 --- /dev/null +++ b/presets/lara/inputmask/index.js @@ -0,0 +1,37 @@ +export default { + root: ({ context, props }) => ({ + class: [ + // Font + 'font-sans leading-none', + + // Spacing + 'm-0 p-3', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': + !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Misc + 'rounded-md', + 'appearance-none', + 'transition-colors duration-200' + ] + }) +} diff --git a/presets/lara/inputnumber/index.js b/presets/lara/inputnumber/index.js new file mode 100755 index 0000000..d617008 --- /dev/null +++ b/presets/lara/inputnumber/index.js @@ -0,0 +1,253 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Flex + 'inline-flex', + { 'flex-col': props.showButtons && props.buttonLayout == 'vertical' }, + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Shape + { + 'first:rounded-l-md rounded-none last:rounded-r-md': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + { + 'border-0 border-y border-l last:border-r border-surface-300 dark:border-surface-600': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + { + 'first:ml-0 -ml-px': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + + //Sizing + { '!w-16': props.showButtons && props.buttonLayout == 'vertical' } + ] + }), + input: { + root: ({ parent, context }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Font + 'font-sans leading-none', + + //Text + { + 'text-center': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + // Spacing + 'p-3', + 'm-0', + + // Shape + 'rounded-lg', + { 'rounded-tr-none rounded-br-none': parent.props.showButtons }, + { + 'rounded-tl-none rounded-bl-none': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'rounded-none': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + { + '!rounded-none': + parent.instance.$parentInstance?.$name == 'InputGroup' && + !parent.props.showButtons + }, + { + 'border-0': + parent.instance.$parentInstance?.$name == 'InputGroup' && + !parent.props.showButtons + }, + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !parent.props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': parent.props.invalid }, + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': + !parent.props.invalid + }, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50 focus:z-10', + { + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled }, + + //Position + { + 'order-2': + parent.props.buttonLayout == 'horizontal' || + parent.props.buttonLayout == 'vertical' + } + ] + }) + }, + buttongroup: ({ props }) => ({ + class: [ + // Flex + 'flex', + 'flex-col' + ] + }), + + incrementbutton: { + root: ({ parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { + 'order-3': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'order-1': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + //Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Sizing + 'w-[3rem]', + { + 'px-4 py-3': + parent.props.showButtons && parent.props.buttonLayout !== 'stacked' + }, + { + 'p-0': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'w-full': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + // Shape + 'rounded-md', + { + 'rounded-tl-none rounded-br-none rounded-bl-none': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'rounded-bl-none rounded-tl-none': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'rounded-bl-none rounded-br-none': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + //States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: 'h-0 w-0' + } + }, + decrementbutton: { + root: ({ parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { + 'order-1': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'order-3': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + //Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Sizing + 'w-[3rem]', + { + 'px-4 py-3': + parent.props.showButtons && parent.props.buttonLayout !== 'stacked' + }, + { + 'p-0': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'w-full': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + // Shape + 'rounded-md', + { + 'rounded-tr-none rounded-tl-none rounded-bl-none': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'rounded-tr-none rounded-br-none ': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'rounded-tr-none rounded-tl-none ': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + //States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: 'h-0 w-0' + } + } +} diff --git a/presets/lara/inputotp/index.js b/presets/lara/inputotp/index.js new file mode 100755 index 0000000..18bfbcb --- /dev/null +++ b/presets/lara/inputotp/index.js @@ -0,0 +1,72 @@ +export default { + root: { + class: [ + // Alignment + 'flex items-center', + 'gap-2' + ] + }, + input: { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'font-sans leading-none', + + // Flex & Alignment + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + 'text-center', + + // Spacing + 'm-0', + { + 'p-3': props.size == null + }, + + // Size + 'w-10', + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { + 'first:rounded-l-md rounded-none last:rounded-r-md': + parent.instance.$name == 'InputGroup' + }, + { + 'border-0 border-y border-l last:border-r': + parent.instance.$name == 'InputGroup' + }, + { + 'first:ml-0 ml-[-1px]': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': + !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50 focus:z-10': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) + } +} diff --git a/presets/lara/inputswitch/index.js b/presets/lara/inputswitch/index.js new file mode 100755 index 0000000..719aa10 --- /dev/null +++ b/presets/lara/inputswitch/index.js @@ -0,0 +1,93 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-block relative', + 'w-12 h-7', + 'rounded-2xl', + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + slider: ({ props }) => ({ + class: [ + // Position + 'absolute top-0 left-0 right-0 bottom-0', + { + 'before:transform before:translate-x-5': + props.modelValue == props.trueValue + }, + + // Shape + 'rounded-2xl', + + // Before: + 'before:absolute before:top-1/2 before:left-1', + 'before:-mt-2.5', + 'before:h-5 before:w-5', + 'before:rounded-full', + 'before:duration-200', + 'before:bg-surface-0 before:dark:bg-surface-900', + + // Colors + 'border', + { + 'bg-surface-200 dark:bg-surface-700': !( + props.modelValue == props.trueValue + ), + 'bg-primary-500 dark:bg-primary-400': + props.modelValue == props.trueValue + }, + + { 'border-transparent': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:bg-surface-300 dark:peer-hover:bg-surface-600 ': + !(props.modelValue == props.trueValue) && !props.disabled + }, + { + 'peer-hover:bg-primary-600 dark:peer-hover:bg-surface-300 ': + props.modelValue == props.trueValue && !props.disabled + }, + 'peer-focus-visible:ring peer-focus-visible:ring-primary-400/50 dark:peer-focus-visible:ring-primary-300/50', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-[2.5rem]', + 'outline-none', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + } +} diff --git a/presets/lara/inputtext/index.js b/presets/lara/inputtext/index.js new file mode 100755 index 0000000..5b2d2e0 --- /dev/null +++ b/presets/lara/inputtext/index.js @@ -0,0 +1,61 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'font-sans leading-none', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { + 'px-4 py-4': props.size == 'large', + 'px-2 py-2': props.size == 'small', + 'p-3': props.size == null + }, + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { + 'first:rounded-l-md rounded-none last:rounded-r-md': + parent.instance.$name == 'InputGroup' + }, + { + 'border-0 border-y border-l last:border-r': + parent.instance.$name == 'InputGroup' + }, + { + 'first:ml-0 -ml-px': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': + !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50 focus:z-10': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +} diff --git a/presets/lara/knob/index.js b/presets/lara/knob/index.js new file mode 100755 index 0000000..41fe50d --- /dev/null +++ b/presets/lara/knob/index.js @@ -0,0 +1,47 @@ +export default { + root: ({ props }) => ({ + class: [ + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + range: { + class: [ + // Stroke + 'stroke-current', + + // Color + 'stroke-surface-200 dark:stroke-surface-700', + + // Fill + 'fill-none', + + // Transition + 'transition duration-100 ease-in' + ] + }, + value: { + class: [ + // Animation + 'animate-dash-frame', + + // Color + 'stroke-primary-500 dark:stroke-primary-400', + + // Fill + 'fill-none' + ] + }, + label: { + class: [ + // Text Style + 'text-center text-xl', + + // Color + 'fill-surface-600 dark:fill-surface-200' + ] + } +} diff --git a/presets/lara/listbox/index.js b/presets/lara/listbox/index.js new file mode 100755 index 0000000..7387daf --- /dev/null +++ b/presets/lara/listbox/index.js @@ -0,0 +1,170 @@ +export default { + root: ({ props }) => ({ + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid } + ] + }), + wrapper: { + class: [ + // Overflow + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-surface-200 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-100 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + context.focused && context.selected + }, + { + 'bg-primary-50 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.focused && !context.selected + }, + { + 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': + context.focused && !context.selected + }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + header: { + class: [ + // Spacing + 'py-3 px-5', + 'm-0', + + //Shape + 'border-b', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-100 dark:bg-surface-800', + 'border-surface-300 dark:border-surface-600' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'font-sans', + 'leading-none', + + // Sizing + 'pr-7 py-3 px-3', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-300', + 'focus:ring focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + } +} diff --git a/presets/lara/megamenu/index.js b/presets/lara/megamenu/index.js new file mode 100755 index 0000000..1772ef0 --- /dev/null +++ b/presets/lara/megamenu/index.js @@ -0,0 +1,207 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + + // Shape & Size + 'rounded-md', + + // Color + 'bg-surface-50 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700', + { + 'p-2 items-center': props.orientation == 'horizontal', + 'flex-col sm:w-48 p-0 py-1': props.orientation !== 'horizontal' + } + ] + }), + menu: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0', + 'py-1 sm:py-0 sm:p-0', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-700 sm:bg-transparent dark:sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + menuitem: ({ props }) => ({ + class: [ + 'sm:relative static', + { + 'sm:w-auto w-full': props.horizontal, + 'w-full': !props.horizontal + } + ] + }), + content: ({ props, context }) => ({ + class: [ + // Shape + { 'rounded-md': props.level < 1 && props.horizontal }, + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': + context.focused && !context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + context.focused && context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-500/50 dark:hover:bg-primary-300/30 text-primary-700 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Size + 'py-3 pr-5 pl-9 sm:pl-5', + 'leading-none', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }, + icon: { + class: 'mr-2' + }, + submenuicon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.horizontal, + 'ml-auto': !props.horizontal + } + ] + }), + panel: ({ props }) => ({ + class: [ + // Size + 'w-auto', + + // Spacing + 'py-1', + 'm-0', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + { + 'sm:left-full top-0': !props.horizontal + } + ] + }), + grid: { + class: 'flex flex-wrap sm:flex-nowrap' + }, + column: { + class: 'w-full sm:w-1/2' + }, + submenu: { + class: ['m-0 list-none', 'py-1 px-2 w-full sm:min-w-[14rem]'] + }, + submenuheader: { + class: [ + 'font-semibold', + + // Spacing + 'py-3 px-5', + 'm-0', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + menubutton: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-8', + 'h-8', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-100 dark:hover:bg-surface-600/80', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +} diff --git a/presets/lara/menu/index.js b/presets/lara/menu/index.js new file mode 100755 index 0000000..f6f9629 --- /dev/null +++ b/presets/lara/menu/index.js @@ -0,0 +1,98 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + // Spacing + 'py-2', + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white/80', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-none', + // Colors + 'text-surface-700 dark:text-white/80', + { + 'bg-surface-200 text-surface-700 dark:bg-surface-300/10 dark:text-white': + context.focused + }, + // Transitions + 'transition-shadow', + 'duration-200', + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:bg-surface-700 dark:hover:bg-surface-400/10' + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenuheader: { + class: [ + // Font + 'font-bold', + // Spacing + 'm-0', + 'py-3 px-5', + // Shape + 'rounded-tl-none', + 'rounded-tr-none', + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/menubar/index.js b/presets/lara/menubar/index.js new file mode 100755 index 0000000..bb0de49 --- /dev/null +++ b/presets/lara/menubar/index.js @@ -0,0 +1,181 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'p-2', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-50 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0', + 'py-1 sm:py-0 sm:p-0', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-700 sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + menuitem: { + class: 'sm:relative sm:w-auto w-full static' + }, + content: ({ props, context }) => ({ + class: [ + // Shape + { 'rounded-md': props.root }, + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': + context.focused && !context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + context.focused && context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-500/50 dark:hover:bg-primary-300/30 text-primary-700 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + action: ({ context }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Size + { + 'pl-9 sm:pl-5': context.level === 1, + 'pl-14 sm:pl-5': context.level === 2 + }, + 'leading-none', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }), + icon: { + class: 'mr-2' + }, + submenuicon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.root, + 'ml-auto': !props.root + } + ] + }), + submenu: ({ props }) => ({ + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }), + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + button: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-8', + 'h-8', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-100 dark:hover:bg-surface-600/80', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +} diff --git a/presets/lara/message/index.js b/presets/lara/message/index.js new file mode 100755 index 0000000..37c1a85 --- /dev/null +++ b/presets/lara/message/index.js @@ -0,0 +1,87 @@ +export default { + root: ({ props }) => ({ + class: [ + // Spacing and Shape + 'my-4 mx-0', + 'rounded-md', + 'border-solid border-0 border-l-[6px]', + + // Colors + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': props.severity == 'success', + 'bg-orange-100/70 dark:bg-orange-500/20': props.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.severity == 'error' + }, + { + 'border-blue-500 dark:border-blue-400': props.severity == 'info', + 'border-green-500 dark:border-green-400': props.severity == 'success', + 'border-orange-500 dark:border-orange-400': props.severity == 'warn', + 'border-red-500 dark:border-red-400': props.severity == 'error' + }, + { + 'text-blue-700 dark:text-blue-300': props.severity == 'info', + 'text-green-700 dark:text-green-300': props.severity == 'success', + 'text-orange-700 dark:text-orange-300': props.severity == 'warn', + 'text-red-700 dark:text-red-300': props.severity == 'error' + } + ] + }), + wrapper: { + class: [ + // Flexbox + 'flex items-center', + + // Spacing + 'py-5 px-7' + ] + }, + icon: { + class: [ + // Sizing and Spacing + 'w-6 h-6', + 'text-lg leading-none mr-2 shrink-0' + ] + }, + text: { + class: [ + // Font and Text + 'text-base leading-none', + 'font-medium' + ] + }, + button: { + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-8 h-8', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-0/50 dark:hover:bg-surface-0/10', + + // Misc + 'overflow-hidden' + ] + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-300', + leaveFromClass: 'max-h-40', + leaveActiveClass: 'overflow-hidden transition-all duration-300 ease-in', + leaveToClass: 'max-h-0 opacity-0 !m-0' + } +} diff --git a/presets/lara/metergroup/index.js b/presets/lara/metergroup/index.js new file mode 100755 index 0000000..b2925b0 --- /dev/null +++ b/presets/lara/metergroup/index.js @@ -0,0 +1,109 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex gap-4', + + { + 'flex-col': props.orientation == 'horizontal', + 'flex-row': props.orientation == 'vertical' + } + ] + }), + metercontainer: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + { 'flex-col': props.orientation === 'vertical' }, + + // Sizing + { 'w-2 h-full': props.orientation === 'vertical' }, + { 'h-2': props.orientation === 'horizontal' }, + + // Colors + 'bg-gray-200 dark:bg-gray-700', + + // Border Radius + 'rounded-lg' + ] + }), + meter: ({ props }) => ({ + class: [ + // Shape + 'border-0', + + // Rounded Corners - Horizontal + { + 'first:rounded-l-lg last:rounded-r-lg': + props.orientation === 'horizontal' + }, + + // Rounded Corners - Vertical + { + 'first:rounded-t-lg last:rounded-b-lg': props.orientation === 'vertical' + }, + + // Colors + 'bg-primary-500 dark:bg-primary-400' + ] + }), + labellist: ({ props }) => ({ + class: [ + // Display & Flexbox + 'flex flex-wrap', + + { 'gap-4': props.labelOrientation === 'horizontal' }, + + { 'gap-2': props.labelOrientation === 'vertical' }, + + { 'flex-col': props.labelOrientation === 'vertical' }, + + // Conditional Alignment - Horizontal + { + 'align-end': + props.labelOrientation === 'horizontal' && + props.labelPosition === 'end', + 'align-start': + props.labelOrientation === 'horizontal' && + props.labelPosition === 'start' + }, + + // Conditional Alignment - Vertical + { + 'justify-end': + props.labelOrientation === 'vertical' && + props.labelPosition === 'end', + 'justify-start': + props.labelOrientation === 'vertical' && + props.labelPosition === 'start' + }, + + // List Styling + 'm-0 p-0 list-none' + ] + }), + labellistitem: { + class: [ + // Flexbox + 'inline-flex', + 'items-center', + 'gap-2' + ] + }, + labellisttype: { + class: [ + // Display + 'inline-flex', + + // Background Color + 'bg-primary-500 dark:bg-primary-400', + + // Size + 'w-2 h-2', + + // Rounded Shape + 'rounded-full' + ] + } +} diff --git a/presets/lara/multiselect/index.js b/presets/lara/multiselect/index.js new file mode 100755 index 0000000..45a0c98 --- /dev/null +++ b/presets/lara/multiselect/index.js @@ -0,0 +1,587 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-300': !props.invalid + }, + { + 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': + state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none', + { + 'opacity-60': props.disabled, + 'pointer-events-none': props.disabled, + 'cursor-default': props.disabled + } + ] + }), + labelContainer: { + class: 'overflow-hidden flex flex-auto cursor-pointer ' + }, + label: ({ props }) => ({ + class: [ + 'leading-none', + 'block ', + + // Spacing + { + 'p-3': props.display !== 'chip', + 'py-3 px-3': props.display === 'chip' && !props?.modelValue?.length, + 'py-1.5 px-3': props.display === 'chip' && props?.modelValue?.length > 0 + }, + + // Color + { + 'text-surface-800 dark:text-white/80': props.modelValue?.length, + 'text-surface-400 dark:text-surface-500': !props.modelValue?.length + }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }), + token: { + class: [ + // Flex + 'inline-flex items-center', + + // Spacings + 'py-1.5 px-3 mr-2', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'bg-surface-200 dark:bg-surface-700', + 'text-surface-700 dark:text-white/70', + + // Misc + 'cursor-default' + ] + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + header: { + class: [ + 'flex items-center justify-between', + // Spacing + 'py-3 px-5', + 'm-0', + + //Shape + 'border-b', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-100 dark:bg-surface-800', + 'border-surface-300 dark:border-surface-700' + ] + }, + headerCheckboxContainer: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + headerCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.checked, + 'peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + itemCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.checked, + 'peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: 'w-4 h-4 inline-block' + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Flexbox + 'flex items-center', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-surface-200 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-100 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + context.focused && context.selected + }, + { + 'bg-primary-50 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.focused && !context.selected + }, + { + 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': + context.focused && !context.selected + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + + // Spacing + 'm-0', + 'p-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + filtercontainer: { + class: 'relative w-full mx-2' + }, + filterinput: { + class: [ + // Font + 'font-sans', + 'leading-none', + + // Sizing + 'pr-7 py-3 px-3', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-300', + 'focus:ring focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + clearicon: { + class: [ + // Color + 'text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/orderlist/index.js b/presets/lara/orderlist/index.js new file mode 100755 index 0000000..fb7309c --- /dev/null +++ b/presets/lara/orderlist/index.js @@ -0,0 +1,266 @@ +export default { + root: { + class: [ + // Flexbox + 'flex' + ] + }, + controls: { + class: [ + // Flexbox & Alignment + 'flex flex-col justify-center gap-2', + + // Spacing + 'p-5' + ] + }, + moveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + container: { + class: ['flex-auto'] + }, + header: { + class: [ + 'font-bold', + + // Shape + 'border-b-0 rounded-t-md', + + // Spacing + 'p-5', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700' + ] + }, + list: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + item: ({ context }) => ({ + class: [ + // Position + 'relative', + + // Spacing + 'py-3 px-5 m-0', + + // Shape + 'border-none', + + // Transition + 'transition duration-200', + + // Color + 'text-surface-700 dark:text-white/80', + { + 'bg-primary-500/20 dark:bg-primary-300/20': + context.active && !context.focused + }, + { + 'bg-primary-500/30 dark:bg-primary-400/30': + context.active && context.focused + }, + { + 'bg-surface-100 dark:bg-surface-700/70': + !context.active && context.focused + }, + + // State + 'hover:bg-surface-100 dark:hover:bg-surface-700', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }) +} diff --git a/presets/lara/organizationchart/index.js b/presets/lara/organizationchart/index.js new file mode 100755 index 0000000..7d87ffe --- /dev/null +++ b/presets/lara/organizationchart/index.js @@ -0,0 +1,140 @@ +export default { + table: { + class: [ + // Spacing & Position + 'mx-auto my-0', + + // Table Style + 'border-spacing-0 border-separate' + ] + }, + cell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + node: ({ props, context }) => ({ + class: [ + 'relative inline-block', + + // Spacing + 'p-5', + + // Shape + 'border', + + // Color + { + 'text-surface-600 dark:text-white/80': !context?.selected, + 'bg-surface-0 dark:bg-surface-800': !context?.selected, + 'border-surface-200 dark:border-surface-700': !context?.selected, + 'text-primary-700 dark:text-surface-0': context?.selected, + 'bg-primary-50 dark:bg-primary-400/30': context?.selected, + 'border-primary-200 dark:border-primary-600': context?.selected + }, + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-700': + context?.selectable && !context?.selected, + 'hover:bg-primary-100 dark:hover:bg-primary-300/30': + context?.selectable && context?.selected + }, + + { 'cursor-pointer': context?.selectable } + ] + }), + linecell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + linedown: { + class: [ + // Spacing + 'mx-auto my-0', + + // Size + 'w-px h-[20px]', + + // Color + 'bg-surface-200 dark:bg-surface-700' + ] + }, + lineleft: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none border-r', + { 'border-t': context.lineTop }, + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }), + lineright: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none', + + // Color + { 'border-t border-surface-200 dark:border-surface-700': context.lineTop } + ] + }), + nodecell: { + class: 'text-center align-top py-0 px-3' + }, + nodetoggler: { + class: [ + // Position + 'absolute bottom-[-0.75rem] left-2/4 -ml-3', + 'z-20', + + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-6 h-6', + + // Shape + 'rounded-full', + + // Color + 'bg-inherit text-inherit', + + // Focus + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'cursor-pointer no-underline select-none' + ] + }, + nodetogglericon: { + class: [ + // Position + 'relative inline-block', + + // Size + 'w-4 h-4' + ] + } +} diff --git a/presets/lara/overlaypanel/index.js b/presets/lara/overlaypanel/index.js new file mode 100755 index 0000000..66415b8 --- /dev/null +++ b/presets/lara/overlaypanel/index.js @@ -0,0 +1,41 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md shadow-lg', + 'border-0 dark:border', + + // Position + 'absolute left-0 top-0 mt-2', + 'z-40 transform origin-center', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + 'dark:border-surface-700', + + // Before: Triangle + 'before:absolute before:-top-[9px] before:-ml-[9px] before:left-[calc(var(--overlayArrowLeft,0)+1.25rem)] z-0', + 'before:w-0 before:h-0', + 'before:border-transparent before:border-solid', + 'before:border-x-[8px] before:border-[8px]', + 'before:border-t-0 before:border-b-surface-300/10 dark:before:border-b-surface-700', + + 'after:absolute after:-top-2 after:-ml-[8px] after:left-[calc(var(--overlayArrowLeft,0)+1.25rem)]', + 'after:w-0 after:h-0', + 'after:border-transparent after:border-solid', + 'after:border-x-[0.5rem] after:border-[0.5rem]', + 'after:border-t-0 after:border-b-surface-0 dark:after:border-b-surface-800' + ] + }, + content: { + class: 'p-5 items-center flex' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/paginator/index.js b/presets/lara/paginator/index.js new file mode 100755 index 0000000..5166459 --- /dev/null +++ b/presets/lara/paginator/index.js @@ -0,0 +1,590 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-center flex-wrap', + + // Spacing + 'px-4 py-2', + + // Shape + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-500 dark:text-white/60' + ] + }, + firstpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + previouspagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + nextpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + lastpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + pagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/80', + { + 'bg-primary-50 border-primary-50 dark:border-transparent text-primary-700 dark:text-surface-0 dark:bg-primary-400/30': + context.active + }, + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': + !context.disabled && !context.active, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + rowperpagedropdown: { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'h-12', + 'rounded-md', + + // Spacing + 'mx-2', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-300', + { + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none', + { + 'opacity-60': props.disabled, + 'pointer-events-none': props.disabled, + 'cursor-default': props.disabled + } + ] + }), + input: { + class: [ + //Font + 'font-sans', + 'leading-5', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + + // Sizing and Spacing + 'w-[1%]', + 'p-3 pr-0', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-surface-50 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-100 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + context.focused && context.selected + }, + { + 'bg-primary-50 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.focused && !context.selected + }, + { + 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': + context.focused && !context.selected + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + jumptopageinput: { + root: { + class: 'inline-flex mx-2' + }, + input: { + root: { + class: [ + 'relative', + + //Font + 'font-sans', + 'leading-none', + + // Display + 'block', + 'flex-auto', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-600', + + // Sizing and Spacing + 'w-[1%] max-w-[3rem]', + 'p-3 m-0', + + //Shape + 'rounded-md', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-400', + 'focus:outline-none focus:shadow-none', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50', + + // Misc + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + } + } + }, + jumptopagedropdown: { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'h-12', + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-300', + { + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none', + { + 'opacity-60': props.disabled, + 'pointer-events-none': props.disabled, + 'cursor-default': props.disabled + } + ] + }), + input: { + class: [ + //Font + 'font-sans', + 'leading-none', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + + // Sizing and Spacing + 'w-[1%]', + 'p-3', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-surface-50 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-100 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + context.focused && context.selected + }, + { + 'bg-primary-50 dark:bg-primary-400/40 text-primary-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': + !context.focused && !context.selected + }, + { + 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': + context.focused && !context.selected + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + start: { + class: 'mr-auto' + }, + end: { + class: 'ml-auto' + } +} diff --git a/presets/lara/panel/index.js b/presets/lara/panel/index.js new file mode 100755 index 0000000..b794e50 --- /dev/null +++ b/presets/lara/panel/index.js @@ -0,0 +1,93 @@ +export default { + header: ({ props }) => ({ + class: [ + // Flex + 'flex items-center justify-between', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'bg-surface-50 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + + //Shape + 'rounded-tl-lg rounded-tr-lg', + + // Conditional Spacing + { 'p-5': !props.toggleable, 'py-3 px-5': props.toggleable } + ] + }), + title: { + class: 'leading-none font-bold' + }, + toggler: { + class: [ + // Alignments + 'inline-flex items-center justify-center', + 'relative', + + // Sized + 'w-8 h-8', + 'm-0 p-0', + + //Shape + 'border-0 rounded-full', + + //Color + 'bg-transparent', + 'text-surface-600 dark:text-surface-0/80', + + // States + 'hover:text-surface-800 dark:hover:text-surface-0/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus-visible:ring focus-visible:ring-primary-400/50 focus-visible:ring-inset dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-all duration-200 ease-in-out', + + // Misc + 'overflow-hidden no-underline', + 'cursor-pointer' + ] + }, + togglerIcon: { + class: 'inline-block' + }, + content: { + class: [ + // Spacing + 'p-5', + + // Shape + 'border border-t-0 last:rounded-br-lg last:rounded-bl-lg', + + //Color + 'border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + footer: { + class: [ + // Spacing + 'py-3 p-5', + + // Shape + 'border border-t-0 rounded-br-lg rounded-bl-lg', + + //Color + 'border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +} diff --git a/presets/lara/panelmenu/index.js b/presets/lara/panelmenu/index.js new file mode 100755 index 0000000..62a0934 --- /dev/null +++ b/presets/lara/panelmenu/index.js @@ -0,0 +1,139 @@ +export default { + panel: { + class: 'mb-1' + }, + header: { + class: [ + 'rounded-md', + 'outline-none', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50' + ] + }, + headercontent: ({ context, instance }) => ({ + class: [ + // Shape + 'rounded-t-md', + { + 'rounded-br-md rounded-bl-md': + !context.active || instance.activeItem?.items === undefined, + 'rounded-br-0 rounded-bl-0': + context.active && instance.activeItem?.items !== undefined + }, + + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-50 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-0/80', + { 'text-surface-900': context.active }, + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700/80', + 'hover:text-surface-900', + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200' + ] + }), + headeraction: { + class: [ + 'relative', + + // Font + 'font-bold', + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'p-5', + + // Misc + 'select-none cursor-pointer no-underline' + ] + }, + headerlabel: { + class: 'leading-none' + }, + headerIcon: { + class: 'mr-2' + }, + submenuicon: { + class: 'mr-2' + }, + menucontent: { + class: [ + // Spacing + 'py-2', + + // Shape + 'border border-t-0', + 'rounded-t-none rounded-br-md rounded-bl-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: ['outline-none', 'm-0 p-0 list-none'] + }, + content: { + class: [ + // Shape + 'border-none rounded-none', + + // Color + 'text-surface-700 dark:text-white/80', + + // Transition + 'transition-shadow duration-200' + ] + }, + action: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700/80 hover:text-surface-700 dark:hover:text-white/80', + { + 'bg-surface-200 text-surface-700 dark:text-white/80 dark:bg-surface-600/90': + context.focused + }, + + // Misc + 'cursor-pointer no-underline', + 'select-none overflow-hidden' + ] + }), + icon: { + class: 'mr-2' + }, + submenu: { + class: 'p-0 pl-4 m-0 list-none' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +} diff --git a/presets/lara/password/index.js b/presets/lara/password/index.js new file mode 100755 index 0000000..cb51449 --- /dev/null +++ b/presets/lara/password/index.js @@ -0,0 +1,140 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-flex relative', + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + }, + { '[&>input]:pr-10': props.toggleMask } + ] + }), + panel: { + class: [ + // Spacing + 'p-5', + + // Shape + 'border-0 dark:border', + 'shadow-md rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + meter: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-3', + + // Spacing + 'mb-2', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + meterlabel: ({ instance }) => ({ + class: [ + // Size + 'h-full', + + // Colors + { + 'bg-red-500 dark:bg-red-400/50': instance?.meter?.strength == 'weak', + 'bg-orange-500 dark:bg-orange-400/50': + instance?.meter?.strength == 'medium', + 'bg-green-500 dark:bg-green-400/50': + instance?.meter?.strength == 'strong' + }, + + // Transitions + 'transition-all duration-1000 ease-in-out' + ] + }), + showicon: { + class: [ + 'absolute top-1/2 right-3 -mt-2 z-10', + 'text-surface-600 dark:text-white/70' + ] + }, + hideicon: { + class: [ + 'absolute top-1/2 right-3 -mt-2 z-10', + 'text-surface-600 dark:text-white/70' + ] + }, + input: { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'font-sans leading-none', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { + 'px-4 py-4': props.size == 'large', + 'px-2 py-2': props.size == 'small', + 'p-3': props.size == null + }, + 'w-full', + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { + 'first:rounded-l-md rounded-none last:rounded-r-md': + parent.instance.$name == 'InputGroup' + }, + { + 'border-0 border-y border-l last:border-r': + parent.instance.$name == 'InputGroup' + }, + { + 'first:ml-0 -ml-px': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !parent.props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': parent.props.invalid }, + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': + !context.disabled && !parent.props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50 focus:z-10': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/picklist/index.js b/presets/lara/picklist/index.js new file mode 100755 index 0000000..e3b7066 --- /dev/null +++ b/presets/lara/picklist/index.js @@ -0,0 +1,659 @@ +export default { + root: { + class: [ + // Flexbox + 'flex lg:flex-row flex-col' + ] + }, + sourcecontrols: { + class: [ + // Flexbox & Alignment + 'flex lg:flex-col justify-center gap-2', + + // Spacing + 'p-5' + ] + }, + sourcemoveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcewrapper: { + class: 'grow shrink basis-2/4' + }, + sourceheader: { + class: [ + 'font-bold', + + // Shape + 'border-b-0 rounded-t-md', + + // Spacing + 'p-5', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700' + ] + }, + sourcelist: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + item: ({ context }) => ({ + class: [ + // Position + 'relative', + + // Spacing + 'py-3 px-5 m-0', + + // Shape + 'border-none', + + // Transition + 'transition duration-200', + + // Color + 'text-surface-700 dark:text-white/80', + { + 'bg-primary-500/20 dark:bg-primary-300/20': + context.active && !context.focused + }, + { + 'bg-primary-500/30 dark:bg-primary-400/30': + context.active && context.focused + }, + { + 'bg-surface-100 dark:bg-surface-700/70': + !context.active && context.focused + }, + + // State + 'hover:bg-surface-100 dark:hover:bg-surface-700', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }), + buttons: { + class: 'flex lg:flex-col justify-center gap-2 p-5' + }, + movetotargetbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movealltotargetbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movetosourcebutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movealltosourcebutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetcontrols: { + class: 'flex lg:flex-col justify-center gap-2 p-5' + }, + targetmoveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetwrapper: { + class: 'grow shrink basis-2/4' + }, + targetheader: { + class: [ + 'font-bold', + + // Shape + 'border-b-0 rounded-t-md', + + // Spacing + 'p-5', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700' + ] + }, + targetlist: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + transition: { + enterFromClass: '!transition-none', + enterActiveClass: '!transition-none', + leaveActiveClass: '!transition-none', + leaveToClass: '!transition-none' + } +} diff --git a/presets/lara/progressbar/index.js b/presets/lara/progressbar/index.js new file mode 100755 index 0000000..c21529c --- /dev/null +++ b/presets/lara/progressbar/index.js @@ -0,0 +1,61 @@ +export default { + root: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-6', + 'rounded-md', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + value: ({ props }) => ({ + class: [ + // Flexbox & Overflow & Position + { + 'absolute flex items-center justify-center overflow-hidden': + props.mode !== 'indeterminate' + }, + + // Colors + 'bg-primary-500 dark:bg-primary-400', + + // Spacing & Sizing + 'm-0', + { 'h-full w-0': props.mode !== 'indeterminate' }, + + // Shape + 'border-0', + + // Transitions + { + 'transition-width duration-1000 ease-in-out': + props.mode !== 'indeterminate', + 'progressbar-value-animate': props.mode == 'indeterminate' + }, + + // Before & After (indeterminate) + { + 'before:absolute before:top-0 before:left-0 before:bottom-0 before:bg-inherit ': + props.mode == 'indeterminate', + 'after:absolute after:top-0 after:left-0 after:bottom-0 after:bg-inherit after:delay-1000': + props.mode == 'indeterminate' + } + ] + }), + label: { + class: [ + // Flexbox + 'inline-flex', + + // Font and Text + 'text-white dark:text-surface-900', + 'leading-6' + ] + } +} diff --git a/presets/lara/progressspinner/index.js b/presets/lara/progressspinner/index.js new file mode 100755 index 0000000..01e445c --- /dev/null +++ b/presets/lara/progressspinner/index.js @@ -0,0 +1,51 @@ +export default { + root: { + class: [ + // Position + 'relative', + 'mx-auto', + + // Sizing + 'w-28', + 'h-28', + + // Flexbox + 'inline-block', + + // Pseudo-Elements + 'before:block', + 'before:pt-full' + ] + }, + spinner: { + class: [ + // Position + 'absolute', + 'top-0', + 'bottom-0', + 'left-0', + 'right-0', + 'm-auto', + + // Sizing + 'w-full', + 'h-full', + + // Transformations + 'transform', + 'origin-center', + + // Animations + 'animate-spin' + ] + }, + circle: { + class: [ + // Colors + 'text-red-500', + + // Misc + 'progress-spinner-circle' + ] + } +} diff --git a/presets/lara/radiobutton/index.js b/presets/lara/radiobutton/index.js new file mode 100755 index 0000000..c6405e8 --- /dev/null +++ b/presets/lara/radiobutton/index.js @@ -0,0 +1,116 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-[1.571rem] h-[1.571rem]', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-[1.571rem] h-[1.571rem]', + + // Shape + 'border-2', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { + 'text-surface-700 dark:text-white/80': + props.value !== props.modelValue && props.value !== undefined, + 'bg-surface-0 dark:bg-surface-900': + props.value !== props.modelValue && props.value !== undefined, + 'border-surface-300 dark:border-surface-700': + props.value !== props.modelValue && + props.value !== undefined && + !props.invalid, + 'border-primary-500 dark:border-primary-400': + props.value == props.modelValue && props.value !== undefined, + 'bg-primary-500 dark:bg-primary-400': + props.value == props.modelValue && props.value !== undefined + }, + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !props.invalid, + 'peer-hover:border-primary-600 dark:peer-hover:border-primary-300 peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300': + !props.disabled && + props.value == props.modelValue && + props.value !== undefined, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'opacity-60 cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ props }) => ({ + class: [ + 'block', + + // Shape + 'rounded-full', + + // Size + 'w-[0.857rem] h-[0.857rem]', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + + // Conditions + { + 'backface-hidden scale-10 invisible': props.value !== props.modelValue, + 'transform visible scale-[1.1]': props.value == props.modelValue + }, + + // Transition + 'transition duration-200' + ] + }) +} diff --git a/presets/lara/rating/index.js b/presets/lara/rating/index.js new file mode 100755 index 0000000..21006e7 --- /dev/null +++ b/presets/lara/rating/index.js @@ -0,0 +1,95 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'flex items-center', + 'gap-2', + + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + cancelitem: ({ context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + //State + { + 'outline-none ring ring-primary-500/50 dark:ring-primary-400/50': + context.focused + }, + + // Misc + 'cursor-pointer' + ] + }), + cancelicon: { + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-red-500 dark:text-red-400', + + // State + 'hover:text-red-600 dark:hover:text-red-300', + + // Transition + 'transition duration-200 ease-in' + ] + }, + item: ({ props, context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + // State + { + 'outline-none ring ring-primary-500/50 dark:ring-primary-400/50': + context.focused + }, + + // Misc + { + 'cursor-pointer': !props.readonly, + 'cursor-default': props.readonly + } + ] + }), + officon: ({ props }) => ({ + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-surface-700 dark:text-surface-0/80', + + // State + { 'hover:text-primary-500 dark:hover:text-primary-400': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }), + onicon: ({ props }) => ({ + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-primary-500 dark:text-primary-400', + + // State + { 'hover:text-primary-600 dark:hover:text-primary-300': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }) +} diff --git a/presets/lara/ripple/index.js b/presets/lara/ripple/index.js new file mode 100755 index 0000000..7c30d99 --- /dev/null +++ b/presets/lara/ripple/index.js @@ -0,0 +1,6 @@ +export default { + root: { + class: ['block absolute bg-surface-0/50 rounded-full pointer-events-none'], + style: 'transform: scale(0)' + } +} diff --git a/presets/lara/scrollpanel/index.js b/presets/lara/scrollpanel/index.js new file mode 100755 index 0000000..8a55d00 --- /dev/null +++ b/presets/lara/scrollpanel/index.js @@ -0,0 +1,77 @@ +export default { + wrapper: { + class: [ + // Size & Position + 'h-full w-full', + + // Layering + 'z-[1]', + + // Spacing + 'overflow-hidden', + + // Misc + 'relative float-left' + ] + }, + content: { + class: [ + // Size & Spacing + 'h-[calc(100%+18px)] w-[calc(100%+18px)] pr-[18px] pb-[18px] pl-0 pt-0', + + // Overflow & Scrollbar + 'overflow-scroll scrollbar-none', + + // Box Model + 'box-border', + + // Position + 'relative', + + // Webkit Specific + '[&::-webkit-scrollbar]:hidden' + ] + }, + barX: { + class: [ + // Size & Position + 'h-[9px] bottom-0', + + // Appearance + 'bg-surface-50 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'invisible z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + }, + barY: { + class: [ + // Size & Position + 'w-[9px] top-0', + + // Appearance + 'bg-surface-50 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + } +} diff --git a/presets/lara/scrolltop/index.js b/presets/lara/scrolltop/index.js new file mode 100755 index 0000000..df52dd4 --- /dev/null +++ b/presets/lara/scrolltop/index.js @@ -0,0 +1,45 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex & Alignment + 'flex items-center justify-center', + + // Positioning + { + sticky: props.target === 'parent', + fixed: props.target === 'window' + }, + 'bottom-[20px] right-[20px]', + 'ml-auto', + + // Shape & Size + { + 'rounded-md h-8 w-8': props.target === 'parent', + 'h-12 w-12 rounded-full shadow-md': props.target === 'window' + }, + + // Color + 'text-white dark:text-surface-900', + { + 'bg-primary-500 dark:bg-primary-400 hover:bg-primary-600 dark:hover:bg-primary-300': + props.target === 'parent', + 'bg-surface-500 dark:bg-surface-400 hover:bg-surface-600 dark:hover:bg-surface-300': + props.target === 'window' + }, + + // States + { + 'hover:bg-primary-600 dark:hover:bg-primary-300': + props.target === 'parent', + 'hover:bg-surface-600 dark:hover:bg-surface-300': + props.target === 'window' + } + ] + }), + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-150', + leaveActiveClass: 'transition-opacity duration-150', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/selectbutton/index.js b/presets/lara/selectbutton/index.js new file mode 100755 index 0000000..718c56e --- /dev/null +++ b/presets/lara/selectbutton/index.js @@ -0,0 +1,60 @@ +export default { + root: ({ props }) => ({ + class: [ + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + button: ({ context, props }) => ({ + class: [ + 'relative', + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Spacing + 'px-4 py-3', + + // Shape + 'border border-r-0', + 'first:rounded-l-md first:rounded-tr-none first:rounded-br-none', + 'last:border-r last:rounded-tl-none last:rounded-bl-none last:rounded-r-md', + + // Color + { + 'bg-surface-0 dark:bg-surface-900': !context.active, + 'text-surface-700 dark:text-white/80': !context.active, + 'border-surface-200 dark:border-surface-700': + !context.active && !props.invalid, + 'bg-primary-500 dark:bg-primary-400 border-primary-500 dark:border-primary-400 text-white dark:text-surface-900': + context.active + }, + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50 focus:z-10', + { + 'hover:bg-surface-50 dark:hover:bg-surface-800/80': + !context.active && !props.invalid, + 'hover:bg-primary-600 dark:hover:bg-primary-300': context.active + }, + { + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }), + label: { + class: 'font-bold' + } +} diff --git a/presets/lara/sidebar/index.js b/presets/lara/sidebar/index.js new file mode 100755 index 0000000..b2a5ed2 --- /dev/null +++ b/presets/lara/sidebar/index.js @@ -0,0 +1,163 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex flex-col', + + // Position + 'relative', + { + '!transition-none !transform-none !w-screen !h-screen !max-h-full !top-0 !left-0': + props.position == 'full' + }, + + // Size + { + 'h-full w-80': props.position == 'left' || props.position == 'right', + 'h-auto w-full': props.position == 'top' || props.position == 'bottom' + }, + + // Shape + 'border-0 dark:border', + 'shadow-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + 'dark:border-surface-700', + + // Transitions + 'transition-transform', + 'duration-300', + + // Misc + 'pointer-events-auto' + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-5', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + title: { + class: ['font-bold text-lg'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + content: { + class: [ + // Spacing and Size + 'p-5', + 'pt-0', + 'h-full', + 'w-full', + + // Growth and Overflow + 'grow', + 'overflow-y-auto' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition-all', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { + 'has-[.mask-active]:bg-transparent bg-black/40': props.modal, + 'has-[.mask-active]:backdrop-blur-none backdrop-blur-sm': props.modal + } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: + 'translate-x-0 -translate-y-full translate-z-0 mask-active', + leaveToClass: + 'translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: + 'translate-x-0 translate-y-full translate-z-0 mask-active', + leaveToClass: + 'translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' + ? { + enterFromClass: + '-translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: + '-translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' + ? { + enterFromClass: + 'translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: + 'translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 mask-active', + enterActiveClass: 'transition-opacity duration-400 ease-in', + leaveActiveClass: 'transition-opacity duration-400 ease-in', + leaveToClass: 'opacity-0 mask-active' + } + } +} diff --git a/presets/lara/skeleton/index.js b/presets/lara/skeleton/index.js new file mode 100755 index 0000000..07e2b13 --- /dev/null +++ b/presets/lara/skeleton/index.js @@ -0,0 +1,19 @@ +export default { + root: ({ props }) => ({ + class: [ + 'overflow-hidden', + { + 'animate-pulse': props.animation !== 'none' + }, + + // Round + { + 'rounded-full': props.shape === 'circle', + 'rounded-md': props.shape !== 'circle' + }, + + // Colors + 'bg-surface-200 dark:bg-surface-700' + ] + }) +} diff --git a/presets/lara/slider/index.js b/presets/lara/slider/index.js new file mode 100755 index 0000000..b9b3b07 --- /dev/null +++ b/presets/lara/slider/index.js @@ -0,0 +1,149 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Size + { + 'h-1 w-60': props.orientation == 'horizontal', + 'w-1 h-56': props.orientation == 'vertical' + }, + + // Shape + 'border-0', + + // Colors + 'bg-surface-100 dark:bg-surface-700', + + // States + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + range: ({ props }) => ({ + class: [ + // Position + 'block absolute', + { + 'top-0 left-0': props.orientation == 'horizontal', + 'bottom-0 left-0': props.orientation == 'vertical' + }, + + //Size + { + 'h-full': props.orientation == 'horizontal', + 'w-full': props.orientation == 'vertical' + }, + + // Colors + 'bg-primary-500 dark:bg-primary-400' + ] + }), + handle: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-[1.143rem]', + 'w-[1.143rem]', + { + 'top-[50%] mt-[-0.5715rem] ml-[-0.5715rem]': + props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5715rem] ml-[-0.5715rem]': + props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'border-2', + + // Colors + 'bg-surface-0 dark:bg-surface-600', + 'border-primary-500 dark:border-primary-400', + + // States + 'hover:bg-primary-500 hover:border-primary-500', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring', + 'ring-primary-400/50 dark:ring-primary-300/50', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + starthandler: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-[1.143rem]', + 'w-[1.143rem]', + { + 'top-[50%] mt-[-0.5715rem] ml-[-0.5715rem]': + props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5715rem] ml-[-0.4715rem]': + props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'border-2', + + // Colors + 'bg-surface-0 dark:bg-surface-600', + 'border-primary-500 dark:border-primary-400', + + // States + 'hover:bg-primary-500 hover:border-primary-500', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring', + 'focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + endhandler: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-[1.143rem]', + 'w-[1.143rem]', + { + 'top-[50%] mt-[-0.5715rem] ml-[-0.5715rem]': + props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5715rem] ml-[-0.4715rem]': + props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'border-2', + + // Colors + 'bg-surface-0 dark:bg-surface-600', + 'border-primary-500 dark:border-primary-400', + + // States + 'hover:bg-primary-500 hover:border-primary-500', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring', + 'focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }) +} diff --git a/presets/lara/speeddial/index.js b/presets/lara/speeddial/index.js new file mode 100755 index 0000000..073928d --- /dev/null +++ b/presets/lara/speeddial/index.js @@ -0,0 +1,531 @@ +export default { + root: { + class: 'absolute flex' + }, + button: { + root: ({ props, context, parent }) => ({ + class: [ + 'relative', + 'z-20', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + 'w-16 h-16 p-0 py-3', + + // Shapes + 'rounded-full', + 'shadow-md', + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': props.link }, + + // Plain Button + { + 'text-white bg-gray-500 border border-gray-500': + props.plain && !props.outlined && !props.text + }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { + 'text-surface-500 border border-gray-500': + props.plain && props.outlined + }, + + // Text Button + { 'bg-transparent border-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent border': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-white dark:text-surface-900': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain, + 'bg-primary-500 dark:bg-primary-400': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain, + 'border border-primary-500 dark:border-primary-400': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain + }, + // Primary Text Button + { + 'text-primary-500 dark:text-primary-400': + props.text && props.severity === null && !props.plain + }, + // Primary Outlined Button + { + 'text-primary-500 border border-primary-500 hover:bg-primary-300/20': + props.outlined && props.severity === null && !props.plain + }, + + // Secondary Button + { + 'text-white dark:text-surface-900': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain, + 'bg-surface-500 dark:bg-surface-400': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain, + 'border border-surface-500 dark:border-surface-400': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain + }, + // Secondary Text Button + { + 'text-surface-500 dark:text-surface-300': + props.text && props.severity === 'secondary' && !props.plain + }, + // Secondary Outlined Button + { + 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/20': + props.outlined && props.severity === 'secondary' && !props.plain + }, + + // Success Button + { + 'text-white dark:text-green-900': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain, + 'bg-green-500 dark:bg-green-400': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain, + 'border border-green-500 dark:border-green-400': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain + }, + // Success Text Button + { + 'text-green-500 dark:text-green-400': + props.text && props.severity === 'success' && !props.plain + }, + // Success Outlined Button + { + 'text-green-500 border border-green-500 hover:bg-green-300/20': + props.outlined && props.severity === 'success' && !props.plain + }, + + // Info Button + { + 'text-white dark:text-surface-900': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain, + 'bg-blue-500 dark:bg-blue-400': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain, + 'border border-blue-500 dark:border-blue-400': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain + }, + // Info Text Button + { + 'text-blue-500 dark:text-blue-400': + props.text && props.severity === 'info' && !props.plain + }, + // Info Outlined Button + { + 'text-blue-500 border border-blue-500 hover:bg-blue-300/20 ': + props.outlined && props.severity === 'info' && !props.plain + }, + + // Warning Button + { + 'text-white dark:text-surface-900': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain, + 'bg-orange-500 dark:bg-orange-400': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain, + 'border border-orange-500 dark:border-orange-400': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain + }, + // Warning Text Button + { + 'text-orange-500 dark:text-orange-400': + props.text && props.severity === 'warning' && !props.plain + }, + // Warning Outlined Button + { + 'text-orange-500 border border-orange-500 hover:bg-orange-300/20': + props.outlined && props.severity === 'warning' && !props.plain + }, + + // Help Button + { + 'text-white dark:text-surface-900': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain, + 'bg-purple-500 dark:bg-purple-400': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain, + 'border border-purple-500 dark:border-purple-400': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain + }, + // Help Text Button + { + 'text-purple-500 dark:text-purple-400': + props.text && props.severity === 'help' && !props.plain + }, + // Help Outlined Button + { + 'text-purple-500 border border-purple-500 hover:bg-purple-300/20': + props.outlined && props.severity === 'help' && !props.plain + }, + + // Danger Button + { + 'text-white dark:text-surface-900': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain, + 'bg-red-500 dark:bg-red-400': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain, + 'border border-red-500 dark:border-red-400': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain + }, + // Danger Text Button + { + 'text-red-500 dark:text-red-400': + props.text && props.severity === 'danger' && !props.plain + }, + // Danger Outlined Button + { + 'text-red-500 border border-red-500 hover:bg-red-300/20': + props.outlined && props.severity === 'danger' && !props.plain + }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring', + + // Link + { + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50': props.link + }, + + // Plain + { + 'hover:bg-gray-600 hover:border-gray-600': + props.plain && !props.outlined && !props.text + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + props.plain && (props.text || props.outlined) + }, + + // Primary + { + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + props.severity === null + }, + // Text & Outlined Button + { + 'hover:bg-primary-300/20': + (props.text || props.outlined) && + props.severity === null && + !props.plain + }, + + // Secondary + { + 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:border-surface-600 dark:hover:border-surface-300': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-surface-400/50 dark:focus:ring-surface-300/50': + props.severity === 'secondary' + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + (props.text || props.outlined) && + props.severity === 'secondary' && + !props.plain + }, + + // Success + { + 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-green-400/50 dark:focus:ring-green-300/50': + props.severity === 'success' + }, + // Text & Outlined Button + { + 'hover:bg-green-300/20': + (props.text || props.outlined) && + props.severity === 'success' && + !props.plain + }, + + // Info + { + 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-blue-400/50 dark:focus:ring-blue-300/50': + props.severity === 'info' + }, + // Text & Outlined Button + { + 'hover:bg-blue-300/20': + (props.text || props.outlined) && + props.severity === 'info' && + !props.plain + }, + + // Warning + { + 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-orange-400/50 dark:focus:ring-orange-300/50': + props.severity === 'warning' + }, + // Text & Outlined Button + { + 'hover:bg-orange-300/20': + (props.text || props.outlined) && + props.severity === 'warning' && + !props.plain + }, + + // Help + { + 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-purple-400/50 dark:focus:ring-purple-300/50': + props.severity === 'help' + }, + // Text & Outlined Button + { + 'hover:bg-purple-300/20': + (props.text || props.outlined) && + props.severity === 'help' && + !props.plain + }, + + // Danger + { + 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-red-400/50 dark:focus:ring-red-300/50': + props.severity === 'danger' + }, + // Text & Outlined Button + { + 'hover:bg-red-300/20': + (props.text || props.outlined) && + props.severity === 'danger' && + !props.plain + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + parent.state.d_visible ? 'rotate-45' : 'rotate-0', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-bold', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingicon: ({ props }) => ({ + class: [ + 'h-4 w-4', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [ + { + 'ml-2 w-4 h-4 leading-none flex items-center justify-center': + props.badge + } + ] + }) + }, + menu: { + class: [ + // Spacing + 'm-0 p-0', + + // Layout & Flexbox + 'list-none flex items-center justify-center', + + // Transitions + 'transition delay-200', + + // Z-Index (Positioning) + 'z-20' + ] + }, + menuitem: ({ props, context }) => ({ + class: [ + 'transform transition-transform duration-200 ease-out transition-opacity duration-800', + + // Conditional Appearance + context.hidden ? 'opacity-0 scale-0' : 'opacity-100 scale-100', + + // Conditional Spacing + { + 'my-1 first:mb-2': props.direction == 'up' && props.type == 'linear', + 'my-1 first:mt-2': props.direction == 'down' && props.type == 'linear', + 'mx-1 first:mr-2': props.direction == 'left' && props.type == 'linear', + 'mx-1 first:ml-2': props.direction == 'right' && props.type == 'linear' + }, + + // Conditional Positioning + { absolute: props.type !== 'linear' } + ] + }), + action: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Size + 'w-12 h-12', + + // Shape + 'rounded-full relative overflow-hidden', + + // Appearance + 'bg-surface-600 dark:bg-surface-0/80 text-white dark:text-surface-900/80', + + // Hover Effects + 'hover:bg-surface-700 dark:hover:bg-surface-200/80' + ] + }, + mask: ({ state }) => ({ + class: [ + // Base Styles + 'absolute left-0 top-0 w-full h-full transition-opacity duration-250 ease-in-out bg-black/40 z-0', + + // Conditional Appearance + { + 'opacity-0 pointer-events-none': !state.d_visible, + 'opacity-100 transition-opacity duration-400 ease-in-out': + state.d_visible + } + ] + }) +} diff --git a/presets/lara/splitbutton/index.js b/presets/lara/splitbutton/index.js new file mode 100755 index 0000000..eee5559 --- /dev/null +++ b/presets/lara/splitbutton/index.js @@ -0,0 +1,1081 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + { 'shadow-lg': props.raised } + ] + }), + button: { + root: ({ parent }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-3': parent.props.size === null, + 'text-sm py-2 px-3': parent.props.size === 'small', + 'text-xl py-3 px-4': parent.props.size === 'large' + }, + { + 'min-w-12 p-0 py-3': + parent.props.label == null && parent.props.icon !== null + }, + + // Shape + 'rounded-r-none', + 'border-r-0', + { 'rounded-l-full': parent.props.rounded }, + { + 'rounded-md': !parent.props.rounded, + 'rounded-full': parent.props.rounded + }, + + // Link Button + { + 'text-primary-600 bg-transparent border-transparent': + parent.props.link + }, + + // Plain Button + { + 'text-white bg-gray-500 border border-gray-500': + parent.props.plain && !parent.props.outlined && !parent.props.text + }, + // Plain Text Button + { 'text-surface-500': parent.props.plain && parent.props.text }, + // Plain Outlined Button + { + 'text-surface-500 border border-gray-500': + parent.props.plain && parent.props.outlined + }, + + // Text Button + { + 'bg-transparent border-transparent': + parent.props.text && !parent.props.plain + }, + + // Outlined Button + { + 'bg-transparent border': parent.props.outlined && !parent.props.plain + }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-white dark:text-surface-900': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-primary-500 dark:bg-primary-400': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-primary-500 dark:border-primary-400': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Primary Text Button + { + 'text-primary-500 dark:text-primary-400': + parent.props.text && + parent.props.severity === null && + !parent.props.plain + }, + // Primary Outlined Button + { + 'text-primary-500 border border-primary-500 hover:bg-primary-300/20': + parent.props.outlined && + parent.props.severity === null && + !parent.props.plain + }, + + // Secondary Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-surface-500 dark:bg-surface-400': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-surface-500 dark:border-surface-400': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Secondary Text Button + { + 'text-surface-500 dark:text-surface-400': + parent.props.text && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + // Secondary Outlined Button + { + 'text-surface-500 border border-surface-500 hover:bg-surface-300/20': + parent.props.outlined && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + + // Success Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-green-500 dark:bg-green-400': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-green-500 dark:border-green-400': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Success Text Button + { + 'text-surface-500 dark:text-surface-400': + parent.props.text && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + // Success Outlined Button + { + 'text-green-500 border border-green-500 hover:bg-green-300/20': + parent.props.outlined && + parent.props.severity === 'success' && + !parent.props.plain + }, + + // Info Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-blue-500 dark:bg-blue-400': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-blue-500 dark:border-blue-400': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Info Text Button + { + 'text-blue-500 dark:text-blue-400': + parent.props.text && + parent.props.severity === 'info' && + !parent.props.plain + }, + // Info Outlined Button + { + 'text-blue-500 border border-blue-500 hover:bg-blue-300/20 ': + parent.props.outlined && + parent.props.severity === 'info' && + !parent.props.plain + }, + + // Warning Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-orange-500 dark:bg-orange-400': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-orange-500 dark:border-orange-400': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Warning Text Button + { + 'text-orange-500 dark:text-orange-400': + parent.props.text && + parent.props.severity === 'warning' && + !parent.props.plain + }, + // Warning Outlined Button + { + 'text-orange-500 border border-orange-500 hover:bg-orange-300/20': + parent.props.outlined && + parent.props.severity === 'warning' && + !parent.props.plain + }, + + // Help Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-purple-500 dark:bg-purple-400': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-purple-500 dark:border-purple-400': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Help Text Button + { + 'text-purple-500 dark:text-purple-400': + parent.props.text && + parent.props.severity === 'help' && + !parent.props.plain + }, + // Help Outlined Button + { + 'text-purple-500 border border-purple-500 hover:bg-purple-300/20': + parent.props.outlined && + parent.props.severity === 'help' && + !parent.props.plain + }, + + // Danger Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-red-500 dark:bg-red-400': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-red-500 dark:border-red-400': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Danger Text Button + { + 'text-red-500 dark:text-red-400': + parent.props.text && + parent.props.severity === 'danger' && + !parent.props.plain + }, + // Danger Outlined Button + { + 'text-red-500 border border-red-500 hover:bg-red-300/20': + parent.props.outlined && + parent.props.severity === 'danger' && + !parent.props.plain + }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring', + + // Link + { + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + parent.props.link + }, + + // Plain + { + 'hover:bg-gray-600 hover:border-gray-600': + parent.props.plain && !parent.props.outlined && !parent.props.text + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + parent.props.plain && (parent.props.text || parent.props.outlined) + }, + + // Primary + { + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Text & Outlined Button + { + 'hover:bg-primary-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === null && + !parent.props.plain + }, + + // Secondary + { + 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:border-surface-600 dark:hover:border-surface-300': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-surface-400/50 dark:focus:ring-surface-300/50': + parent.props.severity === 'secondary' + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + + // Success + { + 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-green-400/50 dark:focus:ring-green-300/50': + parent.props.severity === 'success' + }, + // Text & Outlined Button + { + 'hover:bg-green-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'success' && + !parent.props.plain + }, + + // Info + { + 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-blue-400/50 dark:focus:ring-blue-300/50': + parent.props.severity === 'info' + }, + // Text & Outlined Button + { + 'hover:bg-blue-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'info' && + !parent.props.plain + }, + + // Warning + { + 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-orange-400/50 dark:focus:ring-orange-300/50': + parent.props.severity === 'warning' + }, + // Text & Outlined Button + { + 'hover:bg-orange-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'warning' && + !parent.props.plain + }, + + // Help + { + 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-purple-400/50 dark:focus:ring-purple-300/50': + parent.props.severity === 'help' + }, + // Text & Outlined Button + { + 'hover:bg-purple-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'help' && + !parent.props.plain + }, + + // Warning + { + 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-red-400/50 dark:focus:ring-red-300/50': + parent.props.severity === 'danger' + }, + // Text & Outlined Button + { + 'hover:bg-red-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'danger' && + !parent.props.plain + }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + icon: { + class: [ + // Margins + 'mr-2' + ] + } + }, + menubutton: { + root: ({ parent }) => ({ + class: [ + 'relative', + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-3': parent.props.size === null, + 'text-sm py-2 px-3': parent.props.size === 'small', + 'text-xl py-3 px-4': parent.props.size === 'large' + }, + { + 'min-w-12 p-0 py-3': + parent.props.label == null && parent.props.icon !== null + }, + + // Shape + 'rounded-l-none', + { 'rounded-l-full': parent.props.rounded }, + { + 'rounded-md': !parent.props.rounded, + 'rounded-full': parent.props.rounded + }, + + // Link Button + { + 'text-primary-600 bg-transparent border-transparent': + parent.props.link + }, + + // Plain Button + { + 'text-white bg-gray-500 border border-gray-500': + parent.props.plain && !parent.props.outlined && !parent.props.text + }, + // Plain Text Button + { 'text-surface-500': parent.props.plain && parent.props.text }, + // Plain Outlined Button + { + 'text-surface-500 border border-gray-500': + parent.props.plain && parent.props.outlined + }, + + // Text Button + { + 'bg-transparent border-transparent': + parent.props.text && !parent.props.plain + }, + + // Outlined Button + { + 'bg-transparent border': parent.props.outlined && !parent.props.plain + }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-white dark:text-surface-900': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-primary-500 dark:bg-primary-400': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-primary-500 dark:border-primary-400': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Primary Text Button + { + 'text-primary-500 dark:text-primary-400': + parent.props.text && + parent.props.severity === null && + !parent.props.plain + }, + // Primary Outlined Button + { + 'text-primary-500 border border-primary-500 hover:bg-primary-300/20': + parent.props.outlined && + parent.props.severity === null && + !parent.props.plain + }, + + // Secondary Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-surface-500 dark:bg-surface-400': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-surface-500 dark:border-surface-400': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Secondary Text Button + { + 'text-surface-500 dark:text-surface-400': + parent.props.text && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + // Secondary Outlined Button + { + 'text-surface-500 border border-surface-500 hover:bg-surface-300/20': + parent.props.outlined && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + + // Success Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-green-500 dark:bg-green-400': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-green-500 dark:border-green-400': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Success Text Button + { + 'text-surface-500 dark:text-surface-400': + parent.props.text && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + // Success Outlined Button + { + 'text-green-500 border border-green-500 hover:bg-green-300/20': + parent.props.outlined && + parent.props.severity === 'success' && + !parent.props.plain + }, + + // Info Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-blue-500 dark:bg-blue-400': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-blue-500 dark:border-blue-400': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Info Text Button + { + 'text-blue-500 dark:text-blue-400': + parent.props.text && + parent.props.severity === 'info' && + !parent.props.plain + }, + // Info Outlined Button + { + 'text-blue-500 border border-blue-500 hover:bg-blue-300/20 ': + parent.props.outlined && + parent.props.severity === 'info' && + !parent.props.plain + }, + + // Warning Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-orange-500 dark:bg-orange-400': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-orange-500 dark:border-orange-400': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Warning Text Button + { + 'text-orange-500 dark:text-orange-400': + parent.props.text && + parent.props.severity === 'warning' && + !parent.props.plain + }, + // Warning Outlined Button + { + 'text-orange-500 border border-orange-500 hover:bg-orange-300/20': + parent.props.outlined && + parent.props.severity === 'warning' && + !parent.props.plain + }, + + // Help Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-purple-500 dark:bg-purple-400': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-purple-500 dark:border-purple-400': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Help Text Button + { + 'text-purple-500 dark:text-purple-400': + parent.props.text && + parent.props.severity === 'help' && + !parent.props.plain + }, + // Help Outlined Button + { + 'text-purple-500 border border-purple-500 hover:bg-purple-300/20': + parent.props.outlined && + parent.props.severity === 'help' && + !parent.props.plain + }, + + // Danger Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-red-500 dark:bg-red-400': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'border border-red-500 dark:border-red-400': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Danger Text Button + { + 'text-red-500 dark:text-red-400': + parent.props.text && + parent.props.severity === 'danger' && + !parent.props.plain + }, + // Danger Outlined Button + { + 'text-red-500 border border-red-500 hover:bg-red-300/20': + parent.props.outlined && + parent.props.severity === 'danger' && + !parent.props.plain + }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring', + + // Link + { + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + parent.props.link + }, + + // Plain + { + 'hover:bg-gray-600 hover:border-gray-600': + parent.props.plain && !parent.props.outlined && !parent.props.text + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + parent.props.plain && (parent.props.text || parent.props.outlined) + }, + + // Primary + { + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Text & Outlined Button + { + 'hover:bg-primary-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === null && + !parent.props.plain + }, + + // Secondary + { + 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:border-surface-600 dark:hover:border-surface-300': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-surface-400/50 dark:focus:ring-surface-300/50': + parent.props.severity === 'secondary' + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + + // Success + { + 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-green-400/50 dark:focus:ring-green-300/50': + parent.props.severity === 'success' + }, + // Text & Outlined Button + { + 'hover:bg-green-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'success' && + !parent.props.plain + }, + + // Info + { + 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-blue-400/50 dark:focus:ring-blue-300/50': + parent.props.severity === 'info' + }, + // Text & Outlined Button + { + 'hover:bg-blue-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'info' && + !parent.props.plain + }, + + // Warning + { + 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-orange-400/50 dark:focus:ring-orange-300/50': + parent.props.severity === 'warning' + }, + // Text & Outlined Button + { + 'hover:bg-orange-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'warning' && + !parent.props.plain + }, + + // Help + { + 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-purple-400/50 dark:focus:ring-purple-300/50': + parent.props.severity === 'help' + }, + // Text & Outlined Button + { + 'hover:bg-purple-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'help' && + !parent.props.plain + }, + + // Warning + { + 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-red-400/50 dark:focus:ring-red-300/50': + parent.props.severity === 'danger' + }, + // Text & Outlined Button + { + 'hover:bg-red-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'danger' && + !parent.props.plain + }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: ['hidden'] + } + }, + menu: { + root: { + class: [ + // Shape + 'rounded-md', + + // Size + 'min-w-[12rem]', + 'py-1', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: [ + // Position + 'relative' + ] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-none', + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': + context.focused && !context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + context.focused && context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-500/50 dark:hover:bg-primary-300/30 text-primary-700 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenuicon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + } + } +} diff --git a/presets/lara/splitter/index.js b/presets/lara/splitter/index.js new file mode 100755 index 0000000..832eb5e --- /dev/null +++ b/presets/lara/splitter/index.js @@ -0,0 +1,64 @@ +export default { + root: ({ context }) => ({ + class: [ + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-surface-0/80', + + // Shape + 'rounded-lg', + + // Borders (Conditional) + { + 'border border-solid border-surface-50 dark:border-surface-700': + !context.nested + }, + + // Nested + { 'flex grow border-0': context.nested } + ] + }), + + gutter: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + 'shrink-0', + + // Colors + 'bg-surface-50', + 'dark:bg-surface-800', + + // Transitions + 'transition-all', + 'duration-200', + + // Misc + { + 'cursor-col-resize': props.layout == 'horizontal', + 'cursor-row-resize': props.layout !== 'horizontal' + } + ] + }), + gutterhandler: ({ props }) => ({ + class: [ + // Colors + 'bg-surface-100', + 'dark:bg-surface-600', + + // Transitions + 'transition-all', + 'duration-200', + + // Sizing (Conditional) + { + 'h-7': props.layout == 'horizontal', + 'w-7 h-2': props.layout !== 'horizontal' + } + ] + }) +} diff --git a/presets/lara/splitterpanel/index.js b/presets/lara/splitterpanel/index.js new file mode 100755 index 0000000..4fb9f9f --- /dev/null +++ b/presets/lara/splitterpanel/index.js @@ -0,0 +1,5 @@ +export default { + root: ({ context }) => ({ + class: ['grow', { flex: context.nested }] + }) +} diff --git a/presets/lara/stepper/index.js b/presets/lara/stepper/index.js new file mode 100755 index 0000000..aabab8d --- /dev/null +++ b/presets/lara/stepper/index.js @@ -0,0 +1,183 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex-1', + props.orientation === 'vertical' ? 'flex-col' : 'flex-row' + ] + }), + nav: { + class: [ + // Flexbox + 'flex', + 'justify-between', + 'items-center', + + // Spacing + 'm-0', + 'p-0', + + // Positioning + 'relative', + + // Lists + 'list-none', + + // Overflow + 'overflow-x-auto' + ] + }, + stepperpanel: { + panel: ({ context, parent }) => ({ + class: [ + context.active ? 'flex-1' : '', + parent.props.orientation === 'vertical' + ? 'flex flex-col flex-initial' + : '' + ] + }), + header: ({ parent, context }) => ({ + class: [ + // Position + 'relative', + + // Flexbox + 'flex', + 'items-center', + context.last ? 'flex-initial' : 'flex-1', + parent.props.orientation === 'vertical' ? 'flex-initial' : '', + + // Spacing + 'p-2' + ] + }), + action: { + class: [ + // Borders + 'border-0', + 'border-none', + + // Flexbox + 'inline-flex', + 'items-center', + + // Text + 'text-decoration-none', + + // Transitions + 'transition', + 'transition-shadow', + 'duration-200', + + // Shape + 'rounded-md', + + // Backgrounds + 'bg-transparent', + + // Focus + 'outline-none' + ] + }, + number: ({ context }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + + // Colors (Conditional) + context.active + ? 'bg-primary-500 dark:bg-primary-400 text-surface-0 dark:text-surface-900' + : 'border border-surface-200 dark:border-surface-700 text-surface-900 dark:text-surface-0', // Adjust colors as needed + + // Size and Shape + 'min-w-[2rem]', + 'h-[2rem]', + 'line-height-[2rem]', + 'rounded-full', + + // Text + 'text-lg', + + // Borders + context.active ? 'border-0 border-none' : 'border-solid border-2', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + title: ({ context }) => ({ + class: [ + // Layout + 'block', + 'whitespace-nowrap', + 'overflow-hidden', + 'text-ellipsis', + 'max-w-full', + + // Spacing + 'ml-2', + + // Text + context.active + ? 'text-surface-900 dark:text-surface-0' + : 'text-surface-700 dark:text-surface-0/80', + 'font-bold', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + separator: ({ context, state, parent }) => ({ + class: [ + // Colors (Conditional for active step) + state.d_activeStep <= context.index + ? 'bg-surface-200 dark:bg-surface-700' + : 'bg-primary-500 dark:bg-primary-400', + + // Conditional for Vertical Orientation + parent.props.orientation === 'vertical' + ? ['flex-none', 'w-[2px]', 'h-auto', 'ml-[calc(1.29rem+2px)]'] + : ['flex-1', 'w-full', 'h-[2px]', 'ml-4'], + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + transition: { + class: [ + 'flex flex-1', + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-900 dark:text-surface-0' + ], + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + }, + content: ({ parent }) => ({ + class: [parent.props.orientation === 'vertical' ? 'w-full pl-4' : ''] + }) + }, + panelcontainer: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-900 dark:text-surface-0', + + // Spacing + 'p-4' + ] + } +} diff --git a/presets/lara/steps/index.js b/presets/lara/steps/index.js new file mode 100755 index 0000000..3271f3f --- /dev/null +++ b/presets/lara/steps/index.js @@ -0,0 +1,115 @@ +export default { + root: { + class: 'relative' + }, + menu: { + class: 'p-0 m-0 list-none flex' + }, + menuitem: { + class: [ + // Flexbox and Position + 'relative', + 'flex', + 'justify-center', + 'flex-1', + 'overflow-hidden', + + // Before + 'before:border-t', + 'before:border-surface-200', + 'before:dark:border-surface-700', + 'before:w-full', + 'before:absolute', + 'before:top-1/2', + 'before:left-0', + 'before:transform', + 'before:-mt-4' + ] + }, + action: ({ props }) => ({ + class: [ + // Flexbox + 'inline-flex items-center', + 'flex-col', + + // Transitions and Shape + 'transition-shadow', + 'rounded-md', + + // Colors + 'bg-surface-0', + 'dark:bg-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden', + { 'cursor-pointer': !props.readonly } + ] + }), + step: ({ context, props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Position + 'z-20', + + // Shape + 'rounded-full', + 'border', + + // Size + 'w-[2rem]', + 'h-[2rem]', + 'text-sm', + 'leading-[2rem]', + + // Colors + { + 'text-surface-400 dark:text-white/60': !context.active, + 'border-surface-100 dark:border-surface-700': !context.active, + 'bg-surface-0 dark:bg-surface-800': !context.active, + 'bg-primary-500 dark:bg-primary-400': context.active, + 'border-primary-500 dark:border-primary-400': context.active, + 'text-surface-0 dark:text-surface-900': context.active + }, + + // States + { + 'hover:border-surface-300 dark:hover:border-surface-500': + !context.active && !props.readonly + }, + + // Transition + 'transition-colors duration-200 ease-in-out' + ] + }), + label: ({ context }) => ({ + class: [ + // Font + 'leading-5', + { 'font-bold': context.active }, + + // Display + 'block', + + // Spacing + 'mt-2', + + // Colors + { + 'text-surface-400 dark:text-white/60': !context.active, + 'text-surface-800 dark:text-white/80': context.active + }, + + // Text and Overflow + 'whitespace-nowrap', + 'overflow-hidden', + 'overflow-ellipsis', + 'max-w-full' + ] + }) +} diff --git a/presets/lara/tabmenu/index.js b/presets/lara/tabmenu/index.js new file mode 100755 index 0000000..76ac45f --- /dev/null +++ b/presets/lara/tabmenu/index.js @@ -0,0 +1,82 @@ +export default { + root: { + class: 'overflow-x-auto' + }, + menu: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-b-2 border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + menuitem: { + class: 'mr-0' + }, + action: ({ context, state }) => ({ + class: [ + 'relative', + + // Font + 'font-bold', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'p-5', + '-mb-[2px]', + + // Shape + 'border-b-2', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': + state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-800': + state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': + state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-800': + state.d_activeIndex === context.index, + 'border-primary-500 dark:border-primary-400': + state.d_activeIndex === context.index, + 'text-primary-500 dark:text-primary-400': + state.d_activeIndex === context.index + }, + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset', + 'focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + { + 'hover:bg-surface-0 dark:hover:bg-surface-800/80': + state.d_activeIndex !== context.index, + 'hover:border-surface-400 dark:hover:border-primary-400': + state.d_activeIndex !== context.index, + 'hover:text-surface-900 dark:hover:text-surface-0': + state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none' + ] + }), + icon: { + class: 'mr-2' + } +} diff --git a/presets/lara/tabview/index.js b/presets/lara/tabview/index.js new file mode 100755 index 0000000..18135fc --- /dev/null +++ b/presets/lara/tabview/index.js @@ -0,0 +1,166 @@ +export default { + navContainer: ({ props }) => ({ + class: [ + // Position + 'relative', + + // Misc + { 'overflow-hidden': props.scrollable } + ] + }), + navContent: { + class: [ + // Overflow and Scrolling + 'overflow-y-hidden overscroll-contain', + 'overscroll-auto', + 'scroll-smooth', + '[&::-webkit-scrollbar]:hidden' + ] + }, + previousButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 left-0', + 'z-20', + + // Size and Shape + 'h-full w-12', + 'rounded-none', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-primary-500 dark:text-primary-400', + 'shadow-md' + ] + }, + nextButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 right-0', + 'z-20', + + // Size and Shape + 'h-full w-12', + 'rounded-none', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-primary-500 dark:text-primary-400', + 'shadow-md' + ] + }, + nav: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-b-2 border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + tabpanel: { + header: ({ props }) => ({ + class: [ + // Spacing + 'mr-0', + + // Misc + { + 'opacity-60 cursor-default user-select-none select-none pointer-events-none': + props?.disabled + } + ] + }), + headerAction: ({ parent, context }) => ({ + class: [ + 'relative', + + // Font + 'font-bold', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'p-5', + '-mb-[2px]', + + // Shape + 'border-b-2', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': + parent.state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-800': + parent.state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': + parent.state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-800': + parent.state.d_activeIndex === context.index, + 'border-primary-500 dark:border-primary-400': + parent.state.d_activeIndex === context.index, + 'text-primary-500 dark:text-primary-400': + parent.state.d_activeIndex === context.index + }, + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset', + 'focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + { + 'hover:bg-surface-0 dark:hover:bg-surface-800/80': + parent.state.d_activeIndex !== context.index, + 'hover:border-surface-400 dark:hover:border-primary-400': + parent.state.d_activeIndex !== context.index, + 'hover:text-surface-900 dark:hover:text-surface-0': + parent.state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none' + ] + }), + headerTitle: { + class: [ + // Text + 'leading-none', + 'whitespace-nowrap' + ] + }, + content: { + class: [ + // Spacing + 'p-5', + + // Shape + 'rounded-b-md', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + 'border-0' + ] + } + } +} diff --git a/presets/lara/tag/index.js b/presets/lara/tag/index.js new file mode 100755 index 0000000..5f78d5f --- /dev/null +++ b/presets/lara/tag/index.js @@ -0,0 +1,37 @@ +export default { + root: ({ props }) => ({ + class: [ + //Font + 'text-xs font-bold', + + //Alignments + 'inline-flex items-center justify-center', + + //Spacing + 'px-2 py-1', + + //Shape + { + 'rounded-md': !props.rounded, + 'rounded-full': props.rounded + }, + + //Colors + 'text-white dark:text-surface-900', + { + 'bg-primary-500 dark:bg-primary-400': + props.severity == null || props.severity == 'primary', + 'bg-green-500 dark:bg-green-400': props.severity == 'success', + 'bg-blue-500 dark:bg-blue-400': props.severity == 'info', + 'bg-orange-500 dark:bg-orange-400': props.severity == 'warning', + 'bg-red-500 dark:bg-red-400': props.severity == 'danger' + } + ] + }), + value: { + class: 'leading-normal' + }, + icon: { + class: 'mr-1 text-sm' + } +} diff --git a/presets/lara/terminal/index.js b/presets/lara/terminal/index.js new file mode 100755 index 0000000..5c0ca67 --- /dev/null +++ b/presets/lara/terminal/index.js @@ -0,0 +1,60 @@ +export default { + root: { + class: [ + // Spacing + 'p-5', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-900 text-white', + 'border border-surface-700', + + // Sizing & Overflow + 'h-72 overflow-auto' + ] + }, + container: { + class: [ + // Flexbox + 'flex items-center' + ] + }, + prompt: { + class: [ + // Color + 'text-surface-400' + ] + }, + response: { + class: [ + // Color + 'text-primary-400' + ] + }, + command: { + class: [ + // Color + 'text-primary-400' + ] + }, + commandtext: { + class: [ + // Flexbox + 'flex-1 shrink grow-0', + + // Shape + 'border-0', + + // Spacing + 'p-0', + + // Color + 'bg-transparent text-inherit', + + // Outline + 'outline-none' + ] + } +} diff --git a/presets/lara/textarea/index.js b/presets/lara/textarea/index.js new file mode 100755 index 0000000..af45a66 --- /dev/null +++ b/presets/lara/textarea/index.js @@ -0,0 +1,39 @@ +export default { + root: ({ context, props }) => ({ + class: [ + // Font + 'font-sans leading-none', + + // Spacing + 'm-0', + 'p-3', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-400': + !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +} diff --git a/presets/lara/tieredmenu/index.js b/presets/lara/tieredmenu/index.js new file mode 100755 index 0000000..49b2655 --- /dev/null +++ b/presets/lara/tieredmenu/index.js @@ -0,0 +1,125 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Size + 'min-w-[12rem]', + 'py-1', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: [ + // Position + 'relative' + ] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-none', + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': + context.focused && !context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + context.focused && context.active, + 'text-primary-700 dark:text-surface-0/80 bg-primary-50 dark:bg-primary-400/30': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-500/50 dark:hover:bg-primary-300/30 text-primary-700 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenuicon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + } +} diff --git a/presets/lara/timeline/index.js b/presets/lara/timeline/index.js new file mode 100755 index 0000000..27b46e8 --- /dev/null +++ b/presets/lara/timeline/index.js @@ -0,0 +1,107 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex grow', + { + 'flex-col': props.layout === 'vertical', + 'flex-row flex-1': props.layout === 'horizontal' + } + ] + }), + event: ({ props, context }) => ({ + class: [ + 'flex relative min-h-[70px]', + { + 'flex-row-reverse': + props.align === 'right' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 1), + 'flex-col flex-1': props.layout === 'horizontal', + 'flex-col-reverse ': + props.align === 'bottom' || + (props.layout === 'horizontal' && + props.align === 'alternate' && + context.index % 2 === 1) + } + ] + }), + opposite: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-right': + props.align === 'left' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 0), + 'text-left': + props.align === 'right' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 1) + } + ] + }), + separator: ({ props }) => ({ + class: [ + 'flex items-center flex-initial', + { + 'flex-col': props.layout === 'vertical', + 'flex-row': props.layout === 'horizontal' + } + ] + }), + marker: { + class: [ + // Display & Flexbox + 'flex self-baseline', + + // Size + 'w-4 h-4', + + // Appearance + 'rounded-full border-2 border-primary-500 bg-surface-0 dark:border-primary-300 dark:bg-surface-900/40' + ] + }, + connector: ({ props }) => ({ + class: [ + 'grow bg-surface-300 dark:bg-surface-700', + { + 'w-[2px]': props.layout === 'vertical', + 'w-full h-[2px]': props.layout === 'horizontal' + } + ] + }), + content: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-left': + props.align === 'left' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 0), + 'text-right': + props.align === 'right' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 1) + }, + { + 'min-h-0': + props.layout === 'vertical' && context.index === context.count, + 'grow-0': + props.layout === 'horizontal' && context.index === context.count + } + ] + }) +} diff --git a/presets/lara/toast/index.js b/presets/lara/toast/index.js new file mode 100755 index 0000000..f9d5b8d --- /dev/null +++ b/presets/lara/toast/index.js @@ -0,0 +1,113 @@ +export default { + root: ({ props }) => ({ + class: [ + //Size and Shape + 'w-96 rounded-md', + + // Positioning + { + '-translate-x-2/4': + props.position == 'top-center' || props.position == 'bottom-center' + } + ] + }), + container: ({ props }) => ({ + class: [ + 'my-4 rounded-md w-full', + 'border-solid border-0 border-l-[6px]', + 'backdrop-blur-[10px] shadow-md', + + // Colors + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.message.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': + props.message.severity == 'success', + 'bg-orange-100/70 dark:bg-orange-500/20': + props.message.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.message.severity == 'error' + }, + { + 'border-blue-500 dark:border-blue-400': + props.message.severity == 'info', + 'border-green-500 dark:border-green-400': + props.message.severity == 'success', + 'border-orange-500 dark:border-orange-400': + props.message.severity == 'warn', + 'border-red-500 dark:border-red-400': props.message.severity == 'error' + }, + { + 'text-blue-700 dark:text-blue-300': props.message.severity == 'info', + 'text-green-700 dark:text-green-300': + props.message.severity == 'success', + 'text-orange-700 dark:text-orange-300': + props.message.severity == 'warn', + 'text-red-700 dark:text-red-300': props.message.severity == 'error' + } + ] + }), + content: ({ props }) => ({ + class: [ + 'flex p-4', + { + 'items-start': props.message.summary, + 'items-center': !props.message.summary + } + ] + }), + icon: { + class: [ + // Sizing and Spacing + 'w-6 h-6', + 'text-lg leading-none mr-2 shrink-0' + ] + }, + text: { + class: [ + // Font and Text + 'text-base leading-none', + 'ml-2', + 'flex-1' + ] + }, + summary: { + class: 'font-bold block' + }, + detail: ({ props }) => ({ + class: ['block', { 'mt-2': props.message.summary }] + }), + closebutton: { + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-8 h-8', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-0/50 dark:hover:bg-surface-0/10', + + // Misc + 'overflow-hidden' + ] + }, + transition: { + enterFromClass: 'opacity-0 translate-y-2/4', + enterActiveClass: 'transition-[transform,opacity] duration-300', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + '!transition-[max-height_.45s_cubic-bezier(0,1,0,1),opacity_.3s,margin-bottom_.3s] overflow-hidden', + leaveToClass: 'max-h-0 opacity-0 mb-0' + } +} diff --git a/presets/lara/togglebutton/index.js b/presets/lara/togglebutton/index.js new file mode 100755 index 0000000..744bb4e --- /dev/null +++ b/presets/lara/togglebutton/index.js @@ -0,0 +1,100 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Alignments + 'items-center inline-flex flex-1 text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-3 leading-none', + + // Shapes + 'rounded-md border', + + // Colors + { + 'bg-surface-0 dark:bg-surface-900 ': !props.modelValue, + 'border-surface-200 dark:border-surface-700 ': + !props.modelValue && !props.invalid, + 'text-surface-700 dark:text-white/80': !props.modelValue, + 'bg-primary-500 dark:bg-primary-400 border-primary-500 dark:border-primary-400 text-white dark:text-surface-900': + props.modelValue + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:bg-surface-50 dark:peer-hover:bg-surface-800/80 peer-hover:border-surface-200 dark:peer-hover:bg-surface-700 peer-hover:text-surface-700 dark:peer-hover:text-white/80': + !props.modelValue && !props.invalid, + 'peer-hover:bg-primary-600 peer-hover:border-primary-600 dark:peer-hover:bg-primary-300 dark:peer-hover:border-primary-300': + props.modelValue, + 'peer-focus-visible:ring peer-focus-visible:ring-primary-400/50 dark:peer-focus-visible:ring-primary-300/50': + !props.disabled + }, + + // Transitions + 'transition-all duration-200', + + // Misc + { + 'cursor-pointer': !props.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + label: { + class: 'font-bold text-center w-full' + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ props }) => ({ + class: [ + ' mr-2', + { + 'text-surface-600 dark:text-white/70': !props.modelValue, + 'text-white dark:text-surface-900': props.modelValue + } + ] + }) +} diff --git a/presets/lara/toolbar/index.js b/presets/lara/toolbar/index.js new file mode 100755 index 0000000..807d4ac --- /dev/null +++ b/presets/lara/toolbar/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-between flex-wrap', + 'gap-2', + + // Spacing + 'p-5', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700' + ] + }, + start: { + class: 'flex items-center' + }, + center: { + class: 'flex items-center' + }, + end: { + class: 'flex items-center' + } +} diff --git a/presets/lara/tooltip/index.js b/presets/lara/tooltip/index.js new file mode 100755 index 0000000..4b8d218 --- /dev/null +++ b/presets/lara/tooltip/index.js @@ -0,0 +1,73 @@ +export default { + root: ({ context, props }) => ({ + class: [ + // Position and Shadows + 'absolute', + 'shadow-md', + 'p-fadein', + // Spacing + { + 'py-0 px-1': + context?.right || + context?.left || + (!context?.right && + !context?.left && + !context?.top && + !context?.bottom), + 'py-1 px-0': context?.top || context?.bottom + } + ] + }), + arrow: ({ context, props }) => ({ + class: [ + // Position + + 'absolute', + + // Size + 'w-0', + 'h-0', + + // Shape + 'border-transparent', + 'border-solid', + { + 'border-y-[0.25rem] border-r-[0.25rem] border-l-0 border-r-surface-600': + context?.right || + (!context?.right && + !context?.left && + !context?.top && + !context?.bottom), + 'border-y-[0.25rem] border-l-[0.25rem] border-r-0 border-l-surface-600': + context?.left, + 'border-x-[0.25rem] border-t-[0.25rem] border-b-0 border-t-surface-600': + context?.top, + 'border-x-[0.25rem] border-b-[0.25rem] border-t-0 border-b-surface-600': + context?.bottom + }, + + // Spacing + { + '-mt-1 ': + context?.right || + (!context?.right && + !context?.left && + !context?.top && + !context?.bottom), + '-mt-1': context?.left, + '-ml-1': context?.top || context?.bottom + } + ] + }), + text: { + class: [ + 'p-3', + 'bg-surface-600 dark:bg-surface-700', + 'text-white', + 'leading-none', + 'rounded-md', + 'whitespace-pre-line', + 'break-words' + ] + } +} diff --git a/presets/lara/tree/index.js b/presets/lara/tree/index.js new file mode 100755 index 0000000..909c6e1 --- /dev/null +++ b/presets/lara/tree/index.js @@ -0,0 +1,281 @@ +export default { + root: { + class: [ + // Space + 'p-5', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + 'border border-solid border-surface-200 dark:border-surface-700' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: [ + 'p-1', + 'rounded-md', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + content: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'p-2', + + // Colors + 'text-surface-600 dark:text-white/70', + { + 'bg-primary-50 dark:bg-primary-400/30 text-primary-600 dark:text-surface-0': + context.selected + }, + + // States + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/40': + (props.selectionMode == 'single' || + props.selectionMode == 'multiple') && + !context.selected + }, + + // Transition + 'transition-shadow duration-200', + + { + 'cursor-pointer select-none': + props.selectionMode == 'single' || props.selectionMode == 'multiple' + } + ] + }), + toggler: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'w-8 h-8', + + // Spacing + 'mr-2', + + // Colors + 'bg-transparent', + { + 'text-surface-500 dark:text-white': !context.selected, + 'text-primary-600 dark:text-white': context.selected, + invisible: context.leaf + }, + + // States + 'hover:bg-surface-200/20 dark:hover:bg-surface-500/20', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + nodeCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.checked, + 'peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + nodeicon: { + class: [ + // Space + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + subgroup: { + class: ['m-0 list-none p-0 pl-2 mt-1'] + }, + filtercontainer: { + class: [ + 'relative block', + + // Space + 'mb-2', + + // Size + 'w-full' + ] + }, + input: { + class: [ + 'relative', + // Font + 'font-sans leading-none', + + // Spacing + 'm-0', + 'p-3 pr-10', + + // Size + 'w-full', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-600', + + // States + 'hover:border-primary-500 dark:hover:border-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50', + + // Transition & Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }, + loadingicon: { + class: [ + 'text-surface-500 dark:text-surface-0/70', + 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin' + ] + }, + searchicon: { + class: [ + // Position + 'absolute top-1/2 -mt-2 right-3', + + // Color + 'text-surface-600 dark:hover:text-white/70' + ] + } +} diff --git a/presets/lara/treeselect/index.js b/presets/lara/treeselect/index.js new file mode 100755 index 0000000..a398e1e --- /dev/null +++ b/presets/lara/treeselect/index.js @@ -0,0 +1,385 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { + 'hover:border-primary-500 dark:hover:border-primary-300': !props.invalid + }, + { + 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': + state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none', + { + 'opacity-60': props.disabled, + 'pointer-events-none': props.disabled, + 'cursor-default': props.disabled + } + ] + }), + labelContainer: { + class: ['overflow-hidden flex flex-auto cursor-pointer'] + }, + label: { + class: [ + 'block leading-5', + + // Space + 'p-3', + + // Color + 'text-surface-800 dark:text-white/80', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + tree: { + root: { + class: [ + // Space + 'p-5' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: [ + 'p-1', + 'rounded-md', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + content: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'p-2', + + // Colors + 'text-surface-600 dark:text-white/70', + { + 'bg-primary-50 dark:bg-primary-400/30 text-primary-600 dark:text-surface-0': + context.selected + }, + + // States + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/40': + (props.selectionMode == 'single' || + props.selectionMode == 'multiple') && + !context.selected + }, + + // Transition + 'transition-shadow duration-200', + + { + 'cursor-pointer select-none': + props.selectionMode == 'single' || props.selectionMode == 'multiple' + } + ] + }), + toggler: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'w-8 h-8', + + // Spacing + 'mr-2', + + // Colors + 'bg-transparent', + { + 'text-surface-500 dark:text-white': !context.selected, + 'text-primary-600 dark:text-white': context.selected, + invisible: context.leaf + }, + + // States + 'hover:bg-surface-200/20 dark:hover:bg-surface-500/20', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + nodeCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.checked, + 'peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + nodeicon: { + class: [ + // Space + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + subgroup: { + class: ['m-0 list-none p-0 pl-2 mt-1'] + }, + filtercontainer: { + class: [ + 'relative block', + + // Space + 'mb-2', + + // Size + 'w-full' + ] + }, + input: { + class: [ + 'relative', + // Font + 'font-sans leading-none', + + // Spacing + 'm-0', + 'p-3 pr-10', + + // Size + 'w-full', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-600', + + // States + 'hover:border-primary-500 dark:hover:border-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50', + + // Transition & Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }, + loadingicon: { + class: [ + 'text-surface-500 dark:text-surface-0/70', + 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin' + ] + }, + searchicon: { + class: [ + // Position + 'absolute top-1/2 -mt-2 right-3', + + // Color + 'text-surface-600 dark:hover:text-white/70' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/lara/treetable/index.js b/presets/lara/treetable/index.js new file mode 100755 index 0000000..b743d10 --- /dev/null +++ b/presets/lara/treetable/index.js @@ -0,0 +1,509 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + { + 'flex flex-col h-full': props.scrollHeight === 'flex' + } + ] + }), + loadingoverlay: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-800/40', + + // Transition + 'transition duration-200' + ] + }, + loadingicon: { + class: 'w-8 h-8 animate-spin' + }, + wrapper: ({ props }) => ({ + class: [ + // Overflow + { + 'relative overflow-auto': props.scrollable, + 'overflow-x-auto': props.resizableColumns + } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-bold', + + // Shape + props.showGridlines + ? 'border-x border-t border-b-0' + : 'border-y border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }), + footer: { + class: [ + // Background, Border & Text + 'bg-slate-50 text-slate-700', + 'border border-x-0 border-t-0 border-surface-50', + // Padding & Font + 'p-4 font-bold', + // Dark Mode + 'dark:bg-surface-900 dark:text-white/70 dark:border-surface-700' + ] + }, + table: { + class: [ + // Table & Width + 'border-collapse table-fixed w-full ' + ] + }, + thead: ({ props }) => ({ + class: [ + // Position & Z-index + { + 'top-0 z-40 sticky': props.scrollable + } + ] + }), + tbody: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + tfoot: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + headerrow: ({ props }) => ({ + class: [ + // Flexbox & Width + { + 'flex flex-nowrap w-full': props.scrollable + } + ] + }), + row: ({ context, props }) => ({ + class: [ + // Flex + { 'flex flex-nowrap w-full': context.scrollable }, + + // Color + 'dark:text-white/80', + { + 'bg-primary-50 text-primary-700 dark:bg-primary-400/30': + context.selected + }, + { + 'bg-surface-0 text-surface-600 dark:bg-surface-800': !context.selected + }, + + // Hover & Flexbox + { + 'hover:bg-surface-300/20 hover:text-surface-600': + context.selectable && !context.selected + }, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 ring-inset dark:focus:ring-primary-300/50', + + // Transition + { + 'transition duration-200': + (props.selectionMode && !context.selected) || props.rowHover + } + ] + }), + headercell: ({ context, props }) => ({ + class: [ + 'font-bold', + + // Position + { + 'sticky z-40': + context.scrollable && + context.scrollDirection === 'both' && + context.frozen + }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': + context.scrollable && + context.scrollDirection === 'both' && + !context.frozen + }, + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' + ? 'p-2' + : context?.size === 'large' + ? 'p-5' + : 'p-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted + ? 'bg-primary-50 text-primary-700' + : 'bg-surface-50 text-surface-700', + (props.sortable === '' || props.sortable) && context.sorted + ? 'dark:text-white dark:bg-primary-400/30' + : 'dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-400/30': + (props.sortable === '' || props.sortable) && !context?.sorted + }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': + context.resizable && !context.frozen + } + ] + }), + column: { + headercell: ({ context, props }) => ({ + class: [ + 'font-bold', + + // Position + { + 'sticky z-40': + context.scrollable && + context.scrollDirection === 'both' && + context.frozen + }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': + context.scrollable && + context.scrollDirection === 'both' && + !context.frozen + }, + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' + ? 'p-2' + : context?.size === 'large' + ? 'p-5' + : 'p-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted + ? 'bg-primary-50 text-primary-700' + : 'bg-surface-50 text-surface-700', + (props.sortable === '' || props.sortable) && context.sorted + ? 'dark:text-white dark:bg-primary-400/30' + : 'dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-400/30': + (props.sortable === '' || props.sortable) && !context?.sorted + }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': + context.resizable && !context.frozen + } + ] + }), + bodycell: ({ context }) => ({ + class: [ + // Position + { + sticky: + context.scrollable && + context.scrollDirection === 'both' && + context.frozen + }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': + context.scrollable && + context.scrollDirection === 'both' && + !context.frozen + }, + 'text-left', + + // Shape + 'border-0 border-b border-solid', + 'border-surface-200 dark:border-surface-700', + { + 'border-x-0 border-l-0': !context.showGridlines + }, + { 'first:border-l border-r border-b': context?.showGridlines }, + + // Color + 'bg-surface-0 dark:bg-surface-800', + + // Spacing + context?.size === 'small' + ? 'p-2' + : context?.size === 'large' + ? 'p-5' + : 'p-4', + + // Misc + 'dark:border-surface-700', + { + 'cursor-pointer': context.selectable, + sticky: + context.scrollable && + context.scrollDirection === 'both' && + context.frozen, + 'border-x-0 border-l-0': !context.showGridlines + } + ] + }), + rowtoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left align-middle', + + // Spacing + 'm-0 mr-2 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + + // States + 'hover:bg-surface-50 dark:hover:bg-surface-700', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + sorticon: ({ context }) => ({ + class: [ + 'ml-2 inline-block', + context.sorted + ? 'fill-primary-700 dark:fill-white/80' + : 'fill-surface-700 dark:fill-white/70' + ] + }), + sortbadge: { + class: [ + // Flex & Alignment + 'inline-flex items-center justify-center align-middle', + + // Shape + 'rounded-full', + + // Size + 'w-[1.143rem] leading-[1.143rem]', + + // Spacing + 'ml-2', + + // Color + 'text-primary-700 dark:text-white', + 'bg-primary-50 dark:bg-primary-400/30' + ] + }, + columnresizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + rowCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-middle', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.checked, + 'peer-hover:bg-primary-700 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + resizehelper: { + class: 'absolute hidden w-[2px] z-20 bg-primary-500 dark:bg-primary-400' + } +} diff --git a/presets/lara/tristatecheckbox/index.js b/presets/lara/tristatecheckbox/index.js new file mode 100755 index 0000000..8b45183 --- /dev/null +++ b/presets/lara/tristatecheckbox/index.js @@ -0,0 +1,112 @@ +export default { + root: { + class: [ + 'cursor-pointer inline-flex relative select-none align-bottom', + 'w-6 h-6' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.active && !props.invalid, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.active + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-primary-500 dark:peer-hover:border-primary-400': + !props.disabled && !context.active && !props.invalid, + 'peer-hover:bg-primary-600 dark:peer-hover:bg-primary-300 peer-hover:border-primary-700 dark:peer-hover:border-primary-300': + !props.disabled && context.active, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + checkicon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + }, + uncheckicon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } +} diff --git a/presets/wind/accordion/index.js b/presets/wind/accordion/index.js new file mode 100755 index 0000000..b31cee1 --- /dev/null +++ b/presets/wind/accordion/index.js @@ -0,0 +1,75 @@ +export default { + accordiontab: { + header: ({ props }) => ({ + class: [ + // Sizing + 'pt-6 pb-0', + 'mt-6', + + // Shape + 'border-x-0 border-b-0', + + // Color + 'border border-surface-200 dark:border-surface-700', + + // State + { + 'select-none pointer-events-none cursor-default opacity-60': + props?.disabled + } + ] + }), + headerAction: ({ context }) => ({ + class: [ + //Font + 'font-semibold', + 'leading-7', + + // Alignments + 'flex items-center justify-between flex-row-reverse', + 'relative', + + // Shape + 'rounded-md', + + // Color + 'bg-transparent', + 'text-surface-900 dark:text-surface-0', + + // States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-2 focus-visible:ring-primary-600 ring-inset dark:focus-visible:ring-primary-500', // Focus + + // Misc + 'cursor-pointer no-underline select-none' + ] + }), + headerIcon: { + class: 'inline-block ml-2' + }, + headerTitle: { + class: 'leading-7' + }, + content: { + class: [ + // Font + 'leading-7', + + // Spacing + 'pr-12 pt-2', + + // Color + 'text-surface-600 dark:text-surface-0/70' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } + } +} diff --git a/presets/wind/autocomplete/index.js b/presets/wind/autocomplete/index.js new file mode 100755 index 0000000..67f5796 --- /dev/null +++ b/presets/wind/autocomplete/index.js @@ -0,0 +1,294 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex + 'inline-flex', + + // Size + { 'w-full': props.multiple }, + + // Color + 'text-surface-900 dark:text-surface-0', + + //States + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + container: ({ props, state }) => ({ + class: [ + // Font + 'font-sans sm:text-sm leading-none', + + // Flex + 'flex items-center flex-wrap', + 'gap-1', + + // Spacing + 'm-0 list-none', + 'px-3 py-1', + { 'px-3 py-1.5': !props.multiple, 'px-3 py-1': props.multiple }, + // Size + 'w-full', + + // Shape + 'appearance-none rounded-md', + + // Color + 'text-surface-900 dark:text-surface-0', + 'bg-surface-0 dark:bg-surface-900', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'shadow-sm', + + // States + 'focus:outline-none focus:outline-offset-0', + // States + { + 'ring-1 ring-inset': !state.focused, + 'ring-2 ring-inset ring-primary-500 dark:ring-primary-400': + state.focused + }, + + { + 'ring-surface-300 dark:ring-surface-600': + !props.invalid && !state.focused + }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid && !state.focused }, + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-text overflow-hidden' + ] + }), + inputtoken: ({ props }) => ({ + class: [ + { 'py-1.5 px-0': !props.multiple, 'p-0.5': props.multiple }, + , + 'inline-flex flex-auto' + ] + }), + input: ({ props }) => ({ + class: [ + // Font + 'font-sans sm:text-sm leading-none', + + // Shape + 'appearance-none rounded-md', + { 'rounded-tr-none rounded-br-none': props.dropdown }, + { 'outline-none shadow-none rounded-none': props.multiple }, + + // Size + { 'w-full': props.multiple }, + + // Spacing + 'm-0', + { 'py-1.5 px-3': !props.multiple, 'p-0': props.multiple }, + + // Colors + 'text-surface-700 dark:text-white/80', + 'border', + { + 'bg-surface-0 dark:bg-surface-900': !props.multiple, + 'border-surface-300 dark:border-surface-700': + !props.multiple && !props.invalid, + 'border-0 bg-transparent': props.multiple + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'focus:outline-none focus:outline-offset-0 focus:ring-inset focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400': + !props.multiple + }, + + // Transition + 'transition-colors duration-200' + ] + }), + token: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'py-0.5 px-3', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-white/70', + 'bg-surface-200 dark:bg-surface-700' + ] + }, + label: { + class: 'leading-5' + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + }, + dropdownbutton: { + root: { + class: [ + 'relative text-sm leading-none', + + // Alignments + 'items-center inline-flex text-center align-bottom', + + // Shape + 'rounded-r-md', + + // Size + 'px-2.5 py-1.5', + '-ml-px', + + // Colors + 'text-surface-600 dark:text-surface-100', + 'bg-surface-100 dark:bg-surface-800', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700', + + // States + 'hover:bg-surface-200 dark:hover:bg-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + } + }, + loadingicon: { + class: [ + 'text-sm leading-none text-surface-500 dark:text-surface-0/70', + 'absolute top-[50%] right-[0.5rem] -mt-2 animate-spin' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-2', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + 'max-h-[15rem]', + 'overflow-auto', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + list: { + class: 'py-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + { 'font-normal': !context.selected, 'font-bold': context.selected }, + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-surface-200 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-500 dark:bg-primary-400 text-white dark:text-surface-700': + context.focused && context.selected + }, + { + 'bg-transparent text-surface-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + 'hover:bg-primary-500 dark:hover:bg-primary-400 hover:text-white dark:hover:text-surface-700', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + 'sm:text-sm', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + 'sm:text-sm', + + // Spacing + 'py-2 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/avatar/index.js b/presets/wind/avatar/index.js new file mode 100755 index 0000000..659d358 --- /dev/null +++ b/presets/wind/avatar/index.js @@ -0,0 +1,48 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Font + { + 'text-sm': props.size == null || props.size == 'normal', + 'text-lg': props.size == 'large', + 'text-xl': props.size == 'xlarge' + }, + + // Alignments + 'inline-flex items-center justify-center', + 'shrink-0', + 'relative', + + // Sizes + { + 'h-8 w-8': props.size == null || props.size == 'normal', + 'w-12 h-12': props.size == 'large', + 'w-16 h-16': props.size == 'xlarge' + }, + { '-ml-4': parent.instance.$style?.name == 'avatargroup' }, + + // Shapes + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + }, + { 'border-2': parent.instance.$style?.name == 'avatargroup' }, + + // Colors + 'bg-surface-100 dark:bg-surface-700', + { + 'border-white dark:border-surface-800': + parent.instance.$style?.name == 'avatargroup' + } + ] + }), + image: ({ props }) => ({ + class: [ + 'h-full w-full', + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + } + ] + }) +} diff --git a/presets/wind/avatargroup/index.js b/presets/wind/avatargroup/index.js new file mode 100755 index 0000000..2595944 --- /dev/null +++ b/presets/wind/avatargroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: 'flex items-center' + } +} diff --git a/presets/wind/badge/index.js b/presets/wind/badge/index.js new file mode 100755 index 0000000..1d01acf --- /dev/null +++ b/presets/wind/badge/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ props, context }) => ({ + class: [ + // Font + 'font-medium', + { + 'text-xs leading-[1.5rem]': props.size == null, + 'text-lg leading-[2.25rem]': props.size == 'large', + 'text-2xl leading-[3rem]': props.size == 'xlarge' + }, + + // Alignment + 'text-center inline-block', + + // Size + 'p-0 px-1', + { + 'min-w-[1.5rem] h-[1.5rem]': props.size == null, + 'min-w-[2.25rem] h-[2.25rem]': props.size == 'large', + 'min-w-[3rem] h-[3rem]': props.size == 'xlarge' + }, + + // Shape + { + 'rounded-full': props.value.length == 1, + 'rounded-[0.71rem]': props.value.length !== 1 + }, + + // Color + 'text-white dark:text-surface-900', + { + 'bg-primary-500 dark:bg-primary-400': + props.severity == null || props.severity == 'primary', + 'bg-surface-500 dark:bg-surface-400': props.severity == 'secondary', + 'bg-green-500 dark:bg-green-400': props.severity == 'success', + 'bg-blue-500 dark:bg-blue-400': props.severity == 'info', + 'bg-orange-500 dark:bg-orange-400': props.severity == 'warning', + 'bg-purple-500 dark:bg-purple-400': props.severity == 'help', + 'bg-red-500 dark:bg-red-400': props.severity == 'danger' + } + ] + }) +} diff --git a/presets/wind/badgedirective/index.js b/presets/wind/badgedirective/index.js new file mode 100755 index 0000000..5f281b3 --- /dev/null +++ b/presets/wind/badgedirective/index.js @@ -0,0 +1,50 @@ +export default { + root: ({ context }) => ({ + class: [ + // Font + 'font-medium', + 'text-xs leading-6 font-sans', + + // Alignment + 'flex items-center justify-center', + 'text-center', + + // Position + 'absolute top-0 right-0 transform translate-x-1/2 -translate-y-1/2 origin-top-right', + + // Size + 'm-0', + { + 'p-0': context.nogutter || context.dot, + 'p-1': !context.nogutter && !context.dot, + 'min-w-[0.5rem] h-2': context.dot, + 'min-w-[1rem] h-4': !context.dot + }, + + // Shape + { + 'rounded-full': context.nogutter || context.dot, + 'rounded-[10px]': !context.nogutter && !context.dot + }, + + // Color + 'text-white dark:text-surface-900', + 'ring-1 ring-white dark:ring-surface-900', + { + 'bg-primary-500 dark:bg-primary-400': + !context.info && + !context.success && + !context.warning && + !context.danger && + !context.help && + !context.secondary, + 'bg-surface-500 dark:bg-surface-400': context.secondary, + 'bg-green-500 dark:bg-green-400': context.success, + 'bg-blue-500 dark:bg-blue-400': context.info, + 'bg-orange-500 dark:bg-orange-400': context.warning, + 'bg-purple-500 dark:bg-purple-400': context.help, + 'bg-red-500 dark:bg-red-400': context.danger + } + ] + }) +} diff --git a/presets/wind/blockui/index.js b/presets/wind/blockui/index.js new file mode 100755 index 0000000..ba57a86 --- /dev/null +++ b/presets/wind/blockui/index.js @@ -0,0 +1,8 @@ +export default { + root: { + class: 'relative' + }, + mask: { + class: 'bg-surface-900/60 backdrop-blur-sm' + } +} diff --git a/presets/wind/breadcrumb/index.js b/presets/wind/breadcrumb/index.js new file mode 100755 index 0000000..42f867f --- /dev/null +++ b/presets/wind/breadcrumb/index.js @@ -0,0 +1,45 @@ +export default { + menu: { + class: [ + // Flex & Alignment + 'flex items-center flex-nowrap gap-x-1.5', + + // Spacing + 'm-0 p-0 list-none leading-none' + ] + }, + action: { + class: [ + // Font + 'font-semibold text-decoration-none text-sm', + + // Flex & Alignment + 'flex items-center gap-x-1.5 ', + + // Shape + 'rounded-md', + + // Color + 'text-surface-500 dark:text-white/70', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transitions + 'transition-shadow duration-200' + ] + }, + icon: { + class: 'text-surface-500 dark:text-white/70' + }, + separator: { + class: [ + // Flex & Alignment + 'flex items-center shrink-0', + + // Color + 'text-surface-500 dark:text-white/70' + ] + } +} diff --git a/presets/wind/button/index.js b/presets/wind/button/index.js new file mode 100755 index 0000000..9854c53 --- /dev/null +++ b/presets/wind/button/index.js @@ -0,0 +1,473 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center justify-center inline-flex text-center align-bottom', + + // Sizes & Spacing + 'text-sm', + { + 'px-2.5 py-1.5 min-w-[2rem]': props.size === null, + 'px-2 py-1': props.size === 'small', + 'px-3 py-2': props.size === 'large' + }, + { + 'h-8 w-8 p-0': props.label == null && props.icon !== null + }, + + // Shapes + { + 'shadow-sm': !props.raised && !props.link && !props.text, + 'shadow-lg': props.raised + }, + { 'rounded-md': !props.rounded, 'rounded-full': props.rounded }, + { + 'rounded-none first:rounded-l-md last:rounded-r-md self-center': + parent.instance.$name == 'InputGroup' + }, + + // Link Button + { 'text-primary-600 bg-transparent ring-transparent': props.link }, + + // Plain Button + { + 'text-white bg-gray-500 ring-1 ring-gray-500': + props.plain && !props.outlined && !props.text + }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { + 'text-surface-500 ring-1 ring-gray-500': props.plain && props.outlined + }, + + // Text Button + { 'bg-transparent ring-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-white dark:text-surface-900': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain, + 'bg-primary-500 dark:bg-primary-400': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-primary-500 dark:ring-primary-400': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain + }, + // Primary Text Button + { + 'text-primary-500 dark:text-primary-400': + props.text && props.severity === null && !props.plain + }, + // Primary Outlined Button + { + 'text-primary-500 ring-1 ring-primary-500 hover:bg-primary-300/20': + props.outlined && props.severity === null && !props.plain + }, + + // Secondary Button + { + 'text-white dark:text-surface-900': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain, + 'bg-surface-500 dark:bg-surface-400': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-surface-500 dark:ring-surface-400': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain + }, + // Secondary Text Button + { + 'text-surface-500 dark:text-surface-400': + props.text && props.severity === 'secondary' && !props.plain + }, + // Secondary Outlined Button + { + 'text-surface-500 ring-1 ring-surface-500 hover:bg-surface-300/20': + props.outlined && props.severity === 'secondary' && !props.plain + }, + + // Success Button + { + 'text-white dark:text-green-900': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain, + 'bg-green-500 dark:bg-green-400': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-green-500 dark:ring-green-400': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain + }, + // Success Text Button + { + 'text-green-500 dark:text-green-400': + props.text && props.severity === 'success' && !props.plain + }, + // Success Outlined Button + { + 'text-green-500 ring-1 ring-green-500 hover:bg-green-300/20': + props.outlined && props.severity === 'success' && !props.plain + }, + + // Info Button + { + 'text-white dark:text-surface-900': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain, + 'bg-blue-500 dark:bg-blue-400': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-blue-500 dark:ring-blue-400': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain + }, + // Info Text Button + { + 'text-blue-500 dark:text-blue-400': + props.text && props.severity === 'info' && !props.plain + }, + // Info Outlined Button + { + 'text-blue-500 ring-1 ring-blue-500 hover:bg-blue-300/20 ': + props.outlined && props.severity === 'info' && !props.plain + }, + + // Warning Button + { + 'text-white dark:text-surface-900': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain, + 'bg-orange-500 dark:bg-orange-400': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-orange-500 dark:ring-orange-400': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain + }, + // Warning Text Button + { + 'text-orange-500 dark:text-orange-400': + props.text && props.severity === 'warning' && !props.plain + }, + // Warning Outlined Button + { + 'text-orange-500 ring-1 ring-orange-500 hover:bg-orange-300/20': + props.outlined && props.severity === 'warning' && !props.plain + }, + + // Help Button + { + 'text-white dark:text-surface-900': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain, + 'bg-purple-500 dark:bg-purple-400': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-purple-500 dark:ring-purple-400': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain + }, + // Help Text Button + { + 'text-purple-500 dark:text-purple-400': + props.text && props.severity === 'help' && !props.plain + }, + // Help Outlined Button + { + 'text-purple-500 ring-1 ring-purple-500 hover:bg-purple-300/20': + props.outlined && props.severity === 'help' && !props.plain + }, + + // Danger Button + { + 'text-white dark:text-surface-900': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain, + 'bg-red-500 dark:bg-red-400': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-red-500 dark:ring-red-400': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain + }, + // Danger Text Button + { + 'text-red-500 dark:text-red-400': + props.text && props.severity === 'danger' && !props.plain + }, + // Danger Outlined Button + { + 'text-red-500 ring-1 ring-red-500 hover:bg-red-300/20': + props.outlined && props.severity === 'danger' && !props.plain + }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-offset-current', + { + 'focus:ring-offset-2': + !props.link && !props.plain && !props.outlined && !props.text + }, + + // Link + { 'focus:ring-primary-500 dark:focus:ring-primary-400': props.link }, + + // Plain + { + 'hover:bg-gray-600 hover:ring-gray-600': + props.plain && !props.outlined && !props.text + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': props.plain && (props.text || props.outlined) + }, + + // Primary + { + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:ring-primary-600 dark:hover:ring-primary-300': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-primary-500 dark:focus:ring-primary-400': + props.severity === null + }, + // Text & Outlined Button + { + 'hover:bg-primary-300/20': + (props.text || props.outlined) && + props.severity === null && + !props.plain + }, + + // Secondary + { + 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:ring-surface-600 dark:hover:ring-surface-300': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-surface-500 dark:focus:ring-surface-400': + props.severity === 'secondary' + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + (props.text || props.outlined) && + props.severity === 'secondary' && + !props.plain + }, + + // Success + { + 'hover:bg-green-600 dark:hover:bg-green-300 hover:ring-green-600 dark:hover:ring-green-300': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-green-500 dark:focus:ring-green-400': + props.severity === 'success' + }, + // Text & Outlined Button + { + 'hover:bg-green-300/20': + (props.text || props.outlined) && + props.severity === 'success' && + !props.plain + }, + + // Info + { + 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:ring-blue-600 dark:hover:ring-blue-300': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-blue-500 dark:focus:ring-blue-400': + props.severity === 'info' + }, + // Text & Outlined Button + { + 'hover:bg-blue-300/20': + (props.text || props.outlined) && + props.severity === 'info' && + !props.plain + }, + + // Warning + { + 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:ring-orange-600 dark:hover:ring-orange-300': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-orange-500 dark:focus:ring-orange-400': + props.severity === 'warning' + }, + // Text & Outlined Button + { + 'hover:bg-orange-300/20': + (props.text || props.outlined) && + props.severity === 'warning' && + !props.plain + }, + + // Help + { + 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:ring-purple-600 dark:hover:ring-purple-300': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-purple-500 dark:focus:ring-purple-400': + props.severity === 'help' + }, + // Text & Outlined Button + { + 'hover:bg-purple-300/20': + (props.text || props.outlined) && + props.severity === 'help' && + !props.plain + }, + + // Danger + { + 'hover:bg-red-600 dark:hover:bg-red-300 hover:ring-red-600 dark:hover:ring-red-300': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-red-500 dark:focus:ring-red-400': + props.severity === 'danger' + }, + // Text & Outlined Button + { + 'hover:bg-red-300/20': + (props.text || props.outlined) && + props.severity === 'danger' && + !props.plain + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-semibold', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingicon: ({ props }) => ({ + class: [ + 'h-3 w-3', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [ + { + 'ml-2 w-4 h-4 leading-none flex items-center justify-center': + props.badge + } + ] + }) +} diff --git a/presets/wind/calendar/index.js b/presets/wind/calendar/index.js new file mode 100755 index 0000000..5f3a48f --- /dev/null +++ b/presets/wind/calendar/index.js @@ -0,0 +1,659 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'max-w-full', + 'relative', + 'shadow-sm', + 'rounded-md', + // Misc + { + 'opacity-40 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + input: ({ props }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Font + 'font-sans leading-none sm:text-sm', + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-inset ring-offset-0', + { 'ring-surface-300 dark:ring-surface-700': !props.invalid }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid }, + + // Spacing + 'm-0 py-1.5 px-3', + '-ml-px', + + // Shape + 'appearance-none', + { 'rounded-md': !props.showIcon || props.iconDisplay == 'input' }, + { + 'rounded-l-md flex-1 pr-9 ': + props.showIcon && props.iconDisplay !== 'input' + }, + { + 'rounded-md flex-1 pr-9': + props.showIcon && props.iconDisplay === 'input' + }, + + // Transitions + 'transition-colors', + 'duration-200', + + // States + 'outline-none focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }), + inputicon: { + class: [ + 'sm:text-sm', + 'absolute top-[50%] -mt-2', + 'text-surface-600 dark:text-surface-200', + 'right-[.75rem]' + ] + }, + dropdownbutton: { + root: { + class: [ + 'relative text-sm', + + // Alignments + 'items-center inline-flex text-center align-bottom', + + // Shape + 'rounded-r-md', + + // Size + 'px-2.5 py-1.5 leading-none', + + // Colors + 'text-surface-600 dark:text-surface-100', + 'bg-surface-100 dark:bg-surface-800', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700', + + // States + 'hover:bg-surface-200 dark:hover:bg-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + } + }, + panel: ({ props }) => ({ + class: [ + // Display & Position + { + absolute: !props.inline, + 'inline-block': props.inline + }, + + // Size + { 'w-auto p-2 ': !props.inline }, + { 'min-w-[80vw] w-auto p-2 ': props.touchUI }, + { 'p-2 min-w-full': props.inline }, + + // Shape + 'rounded-lg', + { + 'shadow-md ring-1': !props.inline + }, + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'ring-surface-200 dark:ring-surface-700', + + //misc + { 'overflow-x-auto': props.inline } + ] + }), + datepickerMask: { + class: [ + 'fixed top-0 left-0 w-full h-full', + 'flex items-center justify-center', + 'bg-black bg-opacity-90' + ] + }, + header: ({ props }) => ({ + class: [ + //Font + 'font-semibold text-md', + + // Flexbox and Alignment + 'flex items-center justify-between', + + // Spacing + 'm-0', + { + 'py-2 pl-2 pb-4': !(props.numberOfMonths > 1), + 'py-2 pb-4': props.numberOfMonths > 1 + }, + + // Shape + 'rounded-t-md', + + // Colors + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800' + ] + }), + previousbutton: ({ props }) => ({ + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + { + ' order-2': !(props.numberOfMonths > 1), + 'order-1': props.numberOfMonths > 1 + }, + // Size + 'p-1.5 m-0', + + // Colors + 'text-surface-500 dark:text-white/60', + 'border-0', + 'bg-transparent', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }), + title: ({ props }) => ({ + class: [ + // Text + 'leading-6', + 'my-0', + 'order-1', + { + 'mr-auto': !(props.numberOfMonths > 1), + ' mx-auto': props.numberOfMonths > 1 + } + ] + }), + monthTitle: { + class: [ + // Font + 'text-base leading-6', + 'font-semibold', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'm-0 mr-2', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + + // Misc + 'cursor-pointer' + ] + }, + yearTitle: { + class: [ + // Font + 'text-base leading-6', + 'font-semibold', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'm-0', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + + // Misc + 'cursor-pointer' + ] + }, + nextbutton: ({ props }) => ({ + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center order-3', + { + ' order-3': !(props.numberOfMonths > 1), + 'order-1': props.numberOfMonths > 1 + }, + + // Size + 'p-1.5 m-0', + + // Colors + 'text-surface-500 dark:text-white/60', + 'border-0', + 'bg-transparent', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }), + table: { + class: [ + // Size & Shape + 'w-full', + + // Spacing + 'm-0 my-2' + ] + }, + tableheadercell: { + class: [ + // Spacing + 'p-0 md:p-2' + ] + }, + tablebodyrow: { + class: [ + 'border-b border-surface-200 dark:border-surface-700 last:border-b-0' + ] + }, + weekheader: { + class: [ + 'leading-6 text-sm font-normal', + 'text-surface-600 dark:text-white/70', + 'opacity-40 cursor-default', + 'mb-2' + ] + }, + weeknumber: { + class: [ + 'text-surface-600 dark:text-white/70 font-normal', + 'opacity-40 cursor-default' + ] + }, + weekday: { + class: [ + // Colors + 'text-surface-500 dark:text-white/60 font-normal' + ] + }, + day: { + class: [ + // Spacing + 'p-0 md:p-2' + ] + }, + weeklabelcontainer: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-10 h-10', + 'rounded-full', + 'border-transparent border', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': + !context.selected && !context.disabled, + 'text-primary-500 dark:text-primary-400': + context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-800/80': !context.disabled + }, + { + 'opacity-40 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + daylabel: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-8 h-8', + 'rounded-full', + + // Colors + { + 'text-surface-0 bg-surface-900 dark:text-surface-900 dark:bg-surface-0': + context.date.today && !context.selected && !context.disabled, + 'text-surface-600 dark:text-white/70 bg-transparent': + !context.selected && !context.disabled && !context.date.today, + 'text-primary-500 dark:text-primary-400': + context.selected && !context.disabled && !context.date.today, + 'text-primary-200 dark:text-primary-600 bg-surface-900 dark:bg-surface-0': + context.selected && !context.disabled && context.date.today + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.disabled, + 'hover:bg-surface-700 dark:hover:bg-surface-200': + !context.disabled && context.date.today + }, + + { + 'opacity-40 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + monthpicker: { + class: [ + // Spacing + 'my-2' + ] + }, + month: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/3', + 'px-2.5 py-1.5', + 'mt-1', + 'text-md leading-none', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': + !context.selected && !context.disabled, + 'text-primary-500 dark:text-primary-400': + context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:bg-surface-100 dark:hover:bg-surface-600/80', + + // Misc + 'cursor-pointer' + ] + }), + yearpicker: { + class: [ + // Spacing + 'my-2' + ] + }, + year: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/3', + 'px-2.5 py-1.5', + 'mt-1', + 'text-md leading-none', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': + !context.selected && !context.disabled, + 'text-primary-500 dark:text-primary-400': + context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:bg-surface-100 dark:hover:bg-surface-600/80', + + // Misc + 'cursor-pointer' + ] + }), + timepicker: { + class: [ + // Flexbox + 'flex', + 'justify-center items-center', + + // Spacing + 'p-1.5' + ] + }, + separatorcontainer: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + separator: { + class: [ + // Text + 'text-xl' + ] + }, + hourpicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + minutepicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + secondPicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + ampmpicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + incrementbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'p-1.5 m-0', + + // Colors + 'text-surface-500 dark:text-white/60', + 'border-0', + 'bg-transparent', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + decrementbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'p-1.5 m-0', + + // Colors + 'text-surface-500 dark:text-white/60', + 'border-0', + 'bg-transparent', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + groupcontainer: { + class: [ + // Flexbox + 'flex' + ] + }, + group: { + class: [ + // Flexbox and Sizing + 'flex-1', + + // Borders + 'border-l', + 'border-surface-200 dark:border-surface-700', + + // Spacing + 'pr-0.5', + 'pl-0.5', + 'pt-0', + 'pb-0', + + // Pseudo-Classes + 'first:pl-0', + 'first:border-l-0' + ] + }, + buttonbar: { + class: [ + // Flexbox + 'flex justify-between items-center', + + // Spacing + 'pt-2.5 pb-1.5 px-0', + + // Shape + 'border-t border-surface-200 dark:border-surface-700' + ] + }, + todaybutton: { + root: { + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Spacing + 'px-2.5 py-1.5 text-sm leading-none', + + // Shape + 'rounded-md', + + // Colors + 'bg-transparent border-transparent', + 'text-primary-500 dark:text-primary-400', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-2 ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:bg-primary-300/20', + + // Misc + 'cursor-pointer' + ] + } + }, + clearbutton: { + root: { + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Spacing + 'px-2.5 py-1.5 text-sm leading-none', + + // Shape + 'rounded-md', + + // Colors + 'bg-transparent border-transparent', + 'text-primary-500 dark:text-primary-400', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-2 ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:bg-primary-300/20', + + // Misc + 'cursor-pointer' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/card/index.js b/presets/wind/card/index.js new file mode 100755 index 0000000..9cc0476 --- /dev/null +++ b/presets/wind/card/index.js @@ -0,0 +1,40 @@ +export default { + root: { + class: [ + //Shape + 'rounded-lg', + 'shadow-md', + + //Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + header: { + class: ['border-b border-surface-200 dark:border-surface-700'] + }, + body: { + class: 'py-5' + }, + title: { + class: 'text-lg font-medium mb-2 px-5 md:px-6' + }, + subtitle: { + class: [ + //Spacing + 'mb-1 px-5 md:px-6', + + //Color + 'text-surface-600 dark:text-surface-0/60' + ] + }, + content: { + class: 'py-6 px-5 md:px-6' + }, + footer: { + class: [ + 'px-5 md:px-6 pt-5 pb-0', + 'border-t border-surface-200 dark:border-surface-700' + ] + } +} diff --git a/presets/wind/carousel/index.js b/presets/wind/carousel/index.js new file mode 100755 index 0000000..456db7d --- /dev/null +++ b/presets/wind/carousel/index.js @@ -0,0 +1,152 @@ +export default { + root: { + class: [ + // Flexbox + 'flex flex-col' + ] + }, + content: { + class: [ + // Flexbox & Overflow + 'flex flex-col overflow-auto' + ] + }, + container: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col': props.orientation == 'vertical' + } + ] + }), + previousbutton: { + class: [ + // Flexbox & Alignment + 'flex justify-center items-center self-center', + + // Sizing & Overflow + 'overflow-hidden w-8 h-8', + + // Spacing + 'mx-2', + + // Shape + 'rounded-full', + + // Border & Background + 'border-0 bg-transparent', + + // Color + 'text-surface-600', + + // Transitions + 'transition duration-200 ease-in-out' + ] + }, + nextbutton: { + class: [ + // Flexbox & Alignment + 'flex justify-center items-center self-center', + + // Sizing & Overflow + 'overflow-hidden w-8 h-8', + + // Spacing + 'mx-2', + + // Shape + 'rounded-full', + + // Border & Background + 'border-0 bg-transparent', + + // Color + 'text-surface-600', + + // Transitions + 'transition duration-200 ease-in-out' + ] + }, + itemscontent: { + class: [ + // Overflow & Width + 'overflow-hidden w-full' + ] + }, + itemscontainer: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation & Sizing + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col h-full': props.orientation == 'vertical' + } + ] + }), + item: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow ', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': + props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + itemcloned: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow', + 'unvisible', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': + props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + indicators: { + class: [ + // Flexbox & Alignment + 'flex flex-row justify-center flex-wrap' + ] + }, + indicator: { + class: [ + // Spacing + 'mr-2 mb-2' + ] + }, + indicatorbutton: ({ context }) => ({ + class: [ + // Sizing & Shape + 'w-6 h-1.5 rounded-md', + + // Transitions + 'transition duration-200', + + // Focus Styles + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Color & Background + { + 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': + !context.highlighted, + 'bg-primary-500 hover:bg-primary-600': context.highlighted + } + ] + }) +} diff --git a/presets/wind/cascadeselect/index.js b/presets/wind/cascadeselect/index.js new file mode 100755 index 0000000..122b262 --- /dev/null +++ b/presets/wind/cascadeselect/index.js @@ -0,0 +1,225 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + 'shadow-sm', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + + // States + { + 'ring-1 ring-inset': !state.focused, + 'ring-2 ring-inset ring-primary-500 dark:ring-primary-400': + state.focused + }, + + { + 'ring-surface-300 dark:ring-surface-600': + !props.invalid && !state.focused + }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid && !state.focused }, + + // Misc + 'cursor-default', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled } + ] + }), + label: ({ props }) => ({ + class: [ + //Font + 'font-sans', + 'leading-6', + 'sm:text-sm', + + // Flex & Alignment + ' flex flex-auto', + + // Sizing and Spacing + 'w-[1%]', + 'py-1.5 px-3', + + //Shape + 'rounded-none', + + // Color and Background + 'bg-transparent', + 'border-0', + { + 'text-surface-800 dark:text-white/80': props.modelValue, + 'text-surface-400 dark:text-surface-500': !props.modelValue + }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + dropdownbutton: { + class: [ + //Font + 'sm:text-sm', + + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-2', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-1 list-none mx-1.5' + }, + item: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + + // Shape + 'border-0', + 'rounded-md', + + // Spacing + 'm-0', + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-black/70': + context.focused && !context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + context.focused && context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-50 dark:hover:bg-surface-800': !context.active, + 'hover:bg-surface-100 dark:hover:bg-black/40 text-surface-900 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + content: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2 px-4', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + groupicon: { + class: [ + // Alignment + 'ml-auto' + ] + }, + sublist: { + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'p-1.5', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/checkbox/index.js b/presets/wind/checkbox/index.js new file mode 100755 index 0000000..1ae5a5c --- /dev/null +++ b/presets/wind/checkbox/index.js @@ -0,0 +1,112 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4', + 'h-4', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked && !props.invalid, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + icon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } +} diff --git a/presets/wind/chip/index.js b/presets/wind/chip/index.js new file mode 100755 index 0000000..84c0c83 --- /dev/null +++ b/presets/wind/chip/index.js @@ -0,0 +1,45 @@ +export default { + root: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'px-2 py-0.5', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-surface-0/70', + 'bg-surface-200 dark:bg-surface-700' + ] + }, + label: { + class: 'text-xs leading-6 mx-0' + }, + icon: { + class: 'leading-6 mr-2' + }, + image: { + class: ['w-6 h-6 mr-2', 'rounded-full'] + }, + removeIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + } +} diff --git a/presets/wind/chips/index.js b/presets/wind/chips/index.js new file mode 100755 index 0000000..17370bb --- /dev/null +++ b/presets/wind/chips/index.js @@ -0,0 +1,120 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex', + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + container: ({ state, props }) => ({ + class: [ + // Font + 'font-sans sm:text-sm leading-none', + + // Flex + 'flex items-center flex-wrap gap-1', + + // Spacing + 'm-0 py-1 px-3', + + // Size + 'w-full', + + // Shape + 'list-none', + 'rounded-md', + + // Color + 'text-surface-900 dark:text-surface-0', + 'bg-surface-0 dark:bg-surface-900', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'shadow-sm', + + // States + { + 'ring-1 ring-inset': !state.focused, + 'ring-2 ring-inset ring-primary-500 dark:ring-primary-400': + state.focused + }, + + { + 'ring-surface-300 dark:ring-surface-600': + !props.invalid && !state.focused + }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid && !state.focused }, + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-text overflow-hidden', + 'appearance-none' + ] + }), + + inputtoken: { + class: ['py-0.5 px-0', 'inline-flex flex-auto'] + }, + input: { + class: [ + // Font + 'font-sans sm:text-sm leading-none', + + // Size + 'w-full', + + // Spacing + 'p-0 m-0', + + // Shape + 'appearance-none rounded-none', + 'border-0 outline-none', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-transparent', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500' + ] + }, + token: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'py-0.5 px-3', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-white/70', + 'bg-surface-200 dark:bg-surface-700' + ] + }, + label: { + class: 'leading-5' + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + } +} diff --git a/presets/wind/colorpicker/index.js b/presets/wind/colorpicker/index.js new file mode 100755 index 0000000..70e5e88 --- /dev/null +++ b/presets/wind/colorpicker/index.js @@ -0,0 +1,129 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display + 'inline-block', + + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + input: { + class: [ + // Font + 'font-sans text-base ', + + // Spacing + 'm-0', + 'p-3', + + // Size & Shape + 'rounded-lg w-8 h-8', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // States + 'hover:border-primary-500 dark:hover:border-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }, + panel: ({ props }) => ({ + class: [ + // Position & Size + { + 'relative h-[166px] w-[193px]': props.inline, + 'absolute h-[166px] w-[193px]': !props.inline + }, + + // Shape + 'shadow-md border rounded-md', + + // Colors + 'bg-surface-800 border-surface-900 dark:border-surface-600' + ] + }), + selector: { + class: [ + // Position + 'absolute top-[8px] left-[8px]', + + // Size + 'h-[150px] w-[150px]' + ] + }, + color: { + class: [ + // Size + 'h-[150px] w-[150px]' + ], + style: + 'background: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0) 100%), linear-gradient(to right, #fff 0%, rgb(255 255 255 / 0) 100%)' + }, + colorhandle: { + class: [ + 'absolute', + + // Shape + 'rounded-full border border-solid', + + // Size + 'h-[10px] w-[10px]', + + // Spacing + '-ml-[5px] -mt-[5px]', + + // Colors + 'border-white', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + hue: { + class: [ + // Position + 'absolute top-[8px] left-[167px]', + + // Size + 'h-[150px] w-[17px]', + + // Opacity + 'opacity-85' + ], + style: + 'background: linear-gradient(0deg, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red)' + }, + huehandle: { + class: [ + // Position + 'absolute left-0 -ml-[2px] -mt-[5px]', + + // Size + 'h-[10px] w-[21px]', + + // Shape + 'border-solid border-2', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/confirmpopup/index.js b/presets/wind/confirmpopup/index.js new file mode 100755 index 0000000..b3caa0f --- /dev/null +++ b/presets/wind/confirmpopup/index.js @@ -0,0 +1,123 @@ +export default { + root: { + class: [ + // Shape + 'rounded-lg', + 'shadow-xl', + 'border-0', + + // Positioning + 'z-40 transform origin-center', + 'mt-3 absolute left-0 top-0', + + // Color + 'dark:border', + 'dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + + // Before: Arrow + 'before:absolute before:w-0 before:-top-3 before:h-0 before:border-transparent before:border-solid before:ml-6 before:border-x-[0.75rem] before:border-b-[0.75rem] before:border-t-0 before:border-b-surface-0 dark:before:border-b-surface-800' + ] + }, + content: { + class: [ + // Font + 'text-sm', + + // Spacing + 'px-6', + 'py-3', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-0/70', + + // Misc + 'overflow-y-auto' + ] + }, + icon: { + class: 'text-xl mr-2' + }, + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-3', + + // Spacing + 'px-6', + 'py-3', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-50 dark:bg-surface-700', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + rejectbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-2.5 py-1.5 min-w-[2rem]', + 'text-sm', + + // Shape + 'rounded-md', + + // Color + 'text-primary-500 dark:text-primary-400', + + // States + 'hover:bg-primary-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + } + }, + acceptbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-2.5 py-1.5 min-w-[2rem]', + 'text-sm', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'ring-1 ring-primary-500 dark:ring-primary-400', + + // States + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-offset-current', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/contextmenu/index.js b/presets/wind/contextmenu/index.js new file mode 100755 index 0000000..1d4bf1d --- /dev/null +++ b/presets/wind/contextmenu/index.js @@ -0,0 +1,128 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + 'shadow-md', + + // Spacing + 'p-1.5', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white/80', + 'dark:border dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: 'relative' + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-md', + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-black/70': + context.focused && !context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + context.focused && context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-50 dark:hover:bg-surface-800': !context.active, + 'hover:bg-surface-100 dark:hover:bg-black/40 text-surface-900 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + action: { + class: [ + 'relative', + + // Font + 'font-semibold', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + 'leading-6', + 'text-sm' + ] + }, + label: { + class: ['leading-6', 'text-sm'] + }, + submenu: ({ props }) => ({ + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'p-1.5', + 'm-0', + 'list-none', + + // Shape + 'shadow-md', + 'rounded-md', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }), + submenuicon: { + class: ['ml-auto'] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-250' + } +} diff --git a/presets/wind/datatable/index.js b/presets/wind/datatable/index.js new file mode 100755 index 0000000..4353729 --- /dev/null +++ b/presets/wind/datatable/index.js @@ -0,0 +1,1330 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + { 'flex flex-col': props.scrollable && props.scrollHeight === 'flex' }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' }, + + // Shape + 'border-spacing-0 border-separate' + ] + }), + loadingoverlay: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-800/40', + + // Transition + 'transition duration-200' + ] + }, + loadingicon: { + class: 'w-8 h-8 animate-spin' + }, + wrapper: ({ props }) => ({ + class: [ + { + relative: props.scrollable, + 'flex flex-col grow': props.scrollable && props.scrollHeight === 'flex' + }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-semibold', + + // Shape + props.showGridlines ? 'border-b' : 'border-b border-x-0', + + // Spacing + 'py-3.5 px-3', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-300 dark:border-surface-600', + 'text-surface-700 dark:text-white/80' + ] + }), + table: { + class: 'w-full border-spacing-0 border-separate' + }, + thead: ({ context }) => ({ + class: [ + { + 'top-0 z-40 sticky': context.scrollable + } + ] + }), + tbody: ({ instance, context }) => ({ + class: [ + 'border-t border-surface-300 dark:border-surface-600', + { + 'sticky z-20 font-semibold': instance.frozenRow && context.scrollable + } + ] + }), + tfoot: ({ context }) => ({ + class: [ + { + 'bottom-0 z-0': context.scrollable + } + ] + }), + footer: { + class: [ + 'font-semibold', + + // Shape + 'border-t-0 border-t border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }, + column: { + headercell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'text-sm', + + // Position + { 'sticky z-20 border-b': props.frozen || props.frozen === '' }, + { relative: context.resizable }, + + // Alignment + 'text-left', + + // Shape + { 'border-r last:border-r-0': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' + ? 'py-2.5 px-2' + : context?.size === 'large' + ? 'py-5 px-4' + : 'py-3.5 px-3', + // Color + (props.sortable === '' || props.sortable) && context.sorted + ? 'text-primary-500' + : 'bg-surface-0 text-surface-700', + (props.sortable === '' || props.sortable) && context.sorted + ? 'dark:text-primary-400' + : 'dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 ', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { 'cursor-pointer': props.sortable === '' || props.sortable }, + { + 'overflow-hidden space-nowrap bg-clip-padding': context.resizable + } + ] + }), + headercontent: { + class: 'flex items-center' + }, + sort: ({ context }) => ({ + class: [ + context.sorted ? 'text-primary-500' : 'text-surface-700', + context.sorted ? 'dark:text-primary-400' : 'dark:text-white/80' + ] + }), + bodycell: ({ props, context, state, parent }) => ({ + class: [ + //Position + { 'sticky box-border border-b': parent.instance.frozenRow }, + { 'sticky box-border border-b': props.frozen || props.frozen === '' }, + 'text-sm', + + // Alignment + 'text-left', + + 'border-0 border-b border-solid', + { 'last:border-r-0 border-r border-b': context?.showGridlines }, + { + 'bg-surface-0 dark:bg-surface-800': + parent.instance.frozenRow || props.frozen || props.frozen === '' + }, + + // Spacing + { 'py-2.5 px-2': context?.size === 'small' && !state['d_editing'] }, + { 'py-5 px-4': context?.size === 'large' && !state['d_editing'] }, + { + 'py-3.5 px-3': + context?.size !== 'large' && + context?.size !== 'small' && + !state['d_editing'] + }, + { 'py-[0.6rem] px-2': state['d_editing'] }, + + // Color + 'border-surface-200 dark:border-surface-700', + + // Misc + 'space-nowrap' + ] + }), + footercell: ({ context }) => ({ + class: [ + // Font + 'font-bold', + + // Alignment + 'text-left', + + // Shape + { 'border-r last:border-r-0': context?.showGridlines }, + 'border-0 border-t border-solid', + + // Spacing + context?.size === 'small' + ? 'p-2' + : context?.size === 'large' + ? 'p-5' + : 'p-4', + + // Color + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800' + ] + }), + sorticon: { + class: 'ml-2' + }, + sortbadge: { + class: [ + // Flex & Alignment + 'flex items-center justify-center align-middle', + + // Shape + 'rounded-full', + + // Size + 'w-[1.143rem] leading-[1.143rem]', + + // Spacing + 'ml-2', + + // Color + 'text-primary-700 dark:text-white', + 'bg-primary-50 dark:bg-primary-400/30' + ] + }, + columnfilter: { + class: 'inline-flex items-center ml-auto' + }, + filteroverlay: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-2', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Size + 'min-w-[12.5rem]', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + filtermatchmodedropdown: { + root: ({ state }) => ({ + class: [ + // Display and Position + 'flex', + 'relative', + + // Spacing + 'mb-2', + + // Shape + 'w-full', + 'rounded-md', + 'shadow-sm', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + { + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700': + !state.focused + }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { + 'outline-none outline-offset-0 ring-2 ring-primary-500 dark:ring-primary-400': + state.focused + }, + + // Misc + 'cursor-default', + 'select-none' + ] + }), + input: ({ props }) => ({ + class: [ + //Font + 'font-sans', + 'leading-6', + 'sm:text-sm', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { + 'text-surface-800 dark:text-white/80': props.modelValue, + 'text-surface-400 dark:text-surface-500': !props.modelValue + }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + 'py-1.5 px-3', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }) + }, + filterrowitems: { + class: 'py-1 list-none m-0' + }, + filterrowitem: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + { + 'font-normal': !context?.highlighted, + 'font-bold': context?.highlighted + }, + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + { 'text-surface-700 dark:text-white/80': !context?.highlighted }, + { + 'bg-surface-0 dark:bg-surface-800 text-surface-700 dark:text-white/80': + !context?.highlighted + }, + { + 'bg-primary-500 dark:bg-primary-400 text-white dark:text-surface-700': + context?.highlighted + }, + + //States + 'hover:bg-primary-500 dark:hover:bg-primary-400 hover:text-white dark:hover:text-surface-700', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + filteroperator: { + class: [ + // Spacing + 'p-4', + + // Shape + 'border-b border-solid', + 'rounded-t-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'border-surface-200 dark:border-surface-700' + ] + }, + filteroperatordropdown: { + root: ({ state }) => ({ + class: [ + // Display and Position + 'flex', + 'relative', + + // Shape + 'w-full', + 'rounded-md', + 'shadow-sm', + + // Color and Background + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + { + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700': + !state.focused + }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { + 'outline-none outline-offset-0 ring-2 ring-primary-500 dark:ring-primary-400': + state.focused + }, + + // Misc + 'cursor-default', + 'select-none' + ] + }), + input: { + class: [ + //Font + 'font-sans', + 'leading-6', + 'sm:text-sm', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + 'py-1.5 px-3', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-2', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Size + 'min-w-[12.5rem]', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + list: { + class: 'py-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + { + 'font-normal': !context?.highlighted, + 'font-bold': context?.highlighted + }, + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + { 'text-surface-700 dark:text-white/80': !context?.highlighted }, + { + 'bg-surface-0 dark:bg-surface-800 text-surface-700 dark:text-white/80': + !context?.highlighted + }, + { + 'bg-primary-500 dark:bg-primary-400 text-white dark:text-surface-700': + context?.highlighted + }, + + //States + 'hover:bg-primary-500 dark:hover:bg-primary-400 hover:text-white dark:hover:text-surface-700', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + filterconstraint: { + class: [ + // Spacing + 'p-4', + + // Shape + 'border-b border-solid', + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }, + filteraddrule: { + class: 'pt-4 pb-2 px-4' + }, + filteraddrulebutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm px-2.5 py-1.5 min-w-[2rem] w-full', + + // Shape + 'rounded-md', + + 'bg-transparent border-transparent', + 'text-primary-500 dark:text-primary-400', + 'hover:bg-primary-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-offset-current', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }, + label: { + class: 'flex-auto grow-0' + }, + icon: { + class: 'mr-2' + } + }, + filterremovebutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm px-2.5 py-1.5 min-w-[2rem] w-full mt-2', + + // Shape + 'rounded-md', + + 'bg-transparent border-transparent', + 'text-red-500 dark:text-red-400', + 'hover:bg-red-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-offset-current', + 'focus:ring-red-500 dark:focus:ring-red-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }, + label: { + class: 'flex-auto grow-0' + }, + icon: { + class: 'mr-2' + } + }, + filterbuttonbar: { + class: [ + // Flex & Alignment + 'flex items-center justify-between', + + // Space + 'py-4 px-4' + ] + }, + filterclearbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm px-2.5 py-1.5 min-w-[2rem]', + + // Shape + 'rounded-md shadow-sm border-0', + + 'text-primary-500 ring-1 ring-primary-500 hover:bg-primary-300/20', + 'hover:bg-primary-300/20', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + } + }, + filterapplybutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm px-2.5 py-1.5 min-w-[2rem]', + + // Shape + 'rounded-md border-0', + + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'ring-1 ring-primary-500 dark:ring-primary-400', + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:ring-primary-600 dark:hover:ring-primary-300', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + } + }, + filtermenubutton: ({ context }) => ({ + class: [ + 'relative', + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + + // Spacing + 'ml-2', + + // Shape + 'rounded-full', + + // Color + { 'bg-primary-50 text-primary-700': context.active }, + 'dark:text-white/70 dark:hover:text-white/80 dark:bg-surface-800', + + // States + 'hover:text-surface-700 hover:bg-surface-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer no-underline overflow-hidden' + ] + }), + headerfilterclearbutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Shape + 'border-none', + + // Spacing + 'm-0 p-0 ml-2', + + // Color + 'bg-transparent', + + // Misc + 'cursor-pointer no-underline overflow-hidden select-none', + { + invisible: !context.hidden + } + ] + }), + rowtoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + columnresizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + rowreordericon: { + class: 'cursor-move' + }, + roweditorinitbutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + roweditorsavebutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + roweditorcancelbutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + radiobuttonwrapper: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex align-bottom', + + // Size + 'w-4 h-4', + + // Misc + 'cursor-pointer select-none' + ] + }, + rowRadioButton: { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4 h-4', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-4 h-4', + 'text-sm', + 'font-medium', + + // Shape + 'border-2', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { + 'text-surface-700 dark:text-white/80': !props.modelValue, + 'bg-surface-0 dark:bg-surface-900': !props.modelValue, + 'border-surface-300 dark:border-surface-700': !props.modelValue, + 'border-primary-500 dark:border-primary-400': props.modelValue + }, + + // States + { + 'outline-none outline-offset-0': !props.disabled, + 'peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-surface-0 dark:focus-visible:ring-offset-surface-800 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'opacity-60 cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-default' + ] + }, + icon: { + class: 'hidden' + } + }, + headerCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4', + 'h-4', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + icon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + rowCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4', + 'h-4', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + icon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + bodyrow: ({ context, props }) => ({ + class: [ + // Color + 'dark:text-white/80', + { + 'bg-surface-100 dark:bg-surface-500/30': + context.selected && context.stripedRows + }, + { + 'bg-surface-50 dark:bg-surface-500/30': + context.selected && !context.stripedRows + }, + { + 'bg-surface-0 text-surface-600 dark:bg-surface-800': !context.selected + }, + { 'bg-surface-0 dark:bg-surface-800': props.frozenRow }, + { + 'odd:bg-surface-0 odd:text-surface-600 dark:odd:bg-surface-800 even:bg-surface-50 even:text-surface-600 dark:even:bg-surface-900/60': + context.stripedRows && !context.selected + }, + + // State + { + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-primary-500 ring-inset dark:focus:ring-primary-400': + props.selectionMode + }, + { + 'hover:bg-surface-300/20 hover:text-surface-600': + props.selectionMode && !context.selected + }, + + // Transition + { + 'transition duration-200': + (props.selectionMode && !context.selected) || props.rowHover + }, + + // Misc + { 'cursor-pointer': props.selectionMode } + ] + }), + rowexpansion: { + class: + 'bg-surface-0 dark:bg-surface-800 text-surface-600 dark:text-white/80' + }, + rowgroupheader: { + class: [ + 'sticky z-20', + 'bg-surface-0 text-surface-600 dark:text-white/70', + 'dark:bg-surface-800' + ] + }, + rowgroupfooter: { + class: [ + 'sticky z-20', + 'bg-surface-0 text-surface-600 dark:text-white/70', + 'dark:bg-surface-800' + ] + }, + rowgrouptoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + rowgrouptogglericon: { + class: 'inline-block w-4 h-4' + }, + resizehelper: { + class: 'absolute hidden w-[2px] z-20 bg-primary-500 dark:bg-primary-400' + } +} diff --git a/presets/wind/dataview/index.js b/presets/wind/dataview/index.js new file mode 100755 index 0000000..fa2d5b5 --- /dev/null +++ b/presets/wind/dataview/index.js @@ -0,0 +1,40 @@ +export default { + content: { + class: [ + // Spacing + 'p-0', + + // Shape + 'border-0', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800' + ] + }, + grid: { + class: [ + // flex + 'flex flex-wrap', + + // Spacing + 'ml-0 mr-0 mt-0', + + // Color + 'bg-surface-0 dark:bg-surface-800' + ] + }, + header: { + class: [ + 'font-semibold', + + // Spacing + 'p-6', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 border-b' + ] + } +} diff --git a/presets/wind/dataviewlayoutoptions/index.js b/presets/wind/dataviewlayoutoptions/index.js new file mode 100755 index 0000000..a648859 --- /dev/null +++ b/presets/wind/dataviewlayoutoptions/index.js @@ -0,0 +1,64 @@ +export default { + listbutton: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Shape + 'rounded-md rounded-r-none', + + // Spacing + 'px-2.5 py-1.5', + + // Color + 'ring-1 ring-surface-200 dark:ring-surface-700', + props.modelValue === 'list' + ? 'bg-surface-100 dark:bg-surface-700 text-surface-700 dark:text-surface-0' + : 'bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-white/80', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:bg-surface-200 dark:hover:bg-surface-600/80', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }), + gridbutton: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Shape + 'rounded-md rounded-l-none', + + // Spacing + 'px-2.5 py-1.5', + + // Color + 'ring-1 ring-surface-200 dark:ring-surface-700', + props.modelValue === 'grid' + ? 'bg-surface-100 dark:bg-surface-700 text-surface-700 dark:text-surface-0' + : 'bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-white/80', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:bg-surface-200 dark:hover:bg-surface-600/80', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }) +} diff --git a/presets/wind/deferred/index.js b/presets/wind/deferred/index.js new file mode 100755 index 0000000..1f97b06 --- /dev/null +++ b/presets/wind/deferred/index.js @@ -0,0 +1,3 @@ +export default { + root: {} +} diff --git a/presets/wind/dialog/index.js b/presets/wind/dialog/index.js new file mode 100755 index 0000000..0137c8f --- /dev/null +++ b/presets/wind/dialog/index.js @@ -0,0 +1,251 @@ +export default { + root: ({ state }) => ({ + class: [ + // Shape + 'rounded-lg', + 'shadow-xl', + 'border-0', + + // Size + 'max-h-[90vh]', + { 'sm:w-full sm:max-w-lg': !state.maximized }, + 'm-0', + + // Transitions + 'transform', + 'scale-100', + + // Color + 'dark:border', + 'dark:border-surface-700', + + // Maximized State + { + 'transition-none': state.maximized, + 'transform-none': state.maximized, + '!w-screen': state.maximized, + '!h-screen': state.maximized, + '!max-h-full': state.maximized, + '!top-0': state.maximized, + '!left-0': state.maximized + } + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-6 pt-4', + + // Shape + 'rounded-tl-lg', + 'rounded-tr-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + title: { + class: ['font-semibold text-base leading-6'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-6 h-6', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + maximizablebutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-6 h-6', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-3', + 'h-3' + ] + }, + maximizableicon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-3', + 'h-3' + ] + }, + content: ({ state, instance }) => ({ + class: [ + // Font + 'text-sm', + // Spacing + 'px-6', + 'pb-3', + 'pt-0', + + // Shape + { + grow: state.maximized, + 'rounded-bl-lg': !instance.$slots.footer, + 'rounded-br-lg': !instance.$slots.footer + }, + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-0/70', + + // Misc + 'overflow-y-auto' + ] + }), + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-3', + + // Spacing + 'px-6', + 'py-3', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-50 dark:bg-surface-700', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { + 'has-[.mask-active]:bg-transparent dark:has-[.mask-active]:bg-transparent bg-surface-500/70 dark:bg-surface-700/70': + props.modal, + 'has-[.mask-active]:backdrop-blur-none backdrop-blur-sm': props.modal + } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: + 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: + 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: 'opacity-0 scale-75 translate-y-full mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: + 'opacity-0 scale-75 translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' || + props.position === 'topleft' || + props.position === 'bottomleft' + ? { + enterFromClass: + 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: + 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' || + props.position === 'topright' || + props.position === 'bottomright' + ? { + enterFromClass: + 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: + 'opacity-0 scale-75 opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 scale-75 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 mask-active' + } + } +} diff --git a/presets/wind/divider/index.js b/presets/wind/divider/index.js new file mode 100755 index 0000000..3809cdb --- /dev/null +++ b/presets/wind/divider/index.js @@ -0,0 +1,72 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex and Position + 'flex relative', + { 'justify-center': props.layout == 'vertical' }, + { 'items-center': props.layout == 'vertical' }, + { + 'justify-start': props?.align == 'left' && props.layout == 'horizontal', + 'justify-center': + props?.align == 'center' && props.layout == 'horizontal', + 'justify-end': props?.align == 'right' && props.layout == 'horizontal', + 'items-center': props?.align == 'top' && props.layout == 'vertical', + 'items-start': props?.align == 'center' && props.layout == 'vertical', + 'items-end': props?.align == 'bottom' && props.layout == 'vertical' + }, + + // Spacing + { + 'my-5 mx-0 py-0 px-5': props.layout == 'horizontal', + 'mx-4 md:mx-5 py-5': props.layout == 'vertical' + }, + + // Size + { + 'w-full': props.layout == 'horizontal', + 'min-h-full': props.layout == 'vertical' + }, + + // Before: Line + 'before:block', + + // Position + { + 'before:absolute before:left-0 before:top-1/2': + props.layout == 'horizontal', + 'before:absolute before:left-1/2 before:top-0 before:transform before:-translate-x-1/2': + props.layout == 'vertical' + }, + + // Size + { + 'before:w-full': props.layout == 'horizontal', + 'before:min-h-full': props.layout == 'vertical' + }, + + // Shape + { + 'before:border-solid': props.type == 'solid', + 'before:border-dotted': props.type == 'dotted', + 'before:border-dashed': props.type == 'dashed' + }, + + // Color + { + 'before:border-t before:border-surface-200 before:dark:border-surface-600': + props.layout == 'horizontal', + 'before:border-l before:border-surface-200 before:dark:border-surface-600': + props.layout == 'vertical' + } + ] + }), + content: { + class: [ + // Space and Position + 'p-2 z-10', + + // Color + 'bg-surface-0 dark:bg-surface-800' + ] + } +} diff --git a/presets/wind/dock/index.js b/presets/wind/dock/index.js new file mode 100755 index 0000000..6871410 --- /dev/null +++ b/presets/wind/dock/index.js @@ -0,0 +1,97 @@ +export default { + root: ({ props }) => ({ + class: [ + // Positioning + 'absolute z-1', + { + 'left-0 bottom-0 w-full': props.position == 'bottom', + 'left-0 top-0 w-full': props.position == 'top', + 'left-0 top-0 h-full': props.position == 'left', + 'right-0 top-0 h-full': props.position == 'right' + }, + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Interactivity + 'pointer-events-none' + ] + }), + container: { + class: [ + // Flexbox + 'flex', + + // Shape & Border + 'rounded-md', + + // Color + 'bg-surface-0/10 dark:bg-surface-900/20 border border-surface-0/20', + 'backdrop-blur-sm', + + // Spacing + 'p-2', + + // Misc + 'pointer-events-auto' + ] + }, + menu: ({ props }) => ({ + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + { + 'flex-col': props.position == 'left' || props.position == 'right' + }, + + // List Style + 'm-0 p-0 list-none', + + // Shape + 'outline-none' + ] + }), + menuitem: ({ props, context, instance }) => ({ + class: [ + // Spacing & Shape + 'p-2 rounded-md', + + // Conditional Scaling + { + 'hover:scale-150': instance.currentIndex === context.index, + 'scale-125': + instance.currentIndex - 1 === context.index || + instance.currentIndex + 1 === context.index, + 'scale-110': + instance.currentIndex - 2 === context.index || + instance.currentIndex + 2 === context.index + }, + + // Positioning & Hover States + { + 'origin-bottom hover:mx-6': props.position == 'bottom', + 'origin-top hover:mx-6': props.position == 'top', + 'origin-left hover:my-6': props.position == 'left', + 'origin-right hover:my-6': props.position == 'right' + }, + + // Transitions & Transform + 'transition-all duration-200 ease-cubic-bezier-will-change-transform transform' + ] + }), + action: { + class: [ + // Flexbox & Alignment + 'flex flex-col items-center justify-center', + + // Position + 'relative', + + // Size + 'w-16 h-16', + + // Misc + 'cursor-default overflow-hidden' + ] + } +} diff --git a/presets/wind/dropdown/index.js b/presets/wind/dropdown/index.js new file mode 100755 index 0000000..4e1f444 --- /dev/null +++ b/presets/wind/dropdown/index.js @@ -0,0 +1,287 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + 'shadow-sm', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + + // States + { + 'ring-1 ring-inset': !state.focused, + 'ring-2 ring-inset ring-primary-500 dark:ring-primary-400': + state.focused + }, + + { + 'ring-surface-300 dark:ring-surface-600': + !props.invalid && !state.focused + }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid && !state.focused }, + + // Misc + 'cursor-default', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled } + ] + }), + input: ({ props }) => ({ + class: [ + //Font + 'font-sans', + 'leading-6', + 'sm:text-sm', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { + 'text-surface-800 dark:text-white/80': props.modelValue != undefined, + 'text-surface-400 dark:text-surface-500': props.modelValue == undefined + }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Sizing and Spacing + 'w-[1%]', + 'py-1.5 px-3', + { 'pr-7': props.showClear }, + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + trigger: { + class: [ + //Font + 'sm:text-sm', + + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-2', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[15rem]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + { 'font-normal': !context.selected, 'font-bold': context.selected }, + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected && !context.disabled + }, + { + 'text-surface-600 dark:text-white/70': + !context.focused && !context.selected && context.disabled + }, + { + 'bg-surface-200 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-500 dark:bg-primary-400 text-white dark:text-surface-700': + context.focused && context.selected + }, + { + 'bg-transparent text-surface-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + 'hover:bg-primary-500 dark:hover:bg-primary-400 hover:text-white dark:hover:text-surface-700', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Misc + { 'pointer-events-none cursor-default': context.disabled }, + { 'cursor-pointer': !context.disabled }, + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + 'sm:text-sm', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + 'sm:text-sm', + + // Spacing + 'py-2 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + header: { + class: [ + // Spacing + 'p-0', + 'm-0', + + //Shape + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-100 dark:bg-surface-800' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'font-sans', + 'leading-none', + 'sm:text-sm', + + // Sizing + 'py-1.5 px-3', + 'pr-7', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'placeholder:text-surface-400', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700', + + // Shape + 'border-0', + 'rounded-tl-md', + 'rounded-tr-md', + 'appearance-none', + + // States + 'focus:ring-2 focus:ring-inset focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-600 dark:focus:ring-primary-500', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + clearicon: { + class: [ + // Color + 'text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/fieldset/index.js b/presets/wind/fieldset/index.js new file mode 100755 index 0000000..f148852 --- /dev/null +++ b/presets/wind/fieldset/index.js @@ -0,0 +1,99 @@ +export default { + root: { + class: [ + 'block', + + // Spacing + 'px-5 md:px-6 py-5', + + // Shape + 'rounded-md rounded-lg', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700 ring-offset-0' + ] + }, + legend: ({ props }) => ({ + class: [ + // Font + 'font-medium', + 'leading-none', + + //Spacing + { 'p-0': props.toggleable, 'px-3 py-1.5': !props.toggleable }, + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0/80', + + 'bg-surface-0 dark:bg-surface-900', + + // Transition + 'transition-none', + + // States + { '': props.toggleable }, + { + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-primary-600 ring-inset dark:focus:ring-primary-500': + props.toggleable + } + ] + }), + toggler: ({ props }) => ({ + class: [ + // Alignments + 'flex items-center justify-center', + 'relative', + + //Spacing + { 'px-3 py-1.5': props.toggleable }, + + // Shape + { 'rounded-md': props.toggleable }, + + // Color + { + 'text-surface-700 dark:text-surface-200 hover:text-surface-900 hover:text-surface-900': + props.toggleable + }, + + // States + { + 'hover:text-surface-900 dark:hover:text-surface-100': props.toggleable + }, + { + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-600 dark:focus:ring-primary-500': + props.toggleable + }, + + // Misc + { + 'transition-none cursor-pointer overflow-hidden select-none': + props.toggleable + } + ] + }), + togglerIcon: { + class: 'mr-2 inline-block' + }, + legendTitle: { + class: 'flex items-center justify-center leading-none' + }, + content: { + class: 'p-0' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +} diff --git a/presets/wind/fileupload/index.js b/presets/wind/fileupload/index.js new file mode 100755 index 0000000..ec29ee9 --- /dev/null +++ b/presets/wind/fileupload/index.js @@ -0,0 +1,173 @@ +export default { + input: { + class: 'hidden' + }, + buttonbar: { + class: [ + // Flexbox + 'flex', + 'flex-wrap', + + // Colors + 'bg-surface-50', + 'dark:bg-surface-800', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-5', + 'gap-2', + + // Borders + 'border', + 'border-solid', + 'border-surface-200', + 'dark:border-surface-700', + 'border-b-0', + + // Shape + 'rounded-tr-lg', + 'rounded-tl-lg' + ] + }, + chooseButton: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Spacing + 'px-2.5 py-1.5', + + // Shape + 'rounded-md', + + // Font + 'text-sm', + 'font-semibold', + + // Colors + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border-primary-500 dark:border-primary-400', + + // States + 'hover:bg-primary-600 dark:hover:bg-primary-300', + + // Misc + 'overflow-hidden', + 'cursor-pointer' + ] + }, + chooseIcon: { + class: ['mr-2', 'inline-block'] + }, + chooseButtonLabel: { + class: ['flex-1', 'font-bold'] + }, + uploadbutton: { + icon: { + class: 'mr-2' + } + }, + cancelbutton: { + icon: { + class: 'mr-2' + } + }, + content: { + class: [ + // Position + 'relative', + + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-8', + + // Borders + 'border', + 'border-surface-200', + 'dark:border-surface-700', + + // Shape + 'rounded-b-lg' + ] + }, + file: { + class: [ + // Flexbox + 'flex', + 'items-center', + 'flex-wrap', + + // Spacing + 'p-4', + 'mb-2', + 'last:mb-0', + + // Borders + 'border', + 'border-surface-200', + 'dark:border-surface-700', + 'gap-2', + + // Shape + 'rounded' + ] + }, + thumbnail: { + class: 'shrink-0' + }, + fileName: { + class: 'mb-2 break-all' + }, + fileSize: { + class: 'mr-2' + }, + uploadicon: { + class: 'mr-2' + }, + progressbar: { + root: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'absolute top-0 left-0', + + // Shape and Size + 'border-0', + 'h-2', + 'rounded-md', + 'w-full', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + value: { + class: [ + // Flexbox & Overflow & Position + 'absolute flex items-center justify-center overflow-hidden', + + // Colors + 'bg-primary-500 dark:bg-primary-400', + + // Spacing & Sizing + 'm-0', + 'h-full w-0', + + // Shape + 'border-0', + + // Transitions + 'transition-width duration-1000 ease-in-out' + ] + } + } +} diff --git a/presets/wind/floatlabel/index.js b/presets/wind/floatlabel/index.js new file mode 100755 index 0000000..1ab017f --- /dev/null +++ b/presets/wind/floatlabel/index.js @@ -0,0 +1,26 @@ +export default { + root: { + class: [ + 'block relative', + + // Base Label Appearance + '[&>*:last-child]:text-surface-900/60 dark:[&>*:last-child]:text-white/60', + '[&>*:last-child]:absolute', + '[&>*:last-child]:top-1/2', + '[&>*:last-child]:-translate-y-1/2', + '[&>*:last-child]:left-3', + '[&>*:last-child]:pointer-events-none', + '[&>*:last-child]:transition-all', + '[&>*:last-child]:duration-200', + '[&>*:last-child]:ease', + + // Focus Label Appearance + '[&>*:last-child]:has-[:focus]:-top-3', + '[&>*:last-child]:has-[:focus]:text-sm', + + // Filled Input Label Appearance + '[&>*:last-child]:has-[.filled]:-top-3', + '[&>*:last-child]:has-[.filled]:text-sm' + ] + } +} diff --git a/presets/wind/galleria/index.js b/presets/wind/galleria/index.js new file mode 100755 index 0000000..dd0f64f --- /dev/null +++ b/presets/wind/galleria/index.js @@ -0,0 +1,351 @@ +export default { + content: ({ parent, props }) => ({ + class: [ + 'flex', + { + 'flex-col': props.fullScreen + }, + { + 'flex-col': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'bottom', + 'flex-row': + parent.props.thumbnailsPosition === 'right' || + parent.props.thumbnailsPosition === 'left' + } + ] + }), + itemwrapper: ({ parent, props }) => ({ + class: [ + 'group', + 'flex relative', + { + 'grow shrink w-0 justify-center': props.fullScreen + }, + { + 'flex-col': + parent.props.indicatorsPosition === 'bottom' || + parent.props.indicatorsPosition === 'top', + 'flex-row items-center': + parent.props.indicatorsPosition === 'left' || + parent.props.indicatorsPosition === 'right' + }, + { + 'order-2': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'left', + 'flex-row': parent.props.thumbnailsPosition === 'right' + } + ] + }), + + itemcontainer: ({ parent }) => ({ + class: [ + 'flex h-full relative', + { + 'order-1': + parent.props.indicatorsPosition === 'bottom' || + parent.props.indicatorsPosition === 'right', + 'order-2': + parent.props.indicatorsPosition === 'top' || + parent.props.indicatorsPosition === 'left' + } + ] + }), + item: { + class: [ + // Flex + 'flex justify-center items-center h-full w-full', + + // Sizing + 'h-full w-full' + ] + }, + thumbnailwrapper: ({ parent }) => ({ + class: [ + // Flex + 'flex flex-col shrink-0', + + { + 'order-1': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'left' + }, + + // Misc + 'overflow-auto' + ] + }), + thumbnailcontainer: ({ parent }) => ({ + class: [ + // Flex + 'flex', + + // Spacing + 'p-4', + + // Colors + 'bg-black/90', + + { + 'flex-row': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'bottom', + 'flex-col grow': + parent.props.thumbnailsPosition === 'right' || + parent.props.thumbnailsPosition === 'left' + } + ] + }), + previousthumbnailbutton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + thumbnailitemscontainer: { + class: 'overflow-hidden w-full' + }, + thumbnailitems: ({ parent }) => ({ + class: [ + 'flex', + { + 'flex-col h-full': + parent.props.thumbnailsPosition === 'right' || + parent.props.thumbnailsPosition === 'left' + } + ] + }), + thumbnailitem: ({ parent }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + 'grow shrink-0', + + // Sizing + { + 'w-full md:w-[25%] lg:w-[20%]': + parent.props.thumbnailsPosition === 'top' || + parent.props.thumbnailsPosition === 'bottom' + }, + + // Misc + 'overflow-auto', + 'cursor-pointer', + 'opacity-50', + + // States + 'hover:opacity-100', + 'hover:transition-opacity', + 'hover:duration-300' + ] + }), + nextthumbnailbutton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + indicators: ({ parent }) => ({ + class: [ + // flex + 'flex items-center justify-center', + + // Spacing + 'p-4', + + // Indicators Position + { + 'order-2': parent.props.indicatorsPosition == 'bottom', + 'order-1': parent.props.indicatorsPosition == 'top', + 'order-1 flex-col': parent.props.indicatorsPosition == 'left', + 'flex-col order-2': parent.props.indicatorsPosition == 'right' + }, + { + 'absolute z-10 bg-black/50': parent.props.showIndicatorsOnItem + }, + + { + 'bottom-0 left-0 w-full items-start': + parent.props.indicatorsPosition == 'bottom' && + parent.props.showIndicatorsOnItem, + 'top-0 left-0 w-full items-start': + parent.props.indicatorsPosition == 'top' && + parent.props.showIndicatorsOnItem, + 'left-0 top-0 h-full items-start': + parent.props.indicatorsPosition == 'left' && + parent.props.showIndicatorsOnItem, + 'right-0 top-0 h-full items-start': + parent.props.indicatorsPosition == 'right' && + parent.props.showIndicatorsOnItem + } + ] + }), + indicator: ({ parent }) => ({ + class: [ + { + 'mr-2': + parent.props.indicatorsPosition == 'bottom' || + parent.props.indicatorsPosition == 'top', + 'mb-2': + parent.props.indicatorsPosition == 'left' || + parent.props.indicatorsPosition == 'right' + } + ] + }), + indicatorbutton: ({ context }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Appearance + 'rounded-full transition duration-200', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Conditional Appearance: Not Highlighted + { + 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': + !context.highlighted + }, + + // Conditional Appearance: Highlighted + { 'bg-primary-500 hover:bg-primary-600': context.highlighted } + ] + }), + mask: { + class: [ + 'fixed top-0 left-0 w-full h-full', + 'flex items-center justify-center', + 'bg-black/90' + ] + }, + closebutton: { + class: [ + // Positioning + '!absolute top-0 right-0', + + // Display & Flexbox + 'flex justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'text-white bg-transparent w-12 h-12 rounded-full transition duration-200 ease-in-out', + + // Hover Effect + 'hover:text-white hover:bg-surface-0/10', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + closeicon: { + class: 'w-6 h-6' + }, + previousitembutton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': + parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] left-0', + { + '!absolute': parent.props.showItemNavigators, + '!fixed': !parent.props.showItemNavigators + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }), + nextitembutton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': + parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] right-0', + { + '!absolute': parent.props.showItemNavigators, + '!fixed': !parent.props.showItemNavigators + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }), + caption: { + class: [ + // Positioning + 'absolute bottom-0 left-0 w-full', + + // Appearance + 'bg-black/50 text-white p-4' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +} diff --git a/presets/wind/global.js b/presets/wind/global.js new file mode 100755 index 0000000..cb88788 --- /dev/null +++ b/presets/wind/global.js @@ -0,0 +1,77 @@ +export default { + css: ` + *[data-pd-ripple="true"]{ + overflow: hidden; + position: relative; + } + span[data-p-ink-active="true"]{ + animation: ripple 0.4s linear; + } + @keyframes ripple { + 100% { + opacity: 0; + transform: scale(2.5); + } + } + + .progress-spinner-circle { + stroke-dasharray: 89, 200; + stroke-dashoffset: 0; + animation: p-progress-spinner-dash 1.5s ease-in-out infinite, p-progress-spinner-color 6s ease-in-out infinite; + stroke-linecap: round; + } + + @keyframes p-progress-spinner-dash{ + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } + } + @keyframes p-progress-spinner-color { + 100%, 0% { + stroke: #ff5757; + } + 40% { + stroke: #696cff; + } + 66% { + stroke: #1ea97c; + } + 80%, 90% { + stroke: #cc8925; + } + } + + .progressbar-value-animate::after { + will-change: left, right; + animation: p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + } + .progressbar-value-animate::before { + will-change: left, right; + animation: p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + } + @keyframes p-progressbar-indeterminate-anim { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } + } +` +} diff --git a/presets/wind/iconfield/index.js b/presets/wind/iconfield/index.js new file mode 100755 index 0000000..b1bae4a --- /dev/null +++ b/presets/wind/iconfield/index.js @@ -0,0 +1,22 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + '[&>input]:w-full', + + '[&>*:first-child]:absolute', + '[&>*:first-child]:top-1/2', + '[&>*:first-child]:-mt-2', + '[&>*:first-child]:leading-none', + '[&>*:first-child]:text-surface-900/60 dark:[&>*:first-child]:text-white/60', + { + '[&>*:first-child]:right-3': props.iconPosition === 'right', + '[&>*:first-child]:left-3': props.iconPosition === 'left' + }, + { + '[&>*:last-child]:pr-10': props.iconPosition === 'right', + '[&>*:last-child]:pl-10': props.iconPosition === 'left' + } + ] + }) +} diff --git a/presets/wind/image/index.js b/presets/wind/image/index.js new file mode 100755 index 0000000..86e9e2c --- /dev/null +++ b/presets/wind/image/index.js @@ -0,0 +1,206 @@ +export default { + root: { + class: 'relative inline-block' + }, + button: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'absolute', + + // Shape + 'inset-0 opacity-0 transition-opacity duration-300', + + // Color + 'bg-transparent text-surface-100', + + // States + 'hover:opacity-100 hover:cursor-pointer hover:bg-surface-900 hover:bg-opacity-50' + ] + }, + mask: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'fixed top-0 left-0', + + // Sizing + 'w-full h-full', + + // Color + 'bg-surface-900/90' + ] + }, + toolbar: { + class: [ + // Flexbox + 'flex', + + // Positioning + 'absolute top-0 right-0', + + // Spacing + 'p-4' + ] + }, + rotaterightbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotaterighticon: { + class: 'w-6 h-6' + }, + rotateleftbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotatelefticon: { + class: 'w-6 h-6' + }, + zoomoutbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoomouticon: { + class: 'w-6 h-6' + }, + zoominbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoominicon: { + class: 'w-6 h-6' + }, + closebutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + closeicon: { + class: 'w-6 h-6' + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +} diff --git a/presets/wind/index.js b/presets/wind/index.js new file mode 100755 index 0000000..e715c08 --- /dev/null +++ b/presets/wind/index.js @@ -0,0 +1,207 @@ +import accordion from './accordion' +import autocomplete from './autocomplete' +import avatar from './avatar' +import avatargroup from './avatargroup' +import badge from './badge' +import badgedirective from './badgedirective' +import blockui from './blockui' +import breadcrumb from './breadcrumb' +import button from './button' +import calendar from './calendar' +import card from './card' +import carousel from './carousel' +import cascadeselect from './cascadeselect' +import checkbox from './checkbox' +import chip from './chip' +import chips from './chips' +import colorpicker from './colorpicker' +import confirmpopup from './confirmpopup' +import contextmenu from './contextmenu' +import datatable from './datatable' +import dataview from './dataview' +import dataviewlayoutoptions from './dataviewlayoutoptions' +import deferred from './deferred' +import dialog from './dialog' +import divider from './divider' +import dock from './dock' +import dropdown from './dropdown' +import fieldset from './fieldset' +import fileupload from './fileupload' +import floatlabel from './floatlabel' +import galleria from './galleria' +import global from './global' +import iconfield from './iconfield' +import image from './image' +import inlinemessage from './inlinemessage' +import inplace from './inplace' +import inputgroup from './inputgroup' +import inputgroupaddon from './inputgroupaddon' +import inputmask from './inputmask' +import inputnumber from './inputnumber' +import inputotp from './inputotp' +import inputswitch from './inputswitch' +import inputtext from './inputtext' +import knob from './knob' +import listbox from './listbox' +import megamenu from './megamenu' +import menu from './menu' +import menubar from './menubar' +import message from './message' +import metergroup from './metergroup' +import multiselect from './multiselect' +import orderlist from './orderlist' +import organizationchart from './organizationchart' +import overlaypanel from './overlaypanel' +import paginator from './paginator' +import panel from './panel' +import panelmenu from './panelmenu' +import password from './password' +import picklist from './picklist' +import progressbar from './progressbar' +import progressspinner from './progressspinner' +import radiobutton from './radiobutton' +import rating from './rating' +import ripple from './ripple' +import scrollpanel from './scrollpanel' +import scrolltop from './scrolltop' +import selectbutton from './selectbutton' +import sidebar from './sidebar' +import skeleton from './skeleton' +import slider from './slider' +import speeddial from './speeddial' +import splitbutton from './splitbutton' +import splitter from './splitter' +import splitterpanel from './splitterpanel' +import stepper from './stepper' +import steps from './steps' +import tabmenu from './tabmenu' +import tabview from './tabview' +import tag from './tag' +import terminal from './terminal' +import textarea from './textarea' +import tieredmenu from './tieredmenu' +import timeline from './timeline' +import toast from './toast' +import togglebutton from './togglebutton' +import toolbar from './toolbar' +import tooltip from './tooltip' +import tree from './tree' +import treeselect from './treeselect' +import treetable from './treetable' +import tristatecheckbox from './tristatecheckbox' + +export default { + global, + directives: { + badge: badgedirective, + ripple, + tooltip + }, + + //forms + autocomplete, + dropdown, + inputnumber, + inputtext, + calendar, + checkbox, + radiobutton, + inputswitch, + selectbutton, + slider, + chips, + rating, + multiselect, + togglebutton, + cascadeselect, + listbox, + colorpicker, + inputgroup, + inputgroupaddon, + inputmask, + knob, + treeselect, + tristatecheckbox, + textarea, + password, + iconfield, + floatlabel, + inputotp, + + //buttons + button, + splitbutton, + speeddial, + + //data + paginator, + datatable, + tree, + dataview, + dataviewlayoutoptions, + organizationchart, + orderlist, + picklist, + treetable, + timeline, + + //panels + accordion, + panel, + fieldset, + card, + tabview, + divider, + toolbar, + scrollpanel, + splitter, + splitterpanel, + stepper, + deferred, + + //file + fileupload, + + //menu + contextmenu, + menu, + menubar, + steps, + tieredmenu, + breadcrumb, + panelmenu, + megamenu, + dock, + tabmenu, + + //overlays + dialog, + overlaypanel, + sidebar, + confirmpopup, + + //messages + message, + inlinemessage, + toast, + + //media + carousel, + galleria, + image, + + //misc + badge, + avatar, + avatargroup, + tag, + chip, + progressbar, + skeleton, + scrolltop, + terminal, + blockui, + metergroup, + inplace, + progressspinner +} diff --git a/presets/wind/inlinemessage/index.js b/presets/wind/inlinemessage/index.js new file mode 100755 index 0000000..4c4b9b8 --- /dev/null +++ b/presets/wind/inlinemessage/index.js @@ -0,0 +1,29 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-flex items-center justify-center align-top gap-2', + 'py-2 px-3 m-0 rounded-md', + 'ring-1 ring-inset ring-surface-200 dark:ring-surface-700 ring-offset-0', + { + 'text-blue-500 dark:text-blue-300': props.severity == 'info', + 'text-green-500 dark:text-green-300': props.severity == 'success', + 'text-orange-500 dark:text-orange-300': props.severity == 'warn', + 'text-red-500 dark:text-red-300': props.severity == 'error' + } + ] + }), + icon: { + class: [ + // Sizing and Spacing + 'w-4 h-4', + 'shrink-0' + ] + }, + text: { + class: [ + // Font and Text + 'text-sm leading-none', + 'font-medium' + ] + } +} diff --git a/presets/wind/inplace/index.js b/presets/wind/inplace/index.js new file mode 100755 index 0000000..adabc88 --- /dev/null +++ b/presets/wind/inplace/index.js @@ -0,0 +1,30 @@ +export default { + display: { + class: [ + // Display + 'inline', + + // Spacing + 'px-2.5 py-1.5', + + // Size + 'text-sm', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 hover:text-surface-700 dark:hover:bg-surface-700/80 dark:hover:text-white/80', + + // Transitions + 'transition', + 'duration-200', + + // Misc + 'cursor-pointer' + ] + } +} diff --git a/presets/wind/inputgroup/index.js b/presets/wind/inputgroup/index.js new file mode 100755 index 0000000..27d877e --- /dev/null +++ b/presets/wind/inputgroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: ['flex items-stretch', 'w-full'] + } +} diff --git a/presets/wind/inputgroupaddon/index.js b/presets/wind/inputgroupaddon/index.js new file mode 100755 index 0000000..0ec53ab --- /dev/null +++ b/presets/wind/inputgroupaddon/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex + 'flex items-center justify-center', + + // Shape + 'first:rounded-l-md', + 'last:rounded-r-md', + 'border-y', + + 'last:border-r', + 'border-l', + 'border-r-0', + + // Space + 'p-1.5', + + // Size + 'min-w-[3rem]', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-400', + 'border-surface-300 dark:border-surface-600' + ] + } +} diff --git a/presets/wind/inputmask/index.js b/presets/wind/inputmask/index.js new file mode 100755 index 0000000..be98995 --- /dev/null +++ b/presets/wind/inputmask/index.js @@ -0,0 +1,34 @@ +export default { + root: ({ context, props }) => ({ + class: [ + // Font + 'font-sans leading-6', + + // Spacing + 'm-0 py-1.5 px-3 sm:text-sm', + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-inset ring-offset-0', + 'shadow-sm', + { 'ring-surface-300 dark:ring-surface-700': !props.invalid }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid }, + + // Shape + 'rounded-md', + 'appearance-none', + + // Interactions + { + 'outline-none focus:ring-primary-500 dark:focus:ring-primary-400': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + } + ] + }) +} diff --git a/presets/wind/inputnumber/index.js b/presets/wind/inputnumber/index.js new file mode 100755 index 0000000..4079491 --- /dev/null +++ b/presets/wind/inputnumber/index.js @@ -0,0 +1,244 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Flex + 'inline-flex', + { 'flex-col': props.showButtons && props.buttonLayout == 'vertical' }, + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + //Sizing + { '!w-16': props.showButtons && props.buttonLayout == 'vertical' }, + + // Shape + { + 'first:rounded-l-md rounded-none last:rounded-r-md': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + { + 'border-0 border-y border-l last:border-r border-surface-300 dark:border-surface-600': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + + { + 'ring-1 ring-surface-300 dark:ring-surface-700 ring-offset-0': + parent.instance.$name !== 'InputGroup' + }, + 'shadow-sm', + 'rounded-md' + ] + }), + input: { + root: ({ parent, context }) => ({ + class: [ + // Display + 'flex flex-auto', + + //Text + 'sm:text-sm', + { + 'text-center': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + // Spacing + 'm-0', + 'py-1.5 px-3', + + // Shape + 'rounded-md', + { 'rounded-tr-none rounded-br-none': parent.props.showButtons }, + { + 'rounded-tl-none rounded-bl-none': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'rounded-none': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + { + 'border-r': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'border-x': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'border-y': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + { 'border-surface-300 dark:border-surface-700': !parent.props.invalid }, + + // Invalid State + { 'border border-red-500 dark:border-red-400': parent.props.invalid }, + + // States + 'outline-none focus:ring-primary-600 dark:focus:ring-primary-500', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-600 dark:focus:ring-primary-500', + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled }, + + //Position + { + 'order-2': + parent.props.buttonLayout == 'horizontal' || + parent.props.buttonLayout == 'vertical' + } + ] + }) + }, + + buttongroup: { + class: ['flex', 'flex-col'] + }, + + incrementbutton: { + root: ({ parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { + 'order-3': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'order-1': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + //Color + 'text-surface-600 dark:text-surface-400', + 'bg-surface-0 dark:bg-surface-800', + + // Sizing + 'w-[3rem]', + { + 'px-2.5 py-1.5': + parent.props.showButtons && parent.props.buttonLayout !== 'stacked' + }, + { + 'p-0': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'w-full': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + // Shape + 'rounded-md', + { + 'rounded-tl-none rounded-br-none rounded-bl-none': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'rounded-bl-none rounded-tl-none': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'rounded-bl-none rounded-br-none': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + //States + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-600 focus:dark:ring-primary-500', + 'hover:bg-surface-50 dark:hover:bg-surface-700', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: 'h-0 w-0' + } + }, + decrementbutton: { + root: ({ parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { + 'order-1': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'order-3': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + //Color + 'text-surface-600 dark:text-surface-400', + 'bg-surface-0 dark:bg-surface-800', + + // Sizing + 'w-[3rem]', + { + 'px-2.5 py-1.5': + parent.props.showButtons && parent.props.buttonLayout !== 'stacked' + }, + { + 'p-0': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'w-full': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + // Shape + 'rounded-md', + { + 'rounded-tr-none rounded-tl-none rounded-bl-none': + parent.props.showButtons && parent.props.buttonLayout == 'stacked' + }, + { + 'rounded-tr-none rounded-br-none ': + parent.props.showButtons && + parent.props.buttonLayout == 'horizontal' + }, + { + 'rounded-tr-none rounded-tl-none ': + parent.props.showButtons && parent.props.buttonLayout == 'vertical' + }, + + //States + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-600 focus:dark:ring-primary-500', + 'hover:bg-surface-50 dark:hover:bg-surface-700', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: 'h-0 w-0' + } + } +} diff --git a/presets/wind/inputotp/index.js b/presets/wind/inputotp/index.js new file mode 100755 index 0000000..1a805d8 --- /dev/null +++ b/presets/wind/inputotp/index.js @@ -0,0 +1,72 @@ +export default { + root: { + class: [ + // Alignment + 'flex items-center', + 'gap-2' + ] + }, + input: { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'font-sans leading-6', + + // Flex & Alignment + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + 'text-center', + + // Spacing + 'm-0', + { + 'py-1.5 px-3 sm:text-sm': props.size == null + }, + + // Size + 'w-8', + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'shadow-sm', + { + 'ring-1 ring-inset ring-offset-0': + parent.instance.$name !== 'InputGroup' + }, + + { 'ring-surface-300 dark:ring-surface-700': !props.invalid }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid }, + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { + 'first:rounded-l-md rounded-none last:rounded-r-md': + parent.instance.$name == 'InputGroup' + }, + { + 'border-0 border-y border-l last:border-r border-surface-300 dark:border-surface-600': + parent.instance.$name == 'InputGroup' + }, + { + 'first:ml-0 ml-[-1px]': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + 'appearance-none', + + // Interactions + { + 'outline-none focus:ring-primary-500 dark:focus:ring-primary-400': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled } + ] + }) + } +} diff --git a/presets/wind/inputswitch/index.js b/presets/wind/inputswitch/index.js new file mode 100755 index 0000000..88a4254 --- /dev/null +++ b/presets/wind/inputswitch/index.js @@ -0,0 +1,106 @@ +export default { + root: ({ props }) => ({ + class: [ + // Alignments + 'inline-flex relative', + 'shrink-0', + + // Shape + 'rounded-2xl', + + // Size + 'h-5 w-9', + + // States + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + slider: ({ props }) => ({ + class: [ + // Position + 'absolute top-0 left-0 right-0 bottom-0', + + // Shape + 'rounded-2xl', + + // Before: + 'before:absolute before:top-1/2', + 'before:-mt-2', + 'before:h-4 before:w-4', + 'before:rounded-full', + 'before:duration-200 before:transition before:ease-in-out', + 'before:bg-surface-0 before:dark:bg-surface-900', + 'before:shadow', + { + 'before:transform before:translate-x-4': + props.modelValue == props.trueValue + }, + + // Colors + 'border', + { + 'bg-surface-200 dark:bg-surface-700': !( + props.modelValue == props.trueValue + ), + 'bg-primary-500 dark:bg-primary-400': + props.modelValue == props.trueValue + }, + + { 'border-transparent': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:bg-surface-300 dark:peer-hover:bg-surface-600 ': + !(props.modelValue == props.trueValue) && !props.disabled + }, + { + 'peer-hover:bg-primary-600 dark:peer-hover:bg-surface-300 ': + props.modelValue == props.trueValue && !props.disabled + }, + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + } +} diff --git a/presets/wind/inputtext/index.js b/presets/wind/inputtext/index.js new file mode 100755 index 0000000..793d144 --- /dev/null +++ b/presets/wind/inputtext/index.js @@ -0,0 +1,61 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'font-sans leading-6', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { + 'py-3 px-4 text-lg sm:text-md': props.size == 'large', + 'py-1 px-2 sm:text-sm': props.size == 'small', + 'py-1.5 px-3 sm:text-sm': props.size == null + }, + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'shadow-sm', + { + 'ring-1 ring-inset ring-offset-0': + parent.instance.$name !== 'InputGroup' + }, + + { 'ring-surface-300 dark:ring-surface-700': !props.invalid }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid }, + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { + 'first:rounded-l-md rounded-none last:rounded-r-md': + parent.instance.$name == 'InputGroup' + }, + { + 'border-0 border-y border-l last:border-r border-surface-300 dark:border-surface-600': + parent.instance.$name == 'InputGroup' + }, + { + 'first:ml-0 -ml-px': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + 'appearance-none', + + // Interactions + { + 'outline-none focus:ring-primary-500 dark:focus:ring-primary-400': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled } + ] + }) +} diff --git a/presets/wind/knob/index.js b/presets/wind/knob/index.js new file mode 100755 index 0000000..41fe50d --- /dev/null +++ b/presets/wind/knob/index.js @@ -0,0 +1,47 @@ +export default { + root: ({ props }) => ({ + class: [ + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + range: { + class: [ + // Stroke + 'stroke-current', + + // Color + 'stroke-surface-200 dark:stroke-surface-700', + + // Fill + 'fill-none', + + // Transition + 'transition duration-100 ease-in' + ] + }, + value: { + class: [ + // Animation + 'animate-dash-frame', + + // Color + 'stroke-primary-500 dark:stroke-primary-400', + + // Fill + 'fill-none' + ] + }, + label: { + class: [ + // Text Style + 'text-center text-xl', + + // Color + 'fill-surface-600 dark:fill-surface-200' + ] + } +} diff --git a/presets/wind/listbox/index.js b/presets/wind/listbox/index.js new file mode 100755 index 0000000..0784833 --- /dev/null +++ b/presets/wind/listbox/index.js @@ -0,0 +1,159 @@ +export default { + root: ({ props }) => ({ + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white/80', + 'ring-1', + { 'ring-surface-200 dark:ring-surface-700': !props.invalid }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid } + ] + }), + wrapper: { + class: [ + // Overflow + 'overflow-auto' + ] + }, + list: { + class: 'py-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + { 'font-normal': !context.selected, 'font-bold': context.selected }, + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-surface-200 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-500 dark:bg-primary-400 text-white dark:text-surface-700': + context.focused && context.selected + }, + { + 'bg-surface-100 dark:bg-surface-300/10 text-primary-500 dark:text-primary-400': + !context.focused && context.selected + }, + + //States + 'hover:bg-primary-500 dark:hover:bg-primary-400 hover:text-white dark:hover:text-surface-700', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + 'sm:text-sm', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + header: { + class: [ + // Spacing + 'p-0', + 'm-0', + + //Shape + 'rounded-tl-md', + 'rounded-tr-md', + 'border-b border-surface-200 dark:border-surface-700', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-100 dark:bg-surface-800' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'font-sans', + 'leading-none', + 'sm:text-sm', + + // Sizing + 'py-1.5 px-3', + 'pr-7', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'placeholder:text-surface-400', + + // Shape + 'border-0', + 'rounded-tl-md', + 'rounded-tr-md', + 'appearance-none', + + // States + 'focus:ring-2 focus:ring-inset focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-600 dark:focus:ring-primary-500', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + 'sm:text-sm', + + // Spacing + 'py-2 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + } +} diff --git a/presets/wind/megamenu/index.js b/presets/wind/megamenu/index.js new file mode 100755 index 0000000..f33d0ee --- /dev/null +++ b/presets/wind/megamenu/index.js @@ -0,0 +1,218 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + + // Spacing + 'min-h-[4rem]', + + // Shape + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-inset ring-surface-100 dark:ring-surface-800 ring-offset-0', + + { + 'items-center px-2 sm:px-6': props.orientation == 'horizontal', + 'flex-col justify-center sm:justify-start sm:w-48 px-2': + props.orientation !== 'horizontal' + } + ] + }), + menu: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex sm:row-gap-2 sm:col-gap-4', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0 ', + 'py-2 px-1.5 sm:py-0 sm:p-0 sm:py-1.5', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + 'sm:rounded-none rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900 sm:bg-transparent dark:sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + menuitem: ({ props }) => ({ + class: [ + 'sm:relative static', + { + 'sm:w-auto w-full': props.horizontal, + 'w-full': !props.horizontal + } + ] + }), + content: ({ props, context }) => ({ + class: [ + // Shape + { 'rounded-md': props.level < 1 }, + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-black/70': + context.focused && !context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + context.focused && context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-50 dark:hover:bg-surface-800': !context.active, + 'hover:bg-surface-100 dark:hover:bg-black/40 text-surface-900 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + + // Font + 'sm:text-sm font-medium', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + 'my-1 sm:my-0', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }, + icon: { + class: 'mr-2' + }, + submenuicon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.horizontal, + 'ml-auto': !props.horizontal + } + ] + }), + panel: ({ props }) => ({ + class: [ + // Size + 'w-auto', + + // Spacing + 'py-1', + 'm-0 mx-2', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-900', + + // Position + 'static sm:absolute', + 'z-10', + { + 'sm:left-full top-0': !props.horizontal + } + ] + }), + grid: { + class: 'flex flex-wrap sm:flex-nowrap' + }, + column: { + class: 'w-full sm:w-1/2' + }, + submenu: { + class: ['m-0 list-none', 'py-1 px-2 w-full sm:min-w-[14rem]'] + }, + submenuheader: { + class: [ + 'font-medium', + 'sm:text-md', + + // Spacing + 'py-2.5 px-2', + 'm-0', + + // Shape + 'border-b border-surface-200 dark:border-surface-700', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + menubutton: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-8', + 'h-8', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-50 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +} diff --git a/presets/wind/menu/index.js b/presets/wind/menu/index.js new file mode 100755 index 0000000..23722e4 --- /dev/null +++ b/presets/wind/menu/index.js @@ -0,0 +1,111 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + // Spacing + 'p-1.5', + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white/80', + 'ring-1 ring-surface-200 dark:ring-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: [ + // Space + 'first:mt-0 mt-1' + ] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-md', + + // Colors + { + 'text-surface-700 dark:text-surface-0': !context.focused, + 'bg-surface-100 text-primary-500 dark:bg-surface-300/10 dark:text-primary-400': + context.focused + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + 'hover:text-primary-600 dark:hover:text-primary-400', + 'hover:bg-surface-100 dark:hover:bg-surface-400/10' + ] + }), + action: { + class: [ + 'relative', + + // Font + 'font-semibold', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + 'leading-6', + 'text-sm' + ] + }, + label: { + class: ['leading-6', 'text-sm'] + }, + submenuheader: { + class: [ + // Font + 'font-semibold', + 'text-xs leading-6', + + // Spacing + 'm-0 ', + 'py-1', + 'px-3', + + // Shape + 'rounded-tl-none', + 'rounded-tr-none', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-600 dark:text-surface-0/60' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/menubar/index.js b/presets/wind/menubar/index.js new file mode 100755 index 0000000..b60b61c --- /dev/null +++ b/presets/wind/menubar/index.js @@ -0,0 +1,188 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + 'gap-6', + + // Spacing + 'px-6', + 'min-h-[4rem]', + + // Shape + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-inset ring-surface-100 dark:ring-surface-800 ring-offset-0' + ] + }, + menu: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex sm:row-gap-2 sm:col-gap-4', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0 ', + 'py-2 px-1.5 sm:py-0 sm:p-0 sm:py-1.5', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + 'sm:rounded-none rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900 sm:bg-transparent dark:sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + menuitem: { + class: 'sm:relative sm:w-auto w-full static' + }, + content: ({ props, context }) => ({ + class: [ + // Shape + { 'rounded-md': props.root }, + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-black/70': + context.focused && !context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + context.focused && context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-50 dark:hover:bg-surface-800': !context.active, + 'hover:bg-surface-100 dark:hover:bg-black/40 text-surface-900 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + action: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'sm:text-sm font-medium', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + 'my-1 sm:my-0', + + // Size + { + 'pl-5 sm:pl-3': context.level === 1, + 'pl-7 sm:pl-3': context.level === 2 + }, + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }), + icon: { + class: 'mr-2' + }, + submenuicon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.root, + 'ml-auto': !props.root + } + ] + }), + submenu: ({ props }) => ({ + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0 ', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }), + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + button: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-8', + 'h-8', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-50 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +} diff --git a/presets/wind/message/index.js b/presets/wind/message/index.js new file mode 100755 index 0000000..7215043 --- /dev/null +++ b/presets/wind/message/index.js @@ -0,0 +1,87 @@ +export default { + root: ({ props }) => ({ + class: [ + // Spacing and Shape + 'my-2 mx-0', + 'rounded-md', + 'ring-1 ring-inset ring-surface-200 dark:ring-surface-700 ring-offset-0', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + + { + 'text-blue-500 dark:text-blue-300': props.severity == 'info', + 'text-green-500 dark:text-green-300': props.severity == 'success', + 'text-orange-500 dark:text-orange-300': props.severity == 'warn', + 'text-red-500 dark:text-red-300': props.severity == 'error' + } + ] + }), + wrapper: { + class: [ + // Flexbox + 'flex items-center', + + // Spacing + 'p-4' + ] + }, + icon: { + class: [ + // Sizing and Spacing + 'w-5 h-5', + 'mr-3 shrink-0' + ] + }, + text: { + class: [ + // Font and Text + 'text-sm leading-none', + 'font-medium' + ] + }, + button: ({ props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-6 h-6', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + 'text-surface-700 dark:text-surface-0/80', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700', + 'outline-none focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }), + closeicon: { + class: [ + // Sizing and Spacing + 'w-3 h-3', + 'shrink-0' + ] + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-300', + leaveFromClass: 'max-h-40', + leaveActiveClass: 'overflow-hidden transition-all duration-300 ease-in', + leaveToClass: 'max-h-0 opacity-0 !m-0' + } +} diff --git a/presets/wind/metergroup/index.js b/presets/wind/metergroup/index.js new file mode 100755 index 0000000..b2925b0 --- /dev/null +++ b/presets/wind/metergroup/index.js @@ -0,0 +1,109 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex gap-4', + + { + 'flex-col': props.orientation == 'horizontal', + 'flex-row': props.orientation == 'vertical' + } + ] + }), + metercontainer: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + { 'flex-col': props.orientation === 'vertical' }, + + // Sizing + { 'w-2 h-full': props.orientation === 'vertical' }, + { 'h-2': props.orientation === 'horizontal' }, + + // Colors + 'bg-gray-200 dark:bg-gray-700', + + // Border Radius + 'rounded-lg' + ] + }), + meter: ({ props }) => ({ + class: [ + // Shape + 'border-0', + + // Rounded Corners - Horizontal + { + 'first:rounded-l-lg last:rounded-r-lg': + props.orientation === 'horizontal' + }, + + // Rounded Corners - Vertical + { + 'first:rounded-t-lg last:rounded-b-lg': props.orientation === 'vertical' + }, + + // Colors + 'bg-primary-500 dark:bg-primary-400' + ] + }), + labellist: ({ props }) => ({ + class: [ + // Display & Flexbox + 'flex flex-wrap', + + { 'gap-4': props.labelOrientation === 'horizontal' }, + + { 'gap-2': props.labelOrientation === 'vertical' }, + + { 'flex-col': props.labelOrientation === 'vertical' }, + + // Conditional Alignment - Horizontal + { + 'align-end': + props.labelOrientation === 'horizontal' && + props.labelPosition === 'end', + 'align-start': + props.labelOrientation === 'horizontal' && + props.labelPosition === 'start' + }, + + // Conditional Alignment - Vertical + { + 'justify-end': + props.labelOrientation === 'vertical' && + props.labelPosition === 'end', + 'justify-start': + props.labelOrientation === 'vertical' && + props.labelPosition === 'start' + }, + + // List Styling + 'm-0 p-0 list-none' + ] + }), + labellistitem: { + class: [ + // Flexbox + 'inline-flex', + 'items-center', + 'gap-2' + ] + }, + labellisttype: { + class: [ + // Display + 'inline-flex', + + // Background Color + 'bg-primary-500 dark:bg-primary-400', + + // Size + 'w-2 h-2', + + // Rounded Shape + 'rounded-full' + ] + } +} diff --git a/presets/wind/multiselect/index.js b/presets/wind/multiselect/index.js new file mode 100755 index 0000000..f6e87aa --- /dev/null +++ b/presets/wind/multiselect/index.js @@ -0,0 +1,619 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + 'shadow-sm', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + + // States + { + 'ring-1 ring-inset': !state.focused, + 'ring-2 ring-inset ring-primary-500 dark:ring-primary-400': + state.focused + }, + + { + 'ring-surface-300 dark:ring-surface-600': + !props.invalid && !state.focused + }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid && !state.focused }, + + // Misc + 'cursor-default', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled } + ] + }), + labelContainer: { + class: 'overflow-hidden flex flex-auto cursor-pointer' + }, + label: ({ props }) => ({ + class: [ + 'block leading-5', + + props.display === 'chip' && props?.modelValue?.length > 0 + ? 'py-1 px-3' + : 'py-1.5 px-3', + + // Color + { + 'text-surface-800 dark:text-white/80': props.modelValue?.length, + 'text-surface-400 dark:text-surface-500': !props.modelValue?.length + }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }), + token: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'py-0.5 px-3 mr-2', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-white/70', + 'bg-surface-200 dark:bg-surface-700' + ] + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + }, + trigger: { + class: [ + //Font + 'sm:text-sm', + + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-2', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + header: { + class: [ + 'flex items-center justify-between', + // Spacing + 'py-2 px-4', + 'm-0', + + //Shape + 'border-b', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700' + ] + }, + headerCheckboxContainer: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4', + 'h-4', + + // Spacing + 'mr-2', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + headerCheckbox: ({ context, state }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context?.selected, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context?.selected + }, + + { + 'outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400': + state.focused + } + ] + }), + headerCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4', + 'h-4', + + // Spacing + 'mr-2', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + icon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + itemCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4', + 'h-4', + + // Spacing + 'mr-2', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + icon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-6 h-6', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-3', + 'h-3' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[15rem]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + { 'font-normal': !context.selected, 'font-bold': context.selected }, + + // Flexbox + 'flex items-center', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-surface-200 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': + context.focused && !context.selected + }, + { + 'bg-primary-500 dark:bg-primary-400 text-white dark:text-surface-700': + context.focused && context.selected + }, + { + 'bg-transparent text-surface-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + 'hover:bg-primary-500 dark:hover:bg-primary-400 hover:text-white dark:hover:text-surface-700', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + 'sm:text-sm', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + filtercontainer: { + class: 'relative w-full mr-2' + }, + filterinput: { + class: [ + // Font + 'font-sans', + 'leading-none', + 'sm:text-sm', + + // Sizing + 'py-1.5 px-3', + 'pr-7', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'placeholder:text-surface-400', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700', + + // Shape + 'border-0', + 'rounded-md', + 'appearance-none', + + // States + 'focus:ring-2 focus:ring-inset focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-600 dark:focus:ring-primary-500', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + clearicon: { + class: [ + // Color + 'text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + 'sm:text-sm', + + // Spacing + 'py-2 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/orderlist/index.js b/presets/wind/orderlist/index.js new file mode 100755 index 0000000..74ed112 --- /dev/null +++ b/presets/wind/orderlist/index.js @@ -0,0 +1,275 @@ +export default { + root: { + class: [ + // Flexbox + 'flex' + ] + }, + controls: { + class: [ + // Flexbox & Alignment + 'flex flex-col justify-center gap-2', + + // Spacing + 'p-3' + ] + }, + moveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + container: { + class: ['flex-auto'] + }, + header: { + class: [ + 'font-semibold', + + // Shape + 'border-b rounded-t-md', + + // Spacing + 'py-3.5 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 border-b' + ] + }, + list: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md border-0', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + item: ({ context }) => ({ + class: [ + // Position + 'relative', + + // Spacing + 'py-3.5 px-3 m-0', + + // Shape + 'border-b last:border-b-0', + + // Transition + 'transition duration-200', + + // Color + 'text-surface-700 dark:text-white/80', + 'border-surface-200 dark:border-surface-700', + { + 'bg-surface-100 dark:bg-surface-600/30': + context.active && !context.focused + }, + { + 'bg-surface-200 dark:bg-surface-500/30': + context.active && context.focused + }, + { + 'bg-surface-50 dark:bg-surface-700/70': + !context.active && context.focused + }, + + // State + 'hover:bg-surface-100 dark:hover:bg-surface-700', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }) +} diff --git a/presets/wind/organizationchart/index.js b/presets/wind/organizationchart/index.js new file mode 100755 index 0000000..32384d3 --- /dev/null +++ b/presets/wind/organizationchart/index.js @@ -0,0 +1,140 @@ +export default { + table: { + class: [ + // Spacing & Position + 'mx-auto my-0', + + // Table Style + 'border-spacing-0 border-separate' + ] + }, + cell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + node: ({ context }) => ({ + class: [ + 'relative inline-block', + + // Font + 'text-sm leading-none', + + // Spacing + 'px-5 py-3', + + // Shape + 'border', + 'rounded', + + // Color + 'border-surface-200 dark:border-surface-700', + { + 'text-surface-600 dark:text-white/80': !context?.selected, + 'bg-surface-0 dark:bg-surface-800': !context?.selected, + 'text-surface-700 dark:text-surface-0': context?.selected, + 'bg-surface-50 dark:bg-surface-700': context?.selected + }, + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/40': context?.selectable + }, + + { 'cursor-pointer': context?.selectable } + ] + }), + linecell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + linedown: { + class: [ + // Spacing + 'mx-auto my-0', + + // Size + 'w-px h-[20px]', + + // Color + 'bg-surface-200 dark:bg-surface-700' + ] + }, + lineleft: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none border-r', + { 'border-t': context.lineTop }, + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }), + lineright: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none', + + // Color + { 'border-t border-surface-200 dark:border-surface-700': context.lineTop } + ] + }), + nodecell: { + class: 'text-center align-top py-0 px-3' + }, + nodetoggler: { + class: [ + // Position + 'absolute bottom-[-0.75rem] left-2/4 -ml-3', + 'z-20', + + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-6 h-6', + + // Shape + 'rounded-full', + + // Color + 'bg-inherit text-inherit', + + // Focus + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'cursor-pointer no-underline select-none' + ] + }, + nodetogglericon: { + class: [ + // Position + 'relative inline-block', + + // Size + 'w-4 h-4' + ] + } +} diff --git a/presets/wind/overlaypanel/index.js b/presets/wind/overlaypanel/index.js new file mode 100755 index 0000000..4d08364 --- /dev/null +++ b/presets/wind/overlaypanel/index.js @@ -0,0 +1,42 @@ +export default { + root: { + class: [ + // Shape + 'rounded-lg', + 'shadow-xl', + 'border-0 dark:border', + + // Position + 'absolute left-0 top-0 mt-2', + 'z-40 transform origin-center', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + 'dark:border-surface-700', + + // Before: Triangle + 'before:absolute before:-top-[9px] before:-ml-[9px] before:left-[calc(var(--overlayArrowLeft,0)+1.25rem)] z-0', + 'before:w-0 before:h-0 before:shadow-xl', + 'before:border-transparent before:border-solid', + 'before:border-x-[8px] before:border-[8px]', + 'before:border-t-0 before:border-b-surface-300/10 dark:before:border-b-surface-700', + + 'after:absolute after:-top-2 after:-ml-[8px] after:left-[calc(var(--overlayArrowLeft,0)+1.25rem)]', + 'after:w-0 after:h-0', + 'after:border-transparent after:border-solid', + 'after:border-x-[0.5rem] after:border-[0.5rem]', + 'after:border-t-0 after:border-b-surface-0 dark:after:border-b-surface-800' + ] + }, + content: { + class: 'p-6 items-center flex' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/paginator/index.js b/presets/wind/paginator/index.js new file mode 100755 index 0000000..59adddf --- /dev/null +++ b/presets/wind/paginator/index.js @@ -0,0 +1,596 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-center flex-wrap', + + // Spacing + 'px-4', + + // Shape + 'border-t', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-500 dark:text-white/60', + 'border-surface-200 dark:border-surface-700' + ] + }, + paginatorwrapper: { + class: '-mt-px' + }, + firstpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'text-sm font-medium', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-t-2 border-transparent', + + // Size + 'min-w-[3rem] h-12 -mt-px', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:border-surface-300 dark:hover:border-surface-200/30': + !context.disabled, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + previouspagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'text-sm font-medium', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-t-2 border-transparent', + + // Size + 'min-w-[3rem] h-12 -mt-px', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:border-surface-300 dark:hover:border-surface-200/30': + !context.disabled, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + nextpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'text-sm font-medium', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-t-2 border-transparent', + + // Size + 'min-w-[3rem] h-12 -mt-px', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:border-surface-300 dark:hover:border-surface-200/30': + !context.disabled, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + lastpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'text-sm font-medium', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-t-2 border-transparent', + + // Size + 'min-w-[3rem] h-12 -mt-px', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:border-surface-300 dark:hover:border-surface-200/30': + !context.disabled, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + pagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'text-sm font-medium', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-t-2', + + // Size + 'min-w-[3rem] h-12 -mt-px', + + // Color + { + 'text-surface-500 dark:text-white/60 border-transparent': + !context.active, + 'border-primary-500 dark:border-primary-400 text-primary-500 dark:text-surface-0': + context.active + }, + + // State + { + 'hover:border-surface-300 dark:hover:border-surface-200/30': + !context.disabled && !context.active, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400': + !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + rowperpagedropdown: { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'h-8', + 'rounded-md', + + // Spacing + 'mx-2', + + // Color and Background + 'bg-transparent', + + // Transitions + 'transition-all', + 'duration-200', + + // States + { + 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-600 dark:focus-visible:ring-primary-500': + !state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none', + { + 'opacity-60': props.disabled, + 'pointer-events-none': props.disabled, + 'cursor-default': props.disabled + } + ] + }), + input: { + class: [ + //Font + 'font-sans', + 'leading-6', + 'sm:text-sm', + + // Display + 'block', + 'flex-auto', + 'flex items-center', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + + // Sizing and Spacing + 'w-[1%]', + 'py-1.5 px-3 pr-0', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus-visible:outline-none focus-visible:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + //Font + 'sm:text-sm', + + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + 'h-8', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + dropdownicon: { + class: '' + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-1', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[15rem]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + { 'font-normal': !context.selected, 'font-bold': context.selected }, + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-primary-500 dark:bg-primary-400 text-white dark:text-surface-700': + context.focused && context.selected + }, + { + 'bg-transparent text-surface-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + 'hover:bg-primary-500 dark:hover:bg-primary-400 hover:text-white dark:hover:text-surface-700', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + jumptopageinput: { + root: { + class: 'inline-flex mx-2' + }, + input: { + root: { + class: [ + 'relative', + + //Font + 'font-sans', + 'leading-6', + 'sm:text-sm', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700', + // Sizing and Spacing + 'w-[1%] max-w-[3rem]', + 'py-1.5 px-3', + + //Shape + 'rounded-md', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary-500 dark:hover:border-primary-400', + 'focus-visible:outline-none focus-visible:shadow-none', + 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-600 dark:focus-visible:ring-primary-500', + // Misc + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + } + } + }, + jumptopagedropdown: { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'h-8', + 'rounded-md', + + // Spacing + 'mx-2', + + // Color and Background + 'bg-transparent', + + // Transitions + 'transition-all', + 'duration-200', + + // States + { + 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-600 dark:focus-visible:ring-primary-500': + !state.focused + }, + + // Misc + 'cursor-pointer', + 'select-none', + { + 'opacity-60': props.disabled, + 'pointer-events-none': props.disabled, + 'cursor-default': props.disabled + } + ] + }), + input: { + class: [ + //Font + 'font-sans', + 'leading-6', + 'sm:text-sm', + + // Display + 'block', + 'flex-auto', + 'flex items-center', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + + // Sizing and Spacing + 'w-[1%]', + 'py-1.5 px-3 pr-0', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus-visible:outline-none focus-visible:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + //Font + 'sm:text-sm', + + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + 'h-8', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-1', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[15rem]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'sm:text-sm', + 'leading-none', + { 'font-normal': !context.selected, 'font-bold': context.selected }, + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-2 px-4', + + // Color + { + 'text-surface-700 dark:text-white/80': + !context.focused && !context.selected + }, + { + 'bg-primary-500 dark:bg-primary-400 text-white dark:text-surface-700': + context.focused && context.selected + }, + { + 'bg-transparent text-surface-700 dark:text-white/80': + !context.focused && context.selected + }, + + //States + 'hover:bg-primary-500 dark:hover:bg-primary-400 hover:text-white dark:hover:text-surface-700', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + start: { + class: 'mr-auto' + }, + end: { + class: 'ml-auto' + } +} diff --git a/presets/wind/panel/index.js b/presets/wind/panel/index.js new file mode 100755 index 0000000..6d0076c --- /dev/null +++ b/presets/wind/panel/index.js @@ -0,0 +1,95 @@ +export default { + root: { + class: 'shadow-md rounded-lg' + }, + header: ({ props }) => ({ + class: [ + // Alignments + 'flex items-center justify-between', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-b border-surface-200 dark:border-surface-800', + + //Shape + 'rounded-tl-lg rounded-tr-lg', + + // Conditional Spacing + { + 'px-5 md:px-6 py-5': !props.toggleable, + 'py-3 px-5 md:px-6': props.toggleable + } + ] + }), + title: { + class: 'leading-none font-medium' + }, + toggler: { + class: [ + // Alignments + 'inline-flex items-center justify-center', + + // Sized + 'w-8 h-8', + + //Shape + 'border-0 rounded-full', + + //Color + 'bg-transparent', + 'text-surface-600 dark:text-surface-100/80', + + // States + 'hover:text-surface-900 dark:hover:text-surface-0/80', + 'hover:bg-surface-50 dark:hover:bg-surface-800/50', + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-2 focus-visible:ring-primary-600 focus-visible:ring-inset dark:focus-visible:ring-primary-500', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'overflow-hidden relative no-underline' + ] + }, + togglerIcon: { + class: 'inline-block' + }, + content: { + class: [ + // Spacing + 'py-6 px-5 md:px-6', + + // Shape + 'last:rounded-br-lg last:rounded-bl-lg', + + //Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + footer: { + class: [ + // Spacing + 'py-6 px-5 md:px-6', + + //Shape + 'rounded-bl-lg rounded-br-lg', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-600 dark:text-surface-0/70', + 'border-t border-surface-200 dark:border-surface-800' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +} diff --git a/presets/wind/panelmenu/index.js b/presets/wind/panelmenu/index.js new file mode 100755 index 0000000..a27fcf1 --- /dev/null +++ b/presets/wind/panelmenu/index.js @@ -0,0 +1,136 @@ +export default { + panel: { + class: 'mb-1' + }, + header: { + class: [ + 'rounded-md', + 'outline-none', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50' + ] + }, + headercontent: ({ context, instance }) => ({ + class: [ + // Shape + 'rounded-t-md', + { + 'rounded-br-md rounded-bl-md': + !context.active || instance.activeItem?.items === undefined, + 'rounded-br-0 rounded-bl-0': + context.active && instance.activeItem?.items !== undefined + }, + + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-0/80', + { 'text-surface-900 ark:text-surface-0': context.active }, + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200' + ] + }), + headeraction: { + class: [ + 'relative', + + // Font + 'font-semibold', + 'text-sm', + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'px-3 py-2', + + // Misc + 'select-none cursor-pointer no-underline' + ] + }, + headerlabel: { + class: 'leading-none' + }, + headerIcon: { + class: 'mr-2 text-sm' + }, + submenuicon: { + class: 'ml-auto order-last text-sm' + }, + menucontent: { + class: [ + // Spacing + 'py-1', + + // Shape + 'border border-t-0', + 'rounded-t-none rounded-br-md rounded-bl-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: ['outline-none', 'm-0 p-0 list-none'] + }, + content: { + class: [ + // Shape + 'border-none rounded-none', + + // Color + 'text-surface-700 dark:text-white/80', + + // Transition + 'transition-shadow duration-200' + ] + }, + action: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'text-sm leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700/80 hover:text-surface-700 dark:hover:text-white/80', + { + 'bg-surface-200 text-surface-700 dark:text-white/80 dark:bg-surface-600/90': + context.focused + }, + + // Misc + 'cursor-pointer no-underline', + 'select-none overflow-hidden' + ] + }), + icon: { + class: 'mr-2' + }, + submenu: { + class: 'p-0 pl-4 m-0 list-none' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +} diff --git a/presets/wind/password/index.js b/presets/wind/password/index.js new file mode 100755 index 0000000..79f4bfb --- /dev/null +++ b/presets/wind/password/index.js @@ -0,0 +1,141 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-flex relative', + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + }, + { '[&>input]:pr-10': props.toggleMask } + ] + }), + panel: { + class: [ + // Spacing + 'p-3', + + // Shape + 'border-0 dark:border', + 'shadow-md rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + meter: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-2', + 'rounded-md', + + // Spacing + 'mb-2', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + meterlabel: ({ instance }) => ({ + class: [ + // Size + 'h-full', + + // Colors + { + 'bg-red-500 dark:bg-red-400/50': instance?.meter?.strength == 'weak', + 'bg-orange-500 dark:bg-orange-400/50': + instance?.meter?.strength == 'medium', + 'bg-green-500 dark:bg-green-400/50': + instance?.meter?.strength == 'strong' + }, + + // Transitions + 'transition-all duration-1000 ease-in-out' + ] + }), + showicon: { + class: [ + 'absolute top-1/2 right-3 -mt-2 z-10', + 'text-surface-600 dark:text-white/70' + ] + }, + hideicon: { + class: [ + 'absolute top-1/2 right-3 -mt-2 z-10', + 'text-surface-600 dark:text-white/70' + ] + }, + input: { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'font-sans leading-6', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { + 'py-3 px-4 text-lg sm:text-md': props.size == 'large', + 'py-1 px-2 sm:text-sm': props.size == 'small', + 'py-1.5 px-3 sm:text-sm': props.size == null + }, + 'w-full', + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'shadow-sm', + { + 'ring-1 ring-inset ring-offset-0': + parent.instance.$name !== 'InputGroup' + }, + + { 'ring-surface-300 dark:ring-surface-700': !parent.props.invalid }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': parent.props.invalid }, + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { + 'first:rounded-l-md rounded-none last:rounded-r-md': + parent.instance.$name == 'InputGroup' + }, + { + 'border-0 border-y border-l last:border-r border-surface-300 dark:border-surface-600': + parent.instance.$name == 'InputGroup' + }, + { + 'first:ml-0 -ml-px': + parent.instance.$name == 'InputGroup' && !props.showButtons + }, + 'appearance-none', + + // Interactions + { + 'outline-none focus:ring-primary-500 dark:focus:ring-primary-400': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + } + ] + }) + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/picklist/index.js b/presets/wind/picklist/index.js new file mode 100755 index 0000000..44d5c3b --- /dev/null +++ b/presets/wind/picklist/index.js @@ -0,0 +1,684 @@ +export default { + root: { + class: [ + // Flexbox + 'flex lg:flex-row flex-col' + ] + }, + sourcecontrols: { + class: [ + // Flexbox & Alignment + 'flex lg:flex-col justify-center gap-2', + + // Spacing + 'p-3' + ] + }, + sourcemoveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcewrapper: { + class: 'grow shrink basis-2/4' + }, + sourceheader: { + class: [ + 'font-semibold', + + // Shape + 'border-b rounded-t-md', + + // Spacing + 'py-3.5 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 border-b' + ] + }, + sourcelist: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md border-0', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + item: ({ context }) => ({ + class: [ + // Position + 'relative', + + // Spacing + 'py-3.5 px-3 m-0', + + // Shape + 'border-b last:border-b-0', + + // Transition + 'transition duration-200', + + // Color + 'text-surface-700 dark:text-white/80', + 'border-surface-200 dark:border-surface-700', + { + 'bg-surface-100 dark:bg-surface-600/30': + context.active && !context.focused + }, + { + 'bg-surface-200 dark:bg-surface-500/30': + context.active && context.focused + }, + { + 'bg-surface-50 dark:bg-surface-700/70': + !context.active && context.focused + }, + + // State + 'hover:bg-surface-100 dark:hover:bg-surface-700', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }), + buttons: { + class: 'flex lg:flex-col justify-center gap-2 p-3' + }, + movetotargetbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movealltotargetbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movetosourcebutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movealltosourcebutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetcontrols: { + class: 'flex lg:flex-col justify-center gap-2 p-3' + }, + targetmoveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-white dark:text-surface-900', + 'bg-primary-500 dark:bg-primary-400', + 'border border-primary-500 dark:border-primary-400', + + // Spacing & Size + 'text-sm', + 'w-8', + 'm-0', + 'px-2.5 py-1.5 min-w-[2rem]', + 'shadow-sm', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:border-primary-600 dark:hover:border-primary-300', + 'focus:outline-none focus:outline-offset-0 focus:ring-2', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetwrapper: { + class: 'grow shrink basis-2/4' + }, + targetheader: { + class: [ + 'font-semibold', + + // Shape + 'border-b rounded-t-md', + + // Spacing + 'py-3.5 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 border-b' + ] + }, + targetlist: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md border-0', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + transition: { + enterFromClass: '!transition-none', + enterActiveClass: '!transition-none', + leaveActiveClass: '!transition-none', + leaveToClass: '!transition-none' + } +} diff --git a/presets/wind/progressbar/index.js b/presets/wind/progressbar/index.js new file mode 100755 index 0000000..dac2adf --- /dev/null +++ b/presets/wind/progressbar/index.js @@ -0,0 +1,68 @@ +export default { + root: ({ props }) => ({ + class: [ + // Position and Overflow + 'relative overflow-hidden', + + // Shape and Size + 'border-0', + 'rounded-md', + { 'h-7 pt-5': props.mode !== 'indeterminate' && props.showValue }, + { + 'h-2 bg-surface-100 dark:bg-surface-700 ': + props.mode == 'indeterminate' || !props.showValue + }, + + // Before & After (!indeterminate) + { + 'before:absolute before:w-full before:rounded-md before:h-2 before:top-[1.25rem] before:left-0 before:bottom-0 before:bg-surface-100 dark:before:bg-surface-700': + props.mode !== 'indeterminate' + } + ] + }), + value: ({ props }) => ({ + class: [ + // Flexbox & Overflow & Position + { + 'absolute flex items-center justify-center': + props.mode !== 'indeterminate' + }, + + // Colors + 'bg-primary-500 dark:bg-primary-400', + + // Spacing & Sizing + 'm-0', + { 'h-2 w-0': props.mode !== 'indeterminate' }, + + // Shape + 'border-0 rounded-md', + + // Transitions + { + 'transition-width duration-1000 ease-in-out': + props.mode !== 'indeterminate', + 'progressbar-value-animate': props.mode == 'indeterminate' + }, + + // Before & After (indeterminate) + { + 'before:absolute before:top-0 before:left-0 before:bottom-0 before:bg-inherit ': + props.mode == 'indeterminate', + 'after:absolute after:top-0 after:left-0 after:bottom-0 after:bg-inherit after:delay-1000': + props.mode == 'indeterminate' + } + ] + }), + label: { + class: [ + // Flexbox + 'inline-flex justify-end', + 'absolute inset-0 mr-1 -top-[1.15rem]', + + // Font and Text + 'text-sm text-surface-600 dark:text-surface-0/60', + 'leading-none' + ] + } +} diff --git a/presets/wind/progressspinner/index.js b/presets/wind/progressspinner/index.js new file mode 100755 index 0000000..01e445c --- /dev/null +++ b/presets/wind/progressspinner/index.js @@ -0,0 +1,51 @@ +export default { + root: { + class: [ + // Position + 'relative', + 'mx-auto', + + // Sizing + 'w-28', + 'h-28', + + // Flexbox + 'inline-block', + + // Pseudo-Elements + 'before:block', + 'before:pt-full' + ] + }, + spinner: { + class: [ + // Position + 'absolute', + 'top-0', + 'bottom-0', + 'left-0', + 'right-0', + 'm-auto', + + // Sizing + 'w-full', + 'h-full', + + // Transformations + 'transform', + 'origin-center', + + // Animations + 'animate-spin' + ] + }, + circle: { + class: [ + // Colors + 'text-red-500', + + // Misc + 'progress-spinner-circle' + ] + } +} diff --git a/presets/wind/radiobutton/index.js b/presets/wind/radiobutton/index.js new file mode 100755 index 0000000..1ebdfc7 --- /dev/null +++ b/presets/wind/radiobutton/index.js @@ -0,0 +1,92 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4 h-4', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-4 h-4', + 'text-sm', + 'font-medium', + + // Shape + 'border-2', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { + 'text-surface-700 dark:text-white/80': + props.value !== props.modelValue && props.value !== undefined, + 'bg-surface-0 dark:bg-surface-900': + props.value !== props.modelValue && props.value !== undefined, + 'border-surface-300 dark:border-surface-700': + props.value !== props.modelValue && + props.value !== undefined && + !props.invalid, + 'border-primary-500 dark:border-primary-400': + props.value == props.modelValue && props.value !== undefined + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'outline-none outline-offset-0': !props.disabled, + 'peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-surface-0 dark:focus-visible:ring-offset-surface-800 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'opacity-60 cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-default' + ] + }, + icon: { + class: 'hidden' + } +} diff --git a/presets/wind/rating/index.js b/presets/wind/rating/index.js new file mode 100755 index 0000000..bb40ae8 --- /dev/null +++ b/presets/wind/rating/index.js @@ -0,0 +1,86 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'flex items-center', + 'gap-1', + + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + cancelitem: ({ context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + //State + { + 'outline-none ring-2 ring-primary-500 dark:ring-primary-400': + context.focused + }, + + // Misc + 'cursor-pointer' + ] + }), + cancelicon: { + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-red-500 dark:text-red-400' + ] + }, + item: ({ props, context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + // State + { + 'outline-none ring-2 ring-primary-500 dark:ring-primary-400': + context.focused + }, + + // Misc + { + 'cursor-pointer': !props.readonly, + 'cursor-default': props.readonly + } + ] + }), + officon: ({ props }) => ({ + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-surface-700 dark:text-surface-0/70', + + // State + { 'hover:text-primary-500 dark:hover:text-primary-400': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }), + onicon: ({ props }) => ({ + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-primary-500 dark:text-primary-400', + + // Transition + 'transition duration-200 ease-in' + ] + }) +} diff --git a/presets/wind/ripple/index.js b/presets/wind/ripple/index.js new file mode 100755 index 0000000..7c30d99 --- /dev/null +++ b/presets/wind/ripple/index.js @@ -0,0 +1,6 @@ +export default { + root: { + class: ['block absolute bg-surface-0/50 rounded-full pointer-events-none'], + style: 'transform: scale(0)' + } +} diff --git a/presets/wind/scrollpanel/index.js b/presets/wind/scrollpanel/index.js new file mode 100755 index 0000000..bbad11a --- /dev/null +++ b/presets/wind/scrollpanel/index.js @@ -0,0 +1,77 @@ +export default { + wrapper: { + class: [ + // Size & Position + 'h-full w-full', + + // Layering + 'z-[1]', + + // Spacing + 'overflow-hidden', + + // Misc + 'relative float-left' + ] + }, + content: { + class: [ + // Size & Spacing + 'h-[calc(100%+12px)] w-[calc(100%+12px)] pr-[12px] pb-[12px] pl-0 pt-0', + + // Overflow & Scrollbar + 'overflow-scroll scrollbar-none', + + // Box Model + 'box-border', + + // Position + 'relative', + + // Webkit Specific + '[&::-webkit-scrollbar]:hidden' + ] + }, + barX: { + class: [ + // Size & Position + 'h-[6px] bottom-0', + + // Appearance + 'bg-surface-100 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'invisible z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + }, + barY: { + class: [ + // Size & Position + 'w-[6px] top-0', + + // Appearance + 'bg-surface-100 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + } +} diff --git a/presets/wind/scrolltop/index.js b/presets/wind/scrolltop/index.js new file mode 100755 index 0000000..df52dd4 --- /dev/null +++ b/presets/wind/scrolltop/index.js @@ -0,0 +1,45 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex & Alignment + 'flex items-center justify-center', + + // Positioning + { + sticky: props.target === 'parent', + fixed: props.target === 'window' + }, + 'bottom-[20px] right-[20px]', + 'ml-auto', + + // Shape & Size + { + 'rounded-md h-8 w-8': props.target === 'parent', + 'h-12 w-12 rounded-full shadow-md': props.target === 'window' + }, + + // Color + 'text-white dark:text-surface-900', + { + 'bg-primary-500 dark:bg-primary-400 hover:bg-primary-600 dark:hover:bg-primary-300': + props.target === 'parent', + 'bg-surface-500 dark:bg-surface-400 hover:bg-surface-600 dark:hover:bg-surface-300': + props.target === 'window' + }, + + // States + { + 'hover:bg-primary-600 dark:hover:bg-primary-300': + props.target === 'parent', + 'hover:bg-surface-600 dark:hover:bg-surface-300': + props.target === 'window' + } + ] + }), + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-150', + leaveActiveClass: 'transition-opacity duration-150', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/selectbutton/index.js b/presets/wind/selectbutton/index.js new file mode 100755 index 0000000..4e31ade --- /dev/null +++ b/presets/wind/selectbutton/index.js @@ -0,0 +1,58 @@ +export default { + root: ({ props }) => ({ + class: [ + 'shadow-sm', + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + button: ({ context, props }) => ({ + class: [ + 'relative', + // Font + 'text-sm', + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Spacing + 'px-2.5 py-1.5', + + // Shape + 'ring-1', + { 'ring-surface-200 dark:ring-surface-700': !props.invalid }, + 'first:rounded-l-md first:rounded-tr-none first:rounded-br-none', + 'last:rounded-tl-none last:rounded-bl-none last:rounded-r-md ', + + // Color + { + 'bg-surface-0 dark:bg-surface-900': !context.active, + 'text-surface-700 dark:text-white/80': !context.active, + 'bg-surface-100 dark:bg-surface-700': context.active + }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + 'hover:bg-surface-200 dark:hover:bg-surface-600/80', + { + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }), + label: { + class: 'font-semibold' + } +} diff --git a/presets/wind/sidebar/index.js b/presets/wind/sidebar/index.js new file mode 100755 index 0000000..7a86712 --- /dev/null +++ b/presets/wind/sidebar/index.js @@ -0,0 +1,165 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex flex-col', + + // Position + 'relative', + { + '!transition-none !transform-none !w-screen !h-screen !max-h-full !top-0 !left-0': + props.position == 'full' + }, + + // Size + { + 'h-full w-full max-w-[28rem]': + props.position == 'left' || props.position == 'right', + 'h-auto w-full': props.position == 'top' || props.position == 'bottom' + }, + + // Shape + 'border-0 dark:border', + 'shadow-xl', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + 'dark:border-surface-700', + + // Transitions + 'transition-transform', + 'duration-300', + + // Misc + 'pointer-events-auto' + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'px-6 pt-6', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + title: { + class: ['font-semibold leading-6 text-base m-0'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-6 h-6', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + closeicon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-3', + 'h-3' + ] + }, + content: { + class: [ + // Spacing and Size + 'px-6 pb-6', + 'mt-6', + 'h-full', + 'w-full', + + // Growth and Overflow + 'grow', + 'overflow-y-auto' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { + 'has-[.mask-active]:bg-transparent dark:has-[.mask-active]:bg-transparent bg-surface-500/70 dark:bg-surface-700/70': + props.modal, + 'has-[.mask-active]:backdrop-blur-none backdrop-blur-sm': props.modal + } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: + 'translate-x-0 -translate-y-full translate-z-0 mask-active', + leaveToClass: + 'translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: + 'translate-x-0 translate-y-full translate-z-0 mask-active', + leaveToClass: + 'translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' + ? { + enterFromClass: + '-translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: + '-translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' + ? { + enterFromClass: + 'translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: + 'translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 mask-active', + enterActiveClass: 'transition-opacity duration-400 ease-in', + leaveActiveClass: 'transition-opacity duration-400 ease-in', + leaveToClass: 'opacity-0 mask-active' + } + } +} diff --git a/presets/wind/skeleton/index.js b/presets/wind/skeleton/index.js new file mode 100755 index 0000000..07e2b13 --- /dev/null +++ b/presets/wind/skeleton/index.js @@ -0,0 +1,19 @@ +export default { + root: ({ props }) => ({ + class: [ + 'overflow-hidden', + { + 'animate-pulse': props.animation !== 'none' + }, + + // Round + { + 'rounded-full': props.shape === 'circle', + 'rounded-md': props.shape !== 'circle' + }, + + // Colors + 'bg-surface-200 dark:bg-surface-700' + ] + }) +} diff --git a/presets/wind/slider/index.js b/presets/wind/slider/index.js new file mode 100755 index 0000000..3d3a09c --- /dev/null +++ b/presets/wind/slider/index.js @@ -0,0 +1,135 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + 'flex items-center', + + // Size + { + 'h-2 w-full min-w-[15rem]': props.orientation == 'horizontal', + 'w-2 h-full min-h-[15rem]': props.orientation == 'vertical' + }, + + // Shape + 'border-0 rounded-lg', + + // Colors + 'bg-surface-100 dark:bg-surface-700', + + // States + { + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + range: ({ props }) => ({ + class: [ + // Position + 'block absolute', + { + 'top-0 left-0': props.orientation == 'horizontal', + 'bottom-0 left-0': props.orientation == 'vertical' + }, + + //Size + { + 'h-full': props.orientation == 'horizontal', + 'w-full': props.orientation == 'vertical' + }, + + //Shape + 'rounded-lg', + + // Colors + 'bg-primary-500 dark:bg-primary-400' + ] + }), + handle: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-4', + 'w-4', + { + 'top-[50%] mt-[-0.5rem] ml-[-0.5rem]': + props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5rem] ml-[-0.5rem]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'ring-2', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + starthandler: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-4', + 'w-4', + { + 'top-[50%] mt-[-0.5rem] ml-[-0.5rem]': + props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5rem] ml-[-0.5rem]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'ring-2', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + endhandler: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-4', + 'w-4', + { + 'top-[50%] mt-[-0.5rem] ml-[-0.5rem]': + props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5rem] ml-[-0.5rem]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'ring-2', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }) +} diff --git a/presets/wind/speeddial/index.js b/presets/wind/speeddial/index.js new file mode 100755 index 0000000..057affa --- /dev/null +++ b/presets/wind/speeddial/index.js @@ -0,0 +1,532 @@ +export default { + root: { + class: 'absolute flex' + }, + button: { + root: ({ props, context, parent }) => ({ + class: [ + 'relative', + 'z-20', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + 'w-12 h-12 p-0 py-3', + + // Shapes + 'rounded-full', + 'shadow-md', + + // Link Button + { 'text-primary-600 bg-transparent ring-transparent': props.link }, + + // Plain Button + { + 'text-white bg-gray-500 ring-1 ring-gray-500': + props.plain && !props.outlined && !props.text + }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { + 'text-surface-500 ring-1 ring-gray-500': props.plain && props.outlined + }, + + // Text Button + { 'bg-transparent ring-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-white dark:text-surface-900': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain, + 'bg-primary-500 dark:bg-primary-400': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-primary-500 dark:ring-primary-400': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain + }, + // Primary Text Button + { + 'text-primary-500 dark:text-primary-400': + props.text && props.severity === null && !props.plain + }, + // Primary Outlined Button + { + 'text-primary-500 ring-1 ring-primary-500 hover:bg-primary-300/20': + props.outlined && props.severity === null && !props.plain + }, + + // Secondary Button + { + 'text-white dark:text-surface-900': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain, + 'bg-surface-500 dark:bg-surface-400': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-surface-500 dark:ring-surface-400': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain + }, + // Secondary Text Button + { + 'text-surface-500 dark:text-surface-400': + props.text && props.severity === 'secondary' && !props.plain + }, + // Secondary Outlined Button + { + 'text-surface-500 ring-1 ring-surface-500 hover:bg-surface-300/20': + props.outlined && props.severity === 'secondary' && !props.plain + }, + + // Success Button + { + 'text-white dark:text-green-900': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain, + 'bg-green-500 dark:bg-green-400': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-green-500 dark:ring-green-400': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain + }, + // Success Text Button + { + 'text-green-500 dark:text-green-400': + props.text && props.severity === 'success' && !props.plain + }, + // Success Outlined Button + { + 'text-green-500 ring-1 ring-green-500 hover:bg-green-300/20': + props.outlined && props.severity === 'success' && !props.plain + }, + + // Info Button + { + 'text-white dark:text-surface-900': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain, + 'bg-blue-500 dark:bg-blue-400': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-blue-500 dark:ring-blue-400': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain + }, + // Info Text Button + { + 'text-blue-500 dark:text-blue-400': + props.text && props.severity === 'info' && !props.plain + }, + // Info Outlined Button + { + 'text-blue-500 ring-1 ring-blue-500 hover:bg-blue-300/20 ': + props.outlined && props.severity === 'info' && !props.plain + }, + + // Warning Button + { + 'text-white dark:text-surface-900': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain, + 'bg-orange-500 dark:bg-orange-400': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-orange-500 dark:ring-orange-400': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain + }, + // Warning Text Button + { + 'text-orange-500 dark:text-orange-400': + props.text && props.severity === 'warning' && !props.plain + }, + // Warning Outlined Button + { + 'text-orange-500 ring-1 ring-orange-500 hover:bg-orange-300/20': + props.outlined && props.severity === 'warning' && !props.plain + }, + + // Help Button + { + 'text-white dark:text-surface-900': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain, + 'bg-purple-500 dark:bg-purple-400': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-purple-500 dark:ring-purple-400': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain + }, + // Help Text Button + { + 'text-purple-500 dark:text-purple-400': + props.text && props.severity === 'help' && !props.plain + }, + // Help Outlined Button + { + 'text-purple-500 ring-1 ring-purple-500 hover:bg-purple-300/20': + props.outlined && props.severity === 'help' && !props.plain + }, + + // Danger Button + { + 'text-white dark:text-surface-900': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain, + 'bg-red-500 dark:bg-red-400': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain, + 'ring-1 ring-red-500 dark:ring-red-400': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain + }, + // Danger Text Button + { + 'text-red-500 dark:text-red-400': + props.text && props.severity === 'danger' && !props.plain + }, + // Danger Outlined Button + { + 'text-red-500 ring-1 ring-red-500 hover:bg-red-300/20': + props.outlined && props.severity === 'danger' && !props.plain + }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-offset-current', + { + 'focus:ring-offset-2': + !props.link && !props.plain && !props.outlined && !props.text + }, + + // Link + { 'focus:ring-primary-500 dark:focus:ring-primary-400': props.link }, + + // Plain + { + 'hover:bg-gray-600 hover:ring-gray-600': + props.plain && !props.outlined && !props.text + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + props.plain && (props.text || props.outlined) + }, + + // Primary + { + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:ring-primary-600 dark:hover:ring-primary-300': + !props.link && + props.severity === null && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-primary-500 dark:focus:ring-primary-400': + props.severity === null + }, + // Text & Outlined Button + { + 'hover:bg-primary-300/20': + (props.text || props.outlined) && + props.severity === null && + !props.plain + }, + + // Secondary + { + 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:ring-surface-600 dark:hover:ring-surface-300': + props.severity === 'secondary' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-surface-500 dark:focus:ring-surface-400': + props.severity === 'secondary' + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + (props.text || props.outlined) && + props.severity === 'secondary' && + !props.plain + }, + + // Success + { + 'hover:bg-green-600 dark:hover:bg-green-300 hover:ring-green-600 dark:hover:ring-green-300': + props.severity === 'success' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-green-500 dark:focus:ring-green-400': + props.severity === 'success' + }, + // Text & Outlined Button + { + 'hover:bg-green-300/20': + (props.text || props.outlined) && + props.severity === 'success' && + !props.plain + }, + + // Info + { + 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:ring-blue-600 dark:hover:ring-blue-300': + props.severity === 'info' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-blue-500 dark:focus:ring-blue-400': + props.severity === 'info' + }, + // Text & Outlined Button + { + 'hover:bg-blue-300/20': + (props.text || props.outlined) && + props.severity === 'info' && + !props.plain + }, + + // Warning + { + 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:ring-orange-600 dark:hover:ring-orange-300': + props.severity === 'warning' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-orange-500 dark:focus:ring-orange-400': + props.severity === 'warning' + }, + // Text & Outlined Button + { + 'hover:bg-orange-300/20': + (props.text || props.outlined) && + props.severity === 'warning' && + !props.plain + }, + + // Help + { + 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:ring-purple-600 dark:hover:ring-purple-300': + props.severity === 'help' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-purple-500 dark:focus:ring-purple-400': + props.severity === 'help' + }, + // Text & Outlined Button + { + 'hover:bg-purple-300/20': + (props.text || props.outlined) && + props.severity === 'help' && + !props.plain + }, + + // Danger + { + 'hover:bg-red-600 dark:hover:bg-red-300 hover:ring-red-600 dark:hover:ring-red-300': + props.severity === 'danger' && + !props.text && + !props.outlined && + !props.plain + }, + { + 'focus:ring-red-500 dark:focus:ring-red-400': + props.severity === 'danger' + }, + // Text & Outlined Button + { + 'hover:bg-red-300/20': + (props.text || props.outlined) && + props.severity === 'danger' && + !props.plain + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + parent.state.d_visible ? 'rotate-45' : 'rotate-0', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-semibold', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingicon: ({ props }) => ({ + class: [ + 'h-3 w-3', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [ + { + 'ml-2 w-4 h-4 leading-none flex items-center justify-center': + props.badge + } + ] + }) + }, + menu: { + class: [ + // Spacing + 'm-0 p-0', + + // Layout & Flexbox + 'list-none flex items-center justify-center', + + // Transitions + 'transition delay-200', + + // Z-Index (Positioning) + 'z-20' + ] + }, + menuitem: ({ props, context }) => ({ + class: [ + 'transform transition-transform duration-200 ease-out transition-opacity duration-800', + + // Conditional Appearance + context.hidden ? 'opacity-0 scale-0' : 'opacity-100 scale-100', + + // Conditional Spacing + { + 'my-1 first:mb-2': props.direction == 'up' && props.type == 'linear', + 'my-1 first:mt-2': props.direction == 'down' && props.type == 'linear', + 'mx-1 first:mr-2': props.direction == 'left' && props.type == 'linear', + 'mx-1 first:ml-2': props.direction == 'right' && props.type == 'linear' + }, + + // Conditional Positioning + { absolute: props.type !== 'linear' } + ] + }), + action: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Size + 'w-12 h-12', + + // Shape + 'rounded-full relative overflow-hidden', + + // Appearance + 'bg-surface-600 dark:bg-surface-0/80 text-white dark:text-surface-900/80', + + // Hover Effects + 'hover:bg-surface-700 dark:hover:bg-surface-200/80' + ] + }, + mask: ({ state }) => ({ + class: [ + // Base Styles + 'absolute left-0 top-0 w-full h-full transition-opacity duration-250 ease-in-out bg-surface-900/40 backdrop-blur-sm z-0', + + // Conditional Appearance + { + 'opacity-0 pointer-events-none': !state.d_visible, + 'opacity-100 transition-opacity duration-400 ease-in-out': + state.d_visible + } + ] + }) +} diff --git a/presets/wind/splitbutton/index.js b/presets/wind/splitbutton/index.js new file mode 100755 index 0000000..e54ffcd --- /dev/null +++ b/presets/wind/splitbutton/index.js @@ -0,0 +1,1078 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + { 'shadow-lg': props.raised } + ] + }), + button: { + root: ({ parent }) => ({ + class: [ + 'relative', + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm', + { + 'px-2.5 py-1.5 min-w-[2rem]': parent.props.size === null, + 'px-2 py-1': parent.props.size === 'small', + 'px-3 py-2': parent.props.size === 'large' + }, + { + 'min-w-8 p-0 py-1.5': + parent.props.label == null && parent.props.icon !== null + }, + + // Shape + 'rounded-r-none', + 'border-r-0', + { 'rounded-l-full': parent.props.rounded }, + { + 'rounded-md': !parent.props.rounded, + 'rounded-full': parent.props.rounded + }, + + // Link Button + { + 'text-primary-600 bg-transparent ring-transparent': parent.props.link + }, + + // Plain Button + { + 'text-white bg-gray-500 ring-1 ring-gray-500': + parent.props.plain && !parent.props.outlined && !parent.props.text + }, + // Plain Text Button + { 'text-surface-500': parent.props.plain && parent.props.text }, + // Plain Outlined Button + { + 'text-surface-500 ring-1 ring-gray-500': + parent.props.plain && parent.props.outlined + }, + + // Text Button + { + 'bg-transparent ring-transparent': + parent.props.text && !parent.props.plain + }, + + // Outlined Button + { 'bg-transparent': parent.props.outlined && !parent.props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-white dark:text-surface-900': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-primary-500 dark:bg-primary-400': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-primary-500 dark:ring-primary-400': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Primary Text Button + { + 'text-primary-500 dark:text-primary-400': + parent.props.text && + parent.props.severity === null && + !parent.props.plain + }, + // Primary Outlined Button + { + 'text-primary-500 ring-1 ring-primary-500 hover:bg-primary-300/20': + parent.props.outlined && + parent.props.severity === null && + !parent.props.plain + }, + + // Secondary Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-surface-500 dark:bg-surface-400': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-surface-500 dark:ring-surface-400': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Secondary Text Button + { + 'text-surface-500 dark:text-surface-400': + parent.props.text && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + // Secondary Outlined Button + { + 'text-surface-500 ring-1 ring-surface-500 hover:bg-surface-300/20': + parent.props.outlined && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + + // Success Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-green-500 dark:bg-green-400': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-green-500 dark:ring-green-400': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Success Text Button + { + 'text-surface-500 dark:text-surface-400': + parent.props.text && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + // Success Outlined Button + { + 'text-green-500 ring-1 ring-green-500 hover:bg-green-300/20': + parent.props.outlined && + parent.props.severity === 'success' && + !parent.props.plain + }, + + // Info Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-blue-500 dark:bg-blue-400': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-blue-500 dark:ring-blue-400': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Info Text Button + { + 'text-blue-500 dark:text-blue-400': + parent.props.text && + parent.props.severity === 'info' && + !parent.props.plain + }, + // Info Outlined Button + { + 'text-blue-500 ring-1 ring-blue-500 hover:bg-blue-300/20 ': + parent.props.outlined && + parent.props.severity === 'info' && + !parent.props.plain + }, + + // Warning Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-orange-500 dark:bg-orange-400': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-orange-500 dark:ring-orange-400': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Warning Text Button + { + 'text-orange-500 dark:text-orange-400': + parent.props.text && + parent.props.severity === 'warning' && + !parent.props.plain + }, + // Warning Outlined Button + { + 'text-orange-500 ring-1 ring-orange-500 hover:bg-orange-300/20': + parent.props.outlined && + parent.props.severity === 'warning' && + !parent.props.plain + }, + + // Help Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-purple-500 dark:bg-purple-400': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-purple-500 dark:ring-purple-400': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Help Text Button + { + 'text-purple-500 dark:text-purple-400': + parent.props.text && + parent.props.severity === 'help' && + !parent.props.plain + }, + // Help Outlined Button + { + 'text-purple-500 ring-1 ring-purple-500 hover:bg-purple-300/20': + parent.props.outlined && + parent.props.severity === 'help' && + !parent.props.plain + }, + + // Danger Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-red-500 dark:bg-red-400': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-red-500 dark:ring-red-400': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Danger Text Button + { + 'text-red-500 dark:text-red-400': + parent.props.text && + parent.props.severity === 'danger' && + !parent.props.plain + }, + // Danger Outlined Button + { + 'text-red-500 ring-1 ring-red-500 hover:bg-red-300/20': + parent.props.outlined && + parent.props.severity === 'danger' && + !parent.props.plain + }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-offset-current', + { + 'focus:ring-offset-2': + !parent.props.link && + !parent.props.plain && + !parent.props.outlined && + !parent.props.text + }, + + // Link + { + 'focus:ring-primary-500 dark:focus:ring-primary-400': + parent.props.link + }, + + // Plain + { + 'hover:bg-gray-600 hover:ring-gray-600': + parent.props.plain && !parent.props.outlined && !parent.props.text + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + parent.props.plain && (parent.props.text || parent.props.outlined) + }, + + // Primary + { + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:ring-primary-600 dark:hover:ring-primary-300': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-primary-500 dark:focus:ring-primary-400': + parent.props.severity === null + }, + // Text & Outlined Button + { + 'hover:bg-primary-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === null && + !parent.props.plain + }, + + // Secondary + { + 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:ring-surface-600 dark:hover:ring-surface-300': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-surface-500 dark:focus:ring-surface-400': + parent.props.severity === 'secondary' + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + + // Success + { + 'hover:bg-green-600 dark:hover:bg-green-300 hover:ring-green-600 dark:hover:ring-green-300': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-green-500 dark:focus:ring-green-400': + parent.props.severity === 'success' + }, + // Text & Outlined Button + { + 'hover:bg-green-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'success' && + !parent.props.plain + }, + + // Info + { + 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:ring-blue-600 dark:hover:ring-blue-300': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-blue-500 dark:focus:ring-blue-400': + parent.props.severity === 'info' + }, + // Text & Outlined Button + { + 'hover:bg-blue-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'info' && + !parent.props.plain + }, + + // Warning + { + 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:ring-orange-600 dark:hover:ring-orange-300': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-orange-500 dark:focus:ring-orange-400': + parent.props.severity === 'warning' + }, + // Text & Outlined Button + { + 'hover:bg-orange-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'warning' && + !parent.props.plain + }, + + // Help + { + 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:ring-purple-600 dark:hover:ring-purple-300': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-purple-500 dark:focus:ring-purple-400': + parent.props.severity === 'help' + }, + // Text & Outlined Button + { + 'hover:bg-purple-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'help' && + !parent.props.plain + }, + + // Warning + { + 'hover:bg-red-600 dark:hover:bg-red-300 hover:ring-red-600 dark:hover:ring-red-300': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-red-500 dark:focus:ring-red-400': + parent.props.severity === 'danger' + }, + // Text & Outlined Button + { + 'hover:bg-red-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'danger' && + !parent.props.plain + }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + icon: { + class: [ + // Margins + 'mr-2' + ] + } + }, + menubutton: { + root: ({ parent }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm', + { + 'px-2.5 py-1.5 min-w-[2rem]': parent.props.size === null, + 'px-2 py-1': parent.props.size === 'small', + 'px-3 py-2': parent.props.size === 'large' + }, + { + 'min-w-8 p-0 py-1.5': + parent.props.label == null && parent.props.icon !== null + }, + 'ml-px', + + // Shape + 'rounded-l-none', + { 'rounded-l-full': parent.props.rounded }, + { + 'rounded-md': !parent.props.rounded, + 'rounded-full': parent.props.rounded + }, + + // Link Button + { + 'text-primary-600 bg-transparent ring-transparent': parent.props.link + }, + + // Plain Button + { + 'text-white bg-gray-500 ring-1 ring-gray-500': + parent.props.plain && !parent.props.outlined && !parent.props.text + }, + // Plain Text Button + { 'text-surface-500': parent.props.plain && parent.props.text }, + // Plain Outlined Button + { + 'text-surface-500 ring-1 ring-gray-500': + parent.props.plain && parent.props.outlined + }, + + // Text Button + { + 'bg-transparent ring-transparent': + parent.props.text && !parent.props.plain + }, + + // Outlined Button + { 'bg-transparent': parent.props.outlined && !parent.props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-white dark:text-surface-900': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-primary-500 dark:bg-primary-400': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-primary-500 dark:ring-primary-400': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Primary Text Button + { + 'text-primary-500 dark:text-primary-400': + parent.props.text && + parent.props.severity === null && + !parent.props.plain + }, + // Primary Outlined Button + { + 'text-primary-500 ring-1 ring-primary-500 hover:bg-primary-300/20': + parent.props.outlined && + parent.props.severity === null && + !parent.props.plain + }, + + // Secondary Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-surface-500 dark:bg-surface-400': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-surface-500 dark:ring-surface-400': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Secondary Text Button + { + 'text-surface-500 dark:text-surface-400': + parent.props.text && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + // Secondary Outlined Button + { + 'text-surface-500 ring-1 ring-surface-500 hover:bg-surface-300/20': + parent.props.outlined && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + + // Success Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-green-500 dark:bg-green-400': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-green-500 dark:ring-green-400': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Success Text Button + { + 'text-surface-500 dark:text-surface-400': + parent.props.text && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + // Success Outlined Button + { + 'text-green-500 ring-1 ring-green-500 hover:bg-green-300/20': + parent.props.outlined && + parent.props.severity === 'success' && + !parent.props.plain + }, + + // Info Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-blue-500 dark:bg-blue-400': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-blue-500 dark:ring-blue-400': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Info Text Button + { + 'text-blue-500 dark:text-blue-400': + parent.props.text && + parent.props.severity === 'info' && + !parent.props.plain + }, + // Info Outlined Button + { + 'text-blue-500 ring-1 ring-blue-500 hover:bg-blue-300/20 ': + parent.props.outlined && + parent.props.severity === 'info' && + !parent.props.plain + }, + + // Warning Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-orange-500 dark:bg-orange-400': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-orange-500 dark:ring-orange-400': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Warning Text Button + { + 'text-orange-500 dark:text-orange-400': + parent.props.text && + parent.props.severity === 'warning' && + !parent.props.plain + }, + // Warning Outlined Button + { + 'text-orange-500 ring-1 ring-orange-500 hover:bg-orange-300/20': + parent.props.outlined && + parent.props.severity === 'warning' && + !parent.props.plain + }, + + // Help Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-purple-500 dark:bg-purple-400': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-purple-500 dark:ring-purple-400': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Help Text Button + { + 'text-purple-500 dark:text-purple-400': + parent.props.text && + parent.props.severity === 'help' && + !parent.props.plain + }, + // Help Outlined Button + { + 'text-purple-500 ring-1 ring-purple-500 hover:bg-purple-300/20': + parent.props.outlined && + parent.props.severity === 'help' && + !parent.props.plain + }, + + // Danger Button + { + 'text-white dark:text-surface-900': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'bg-red-500 dark:bg-red-400': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain, + 'ring-1 ring-red-500 dark:ring-red-400': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + // Danger Text Button + { + 'text-red-500 dark:text-red-400': + parent.props.text && + parent.props.severity === 'danger' && + !parent.props.plain + }, + // Danger Outlined Button + { + 'text-red-500 ring-1 ring-red-500 hover:bg-red-300/20': + parent.props.outlined && + parent.props.severity === 'danger' && + !parent.props.plain + }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-offset-current', + { + 'focus:ring-offset-2': + !parent.props.link && + !parent.props.plain && + !parent.props.outlined && + !parent.props.text + }, + + // Link + { + 'focus:ring-primary-500 dark:focus:ring-primary-400': + parent.props.link + }, + + // Plain + { + 'hover:bg-gray-600 hover:ring-gray-600': + parent.props.plain && !parent.props.outlined && !parent.props.text + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + parent.props.plain && (parent.props.text || parent.props.outlined) + }, + + // Primary + { + 'hover:bg-primary-600 dark:hover:bg-primary-300 hover:ring-primary-600 dark:hover:ring-primary-300': + !parent.props.link && + parent.props.severity === null && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-primary-500 dark:focus:ring-primary-400': + parent.props.severity === null + }, + // Text & Outlined Button + { + 'hover:bg-primary-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === null && + !parent.props.plain + }, + + // Secondary + { + 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:ring-surface-600 dark:hover:ring-surface-300': + parent.props.severity === 'secondary' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-surface-500 dark:focus:ring-surface-400': + parent.props.severity === 'secondary' + }, + // Text & Outlined Button + { + 'hover:bg-surface-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'secondary' && + !parent.props.plain + }, + + // Success + { + 'hover:bg-green-600 dark:hover:bg-green-300 hover:ring-green-600 dark:hover:ring-green-300': + parent.props.severity === 'success' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-green-500 dark:focus:ring-green-400': + parent.props.severity === 'success' + }, + // Text & Outlined Button + { + 'hover:bg-green-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'success' && + !parent.props.plain + }, + + // Info + { + 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:ring-blue-600 dark:hover:ring-blue-300': + parent.props.severity === 'info' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-blue-500 dark:focus:ring-blue-400': + parent.props.severity === 'info' + }, + // Text & Outlined Button + { + 'hover:bg-blue-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'info' && + !parent.props.plain + }, + + // Warning + { + 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:ring-orange-600 dark:hover:ring-orange-300': + parent.props.severity === 'warning' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-orange-500 dark:focus:ring-orange-400': + parent.props.severity === 'warning' + }, + // Text & Outlined Button + { + 'hover:bg-orange-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'warning' && + !parent.props.plain + }, + + // Help + { + 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:ring-purple-600 dark:hover:ring-purple-300': + parent.props.severity === 'help' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-purple-500 dark:focus:ring-purple-400': + parent.props.severity === 'help' + }, + // Text & Outlined Button + { + 'hover:bg-purple-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'help' && + !parent.props.plain + }, + + // Warning + { + 'hover:bg-red-600 dark:hover:bg-red-300 hover:ring-red-600 dark:hover:ring-red-300': + parent.props.severity === 'danger' && + !parent.props.text && + !parent.props.outlined && + !parent.props.plain + }, + { + 'focus:ring-red-500 dark:focus:ring-red-400': + parent.props.severity === 'danger' + }, + // Text & Outlined Button + { + 'hover:bg-red-300/20': + (parent.props.text || parent.props.outlined) && + parent.props.severity === 'danger' && + !parent.props.plain + }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: ['hidden'] + } + }, + menu: { + root: { + class: [ + // Shape + 'rounded-md', + + // Size + 'min-w-[12rem]', + 'p-1.5', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'ring-1 ring-surface-200 dark:ring-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: ['relative first:mt-0 mt-1'] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-md', + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-black/70': + context.focused && !context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + context.focused && context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-50 dark:hover:bg-surface-800': !context.active, + 'hover:bg-surface-100 dark:hover:bg-black/40 text-surface-900 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + + // Font + 'font-semibold', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + 'leading-6', + 'text-sm' + ] + }, + label: { + class: ['leading-none', 'text-sm'] + }, + submenuicon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'p-1.5', + 'm-0 mx-1.5', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + } + } +} diff --git a/presets/wind/splitter/index.js b/presets/wind/splitter/index.js new file mode 100755 index 0000000..832eb5e --- /dev/null +++ b/presets/wind/splitter/index.js @@ -0,0 +1,64 @@ +export default { + root: ({ context }) => ({ + class: [ + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-surface-0/80', + + // Shape + 'rounded-lg', + + // Borders (Conditional) + { + 'border border-solid border-surface-50 dark:border-surface-700': + !context.nested + }, + + // Nested + { 'flex grow border-0': context.nested } + ] + }), + + gutter: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + 'shrink-0', + + // Colors + 'bg-surface-50', + 'dark:bg-surface-800', + + // Transitions + 'transition-all', + 'duration-200', + + // Misc + { + 'cursor-col-resize': props.layout == 'horizontal', + 'cursor-row-resize': props.layout !== 'horizontal' + } + ] + }), + gutterhandler: ({ props }) => ({ + class: [ + // Colors + 'bg-surface-100', + 'dark:bg-surface-600', + + // Transitions + 'transition-all', + 'duration-200', + + // Sizing (Conditional) + { + 'h-7': props.layout == 'horizontal', + 'w-7 h-2': props.layout !== 'horizontal' + } + ] + }) +} diff --git a/presets/wind/splitterpanel/index.js b/presets/wind/splitterpanel/index.js new file mode 100755 index 0000000..4fb9f9f --- /dev/null +++ b/presets/wind/splitterpanel/index.js @@ -0,0 +1,5 @@ +export default { + root: ({ context }) => ({ + class: ['grow', { flex: context.nested }] + }) +} diff --git a/presets/wind/stepper/index.js b/presets/wind/stepper/index.js new file mode 100755 index 0000000..7c862c6 --- /dev/null +++ b/presets/wind/stepper/index.js @@ -0,0 +1,180 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex-1', + props.orientation === 'vertical' ? 'flex-col' : 'flex-row' + ] + }), + nav: { + class: [ + // Flexbox + 'flex', + 'justify-between', + 'items-center', + + // Spacing + 'm-0', + 'p-0', + + // Positioning + 'relative', + + // Lists + 'list-none', + + // Overflow + 'overflow-x-auto' + ] + }, + stepperpanel: { + panel: ({ context, parent }) => ({ + class: [ + context.active ? 'flex-1' : '', + parent.props.orientation === 'vertical' + ? 'flex flex-col flex-initial' + : '' + ] + }), + header: ({ parent, context }) => ({ + class: [ + // Position + 'relative', + + // Flexbox + 'flex', + 'items-center', + context.last ? 'flex-initial' : 'flex-1', + parent.props.orientation === 'vertical' ? 'flex-initial' : '', + + // Spacing + 'p-2' + ] + }), + action: { + class: [ + // Borders + 'border-0', + 'border-none', + + // Flexbox + 'inline-flex', + 'items-center', + + // Text + 'text-decoration-none', + + // Transitions + 'transition', + 'transition-shadow', + 'duration-200', + + // Shape + 'rounded-md', + + // Backgrounds + 'bg-transparent', + + // Focus + 'outline-none' + ] + }, + number: ({ context }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + + // Colors (Conditional) + context.active + ? 'bg-primary-500 dark:bg-primary-400 text-surface-0 dark:text-surface-900' + : 'border border-surface-200 dark:border-surface-700 text-surface-900 dark:text-surface-0', // Adjust colors as needed + + // Size and Shape + 'min-w-[2rem]', + 'h-[2rem]', + 'rounded-full', + 'leading-none', + + // Borders + context.active ? 'border-0 border-none' : 'border-solid border-2', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + title: ({ context }) => ({ + class: [ + // Layout + 'block', + 'whitespace-nowrap', + 'overflow-hidden', + 'text-ellipsis', + 'max-w-full', + + // Spacing + 'ml-2', + + // Text + context.active + ? 'text-surface-900 dark:text-surface-0' + : 'text-surface-700 dark:text-surface-0/80', + 'font-semibold', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + separator: ({ context, state, parent }) => ({ + class: [ + // Colors (Conditional for active step) + state.d_activeStep <= context.index + ? 'bg-surface-200 dark:bg-surface-700' + : 'bg-primary-500 dark:bg-primary-400', + + // Conditional for Vertical Orientation + parent.props.orientation === 'vertical' + ? ['flex-none', 'w-[2px]', 'h-auto', 'ml-[calc(1.29rem+2px)]'] + : ['flex-1', 'w-full', 'h-[2px]', 'ml-4'], + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + transition: { + class: [ + 'flex flex-1', + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-900 dark:text-surface-0' + ], + enterFromClass: 'max-h-0', + enterActiveClass: + 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + }, + content: ({ parent }) => ({ + class: [parent.props.orientation === 'vertical' ? 'w-full pl-4' : ''] + }) + }, + panelcontainer: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-900 dark:text-surface-0', + + // Spacing + 'p-4' + ] + } +} diff --git a/presets/wind/steps/index.js b/presets/wind/steps/index.js new file mode 100755 index 0000000..7c6ce61 --- /dev/null +++ b/presets/wind/steps/index.js @@ -0,0 +1,132 @@ +export default { + root: { + class: 'relative' + }, + menu: { + class: 'p-0 m-0 list-none flex justify-center' + }, + menuitem: { + class: [ + // Flexbox and Position + 'relative', + 'flex', + 'justify-center' + ] + }, + action: ({ props, context, state }) => ({ + class: [ + // Flexbox + 'inline-flex items-start relative', + 'flex-col', + + // Transitions and Shape + 'transition-shadow', + 'rounded-md', + + // Spacing + { + 'pr-4 min-[576px]:pr-32 md:pr-40': + props.model.length !== context.index + 1 + }, + + // Colors + 'bg-surface-0', + 'dark:bg-transparent', + + // Misc + { 'cursor-pointer': !props.readonly }, + + // After + 'after:border-t-2', + { + 'after:border-surface-200 after:dark:border-surface-700': + state.d_activeStep <= context.index + }, + { + 'after:border-primary-500 after:dark:border-primary-400': + state.d_activeStep > context.index + }, + 'after:w-full', + 'after:absolute', + 'after:top-1/2', + 'after:left-0', + 'after:transform', + 'after:-mt-3', + { 'after:hidden': props.model.length == context.index + 1 } + ] + }), + step: ({ context, props, state }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Position + 'z-40', + + // Shape + 'rounded-full', + 'border-2', + + // Size + 'w-[2rem]', + 'h-[2rem]', + 'text-sm', + 'leading-[2rem]', + + // Colors + { + 'text-surface-400 dark:text-white/60': + !context.active && state.d_activeStep < context.index, + 'border-surface-100 dark:border-surface-700': + !context.active && state.d_activeStep < context.index, + 'bg-surface-0 dark:bg-surface-800': state.d_activeStep <= context.index + }, + { + 'border-primary-500 dark:border-primary-400': context.active, + 'text-primary-500 dark:text-primary-400': context.active + }, + { + 'bg-primary-500 dark:bg-primary-400': + state.d_activeStep > context.index, + 'text-surface-0 dark:text-surface-900': + state.d_activeStep > context.index, + 'border-primary-500 dark:border-primary-400': + state.d_activeStep > context.index + }, + + // States + { + 'hover:border-surface-300 dark:hover:border-surface-500': + !context.active && !props.readonly + }, + + // Transition + 'transition-colors duration-200 ease-in-out' + ] + }), + label: ({ context }) => ({ + class: [ + 'relative', + // Font + 'text-sm leading-none', + { 'font-medium': context.active }, + + // Display + 'block', + + // Spacing + 'mt-2', + + // Colors + { + 'text-surface-400 dark:text-white/60': !context.active, + 'text-surface-800 dark:text-white/80': context.active + }, + + // Text and Overflow + 'whitespace-nowrap', + 'overflow-ellipsis', + 'max-w-full' + ] + }) +} diff --git a/presets/wind/tabmenu/index.js b/presets/wind/tabmenu/index.js new file mode 100755 index 0000000..58d40e2 --- /dev/null +++ b/presets/wind/tabmenu/index.js @@ -0,0 +1,84 @@ +export default { + root: { + class: 'overflow-x-auto' + }, + menu: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-b border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + menuitem: { + class: 'mr-0' + }, + action: ({ context, state }) => ({ + class: [ + 'relative', + + // Font + 'font-medium', + 'text-md', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'py-4 px-3', + '-mb-px', + + // Shape + 'border-b-2', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': + state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-800': + state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': + state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-800': + state.d_activeIndex === context.index, + 'border-primary-500 dark:border-primary-400': + state.d_activeIndex === context.index, + 'text-primary-500 dark:text-primary-400': + state.d_activeIndex === context.index + }, + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-inset', + 'focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + { + 'hover:bg-surface-0 dark:hover:bg-surface-800/80': + state.d_activeIndex !== context.index, + 'hover:border-surface-400 dark:hover:border-surface-600': + state.d_activeIndex !== context.index, + 'hover:text-surface-900 dark:hover:text-surface-0': + state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none', + 'whitespace-nowrap' + ] + }), + icon: { + class: 'mr-2' + } +} diff --git a/presets/wind/tabview/index.js b/presets/wind/tabview/index.js new file mode 100755 index 0000000..8974d4d --- /dev/null +++ b/presets/wind/tabview/index.js @@ -0,0 +1,168 @@ +export default { + navContainer: ({ props }) => ({ + class: [ + // Position + 'relative', + + // Misc + { 'overflow-hidden': props.scrollable } + ] + }), + navContent: { + class: [ + // Overflow and Scrolling + 'overflow-y-hidden overscroll-contain', + 'overscroll-auto', + 'scroll-smooth', + '[&::-webkit-scrollbar]:hidden' + ] + }, + previousButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 left-0', + 'z-20', + + // Size and Shape + 'h-full w-12', + 'rounded-none', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-primary-500 dark:text-primary-400', + 'shadow-md' + ] + }, + nextButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 right-0', + 'z-20', + + // Size and Shape + 'h-full w-12', + 'rounded-none', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-primary-500 dark:text-primary-400', + 'shadow-md' + ] + }, + nav: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-b border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + tabpanel: { + header: ({ props }) => ({ + class: [ + // Spacing + 'mr-0', + + // Misc + { + 'opacity-60 cursor-default user-select-none select-none pointer-events-none': + props?.disabled + } + ] + }), + headerAction: ({ parent, context }) => ({ + class: [ + 'relative', + + // Font + 'font-medium', + 'text-md', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'py-4 px-3', + '-mb-px', + + // Shape + 'border-b-2', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': + parent.state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-800': + parent.state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': + parent.state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-800': + parent.state.d_activeIndex === context.index, + 'border-primary-500 dark:border-primary-400': + parent.state.d_activeIndex === context.index, + 'text-primary-500 dark:text-primary-400': + parent.state.d_activeIndex === context.index + }, + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-inset', + 'focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + { + 'hover:bg-surface-0 dark:hover:bg-surface-800/80': + parent.state.d_activeIndex !== context.index, + 'hover:border-surface-400 dark:hover:border-surface-600': + parent.state.d_activeIndex !== context.index, + 'hover:text-surface-900 dark:hover:text-surface-0': + parent.state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none', + 'whitespace-nowrap' + ] + }), + headerTitle: { + class: [ + // Text + 'leading-none', + 'whitespace-nowrap' + ] + }, + content: { + class: [ + // Spacing + 'p-6', + + // Shape + 'rounded-b-md', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + 'border-0' + ] + } + } +} diff --git a/presets/wind/tag/index.js b/presets/wind/tag/index.js new file mode 100755 index 0000000..5f78d5f --- /dev/null +++ b/presets/wind/tag/index.js @@ -0,0 +1,37 @@ +export default { + root: ({ props }) => ({ + class: [ + //Font + 'text-xs font-bold', + + //Alignments + 'inline-flex items-center justify-center', + + //Spacing + 'px-2 py-1', + + //Shape + { + 'rounded-md': !props.rounded, + 'rounded-full': props.rounded + }, + + //Colors + 'text-white dark:text-surface-900', + { + 'bg-primary-500 dark:bg-primary-400': + props.severity == null || props.severity == 'primary', + 'bg-green-500 dark:bg-green-400': props.severity == 'success', + 'bg-blue-500 dark:bg-blue-400': props.severity == 'info', + 'bg-orange-500 dark:bg-orange-400': props.severity == 'warning', + 'bg-red-500 dark:bg-red-400': props.severity == 'danger' + } + ] + }), + value: { + class: 'leading-normal' + }, + icon: { + class: 'mr-1 text-sm' + } +} diff --git a/presets/wind/terminal/index.js b/presets/wind/terminal/index.js new file mode 100755 index 0000000..5c0ca67 --- /dev/null +++ b/presets/wind/terminal/index.js @@ -0,0 +1,60 @@ +export default { + root: { + class: [ + // Spacing + 'p-5', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-900 text-white', + 'border border-surface-700', + + // Sizing & Overflow + 'h-72 overflow-auto' + ] + }, + container: { + class: [ + // Flexbox + 'flex items-center' + ] + }, + prompt: { + class: [ + // Color + 'text-surface-400' + ] + }, + response: { + class: [ + // Color + 'text-primary-400' + ] + }, + command: { + class: [ + // Color + 'text-primary-400' + ] + }, + commandtext: { + class: [ + // Flexbox + 'flex-1 shrink grow-0', + + // Shape + 'border-0', + + // Spacing + 'p-0', + + // Color + 'bg-transparent text-inherit', + + // Outline + 'outline-none' + ] + } +} diff --git a/presets/wind/textarea/index.js b/presets/wind/textarea/index.js new file mode 100755 index 0000000..921a99c --- /dev/null +++ b/presets/wind/textarea/index.js @@ -0,0 +1,40 @@ +export default { + root: ({ context, props }) => ({ + class: [ + // Font + 'font-sans leading-6', + 'sm:text-sm', + + // Spacing + 'm-0', + 'py-1.5 px-3', + + // Shape + 'rounded-md', + 'appearance-none', + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-inset ring-offset-0', + 'shadow-sm', + { ' ring-surface-300 dark:ring-surface-700': !props.invalid }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid }, + + // States + { + 'outline-none focus:ring-primary-500 dark:focus:ring-primary-400': + !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + context.disabled + }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +} diff --git a/presets/wind/tieredmenu/index.js b/presets/wind/tieredmenu/index.js new file mode 100755 index 0000000..8fb5b59 --- /dev/null +++ b/presets/wind/tieredmenu/index.js @@ -0,0 +1,121 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Size + 'min-w-[12rem]', + 'p-1.5', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'ring-1 ring-surface-200 dark:ring-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: ['relative first:mt-0 mt-1'] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-md', + + // Colors + { + 'text-surface-500 dark:text-white/70': + !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-black/70': + context.focused && !context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + context.focused && context.active, + 'text-surface-900 dark:text-surface-0/80 bg-surface-50 dark:bg-black/70': + !context.focused && context.active + }, + + // Hover States + { + 'hover:bg-surface-50 dark:hover:bg-surface-800': !context.active, + 'hover:bg-surface-100 dark:hover:bg-black/40 text-surface-900 dark:text-surface-0/80': + context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + + // Font + 'font-semibold', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + 'leading-6', + 'text-sm' + ] + }, + label: { + class: ['leading-none', 'text-sm'] + }, + submenuicon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'p-1.5', + 'm-0 mx-1.5', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + } +} diff --git a/presets/wind/timeline/index.js b/presets/wind/timeline/index.js new file mode 100755 index 0000000..27b46e8 --- /dev/null +++ b/presets/wind/timeline/index.js @@ -0,0 +1,107 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex grow', + { + 'flex-col': props.layout === 'vertical', + 'flex-row flex-1': props.layout === 'horizontal' + } + ] + }), + event: ({ props, context }) => ({ + class: [ + 'flex relative min-h-[70px]', + { + 'flex-row-reverse': + props.align === 'right' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 1), + 'flex-col flex-1': props.layout === 'horizontal', + 'flex-col-reverse ': + props.align === 'bottom' || + (props.layout === 'horizontal' && + props.align === 'alternate' && + context.index % 2 === 1) + } + ] + }), + opposite: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-right': + props.align === 'left' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 0), + 'text-left': + props.align === 'right' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 1) + } + ] + }), + separator: ({ props }) => ({ + class: [ + 'flex items-center flex-initial', + { + 'flex-col': props.layout === 'vertical', + 'flex-row': props.layout === 'horizontal' + } + ] + }), + marker: { + class: [ + // Display & Flexbox + 'flex self-baseline', + + // Size + 'w-4 h-4', + + // Appearance + 'rounded-full border-2 border-primary-500 bg-surface-0 dark:border-primary-300 dark:bg-surface-900/40' + ] + }, + connector: ({ props }) => ({ + class: [ + 'grow bg-surface-300 dark:bg-surface-700', + { + 'w-[2px]': props.layout === 'vertical', + 'w-full h-[2px]': props.layout === 'horizontal' + } + ] + }), + content: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-left': + props.align === 'left' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 0), + 'text-right': + props.align === 'right' || + (props.layout === 'vertical' && + props.align === 'alternate' && + context.index % 2 === 1) + }, + { + 'min-h-0': + props.layout === 'vertical' && context.index === context.count, + 'grow-0': + props.layout === 'horizontal' && context.index === context.count + } + ] + }) +} diff --git a/presets/wind/toast/index.js b/presets/wind/toast/index.js new file mode 100755 index 0000000..ac36740 --- /dev/null +++ b/presets/wind/toast/index.js @@ -0,0 +1,111 @@ +export default { + root: ({ props }) => ({ + class: [ + //Size and Shape + 'w-96 rounded-md', + + // Positioning + { + '-translate-x-2/4': + props.position == 'top-center' || props.position == 'bottom-center' + } + ] + }), + container: ({ props }) => ({ + class: [ + 'my-4 rounded-md w-full', + + 'shadow-lg', + 'bg-surface-0 dark:bg-surface-800', + 'ring-1 ring-inset ring-surface-200 dark:ring-surface-700 ring-offset-0', + // Colors + { + 'text-blue-500 dark:text-blue-300': props.message.severity == 'info', + 'text-green-500 dark:text-green-300': + props.message.severity == 'success', + 'text-orange-500 dark:text-orange-300': + props.message.severity == 'warn', + 'text-red-500 dark:text-red-300': props.message.severity == 'error' + } + ] + }), + content: ({ props }) => ({ + class: [ + 'flex p-4', + { + 'items-start': props.message.summary, + 'items-center': !props.message.summary + } + ] + }), + icon: { + class: [ + // Sizing and Spacing + 'w-5 h-5', + 'mr-2 shrink-0' + ] + }, + text: { + class: [ + // Font and Text + 'text-sm leading-none', + 'ml-2', + 'flex-1' + ] + }, + summary: { + class: 'font-medium block' + }, + detail: ({ props }) => ({ + class: [ + 'block', + 'text-surface-600 dark:text-surface-0/70', + { 'mt-1.5': props.message.summary } + ] + }), + closebutton: { + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-6 h-6', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + 'text-surface-700 dark:text-surface-0/80', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700', + 'outline-none focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + closeicon: { + class: [ + // Sizing and Spacing + 'w-3 h-3', + 'shrink-0' + ] + }, + transition: { + enterFromClass: 'opacity-0 translate-y-2/4', + enterActiveClass: 'transition-[transform,opacity] duration-300', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: + '!transition-[max-height_.45s_cubic-bezier(0,1,0,1),opacity_.3s,margin-bottom_.3s] overflow-hidden', + leaveToClass: 'max-h-0 opacity-0 mb-0' + } +} diff --git a/presets/wind/togglebutton/index.js b/presets/wind/togglebutton/index.js new file mode 100755 index 0000000..200338a --- /dev/null +++ b/presets/wind/togglebutton/index.js @@ -0,0 +1,91 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Alignments + 'items-center inline-flex flex-1 text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-2.5 py-1.5', + 'text-sm', + + // Shapes + 'rounded-md shadow-sm', + + // Colors + 'text-surface-700 dark:text-white/80', + 'ring-1', + { 'ring-surface-200 dark:ring-surface-700': !props.invalid }, + { + 'bg-surface-0 dark:bg-surface-900 ': !props.modelValue, + 'bg-surface-100 dark:bg-surface-700': props.modelValue + }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid }, + + // States + 'peer-hover:bg-surface-200 dark:peer-hover:bg-surface-600/80', + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-inset peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled + }, + + // Transitions + 'transition-all duration-200', + + // Misc + { + 'cursor-pointer': !props.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': + props.disabled + } + ] + }), + label: { + class: 'font-semibold text-center w-full' + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [' mr-2', 'text-surface-700 dark:text-white/80'] + } +} diff --git a/presets/wind/toolbar/index.js b/presets/wind/toolbar/index.js new file mode 100755 index 0000000..6e460f7 --- /dev/null +++ b/presets/wind/toolbar/index.js @@ -0,0 +1,30 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-between flex-wrap', + 'gap-6', + + // Spacing + 'px-6 py-2', + 'min-h-[4rem]', + + // Shape + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-surface-100 dark:ring-surface-700' + ] + }, + start: { + class: 'flex items-center' + }, + center: { + class: 'flex items-center' + }, + end: { + class: 'flex items-center' + } +} diff --git a/presets/wind/tooltip/index.js b/presets/wind/tooltip/index.js new file mode 100755 index 0000000..6904b6b --- /dev/null +++ b/presets/wind/tooltip/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ context, props }) => ({ + class: [ + // Position + 'absolute', + // Spacing + { + 'px-1.5': + context?.right || + context?.left || + (!context?.right && + !context?.left && + !context?.top && + !context?.bottom), + 'py-1.5': context?.top || context?.bottom + } + ] + }), + arrow: { + class: 'hidden' + }, + text: { + class: [ + // Size + 'text-xs leading-none', + + // Spacing + 'p-2', + + // Shape + 'rounded-md', + + // Color + 'text-surface-900 dark:text-surface-0/80', + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-inset ring-surface-200 dark:ring-surface-800 ring-offset-0', + + // Misc + 'whitespace-pre-line', + 'break-words' + ] + } +} diff --git a/presets/wind/tree/index.js b/presets/wind/tree/index.js new file mode 100755 index 0000000..69a6f52 --- /dev/null +++ b/presets/wind/tree/index.js @@ -0,0 +1,300 @@ +export default { + root: { + class: [ + 'relative', + + // Space + 'p-1.5', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + 'ring-1 ring-surface-200 dark:ring-surface-700' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: [ + 'p-[2px]', + 'rounded-md', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + content: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'p-2', + + // Colors + 'text-surface-700 dark:text-surface-0', + { + 'bg-surface-100 text-primary-500 dark:bg-surface-300/10 dark:text-primary-400': + context.selected + }, + + // States + { + 'hover:bg-surface-200 dark:hover:bg-surface-400/10': + props.selectionMode == 'single' || props.selectionMode == 'multiple' + }, + + // Transition + 'transition-shadow duration-200', + + { + 'cursor-pointer select-none': + props.selectionMode == 'single' || props.selectionMode == 'multiple' + } + ] + }), + toggler: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size and Spacing + 'mr-2', + 'w-6 h-6', + + // Spacing + 'mr-2', + + // Colors + 'text-surface-500', + 'bg-transparent', + { + invisible: context.leaf + }, + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + togglericon: { + class: [ + // Size + 'w-4 h-4', + + // Color + 'text-surface-500 dark:text-white/70' + ] + }, + nodeCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4', + 'h-4', + + // Spacing + 'mr-2', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + icon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + nodeicon: { + class: [ + // Space + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + subgroup: { + class: ['m-0 list-none p-0 pl-2 mt-1'] + }, + filtercontainer: { + class: [ + 'relative block', + + // Space + 'mb-2', + + // Size + 'w-full' + ] + }, + input: { + class: [ + 'relative', + + // Font + 'font-sans leading-6', + 'sm:text-sm', + + // Spacing + 'm-0', + 'py-1.5 px-3 pr-10', + + // Size + 'w-full', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700 ring-offset-0', + + // States + 'hover:border-primary-500 dark:hover:border-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition & Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }, + loadingicon: { + class: [ + 'text-surface-500 dark:text-surface-0/70', + 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin' + ] + }, + searchicon: { + class: [ + // Position + 'absolute top-1/2 -mt-2 right-3', + + // Color + 'text-surface-600 dark:hover:text-white/70' + ] + } +} diff --git a/presets/wind/treeselect/index.js b/presets/wind/treeselect/index.js new file mode 100755 index 0000000..293e036 --- /dev/null +++ b/presets/wind/treeselect/index.js @@ -0,0 +1,402 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + 'shadow-sm', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + + // States + { + 'ring-1 ring-inset': !state.focused, + 'ring-2 ring-inset ring-primary-500 dark:ring-primary-400': + state.focused + }, + + { + 'ring-surface-300 dark:ring-surface-600': + !props.invalid && !state.focused + }, + + // Invalid State + { 'ring-red-500 dark:ring-red-400': props.invalid && !state.focused }, + + // Misc + 'cursor-default', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled } + ] + }), + labelContainer: { + class: ['overflow-hidden flex flex-auto cursor-pointer'] + }, + label: { + class: [ + 'block leading-5', + + // Space + 'py-1.5 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }, + trigger: { + class: [ + //Font + 'sm:text-sm', + + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + 'mt-2', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + tree: { + root: { + class: [ + 'relative', + + // Space + 'p-1.5' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: [ + 'p-[2px]', + 'rounded-md', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + content: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'p-2', + + // Colors + 'text-surface-700 dark:text-surface-0', + { + 'bg-surface-100 text-primary-500 dark:bg-surface-300/10 dark:text-primary-400': + context.selected + }, + + // States + { + 'hover:bg-surface-200 dark:hover:bg-surface-400/10': + props.selectionMode == 'single' || props.selectionMode == 'multiple' + }, + + // Transition + 'transition-shadow duration-200', + + { + 'cursor-pointer select-none': + props.selectionMode == 'single' || props.selectionMode == 'multiple' + } + ] + }), + toggler: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size and Spacing + 'mr-2', + 'w-6 h-6', + + // Spacing + 'mr-2', + + // Colors + 'text-surface-500', + 'bg-transparent', + { + invisible: context.leaf + }, + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + togglericon: { + class: [ + // Size + 'w-4 h-4', + + // Color + 'text-surface-500 dark:text-white/70' + ] + }, + nodeCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-4', + 'h-4', + + // Spacing + 'mr-2', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + icon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + nodeicon: { + class: [ + // Space + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + subgroup: { + class: ['m-0 list-none p-0 pl-2 mt-1'] + }, + filtercontainer: { + class: [ + 'relative block', + + // Space + 'mb-2', + + // Size + 'w-full' + ] + }, + input: { + class: [ + 'relative', + + // Font + 'font-sans leading-6', + 'sm:text-sm', + + // Spacing + 'm-0', + 'py-1.5 px-3 pr-10', + + // Size + 'w-full', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-900 dark:text-surface-0', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'ring-1 ring-inset ring-surface-300 dark:ring-surface-700 ring-offset-0', + + // States + 'hover:border-primary-500 dark:hover:border-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition & Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }, + loadingicon: { + class: [ + 'text-surface-500 dark:text-surface-0/70', + 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin' + ] + }, + searchicon: { + class: [ + // Position + 'absolute top-1/2 -mt-2 right-3', + + // Color + 'text-surface-600 dark:hover:text-white/70' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +} diff --git a/presets/wind/treetable/index.js b/presets/wind/treetable/index.js new file mode 100755 index 0000000..2ef0f4c --- /dev/null +++ b/presets/wind/treetable/index.js @@ -0,0 +1,505 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + { + 'flex flex-col h-full': props.scrollHeight === 'flex' + }, + + // Shape + 'border-spacing-0 border-separate' + ] + }), + loadingoverlay: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-800/40', + + // Transition + 'transition duration-200' + ] + }, + loadingicon: { + class: 'w-8 h-8 animate-spin' + }, + wrapper: ({ props }) => ({ + class: [ + // Overflow + { + 'relative overflow-auto': props.scrollable, + 'overflow-x-auto': props.resizableColumns + } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-semibold', + + // Shape + props.showGridlines ? 'border-b' : 'border-b border-x-0', + + // Spacing + 'py-3.5 px-3', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-300 dark:border-surface-600', + 'text-surface-700 dark:text-white/80' + ] + }), + footer: { + class: [ + 'font-semibold', + + // Shape + 'border-t-0 border-t border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }, + table: { + class: [ + // Table & Width + 'border-collapse table-fixed w-full ' + ] + }, + thead: ({ props }) => ({ + class: [ + // Position & Z-index + { + 'top-0 z-40 sticky': props.scrollable + } + ] + }), + tbody: ({ props }) => ({ + class: [ + { + block: props.scrollable + } + ] + }), + tfoot: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + headerrow: ({ props }) => ({ + class: [ + // Flexbox & Width + { + 'flex flex-nowrap w-full': props.scrollable + } + ] + }), + row: ({ context, props }) => ({ + class: [ + // Flex + { 'flex flex-nowrap w-full': context.scrollable }, + + // Color + 'dark:text-white/80', + { 'bg-surface-50 dark:bg-surface-500/30': context.selected }, + { + 'bg-surface-0 text-surface-600 dark:bg-surface-800': !context.selected + }, + + // Hover & Flexbox + { + 'hover:bg-surface-300/20 hover:text-surface-600': + context.selectable && !context.selected + }, + 'focus:outline-none focus:outline-offset-0 focus:ring-2 focus:ring-primary-500 ring-inset dark:focus:ring-primary-400', + + // Transition + { + 'transition duration-200': + (props.selectionMode && !context.selected) || props.rowHover + } + ] + }), + headercell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'text-sm', + + // Position + { + 'sticky z-40': + context.scrollable && + context.scrollDirection === 'both' && + context.frozen + }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': + context.scrollable && + context.scrollDirection === 'both' && + !context.frozen + }, + 'text-left', + + // Shape + { 'border-r last:border-r-0': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' + ? 'py-2.5 px-2' + : context?.size === 'large' + ? 'py-5 px-4' + : 'py-3.5 px-3', + + // Color + (props.sortable === '' || props.sortable) && context.sorted + ? 'text-primary-500' + : 'bg-surface-0 text-surface-700', + (props.sortable === '' || props.sortable) && context.sorted + ? 'dark:text-primary-400' + : 'dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 ', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': + context.resizable && !context.frozen + } + ] + }), + column: { + headercell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'text-sm', + + // Position + { + 'sticky z-40': + context.scrollable && + context.scrollDirection === 'both' && + context.frozen + }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': + context.scrollable && + context.scrollDirection === 'both' && + !context.frozen + }, + 'text-left', + + // Shape + { 'border-r last:border-r-0': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' + ? 'py-2.5 px-2' + : context?.size === 'large' + ? 'py-5 px-4' + : 'py-3.5 px-3', + + // Color + (props.sortable === '' || props.sortable) && context.sorted + ? 'text-primary-500' + : 'bg-surface-0 text-surface-700', + (props.sortable === '' || props.sortable) && context.sorted + ? 'dark:text-primary-400' + : 'dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 ', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': + context.resizable && !context.frozen + } + ] + }), + bodycell: ({ context }) => ({ + class: [ + // Position + { + sticky: + context.scrollable && + context.scrollDirection === 'both' && + context.frozen + }, + + // Font + 'text-sm', + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': + context.scrollable && + context.scrollDirection === 'both' && + !context.frozen + }, + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'last:border-r-0 border-r border-b': context?.showGridlines }, + + // Color + 'border-surface-200 dark:border-surface-700', + { 'bg-surface-0 dark:bg-surface-800': !context.selected }, + + // Spacing + context?.size === 'small' + ? 'py-2.5 px-2' + : context?.size === 'large' + ? 'py-5 px-4' + : 'py-3.5 px-3', + + // Misc + 'space-nowrap', + { + 'cursor-pointer': context.selectable + } + ] + }), + rowtoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left align-middle', + + // Spacing + 'm-0 mr-2 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + + // States + 'hover:bg-surface-50 dark:hover:bg-surface-700', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + sorticon: ({ context }) => ({ + class: [ + 'ml-2 inline-block', + context.sorted + ? 'fill-primary-700 dark:fill-white/80' + : 'fill-surface-700 dark:fill-white/70' + ] + }), + sortbadge: { + class: [ + // Flex & Alignment + 'inline-flex items-center justify-center align-middle', + + // Shape + 'rounded-full', + + // Size + 'w-[1.143rem] leading-[1.143rem]', + + // Spacing + 'ml-2', + + // Color + 'text-primary-700 dark:text-white', + 'bg-primary-50 dark:bg-primary-400/30' + ] + }, + columnresizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + rowCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-middle', + + // Size + 'w-4', + 'h-4', + + // Spacing + 'mr-2', + + // Misc + 'cursor-default', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.checked, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.checked + }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + icon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: + 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + resizehelper: { + class: 'absolute hidden w-[2px] z-20 bg-primary-500 dark:bg-primary-400' + } +} diff --git a/presets/wind/tristatecheckbox/index.js b/presets/wind/tristatecheckbox/index.js new file mode 100755 index 0000000..a21382a --- /dev/null +++ b/presets/wind/tristatecheckbox/index.js @@ -0,0 +1,118 @@ +export default { + root: { + class: [ + 'cursor-pointer inline-flex relative select-none align-bottom', + 'w-4 h-4' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-4', + 'h-4', + + // Shape + 'rounded', + 'border', + + // Colors + 'text-surface-600', + { + 'border-surface-300 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': + !context.active && !props.invalid, + 'border-primary-500 bg-primary-500 dark:border-primary-400 dark:bg-primary-400': + context.active + }, + + { + 'ring-2 ring-primary-500 dark:ring-primary-400': + !props.disabled && context.focused, + 'cursor-default opacity-60': props.disabled + }, + + // Invalid State + { 'ring-1 ring-red-500 dark:ring-red-400': props.invalid }, + + // States + { + 'peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': + !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'rounded', + 'border', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none' + ] + }, + checkicon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + }, + uncheckicon: { + class: [ + // Font + 'text-normal', + + // Size + 'w-3', + 'h-3', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..18993ad Binary files /dev/null and b/public/favicon.ico differ diff --git a/queries/index.ts b/queries/index.ts new file mode 100644 index 0000000..ae1ef17 --- /dev/null +++ b/queries/index.ts @@ -0,0 +1,219 @@ +// graphql query + +// 用户数量 +export const numberUsers = graphql(` + query NumberUsers { + numberUsers + } +`) + +// 获取登陆 token +export const token = graphql(` + query Token($username: String!, $password: String!) { + token(username: $username, password: $password) + } +`) + +// 获取用户信息 +export const user = graphql(` + query User { + user { + name + username + avatar + } + } +`) + +// 获取 JSON 对象存储 +export const jsonStorage = graphql(` + query JsonStorage($paths: [String!]) { + jsonStorage(paths: $paths) + } +`) + +// 获取常规信息 +export const general = graphql(` + query General($up: Boolean) { + general { + dae { + running + modified + version + } + + interfaces(up: $up) { + name + ifindex + ip + + flag { + default { + ipVersion + gateway + source + } + } + } + } + } +`) + +// 获取配置列表 +export const configs = graphql(` + query Configs { + configs { + id + name + selected + + global { + logLevel + tproxyPort + allowInsecure + checkInterval + checkTolerance + lanInterface + wanInterface + udpCheckDns + tcpCheckUrl + dialMode + tcpCheckHttpMethod + disableWaitingNetwork + autoConfigKernelParameter + sniffingTimeout + tlsImplementation + utlsImitate + tproxyPortProtect + } + } + } +`) + +// 获取群组列表 +export const groups = graphql(` + query Groups { + groups { + id + name + + nodes { + id + link + name + address + protocol + tag + subscriptionID + } + + subscriptions { + id + updatedAt + tag + link + status + info + + nodes { + edges { + id + link + name + address + protocol + tag + subscriptionID + } + } + } + + policy + + policyParams { + key + val + } + } + } +`) + +// 获取路由列表 +export const routings = graphql(` + query Routings { + routings { + id + name + selected + routing { + string + } + } + } +`) + +// 获取 DNS 列表 +export const dnss = graphql(` + query DNSs { + dnss { + id + name + selected + + dns { + string + + routing { + request { + string + } + + response { + string + } + } + } + } + } +`) + +// 获取节点列表 +export const nodes = graphql(` + query Nodes { + nodes { + edges { + id + name + link + address + protocol + tag + } + } + } +`) + +// 获取订阅列表 +export const subscriptions = graphql(` + query Subscriptions { + subscriptions { + id + tag + status + link + info + updatedAt + + nodes { + edges { + id + name + link + address + protocol + tag + } + } + } + } +`) diff --git a/schema.graphql b/schema.graphql new file mode 100644 index 0000000..446c993 --- /dev/null +++ b/schema.graphql @@ -0,0 +1,356 @@ +directive @hasRole(role: Role!) on FIELD_DEFINITION + +schema { + query: Query + mutation: Mutation +} +type Query { + healthCheck: Int! + token(username: String!, password: String!): String! + numberUsers: Int! + # jsonStorage get given paths from user related json storage. Empty paths is to get all. Refer to https://github.com/tidwall/gjson + jsonStorage(paths: [String!]): [String!]! @hasRole(role: ADMIN) + user: User! @hasRole(role: ADMIN) + configFlatDesc: [ConfigFlatDesc!]! @hasRole(role: ADMIN) + configs(id: ID, selected: Boolean): [Config!]! @hasRole(role: ADMIN) + dnss(id: ID, selected: Boolean): [Dns!]! @hasRole(role: ADMIN) + routings(id: ID, selected: Boolean): [Routing!]! @hasRole(role: ADMIN) + parsedRouting(raw: String!): DaeRouting! @hasRole(role: ADMIN) + parsedDns(raw: String!): DaeDns! @hasRole(role: ADMIN) + subscriptions(id: ID): [Subscription!]! @hasRole(role: ADMIN) + groups(id: ID): [Group!]! @hasRole(role: ADMIN) + group(name: String!): Group! @hasRole(role: ADMIN) + nodes(id: ID, subscriptionId: ID, first: Int, after: ID): NodesConnection! + @hasRole(role: ADMIN) + general: General! @hasRole(role: ADMIN) +} +type Mutation { + # createUser creates a user if there is no user. + createUser(username: String!, password: String!): String! + # createConfig creates a global config. Null arguments will be converted to default value. + createConfig(name: String, global: globalInput): Config! @hasRole(role: ADMIN) + # createConfig creates a dns config. Null arguments will be converted to default value. + createDns(name: String, dns: String): Dns! @hasRole(role: ADMIN) + # createConfig creates a routing config. Null arguments will be converted to default value. + createRouting(name: String, routing: String): Routing! @hasRole(role: ADMIN) + + # setJsonStorage set given paths to values in user related json storage. Refer to https://github.com/tidwall/sjson + setJsonStorage(paths: [String!]!, values: [String!]!): Int! + @hasRole(role: ADMIN) + # removeJsonStorage remove given paths from user related json storage. Empty paths is to clear json storage. Refer to https://github.com/tidwall/sjson + removeJsonStorage(paths: [String!]): Int! @hasRole(role: ADMIN) + # updateAvatar update avatar for current user. Remove avatar if avatar is null. Blob base64 encoded image is recommended. + updateAvatar(avatar: String): Int! @hasRole(role: ADMIN) + # updateName update name for current user. Remove name if name is null. + updateName(name: String): Int! @hasRole(role: ADMIN) + # updateUsername update username for current user. + updateUsername(username: String!): Int! @hasRole(role: ADMIN) + # updatePassword update password for current user. currentPassword is needed to authenticate. Return new token. + updatePassword(currentPassword: String!, newPassword: String!): String! + @hasRole(role: ADMIN) + + # updateConfig allows to partially update global config with given id. + updateConfig(id: ID!, global: globalInput!): Config! @hasRole(role: ADMIN) + # updateDns is to update dns config with given id. + updateDns(id: ID!, dns: String!): Dns! @hasRole(role: ADMIN) + # updateRouting is to update routing config with given id. + updateRouting(id: ID!, routing: String!): Routing! @hasRole(role: ADMIN) + + # renameConfig is to give the config a new name. + renameConfig(id: ID!, name: String!): Int! @hasRole(role: ADMIN) + # renameDns is to give the dns config a new name. + renameDns(id: ID!, name: String!): Int! @hasRole(role: ADMIN) + # renameRouting is to give the routing config a new name. + renameRouting(id: ID!, name: String!): Int! @hasRole(role: ADMIN) + + # removeConfig is to remove a config with given config ID. + removeConfig(id: ID!): Int! @hasRole(role: ADMIN) + # removeDns is to remove a dns config with given dns ID. + removeDns(id: ID!): Int! @hasRole(role: ADMIN) + # removeRouting is to remove a routing config with given routing ID. + removeRouting(id: ID!): Int! @hasRole(role: ADMIN) + + # selectConfig is to select a config as the current config. + selectConfig(id: ID!): Int! @hasRole(role: ADMIN) + # selectConfig is to select a dns config as the current dns. + selectDns(id: ID!): Int! @hasRole(role: ADMIN) + # selectConfig is to select a routing config as the current routing. + selectRouting(id: ID!): Int! @hasRole(role: ADMIN) + + # run proxy with selected config+dns+routing. Dry-run can be used to stop the proxy. + run(dry: Boolean!): Int! @hasRole(role: ADMIN) + + # importNodes is to import nodes with no subscription ID. rollbackError means abort the import on error. + importNodes( + rollbackError: Boolean! + args: [ImportArgument!]! + ): [NodeImportResult!]! @hasRole(role: ADMIN) + + # updateNode is to update a node with no subscription ID. + updateNode(id: ID!, newLink: String!): Node! @hasRole(role: ADMIN) + + # removeNodes is to remove nodes that have no subscription ID. + removeNodes(ids: [ID!]!): Int! @hasRole(role: ADMIN) + + # tagNode is to give the node a new tag. + tagNode(id: ID!, tag: String!): Int! @hasRole(role: ADMIN) + + # importSubscription is to fetch and resolve the subscription into nodes. + importSubscription( + rollbackError: Boolean! + arg: ImportArgument! + ): SubscriptionImportResult! @hasRole(role: ADMIN) + + # removeSubscriptions is to remove subscriptions with given ID list. + removeSubscriptions(ids: [ID!]!): Int! @hasRole(role: ADMIN) + + # tagSubscription is to give the subscription a new tag. + tagSubscription(id: ID!, tag: String!): Int! @hasRole(role: ADMIN) + + # updateSubscription is to re-fetch subscription and resolve subscription into nodes. Old nodes that independently belong to any groups will not be removed. + updateSubscription(id: ID!): Subscription! @hasRole(role: ADMIN) + + # createGroup is to create a group. + createGroup( + name: String! + policy: Policy! + policyParams: [PolicyParam!] + ): Group! @hasRole(role: ADMIN) + + # groupSetPolicy is to set the group a new policy. + groupSetPolicy(id: ID!, policy: Policy!, policyParams: [PolicyParam!]): Int! + @hasRole(role: ADMIN) + + # groupAddSubscriptions is to add subscriptions to the group. + groupAddSubscriptions(id: ID!, subscriptionIDs: [ID!]!): Int! + @hasRole(role: ADMIN) + + # groupDelSubscriptions is to remove subscriptions from the group. + groupDelSubscriptions(id: ID!, subscriptionIDs: [ID!]!): Int! + @hasRole(role: ADMIN) + + # groupAddNodes is to add nodes to the group. Nodes will not be removed from its subscription when subscription update. + groupAddNodes(id: ID!, nodeIDs: [ID!]!): Int! @hasRole(role: ADMIN) + + # groupDelNodes is to remove nodes from the group. + groupDelNodes(id: ID!, nodeIDs: [ID!]!): Int! @hasRole(role: ADMIN) + + # renameGroup is to rename a group. + renameGroup(id: ID!, name: String!): Int! @hasRole(role: ADMIN) + + # removeGroup is to remove a group. + removeGroup(id: ID!): Int! @hasRole(role: ADMIN) +} +enum Role { + admin +} +input ImportArgument { + link: String! + tag: String +} +type NodeImportResult { + link: String! + error: String + node: Node +} +type SubscriptionImportResult { + link: String! + nodeImportResult: [NodeImportResult!]! + sub: Subscription! +} +input PolicyParam { + key: String + val: String! +} +type ConfigFlatDesc { + name: String! + mapping: String! + isArray: Boolean! + defaultValue: String! + required: Boolean! + type: String! + desc: String! +} + +type General { + dae: Dae! + interfaces(up: Boolean): [Interface!]! + schema: String! +} +type Dae { + running: Boolean! + # modified indicates whether the running config has been modified. + modified: Boolean! + version: String! +} +type Interface { + name: String! + flag: InterfaceFlag! + ifindex: Int! + ip(onlyGlobalScope: Boolean): [String!]! +} +type InterfaceFlag { + up: Boolean! + default: [DefaultRoute!] +} +type DefaultRoute { + ipVersion: String! + gateway: String + source: String +} + +type Config { + id: ID! + name: String! + global: Global! + selected: Boolean! +} +type Global { + tproxyPort: Int! + tproxyPortProtect: Boolean! + soMarkFromDae: Int! + logLevel: String! + tcpCheckUrl: [String!]! + tcpCheckHttpMethod: String! + udpCheckDns: [String!]! + checkInterval: String! + checkTolerance: String! + lanInterface: [String!]! + wanInterface: [String!]! + allowInsecure: Boolean! + dialMode: String! + disableWaitingNetwork: Boolean! + autoConfigKernelParameter: Boolean! + autoConfigFirewallRule: Boolean! + sniffingTimeout: String! + tlsImplementation: String! + utlsImitate: String! +} + +input globalInput { + tproxyPort: Int + tproxyPortProtect: Boolean + soMarkFromDae: Int + logLevel: String + tcpCheckUrl: [String!] + tcpCheckHttpMethod: String + udpCheckDns: [String!] + checkInterval: String + checkTolerance: String + lanInterface: [String!] + wanInterface: [String!] + allowInsecure: Boolean + dialMode: String + disableWaitingNetwork: Boolean + autoConfigKernelParameter: Boolean + autoConfigFirewallRule: Boolean + sniffingTimeout: String + tlsImplementation: String + utlsImitate: String +} + +type Group { + id: ID! + name: String! + nodes: [Node!]! + subscriptions: [Subscription!]! + policy: Policy! + policyParams: [Param!]! +} +enum Policy { + random + fixed + min_avg10 + min_moving_avg + min +} + +type Routing { + id: ID! + name: String! + routing: DaeRouting! + selected: Boolean! + referenceGroups: [String!]! +} +type DaeRouting { + string: String! + rules: [RoutingRule!]! + fallback: FunctionOrPlaintext! +} +type RoutingRule { + conditions: AndFunctions! + outbound: Function! +} +type Function { + name: String! + not: Boolean! + params: [Param!]! +} +type Param { + key: String! + val: String! +} + +type AndFunctions { + and: [Function!]! +} + +type Plaintext { + val: String! +} + +union AndFunctionsOrPlaintext = AndFunctions | Plaintext +union FunctionOrPlaintext = Function | Plaintext + +type Dns { + id: ID! + name: String! + dns: DaeDns! + selected: Boolean! +} +type DaeDns { + string: String! + upstream: [Param!]! + routing: DnsRouting! +} +type DnsRouting { + request: DaeRouting! + response: DaeRouting! +} + +type PageInfo { + startCursor: ID + endCursor: ID + hasNextPage: Boolean! +} + +type Node { + id: ID! + link: String! + name: String! + address: String! + protocol: String! + tag: String + subscriptionID: ID +} +type NodesConnection { + totalCount: Int! + edges: [Node!]! + pageInfo: PageInfo! +} + +type Subscription { + id: ID! + updatedAt: String! + tag: String + link: String! + status: String! + info: String! + nodes(first: Int, after: ID): NodesConnection! +} + +type User { + username: String! + name: String + avatar: String +} diff --git a/server/api/avatar.post.ts b/server/api/avatar.post.ts new file mode 100644 index 0000000..29bb9a9 --- /dev/null +++ b/server/api/avatar.post.ts @@ -0,0 +1,14 @@ +import fsPromise from 'node:fs/promises' +import path from 'node:path' +import { resolveAvatarDataPath } from '~/utils/path.server' + +// 上传头像,返回头像相对路径地址 +export default defineEventHandler(async (event) => { + const body = await readFormData(event) + const avatar = body.get('avatar') as File + const avatarPath = path.join(resolveAvatarDataPath(), avatar.name) + + await fsPromise.writeFile(avatarPath, Buffer.from(await avatar.arrayBuffer())) + + return `/api/avatar/${avatar.name}` +}) diff --git a/server/api/avatar/[...avatar].get.ts b/server/api/avatar/[...avatar].get.ts new file mode 100644 index 0000000..9a4d267 --- /dev/null +++ b/server/api/avatar/[...avatar].get.ts @@ -0,0 +1,14 @@ +import fs from 'node:fs' +import path from 'node:path' +import { resolveAvatarDataPath } from '~/utils/path.server' + +// 获取头像文件流 +export default defineEventHandler((event) => { + const avatar = event.context.params?.avatar + if (!avatar) return + + return sendStream( + event, + fs.createReadStream(path.join(resolveAvatarDataPath(), avatar)) + ) +}) diff --git a/server/api/connect.ts b/server/api/connect.ts new file mode 100644 index 0000000..fea2bca --- /dev/null +++ b/server/api/connect.ts @@ -0,0 +1,5 @@ +export default defineWebSocketHandler({ + message(_, message) { + console.log(message) + } +}) diff --git a/server/tsconfig.json b/server/tsconfig.json new file mode 100644 index 0000000..b9ed69c --- /dev/null +++ b/server/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../.nuxt/tsconfig.server.json" +} diff --git a/stores/api.ts b/stores/api.ts new file mode 100644 index 0000000..09c7d14 --- /dev/null +++ b/stores/api.ts @@ -0,0 +1,205 @@ +// 全局 API Store +import { Client, errorExchange, fetchExchange } from '@urql/core' +import * as mutations from '~/mutations' +import * as queries from '~/queries' + +export const useAPIStore = defineStore('api', () => { + const toast = useToast() + const endpointURL = useCookie('endpointURL', { sameSite: true }) + const token = useCookie('token', { sameSite: true }) + + const apiClient = computed(() => { + if (!endpointURL.value) return null + + return new Client({ + url: endpointURL.value, + exchanges: [ + errorExchange({ + onError(error) { + toast.add({ + severity: 'error', + summary: 'Something went wrong', + detail: error.message + }) + + throw error + } + }), + fetchExchange + ], + fetchOptions: () => ({ + headers: { + Authorization: token.value ? `Bearer ${token.value}` : '' + } + }) + }) + }) + + const login = async (username: string, password: string) => { + const client = apiClient.value + + if (!client) return + + const { data: numberUsers } = await client.query(queries.numberUsers, {}) + + if (!numberUsers?.numberUsers || numberUsers.numberUsers === 0) { + await client.mutation(mutations.createUser, { + username, + password + }) + } + + const { data: token } = await client.query(queries.token, { + username, + password + }) + + return token?.token + } + + const getDefaults = async () => { + const client = apiClient.value + + if (!client) return + + const data = await client.query(queries.jsonStorage, { + paths: [ + 'defaultConfigID', + 'defaultRoutingID', + 'defaultDNSID', + 'defaultGroupID' + ] + }) + + if (!data.data) return + + const [defaultConfigID, defaultRoutingID, defaultDNSID, defaultGroupID] = + data.data.jsonStorage + + return { + defaultConfigID, + defaultRoutingID, + defaultDNSID, + defaultGroupID + } + } + + const initialize = async () => { + const client = apiClient.value + + if (!client) return + + const { defaultConfigID, defaultRoutingID, defaultDNSID, defaultGroupID } = + (await getDefaults()) || {} + + if (!defaultConfigID) { + const { data } = await client.mutation(mutations.createConfig, { + name: 'global', + global: { + logLevel: 'info', + tproxyPort: 12345, + tproxyPortProtect: true, + allowInsecure: false, + checkInterval: '30s', + checkTolerance: '0ms', + sniffingTimeout: '0ms', + lanInterface: [], + wanInterface: ['auto'], + udpCheckDns: ['dns.google.com:53', '8.8.8.8', '2001:4860:4860::8888'], + tcpCheckUrl: [ + 'http://cp.cloudflare.com', + '1.1.1.1', + '2606:4700:4700::1111' + ], + dialMode: 'domain', + tcpCheckHttpMethod: 'HEAD', + disableWaitingNetwork: false, + autoConfigKernelParameter: false, + tlsImplementation: 'tls', + utlsImitate: 'randomized' + } + }) + + if (data?.createConfig.id) { + await client.mutation(mutations.selectConfig, { + id: data.createConfig.id + }) + + await client.mutation(mutations.setJsonStorage, { + paths: ['defaultConfigID'], + values: [String(data.createConfig.id)] + }) + } + } + + if (!defaultRoutingID) { + const { data } = await client.mutation(mutations.createRouting, { + name: 'default', + routing: ` +pname(NetworkManager, systemd-resolved) -> direct +dip(geoip:private) -> direct +dip(geoip:cn) -> direct +domain(geosite:cn) -> direct +fallback: proxy +`.trim() + }) + + if (data?.createRouting.id) { + await client.mutation(mutations.selectRouting, { + id: data.createRouting.id + }) + + await client.mutation(mutations.setJsonStorage, { + paths: ['defaultRoutingID'], + values: [String(data.createRouting.id)] + }) + } + } + + if (!defaultDNSID) { + const { data } = await client.mutation(mutations.createDNS, { + name: 'default', + dns: ` +upstream { + alidns: 'udp://223.5.5.5:53' + googledns: 'tcp+udp://8.8.8.8:53' +} +routing { + request { + qname(geosite:cn) -> alidns + fallback: googledns + } +} +`.trim() + }) + + if (data?.createDns.id) { + await client.mutation(mutations.selectDNS, { + id: data.createDns.id + }) + + await client.mutation(mutations.setJsonStorage, { + paths: ['defaultDNSID'], + values: [String(data.createDns.id)] + }) + } + } + + if (!defaultGroupID) { + const { data } = await client.mutation(mutations.createGroup, { + name: 'proxy', + policy: 'min_moving_avg', + policyParams: [] + }) + + if (data?.createGroup.id) { + await client.mutation(mutations.setJsonStorage, { + paths: ['defaultGroupID'], + values: [String(data.createGroup.id)] + }) + } + } + } + + return { endpointURL, token, apiClient, login, getDefaults, initialize } +}) diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..d1f6966 --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,35 @@ +import type { Config } from 'tailwindcss' + +export default >{ + darkMode: 'selector', + content: ['presets/**/*.{js,ts,vue}'], + theme: { + extend: { + colors: { + 'primary-50': 'rgb(var(--primary-50))', + 'primary-100': 'rgb(var(--primary-100))', + 'primary-200': 'rgb(var(--primary-200))', + 'primary-300': 'rgb(var(--primary-300))', + 'primary-400': 'rgb(var(--primary-400))', + 'primary-500': 'rgb(var(--primary-500))', + 'primary-600': 'rgb(var(--primary-600))', + 'primary-700': 'rgb(var(--primary-700))', + 'primary-800': 'rgb(var(--primary-800))', + 'primary-900': 'rgb(var(--primary-900))', + 'primary-950': 'rgb(var(--primary-950))', + 'surface-0': 'rgb(var(--surface-0))', + 'surface-50': 'rgb(var(--surface-50))', + 'surface-100': 'rgb(var(--surface-100))', + 'surface-200': 'rgb(var(--surface-200))', + 'surface-300': 'rgb(var(--surface-300))', + 'surface-400': 'rgb(var(--surface-400))', + 'surface-500': 'rgb(var(--surface-500))', + 'surface-600': 'rgb(var(--surface-600))', + 'surface-700': 'rgb(var(--surface-700))', + 'surface-800': 'rgb(var(--surface-800))', + 'surface-900': 'rgb(var(--surface-900))', + 'surface-950': 'rgb(var(--surface-950))' + } + } + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..f771810 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "./.nuxt/tsconfig.json", + "compilerOptions": { + "plugins": [ + { + "name": "@0no-co/graphqlsp", + "schema": "./schema.graphql", + "tadaOutputLocation": "./graphql-env.d.ts", + "trackFieldUsage": false + } + ] + } +} diff --git a/typings/splitpanes.d.ts b/typings/splitpanes.d.ts new file mode 100644 index 0000000..882e422 --- /dev/null +++ b/typings/splitpanes.d.ts @@ -0,0 +1,3 @@ +declare module 'splitpanes' { + export default { Splitpanes, Pane } +} diff --git a/utils/index.ts b/utils/index.ts new file mode 100644 index 0000000..ae23d6a --- /dev/null +++ b/utils/index.ts @@ -0,0 +1,66 @@ +import clsx, { type ClassValue } from 'clsx' +import dayjs from 'dayjs' +import duration from 'dayjs/plugin/duration' +import { twMerge } from 'tailwind-merge' + +dayjs.extend(duration) + +export class Defer { + promise: Promise + resolve?: (value: T | PromiseLike) => void + reject?: (reason?: unknown) => void + + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = resolve + this.reject = reject + }) + } +} + +const r = /([0-9]+)([a-z]+)/ + +type Time = { + hours: number + minutes: number + seconds: number + milliseconds: number +} + +export const parseDigitAndUnit = ( + timeStr: string, + output: Time = { hours: 0, milliseconds: 0, minutes: 0, seconds: 0 } +): Time => { + const matchRes = timeStr.match(r) + + if (!matchRes) { + return output + } + + const digit = Number.parseInt(matchRes[1]) + const unit = matchRes[2] + + switch (unit) { + case 'h': + output.hours = digit + break + case 'm': + output.minutes = digit + break + case 's': + output.seconds = digit + break + case 'ms': + output.milliseconds = digit + break + } + + return parseDigitAndUnit(timeStr.replace(r, ''), output) +} + +export const deriveTime = (timeStr: string, outputUnit: 'ms' | 's') => + dayjs + .duration(parseDigitAndUnit(timeStr)) + .as(outputUnit === 'ms' ? 'milliseconds' : 'seconds') + +export const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs)) diff --git a/utils/path.server.ts b/utils/path.server.ts new file mode 100644 index 0000000..b4f7871 --- /dev/null +++ b/utils/path.server.ts @@ -0,0 +1,8 @@ +import envPaths from 'env-paths' +import path from 'node:path' + +export const resolveAvatarDataPath = () => + path.join(envPaths('daed').data, 'avatars') + +export const resolveAvatarPath = (avatarName: string) => + path.join(resolveAvatarDataPath(), avatarName)