Compare commits

...

14 Commits

Author SHA1 Message Date
Benjamin Canac
d6658209b6 chore(release): v2.18.4 2024-08-05 14:35:54 +02:00
Hash Brown
9c04969022 fix(Tabs): use nextTick before marker calc (#2020) 2024-08-05 11:09:27 +02:00
Benjamin Canac
606c7b6567 docs: import $ui from useNuxtApp 2024-08-04 21:50:38 +02:00
Benjamin Canac
7e37668940 fix(module): suffix types imports with /index
Resolves #2018
2024-08-04 21:41:55 +02:00
Romain Hamel
4d61936e7e fix(Form): submit event data (#2012) 2024-08-04 09:49:56 +02:00
Yu Zhuohao
8ac9ca4978 fix(module): reduce css bundle size by fixing safelist regex (#2005)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-08-02 19:02:39 +02:00
Romain Hamel
3485092edb fix(useFormGroup): app config default input size (#2011) 2024-08-02 18:03:11 +02:00
Dave Stewart
1cc7e2a306 fix(module): handle nested colors from ui config (#2008) 2024-08-02 14:22:22 +02:00
Benjamin Canac
3411b89191 chore(renovate): remove @nuxt/module-builder and vue-tsc from ignore 2024-07-30 12:51:31 +02:00
Benjamin Canac
1b869dc1fb chore(release): v2.18.3 2024-07-30 12:36:44 +02:00
renovate[bot]
4ae6e31bd9 chore(deps): update devdependency @nuxt/test-utils to ^3.14.0 (#1989)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-30 12:27:13 +02:00
Benjamin Canac
69f605fa72 fix(Link): define rel as any 2024-07-30 12:26:39 +02:00
Benjamin Canac
93ddf1d60b fix(types): only use .ts for index 2024-07-30 11:14:43 +02:00
renovate[bot]
03c5820f5d chore(deps): update all non-major dependencies (#1975)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-30 11:03:34 +02:00
94 changed files with 274 additions and 275 deletions

View File

@@ -1,5 +1,25 @@
# Changelog
## [2.18.4](https://github.com/nuxt/ui/compare/v2.18.3...v2.18.4) (2024-08-05)
### Bug Fixes
* **Form:** submit event data ([#2012](https://github.com/nuxt/ui/issues/2012)) ([4d61936](https://github.com/nuxt/ui/commit/4d61936e7e90b664846a8f265825612c509511d7))
* **module:** handle nested colors from ui config ([#2008](https://github.com/nuxt/ui/issues/2008)) ([1cc7e2a](https://github.com/nuxt/ui/commit/1cc7e2a306e0f3f666b9a588f6ed02e7eabc0272))
* **module:** reduce css bundle size by fixing safelist regex ([#2005](https://github.com/nuxt/ui/issues/2005)) ([8ac9ca4](https://github.com/nuxt/ui/commit/8ac9ca49789a9a7281f7a40926e7e9a8068cc395))
* **module:** suffix types imports with `/index` ([7e37668](https://github.com/nuxt/ui/commit/7e37668940d06c5aa20b60d9bfd600d50a171014)), closes [#2018](https://github.com/nuxt/ui/issues/2018)
* **Tabs:** use `nextTick` before marker calc ([#2020](https://github.com/nuxt/ui/issues/2020)) ([9c04969](https://github.com/nuxt/ui/commit/9c049690227af8aba61a1f7c002b00c5dfeb63ff))
* **useFormGroup:** app config default input size ([#2011](https://github.com/nuxt/ui/issues/2011)) ([3485092](https://github.com/nuxt/ui/commit/3485092edb55f9ef2ca038a8c137431866d6c28a))
## [2.18.3](https://github.com/nuxt/ui/compare/v2.18.2...v2.18.3) (2024-07-30)
### Bug Fixes
* **Link:** define `rel` as any ([69f605f](https://github.com/nuxt/ui/commit/69f605fa724454e4be9e4cee9666a5d57f43a129))
* **types:** only use `.ts` for index ([93ddf1d](https://github.com/nuxt/ui/commit/93ddf1d60b0ea5f99f564f3d3969c397ad91cc72))
## [2.18.2](https://github.com/nuxt/ui/compare/v2.18.1...v2.18.2) (2024-07-25)

View File

@@ -25,6 +25,8 @@
</template>
<script setup lang="ts">
const { $ui } = useNuxtApp()
const links = [{
icon: 'i-simple-icons-figma',
label: 'Figma Kit',

View File

@@ -54,6 +54,7 @@ defineProps<{
}>()
const route = useRoute()
const { $ui } = useNuxtApp()
const { metaSymbol } = useShortcuts()
const nav = inject<Ref<NavItem[]>>('navigation')

View File

@@ -23,7 +23,7 @@ export default defineAppConfig({
Try to change the `primary` and `gray` colors by clicking on the :u-icon{name="i-heroicons-swatch-20-solid" class="w-4 h-4 align-middle text-primary-500 dark:text-primary-400"} button in the header.
::
As this module uses Tailwind CSS under the hood, you can use any of the [Tailwind CSS colors](https://tailwindcss.com/docs/customizing-colors#color-palette-reference) or your own custom colors. By default, the `primary` color is `green` and the `gray` color is `cool`.
As this module uses Tailwind CSS under the hood, you can use any of the [Tailwind CSS colors](https://tailwindcss.com/docs/customizing-colors#color-palette-reference) or your own custom colors or groups, such as `brand.primary`. By default, the `primary` color is `green` and the `gray` color is `cool`.
When [using custom colors](https://tailwindcss.com/docs/customizing-colors#using-custom-colors) or [adding additional colors](https://tailwindcss.com/docs/customizing-colors#adding-additional-colors) through the `extend` key in your `tailwind.config.ts`, you'll need to make sure to define all the shades from `50` to `950` as most of them are used in the components config defined in [`ui.config/`](https://github.com/nuxt/ui/tree/dev/src/runtime/ui.config) directory. You can [generate your colors](https://tailwindcss.com/docs/customizing-colors#generating-colors) using tools such as https://uicolors.app/ for example.

View File

@@ -3,11 +3,11 @@
"private": true,
"type": "module",
"dependencies": {
"@iconify-json/heroicons": "^1.1.22",
"@iconify-json/simple-icons": "^1.1.109",
"@iconify-json/heroicons": "^1.1.23",
"@iconify-json/simple-icons": "^1.1.111",
"@iconify-json/vscode-icons": "^1.1.36",
"@nuxt/content": "^2.13.2",
"@nuxt/eslint-config": "^0.3.13",
"@nuxt/eslint-config": "^0.4.0",
"@nuxt/fonts": "^0.7.1",
"@nuxt/image": "^1.7.0",
"@nuxt/ui": "latest",

View File

@@ -443,6 +443,7 @@ const sectionRef = ref()
const demoRef = ref(null)
const start = ref(0)
const { $ui } = useNuxtApp()
const { height } = useElementSize(demoRef)
const { top } = useElementBounding(sectionRef)
const { y } = useWindowScroll()

View File

@@ -1,7 +1,7 @@
{
"name": "@nuxt/ui",
"version": "2.18.2",
"packageManager": "pnpm@9.5.0",
"version": "2.18.4",
"packageManager": "pnpm@9.6.0",
"repository": "nuxt/ui",
"homepage": "https://ui.nuxt.com",
"type": "module",
@@ -36,8 +36,8 @@
"dependencies": {
"@headlessui/tailwindcss": "^0.2.1",
"@headlessui/vue": "^1.7.22",
"@iconify-json/heroicons": "^1.1.22",
"@nuxt/icon": "^1.3.1",
"@iconify-json/heroicons": "^1.1.23",
"@nuxt/icon": "^1.4.0",
"@nuxt/kit": "^3.12.4",
"@nuxtjs/color-mode": "^3.4.2",
"@nuxtjs/tailwindcss": "^6.12.1",
@@ -58,9 +58,9 @@
"tailwindcss": "^3.4.7"
},
"devDependencies": {
"@nuxt/eslint-config": "^0.3.13",
"@nuxt/eslint-config": "^0.4.0",
"@nuxt/module-builder": "^0.8.1",
"@nuxt/test-utils": "^3.13.1",
"@nuxt/test-utils": "^3.14.0",
"@release-it/conventional-changelog": "^8.0.1",
"@vue/test-utils": "^2.4.6",
"eslint": "^8.57.0",

223
pnpm-lock.yaml generated
View File

@@ -19,11 +19,11 @@ importers:
specifier: ^1.7.22
version: 1.7.22(vue@3.4.34(typescript@5.5.4))
'@iconify-json/heroicons':
specifier: ^1.1.22
version: 1.1.22
specifier: ^1.1.23
version: 1.1.23
'@nuxt/icon':
specifier: ^1.3.1
version: 1.3.1(magicast@0.3.4)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
specifier: ^1.4.0
version: 1.4.0(magicast@0.3.4)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
'@nuxt/kit':
specifier: ^3.12.4
version: 3.12.4(magicast@0.3.4)(rollup@3.29.4)
@@ -80,14 +80,14 @@ importers:
version: 3.4.7
devDependencies:
'@nuxt/eslint-config':
specifier: ^0.3.13
version: 0.3.13(eslint@8.57.0)(typescript@5.5.4)
specifier: ^0.4.0
version: 0.4.0(eslint@8.57.0)(typescript@5.5.4)
'@nuxt/module-builder':
specifier: ^0.8.1
version: 0.8.1(@nuxt/kit@3.12.4(magicast@0.3.4)(rollup@3.29.4))(nuxi@3.12.0)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4))
'@nuxt/test-utils':
specifier: ^3.13.1
version: 3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(playwright-core@1.45.3)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vitest@2.0.4(@types/node@20.14.12)(happy-dom@14.12.3)(terser@5.31.3))(vue-router@4.4.0(vue@3.4.34(typescript@5.5.4)))(vue@3.4.34(typescript@5.5.4))
specifier: ^3.14.0
version: 3.14.0(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(playwright-core@1.45.3)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vitest@2.0.4(@types/node@20.14.12)(happy-dom@14.12.3)(terser@5.31.3))(vue-router@4.4.0(vue@3.4.34(typescript@5.5.4)))(vue@3.4.34(typescript@5.5.4))
'@release-it/conventional-changelog':
specifier: ^8.0.1
version: 8.0.1(release-it@17.6.0(typescript@5.5.4))
@@ -140,11 +140,11 @@ importers:
docs:
dependencies:
'@iconify-json/heroicons':
specifier: ^1.1.22
version: 1.1.22
specifier: ^1.1.23
version: 1.1.23
'@iconify-json/simple-icons':
specifier: ^1.1.109
version: 1.1.109
specifier: ^1.1.111
version: 1.1.111
'@iconify-json/vscode-icons':
specifier: ^1.1.36
version: 1.1.36
@@ -152,8 +152,8 @@ importers:
specifier: ^2.13.2
version: 2.13.2(ioredis@5.4.1)(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@20.14.12)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.19.0)(terser@5.31.3)(typescript@5.5.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vue-tsc@2.0.29(typescript@5.5.4)))(rollup@4.19.0)(vue@3.4.34(typescript@5.5.4))
'@nuxt/eslint-config':
specifier: ^0.3.13
version: 0.3.13(eslint@8.57.0)(typescript@5.5.4)
specifier: ^0.4.0
version: 0.4.0(eslint@8.57.0)(typescript@5.5.4)
'@nuxt/fonts':
specifier: ^0.7.1
version: 0.7.1(ioredis@5.4.1)(magicast@0.3.4)(rollup@4.19.0)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))
@@ -1013,16 +1013,12 @@ packages:
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@eslint/eslintrc@3.1.0':
resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@8.57.0':
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@eslint/js@9.7.0':
resolution: {integrity: sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==}
'@eslint/js@9.8.0':
resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@fastify/accept-negotiator@1.1.0':
@@ -1071,17 +1067,17 @@ packages:
'@iarna/toml@2.2.5':
resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
'@iconify-json/heroicons@1.1.22':
resolution: {integrity: sha512-UNfSBdD/JBYBvFFhce6e3FsmeqshGz8u964R36npJvIzuORhIHUXrFerulBWFmbG0V1xvMqLZVZc4bPyjP5p7A==}
'@iconify-json/heroicons@1.1.23':
resolution: {integrity: sha512-LLev2ZBBDJKMzjnQgZRhEj0Nkz5m9O4UtQVH2TpPchdXSkxQUUOlPpsM4MVQCs49a2MaJfKiay+48WaZli5cNQ==}
'@iconify-json/simple-icons@1.1.109':
resolution: {integrity: sha512-vIhIJQDdbS5R6kSyIHVBRCaR2jiFjVlbVtB4PAoLjQL45vJRHMTwkrFa536XcX7yW69HbQkoanydcyDjknI6pw==}
'@iconify-json/simple-icons@1.1.111':
resolution: {integrity: sha512-9+d69tCopShQB4a/mlQjP6uqkzJnDfeLNVwly11QMvucLIFfCG08xBXcWSyPCnfsR2bX/G50e43LaUXubNyYuw==}
'@iconify-json/vscode-icons@1.1.36':
resolution: {integrity: sha512-gObMrGZJhxeqhmjoW8rJ85HDUnssl2GwEPVd+9+Zk+/USagyKz75MgMGGomsho+XhYWlrA1IRgs2OyrFGELuUA==}
'@iconify/collections@1.0.442':
resolution: {integrity: sha512-qcTbHRRcVCYgb3OY/K9ZsGR279MAHdpV6IMQp0QllRp+NYOG1PoGTt5ym/dwNaSTgKv0pZ6/cNloucbAOYI25A==}
'@iconify/collections@1.0.444':
resolution: {integrity: sha512-3+dA5B8vs+qew23dwBAqv6M4LqtOHlYQiKCproN5o3lLelnA1fnWJMfv5f2RyPecaS9rZEGi1+eg8AFKF2sk1A==}
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
@@ -1185,21 +1181,21 @@ packages:
peerDependencies:
vite: '*'
'@nuxt/eslint-config@0.3.13':
resolution: {integrity: sha512-xnMkcrz9vFjtIuKsfOPhNOKFVD51JZClj/16raciHVOK9eiqZuQjbxaf60b7ffk7cmD1EDhlQhbSxaLAJm/QYg==}
'@nuxt/eslint-config@0.4.0':
resolution: {integrity: sha512-1zipkTCSmr4dUHvhgygKVRmgOh73wwBkeZQgJXxB3N7r3FTJOulYfAp30nPLW0NYstyx3cthIJ0kX0KPnbxNVA==}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
'@nuxt/eslint-plugin@0.3.13':
resolution: {integrity: sha512-8LW9QJgVSARgO7QZmRy6vmWjDdHiAy/GNN3zKFPBetQxj5ECXsK0Ggfn8RiSi9rgqJSQjXDvMMHFpHiDETXgSQ==}
'@nuxt/eslint-plugin@0.4.0':
resolution: {integrity: sha512-PjNlf99AaSmIu/qwyXTwkEX+xl+RvvfRBvbU/FVDKxwVHH+lNmNM5qlRFf/5PUPAfaEEYUhXqkd/l1DI8hu4Ww==}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
'@nuxt/fonts@0.7.1':
resolution: {integrity: sha512-uB1vHiWhm96VI0+6QsmWzEDbZlhWGkaUqydZph5huRTW3Y7I9+VIPvsLa9PS0bgbK2hmADrvrMEK9b2zUUIGvQ==}
'@nuxt/icon@1.3.1':
resolution: {integrity: sha512-bpue1uzVTx3Fiwb0625ShaY5SFio8vcZ3L4kIb2tBc/BbENASQcCa27uk87zuWFJdnRWQbNpn/L4wc+wKZ0Wbw==}
'@nuxt/icon@1.4.0':
resolution: {integrity: sha512-epTJGQTOk8ScE7iN2G1laemDZrpd48l07bCFIYDCg+rgO5IJGvgbVqCIdxbvAMfZJMoH9y/q540hDRQR0ju1eA==}
'@nuxt/image@1.7.0':
resolution: {integrity: sha512-zSj32bLgbV9AvLkLX0pF52J5KBfSyj0eSIdpXCtTJATSZlqgcJigoCvmabC1nbcMIp0SZ29Bu9+acQpGTQKz+g==}
@@ -1224,15 +1220,15 @@ packages:
resolution: {integrity: sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==}
hasBin: true
'@nuxt/test-utils@3.13.1':
resolution: {integrity: sha512-rqNnjArhFUU8qMHtpEZzjfF6fGTzeXxZsreNLUy9X5AoUuS37HgnobNJIirTrA0xzlzitKVm/mB9r4gXZGzWdQ==}
engines: {node: '>=18.20.2'}
'@nuxt/test-utils@3.14.0':
resolution: {integrity: sha512-8HJOvGChQ70s6RKduKlrNABJXizNCLodBRbgepa4RYA3QFv2KrTxLvlHlhEUwd9r2E55LcQacv9P7Er47Z2GaA==}
engines: {node: '>=18.20.4'}
peerDependencies:
'@cucumber/cucumber': ^10.3.1
'@jest/globals': ^29.5.0
'@playwright/test': ^1.43.1
'@testing-library/vue': ^7.0.0 || ^8.0.1
'@vitest/ui': ^0.34.6 || ^1.0.0
'@vitest/ui': ^0.34.6 || ^1.0.0 || ^2.0.0
'@vue/test-utils': ^2.4.2
h3: '*'
happy-dom: ^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0
@@ -1240,7 +1236,7 @@ packages:
nitropack: '*'
playwright-core: ^1.43.1
vite: '*'
vitest: ^0.34.6 || ^1.0.0
vitest: ^0.34.6 || ^1.0.0 || ^2.0.0
vue: ^3.3.4
vue-router: ^4.0.0
peerDependenciesMeta:
@@ -1737,8 +1733,8 @@ packages:
cpu: [x64]
os: [win32]
'@rushstack/eslint-patch@1.10.3':
resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==}
'@rushstack/eslint-patch@1.10.4':
resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==}
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
@@ -1782,31 +1778,31 @@ packages:
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
'@stylistic/eslint-plugin-js@2.3.0':
resolution: {integrity: sha512-lQwoiYb0Fs6Yc5QS3uT8+T9CPKK2Eoxc3H8EnYJgM26v/DgtW+1lvy2WNgyBflU+ThShZaHm3a6CdD9QeKx23w==}
'@stylistic/eslint-plugin-js@2.4.0':
resolution: {integrity: sha512-ScIYDFAwNz+ELr3KfAZMuYMCUq7Q6TdEEIq4RBRR77EHucpDrwi5Kx2d0VdYxb4s4o6nOtSkJmY9MCZupDYJow==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=8.40.0'
'@stylistic/eslint-plugin-jsx@2.3.0':
resolution: {integrity: sha512-tsQ0IEKB195H6X9A4iUSgLLLKBc8gUBWkBIU8tp1/3g2l8stu+PtMQVV/VmK1+3bem5FJCyvfcZIQ/WF1fsizA==}
'@stylistic/eslint-plugin-jsx@2.4.0':
resolution: {integrity: sha512-yaZXaRj9lOwrQd1YA1d1Ssz58IrDKDYTvLzlKcKED4NlpjDdMbj//Y4DlNhlW9M9v0ZsRsmKNQl2p5OWFfmdEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=8.40.0'
'@stylistic/eslint-plugin-plus@2.3.0':
resolution: {integrity: sha512-xboPWGUU5yaPlR+WR57GwXEuY4PSlPqA0C3IdNA/+1o2MuBi95XgDJcZiJ9N+aXsqBXAPIpFFb+WQ7QEHo4f7g==}
'@stylistic/eslint-plugin-plus@2.4.0':
resolution: {integrity: sha512-yqVZ2ps3lSzT3Atcx/jSbzTaRJfxtWeuPk1WvINUod1fRVxNlgKLDwiM+63Hq3Q7H4aM0lS5ccAbFlEGINNg0Q==}
peerDependencies:
eslint: '*'
'@stylistic/eslint-plugin-ts@2.3.0':
resolution: {integrity: sha512-wqOR38/uz/0XPnHX68ftp8sNMSAqnYGjovOTN7w00xnjS6Lxr3Sk7q6AaxWWqbMvOj7V2fQiMC5HWAbTruJsCg==}
'@stylistic/eslint-plugin-ts@2.4.0':
resolution: {integrity: sha512-0zi3hHrrqaXPGZESTfPNUm4YMvxq+aqPGCUiZfEnn7l5VNC19oKaPonZ6LmKzoksebzpJ7w6nieZLVeQm4o7tg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=8.40.0'
'@stylistic/eslint-plugin@2.3.0':
resolution: {integrity: sha512-rtiz6u5gRyyEZp36FcF1/gHJbsbT3qAgXZ1qkad6Nr/xJ9wrSJkiSFFQhpYVTIZ7FJNRJurEcumZDCwN9dEI4g==}
'@stylistic/eslint-plugin@2.4.0':
resolution: {integrity: sha512-GJ86m60wpKPm0m8sSuApOITjCvKUbyzhVO/BTQb7BNYXVUJMS3ql+uAro0V+4yoHwyBVXTB4EDy3UGkOqtEyyw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=8.40.0'
@@ -1859,8 +1855,8 @@ packages:
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
'@types/eslint@8.56.11':
resolution: {integrity: sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==}
'@types/eslint@9.6.0':
resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==}
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
@@ -3287,14 +3283,14 @@ packages:
eslint-config-flat-gitignore@0.1.8:
resolution: {integrity: sha512-OEUbS2wzzYtUfshjOqzFo4Bl4lHykXUdM08TCnYNl7ki+niW4Q1R0j0FDFDr0vjVsI5ZFOz5LvluxOP+Ew+dYw==}
eslint-flat-config-utils@0.2.5:
resolution: {integrity: sha512-iO+yLZtC/LKgACerkpvsZ6NoRVB2sxT04mOpnNcEM1aTwKy+6TsT46PUvrML4y2uVBS6I67hRCd2JiKAPaL/Uw==}
eslint-flat-config-utils@0.3.0:
resolution: {integrity: sha512-FaFQLUunAl6YK7aU/pT23DXYVWg/cEHbSfxwAxpCGT6Su8H9RfkmzKLh1G2bba46p6dTlQeA4VTiV5//0SeToQ==}
eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
eslint-plugin-import-x@0.5.3:
resolution: {integrity: sha512-hJ/wkMcsLQXAZL3+txXIDpbW5cqwdm1rLTqV4VRY03aIbzE3zWE7rPZKW6Gzf7xyl1u3V1iYC6tOG77d9NF4GQ==}
eslint-plugin-import-x@3.1.0:
resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==}
engines: {node: '>=16'}
peerDependencies:
eslint: ^8.56.0 || ^9.0.0-0
@@ -3311,8 +3307,8 @@ packages:
peerDependencies:
eslint: '>=8.44.0'
eslint-plugin-unicorn@53.0.0:
resolution: {integrity: sha512-kuTcNo9IwwUCfyHGwQFOK/HjJAYzbODHN3wP0PgqbW+jbXqpNWxNVpVhj2tO9SixBwuAdmal8rVcWKBxwFnGuw==}
eslint-plugin-unicorn@55.0.0:
resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==}
engines: {node: '>=18.18'}
peerDependencies:
eslint: '>=8.56.0'
@@ -3417,8 +3413,8 @@ packages:
externality@1.0.2:
resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==}
fake-indexeddb@5.0.2:
resolution: {integrity: sha512-cB507r5T3D55DfclY01GLkninZLfU7HXV/mhVRTnTRm5k2u+fY7Fof2dBkr80p5t7G7dlA/G5dI87QiMdPpMCQ==}
fake-indexeddb@6.0.0:
resolution: {integrity: sha512-YEboHE5VfopUclOck7LncgIqskAqnv4q0EWbYCaxKKjAvO93c+TJIaBuGy8CBFdbg9nKdpN3AuPRwVBJ4k7NrQ==}
engines: {node: '>=18'}
fast-deep-equal@3.1.3:
@@ -3656,10 +3652,6 @@ packages:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
globals@15.8.0:
resolution: {integrity: sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==}
engines: {node: '>=18'}
@@ -7349,23 +7341,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
debug: 4.3.5
espree: 10.1.0
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@8.57.0': {}
'@eslint/js@9.7.0': {}
'@eslint/js@9.8.0': {}
'@fastify/accept-negotiator@1.1.0':
optional: true
@@ -7403,11 +7381,11 @@ snapshots:
'@iarna/toml@2.2.5': {}
'@iconify-json/heroicons@1.1.22':
'@iconify-json/heroicons@1.1.23':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/simple-icons@1.1.109':
'@iconify-json/simple-icons@1.1.111':
dependencies:
'@iconify/types': 2.0.0
@@ -7415,7 +7393,7 @@ snapshots:
dependencies:
'@iconify/types': 2.0.0
'@iconify/collections@1.0.442':
'@iconify/collections@1.0.444':
dependencies:
'@iconify/types': 2.0.0
@@ -7711,23 +7689,24 @@ snapshots:
- supports-color
- utf-8-validate
'@nuxt/eslint-config@0.3.13(eslint@8.57.0)(typescript@5.5.4)':
'@nuxt/eslint-config@0.4.0(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
'@eslint/js': 9.7.0
'@nuxt/eslint-plugin': 0.3.13(eslint@8.57.0)(typescript@5.5.4)
'@rushstack/eslint-patch': 1.10.3
'@stylistic/eslint-plugin': 2.3.0(eslint@8.57.0)(typescript@5.5.4)
'@eslint/js': 9.8.0
'@nuxt/eslint-plugin': 0.4.0(eslint@8.57.0)(typescript@5.5.4)
'@rushstack/eslint-patch': 1.10.4
'@stylistic/eslint-plugin': 2.4.0(eslint@8.57.0)(typescript@5.5.4)
'@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
'@typescript-eslint/parser': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
eslint: 8.57.0
eslint-config-flat-gitignore: 0.1.8
eslint-flat-config-utils: 0.2.5
eslint-plugin-import-x: 0.5.3(eslint@8.57.0)(typescript@5.5.4)
eslint-flat-config-utils: 0.3.0
eslint-plugin-import-x: 3.1.0(eslint@8.57.0)(typescript@5.5.4)
eslint-plugin-jsdoc: 48.8.3(eslint@8.57.0)
eslint-plugin-regexp: 2.6.0(eslint@8.57.0)
eslint-plugin-unicorn: 53.0.0(eslint@8.57.0)
eslint-plugin-unicorn: 55.0.0(eslint@8.57.0)
eslint-plugin-vue: 9.27.0(eslint@8.57.0)
globals: 15.8.0
local-pkg: 0.5.0
pathe: 1.1.2
tslib: 2.6.3
vue-eslint-parser: 9.4.3(eslint@8.57.0)
@@ -7735,7 +7714,7 @@ snapshots:
- supports-color
- typescript
'@nuxt/eslint-plugin@0.3.13(eslint@8.57.0)(typescript@5.5.4)':
'@nuxt/eslint-plugin@0.4.0(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
@@ -7786,9 +7765,9 @@ snapshots:
- uWebSockets.js
- vite
'@nuxt/icon@1.3.1(magicast@0.3.4)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))':
'@nuxt/icon@1.4.0(magicast@0.3.4)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))':
dependencies:
'@iconify/collections': 1.0.442
'@iconify/collections': 1.0.444
'@iconify/types': 2.0.0
'@iconify/utils': 2.1.25
'@iconify/vue': 4.1.3-beta.1(vue@3.4.34(typescript@5.5.4))
@@ -7995,7 +7974,7 @@ snapshots:
- rollup
- supports-color
'@nuxt/test-utils@3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(playwright-core@1.45.3)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vitest@2.0.4(@types/node@20.14.12)(happy-dom@14.12.3)(terser@5.31.3))(vue-router@4.4.0(vue@3.4.34(typescript@5.5.4)))(vue@3.4.34(typescript@5.5.4))':
'@nuxt/test-utils@3.14.0(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(playwright-core@1.45.3)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vitest@2.0.4(@types/node@20.14.12)(happy-dom@14.12.3)(terser@5.31.3))(vue-router@4.4.0(vue@3.4.34(typescript@5.5.4)))(vue@3.4.34(typescript@5.5.4))':
dependencies:
'@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@3.29.4)
'@nuxt/schema': 3.12.4(rollup@3.29.4)
@@ -8005,7 +7984,7 @@ snapshots:
destr: 2.0.3
estree-walker: 3.0.3
execa: 8.0.1
fake-indexeddb: 5.0.2
fake-indexeddb: 6.0.0
get-port-please: 3.1.2
h3: 1.12.0
local-pkg: 0.5.0
@@ -8681,7 +8660,7 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.19.0':
optional: true
'@rushstack/eslint-patch@1.10.3': {}
'@rushstack/eslint-patch@1.10.4': {}
'@sec-ant/readable-stream@0.4.1': {}
@@ -8716,48 +8695,48 @@ snapshots:
'@socket.io/component-emitter@3.1.2': {}
'@stylistic/eslint-plugin-js@2.3.0(eslint@8.57.0)':
'@stylistic/eslint-plugin-js@2.4.0(eslint@8.57.0)':
dependencies:
'@types/eslint': 8.56.11
'@types/eslint': 9.6.0
acorn: 8.12.1
eslint: 8.57.0
eslint-visitor-keys: 4.0.0
espree: 10.1.0
'@stylistic/eslint-plugin-jsx@2.3.0(eslint@8.57.0)':
'@stylistic/eslint-plugin-jsx@2.4.0(eslint@8.57.0)':
dependencies:
'@stylistic/eslint-plugin-js': 2.3.0(eslint@8.57.0)
'@types/eslint': 8.56.11
'@stylistic/eslint-plugin-js': 2.4.0(eslint@8.57.0)
'@types/eslint': 9.6.0
eslint: 8.57.0
estraverse: 5.3.0
picomatch: 4.0.2
'@stylistic/eslint-plugin-plus@2.3.0(eslint@8.57.0)(typescript@5.5.4)':
'@stylistic/eslint-plugin-plus@2.4.0(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
'@types/eslint': 8.56.11
'@types/eslint': 9.6.0
'@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
eslint: 8.57.0
transitivePeerDependencies:
- supports-color
- typescript
'@stylistic/eslint-plugin-ts@2.3.0(eslint@8.57.0)(typescript@5.5.4)':
'@stylistic/eslint-plugin-ts@2.4.0(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
'@stylistic/eslint-plugin-js': 2.3.0(eslint@8.57.0)
'@types/eslint': 8.56.11
'@stylistic/eslint-plugin-js': 2.4.0(eslint@8.57.0)
'@types/eslint': 9.6.0
'@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
eslint: 8.57.0
transitivePeerDependencies:
- supports-color
- typescript
'@stylistic/eslint-plugin@2.3.0(eslint@8.57.0)(typescript@5.5.4)':
'@stylistic/eslint-plugin@2.4.0(eslint@8.57.0)(typescript@5.5.4)':
dependencies:
'@stylistic/eslint-plugin-js': 2.3.0(eslint@8.57.0)
'@stylistic/eslint-plugin-jsx': 2.3.0(eslint@8.57.0)
'@stylistic/eslint-plugin-plus': 2.3.0(eslint@8.57.0)(typescript@5.5.4)
'@stylistic/eslint-plugin-ts': 2.3.0(eslint@8.57.0)(typescript@5.5.4)
'@types/eslint': 8.56.11
'@stylistic/eslint-plugin-js': 2.4.0(eslint@8.57.0)
'@stylistic/eslint-plugin-jsx': 2.4.0(eslint@8.57.0)
'@stylistic/eslint-plugin-plus': 2.4.0(eslint@8.57.0)(typescript@5.5.4)
'@stylistic/eslint-plugin-ts': 2.4.0(eslint@8.57.0)(typescript@5.5.4)
'@types/eslint': 9.6.0
eslint: 8.57.0
transitivePeerDependencies:
- supports-color
@@ -8812,7 +8791,7 @@ snapshots:
dependencies:
'@types/ms': 0.7.34
'@types/eslint@8.56.11':
'@types/eslint@9.6.0':
dependencies:
'@types/estree': 1.0.5
'@types/json-schema': 7.0.15
@@ -10426,9 +10405,9 @@ snapshots:
find-up-simple: 1.0.0
parse-gitignore: 2.0.0
eslint-flat-config-utils@0.2.5:
eslint-flat-config-utils@0.3.0:
dependencies:
'@types/eslint': 8.56.11
'@types/eslint': 9.6.0
pathe: 1.1.2
eslint-import-resolver-node@0.3.9:
@@ -10439,7 +10418,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-plugin-import-x@0.5.3(eslint@8.57.0)(typescript@5.5.4):
eslint-plugin-import-x@3.1.0(eslint@8.57.0)(typescript@5.5.4):
dependencies:
'@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
debug: 4.3.5
@@ -10483,16 +10462,16 @@ snapshots:
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
eslint-plugin-unicorn@53.0.0(eslint@8.57.0):
eslint-plugin-unicorn@55.0.0(eslint@8.57.0):
dependencies:
'@babel/helper-validator-identifier': 7.24.7
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@eslint/eslintrc': 3.1.0
ci-info: 4.0.0
clean-regexp: 1.0.0
core-js-compat: 3.37.1
eslint: 8.57.0
esquery: 1.6.0
globals: 15.8.0
indent-string: 4.0.0
is-builtin-module: 3.2.1
jsesc: 3.0.2
@@ -10502,8 +10481,6 @@ snapshots:
regjsparser: 0.10.0
semver: 7.6.3
strip-indent: 3.0.0
transitivePeerDependencies:
- supports-color
eslint-plugin-vue@9.27.0(eslint@8.57.0):
dependencies:
@@ -10678,7 +10655,7 @@ snapshots:
pathe: 1.1.2
ufo: 1.5.4
fake-indexeddb@5.0.2: {}
fake-indexeddb@6.0.0: {}
fast-deep-equal@3.1.3: {}
@@ -10948,8 +10925,6 @@ snapshots:
dependencies:
type-fest: 0.20.2
globals@14.0.0: {}
globals@15.8.0: {}
globby@11.1.0:
@@ -12827,7 +12802,7 @@ snapshots:
ky: 1.4.0
registry-auth-token: 5.0.2
registry-url: 6.0.1
semver: 7.6.2
semver: 7.6.3
pako@0.2.9: {}
@@ -14615,7 +14590,7 @@ snapshots:
vitest-environment-nuxt@1.0.0(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(playwright-core@1.45.3)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vitest@2.0.4(@types/node@20.14.12)(happy-dom@14.12.3)(terser@5.31.3))(vue-router@4.4.0(vue@3.4.34(typescript@5.5.4)))(vue@3.4.34(typescript@5.5.4)):
dependencies:
'@nuxt/test-utils': 3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(playwright-core@1.45.3)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vitest@2.0.4(@types/node@20.14.12)(happy-dom@14.12.3)(terser@5.31.3))(vue-router@4.4.0(vue@3.4.34(typescript@5.5.4)))(vue@3.4.34(typescript@5.5.4))
'@nuxt/test-utils': 3.14.0(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(playwright-core@1.45.3)(rollup@3.29.4)(vite@5.3.5(@types/node@20.14.12)(terser@5.31.3))(vitest@2.0.4(@types/node@20.14.12)(happy-dom@14.12.3)(terser@5.31.3))(vue-router@4.4.0(vue@3.4.34(typescript@5.5.4)))(vue@3.4.34(typescript@5.5.4))
transitivePeerDependencies:
- '@cucumber/cucumber'
- '@jest/globals'

View File

@@ -3,10 +3,8 @@
"github>nuxt/renovate-config-nuxt"
],
"ignoreDeps": [
"@nuxt/module-builder",
"nuxt-component-meta",
"valibot30",
"valibot31",
"vue-tsc"
"valibot31"
]
}

View File

@@ -3,7 +3,7 @@ import { defineNuxtModule, installModule, addComponentsDir, addImportsDir, creat
import { name, version } from '../package.json'
import createTemplates from './templates'
import * as config from './runtime/ui.config'
import type { DeepPartial, Strategy } from './runtime/types/utils'
import type { DeepPartial, Strategy } from './runtime/types'
import installTailwind from './tailwind'
const _require = createRequire(import.meta.url)

View File

@@ -121,7 +121,7 @@ import UProgress from '../elements/Progress.vue'
import UCheckbox from '../forms/Checkbox.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig, get } from '../../utils'
import type { Strategy, Button, ProgressColor, ProgressAnimation } from '../../types'
import type { Strategy, Button, ProgressColor, ProgressAnimation } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { table } from '#ui/ui.config'

View File

@@ -73,7 +73,7 @@ import UIcon from '../elements/Icon.vue'
import UButton from '../elements/Button.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig, omit } from '../../utils'
import type { AccordionItem, Strategy } from '../../types'
import type { AccordionItem, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { accordion, button } from '#ui/ui.config'
@@ -194,7 +194,7 @@ export default defineComponent({
attrs,
buttonRefs,
closeOthers,
omit,
omit: (omit as any),
onEnter,
onBeforeLeave,
onAfterEnter,

View File

@@ -47,7 +47,7 @@ import UIcon from '../elements/Icon.vue'
import UAvatar from '../elements/Avatar.vue'
import UButton from '../elements/Button.vue'
import { useUI } from '../../composables/useUI'
import type { Avatar, Button, AlertColor, AlertVariant, AlertAction, Strategy } from '../../types'
import type { Avatar, Button, AlertColor, AlertVariant, AlertAction, Strategy } from '../../types/index'
import { mergeConfig } from '../../utils'
// @ts-expect-error
import appConfig from '#build/app.config'

View File

@@ -27,7 +27,7 @@ import { twMerge, twJoin } from 'tailwind-merge'
import UIcon from '../elements/Icon.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { AvatarSize, AvatarChipColor, AvatarChipPosition, Strategy } from '../../types'
import type { AvatarSize, AvatarChipColor, AvatarChipPosition, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { avatar } from '#ui/ui.config'

View File

@@ -4,7 +4,7 @@ import { twMerge, twJoin } from 'tailwind-merge'
import UAvatar from './Avatar.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig, getSlotsChildren } from '../../utils'
import type { AvatarSize, Strategy } from '../../types'
import type { AvatarSize, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { avatar, avatarGroup } from '#ui/ui.config'

View File

@@ -11,7 +11,7 @@ import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import { useInjectButtonGroup } from '../../composables/useButtonGroup'
import type { BadgeColor, BadgeSize, BadgeVariant, Strategy } from '../../types'
import type { BadgeColor, BadgeSize, BadgeVariant, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { badge } from '#ui/ui.config'

View File

@@ -25,7 +25,7 @@ import ULink from '../elements/Link.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig, nuxtLinkProps, getNuxtLinkProps } from '../../utils'
import { useInjectButtonGroup } from '../../composables/useButtonGroup'
import type { ButtonColor, ButtonSize, ButtonVariant, Strategy } from '../../types'
import type { ButtonColor, ButtonSize, ButtonVariant, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { button } from '#ui/ui.config'

View File

@@ -4,7 +4,7 @@ import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { mergeConfig, getSlotsChildren } from '../../utils'
import { useProvideButtonGroup } from '../../composables/useButtonGroup'
import type { ButtonSize, Strategy } from '../../types'
import type { ButtonSize, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { button, buttonGroup } from '#ui/ui.config'

View File

@@ -61,7 +61,7 @@ import type { PropType } from 'vue'
import { twMerge } from 'tailwind-merge'
import { mergeConfig } from '../../utils'
import UButton from '../elements/Button.vue'
import type { Strategy, Button } from '../../types'
import type { Strategy, Button } from '../../types/index'
import { useUI } from '../../composables/useUI'
import { useCarouselScroll } from '../../composables/useCarouselScroll'
import { useScroll, useResizeObserver, useElementSize } from '@vueuse/core'

View File

@@ -16,7 +16,7 @@ import type { PropType } from 'vue'
import { twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { ChipSize, ChipColor, ChipPosition, Strategy } from '../../types'
import type { ChipSize, ChipColor, ChipPosition, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { chip } from '#ui/ui.config'

View File

@@ -67,7 +67,7 @@ import UKbd from '../elements/Kbd.vue'
import { useUI } from '../../composables/useUI'
import { usePopper } from '../../composables/usePopper'
import { mergeConfig, getNuxtLinkProps } from '../../utils'
import type { DropdownItem, PopperOptions, Strategy } from '../../types'
import type { DropdownItem, PopperOptions, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { dropdown } from '#ui/ui.config'

View File

@@ -10,7 +10,7 @@ import type { PropType } from 'vue'
import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { KbdSize, Strategy } from '../../types'
import type { KbdSize, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { kbd } from '#ui/ui.config'

View File

@@ -34,7 +34,7 @@ import { twJoin } from 'tailwind-merge'
import UIcon from '../elements/Icon.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Strategy, MeterColor, MeterSize } from '../../types'
import type { Strategy, MeterColor, MeterSize } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { meter } from '#ui/ui.config'

View File

@@ -5,7 +5,7 @@ import UIcon from '../elements/Icon.vue'
import Meter from './Meter.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig, getSlotsChildren } from '../../utils'
import type { Strategy, MeterSize } from '../../types'
import type { Strategy, MeterSize } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { meter, meterGroup } from '#ui/ui.config'

View File

@@ -33,7 +33,7 @@ import type { PropType } from 'vue'
import { twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Strategy, ProgressSize, ProgressAnimation, ProgressColor } from '../../types'
import type { Strategy, ProgressSize, ProgressAnimation, ProgressColor } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { progress } from '#ui/ui.config'

View File

@@ -36,7 +36,7 @@ import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { useFormGroup } from '../../composables/useFormGroup'
import { mergeConfig } from '../../utils'
import type { Strategy } from '../../types'
import type { Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { checkbox } from '#ui/ui.config'

View File

@@ -127,16 +127,13 @@ export default defineComponent({
}
async function onSubmit (payload: Event) {
const event = payload as SubmitEvent
const event = payload as FormSubmitEvent<any>
try {
if (props.validateOn?.includes('submit')) {
await validate()
}
const submitEvent: FormSubmitEvent<any> = {
...event,
data: props.state
}
emit('submit', submitEvent)
event.data = props.state
emit('submit', event)
} catch (error) {
if (!(error instanceof FormException)) {
throw error

View File

@@ -44,7 +44,7 @@ import { computed, defineComponent, provide, inject, ref, toRef } from 'vue'
import type { Ref, PropType } from 'vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { FormError, InjectedFormGroupValue, FormGroupSize, Strategy } from '../../types'
import type { FormError, InjectedFormGroupValue, FormGroupSize, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { formGroup } from '#ui/ui.config'

View File

@@ -41,7 +41,7 @@ import { useUI } from '../../composables/useUI'
import { useFormGroup } from '../../composables/useFormGroup'
import { mergeConfig, looseToNumber } from '../../utils'
import { useInjectButtonGroup } from '../../composables/useButtonGroup'
import type { InputSize, InputColor, InputVariant, Strategy } from '../../types'
import type { InputSize, InputColor, InputVariant, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { input } from '#ui/ui.config'

View File

@@ -111,7 +111,7 @@ import { usePopper } from '../../composables/usePopper'
import { useFormGroup } from '../../composables/useFormGroup'
import { get, mergeConfig } from '../../utils'
import { useInjectButtonGroup } from '../../composables/useButtonGroup'
import type { InputSize, InputColor, InputVariant, PopperOptions, Strategy } from '../../types'
import type { InputSize, InputColor, InputVariant, PopperOptions, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { input, inputMenu } from '#ui/ui.config'

View File

@@ -35,7 +35,7 @@ import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { useFormGroup } from '../../composables/useFormGroup'
import { mergeConfig } from '../../utils'
import type { Strategy } from '../../types'
import type { Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { radio } from '#ui/ui.config'

View File

@@ -36,7 +36,7 @@ import type { PropType } from 'vue'
import { useUI } from '../../composables/useUI'
import { useFormGroup } from '../../composables/useFormGroup'
import { mergeConfig, get } from '../../utils'
import type { Strategy } from '../../types'
import type { Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { radioGroup, radio } from '#ui/ui.config'

View File

@@ -26,7 +26,7 @@ import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { useFormGroup } from '../../composables/useFormGroup'
import { mergeConfig } from '../../utils'
import type { RangeSize, RangeColor, Strategy } from '../../types'
import type { RangeSize, RangeColor, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { range } from '#ui/ui.config'

View File

@@ -61,7 +61,7 @@ import { useUI } from '../../composables/useUI'
import { useFormGroup } from '../../composables/useFormGroup'
import { mergeConfig, get } from '../../utils'
import { useInjectButtonGroup } from '../../composables/useButtonGroup'
import type { SelectSize, SelectColor, SelectVariant, Strategy } from '../../types'
import type { SelectSize, SelectColor, SelectVariant, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { select } from '#ui/ui.config'

View File

@@ -147,7 +147,7 @@ import { usePopper } from '../../composables/usePopper'
import { useFormGroup } from '../../composables/useFormGroup'
import { get, mergeConfig } from '../../utils'
import { useInjectButtonGroup } from '../../composables/useButtonGroup'
import type { SelectSize, SelectColor, SelectVariant, PopperOptions, Strategy } from '../../types'
import type { SelectSize, SelectColor, SelectVariant, PopperOptions, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { select, selectMenu } from '#ui/ui.config'

View File

@@ -28,7 +28,7 @@ import { defu } from 'defu'
import { useUI } from '../../composables/useUI'
import { useFormGroup } from '../../composables/useFormGroup'
import { mergeConfig, looseToNumber } from '../../utils'
import type { TextareaSize, TextareaColor, TextareaVariant, Strategy } from '../../types'
import type { TextareaSize, TextareaColor, TextareaVariant, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { textarea } from '#ui/ui.config'

View File

@@ -38,7 +38,7 @@ import UIcon from '../elements/Icon.vue'
import { useUI } from '../../composables/useUI'
import { useFormGroup } from '../../composables/useFormGroup'
import { mergeConfig } from '../../utils'
import type { ToggleSize, ToggleColor, Strategy } from '../../types'
import type { ToggleSize, ToggleColor, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { toggle } from '#ui/ui.config'

View File

@@ -22,7 +22,7 @@ import type { PropType } from 'vue'
import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Strategy } from '../../types'
import type { Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { card } from '#ui/ui.config'

View File

@@ -10,7 +10,7 @@ import type { PropType } from 'vue'
import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Strategy } from '../../types'
import type { Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { container } from '#ui/ui.config'

View File

@@ -26,7 +26,7 @@ import UIcon from '../elements/Icon.vue'
import UAvatar from '../elements/Avatar.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Avatar, DividerSize, Strategy } from '../../types'
import type { Avatar, DividerSize, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { divider } from '#ui/ui.config'

View File

@@ -8,7 +8,7 @@ import type { PropType } from 'vue'
import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Strategy } from '../../types'
import type { Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { skeleton } from '#ui/ui.config'

View File

@@ -41,7 +41,7 @@ import UIcon from '../elements/Icon.vue'
import ULink from '../elements/Link.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig, getULinkProps } from '../../utils'
import type { BreadcrumbLink, Strategy } from '../../types'
import type { BreadcrumbLink, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { breadcrumb } from '#ui/ui.config'

View File

@@ -75,7 +75,7 @@ import UButton from '../elements/Button.vue'
import CommandPaletteGroup from './CommandPaletteGroup.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Group, Command, Button, Strategy } from '../../types'
import type { Group, Command, Button, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { commandPalette } from '#ui/ui.config'

View File

@@ -76,7 +76,7 @@ import { ComboboxOption as HComboboxOption, provideUseId } from '@headlessui/vue
import UIcon from '../elements/Icon.vue'
import UAvatar from '../elements/Avatar.vue'
import UKbd from '../elements/Kbd.vue'
import type { Command, Group } from '../../types'
import type { Command, Group } from '../../types/index'
import { commandPalette } from '#ui/ui.config'
import { useId } from '#imports'

View File

@@ -61,7 +61,7 @@ import UBadge from '../elements/Badge.vue'
import ULink from '../elements/Link.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig, getULinkProps } from '../../utils'
import type { HorizontalNavigationLink, Strategy } from '../../types'
import type { HorizontalNavigationLink, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { horizontalNavigation } from '#ui/ui.config'

View File

@@ -74,7 +74,7 @@ import type { RouteLocationRaw } from '#vue-router'
import UButton from '../elements/Button.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Button, ButtonSize, Strategy } from '../../types'
import type { Button, ButtonSize, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { pagination, button } from '#ui/ui.config'

View File

@@ -53,14 +53,14 @@
</template>
<script lang="ts">
import { toRef, ref, watch, onMounted, defineComponent } from 'vue'
import { toRef, ref, watch, onMounted, defineComponent, nextTick } from 'vue'
import type { PropType } from 'vue'
import { TabGroup as HTabGroup, TabList as HTabList, Tab as HTab, TabPanels as HTabPanels, TabPanel as HTabPanel, provideUseId } from '@headlessui/vue'
import { useResizeObserver } from '@vueuse/core'
import UIcon from '../elements/Icon.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { TabItem, Strategy } from '../../types'
import type { TabItem, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { tabs } from '#ui/ui.config'
@@ -164,7 +164,10 @@ export default defineComponent({
calcMarkerSize(selectedIndex.value)
})
onMounted(() => calcMarkerSize(selectedIndex.value))
onMounted(async () => {
await nextTick()
calcMarkerSize(selectedIndex.value)
})
provideUseId(() => useId())

View File

@@ -63,7 +63,7 @@ import ULink from '../elements/Link.vue'
import UDivider from '../layout/Divider.vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig, getULinkProps } from '../../utils'
import type { VerticalNavigationLink, Strategy } from '../../types'
import type { VerticalNavigationLink, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { verticalNavigation } from '#ui/ui.config'

View File

@@ -22,7 +22,7 @@ import { twMerge, twJoin } from 'tailwind-merge'
import { useUI } from '../../composables/useUI'
import { usePopper } from '../../composables/usePopper'
import { mergeConfig } from '../../utils'
import type { PopperOptions, Strategy } from '../../types'
import type { PopperOptions, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { contextMenu } from '#ui/ui.config'

View File

@@ -32,7 +32,7 @@ import type { PropType } from 'vue'
import { Dialog as HDialog, DialogPanel as HDialogPanel, TransitionRoot, TransitionChild, provideUseId } from '@headlessui/vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Strategy } from '../../types'
import type { Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { modal } from '#ui/ui.config'

View File

@@ -52,7 +52,7 @@ import UButton from '../elements/Button.vue'
import { useUI } from '../../composables/useUI'
import { useTimer } from '../../composables/useTimer'
import { mergeConfig } from '../../utils'
import type { Avatar, Button, NotificationColor, NotificationAction, Strategy } from '../../types'
import type { Avatar, Button, NotificationColor, NotificationAction, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { notification } from '#ui/ui.config'

View File

@@ -27,7 +27,7 @@ import UNotification from './Notification.vue'
import { useUI } from '../../composables/useUI'
import { useToast } from '../../composables/useToast'
import { mergeConfig } from '../../utils'
import type { Notification, Strategy } from '../../types'
import type { Notification, Strategy } from '../../types/index'
import { useState } from '#imports'
// @ts-expect-error
import appConfig from '#build/app.config'

View File

@@ -43,7 +43,7 @@ import { Popover as HPopover, PopoverButton as HPopoverButton, PopoverPanel as H
import { useUI } from '../../composables/useUI'
import { usePopper } from '../../composables/usePopper'
import { mergeConfig } from '../../utils'
import type { PopperOptions, Strategy } from '../../types'
import type { PopperOptions, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { popover } from '#ui/ui.config'

View File

@@ -20,7 +20,7 @@ import type { WritableComputedRef, PropType } from 'vue'
import { Dialog as HDialog, DialogPanel as HDialogPanel, TransitionRoot, TransitionChild, provideUseId } from '@headlessui/vue'
import { useUI } from '../../composables/useUI'
import { mergeConfig } from '../../utils'
import type { Strategy } from '../../types'
import type { Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { slideover } from '#ui/ui.config'
@@ -165,4 +165,4 @@ export default defineComponent({
}
}
})
</script>
</script>

View File

@@ -36,7 +36,7 @@ import UKbd from '../elements/Kbd.vue'
import { useUI } from '../../composables/useUI'
import { usePopper } from '../../composables/usePopper'
import { mergeConfig } from '../../utils'
import type { PopperOptions, Strategy } from '../../types'
import type { PopperOptions, Strategy } from '../../types/index'
// @ts-expect-error
import appConfig from '#build/app.config'
import { tooltip } from '#ui/ui.config'

View File

@@ -1,10 +1,6 @@
import { inject, ref, computed } from 'vue'
import { type UseEventBusReturn, useDebounceFn } from '@vueuse/core'
import type { FormEvent, FormEventType, InjectedFormGroupValue } from '../types/form'
import { mergeConfig } from '../utils'
// @ts-expect-error
import appConfig from '#build/app.config'
import { formGroup } from '#ui/ui.config'
type InputProps = {
id?: string
@@ -16,8 +12,6 @@ type InputProps = {
}
const formGroupConfig = mergeConfig<typeof formGroup>(appConfig.ui.strategy, appConfig.ui.formGroup, formGroup)
export const useFormGroup = (inputProps?: InputProps, config?: any) => {
const formBus = inject<UseEventBusReturn<FormEvent, string> | undefined>('form-events', undefined)
const formGroup = inject<InjectedFormGroupValue | undefined>('form-group', undefined)
@@ -62,7 +56,7 @@ export const useFormGroup = (inputProps?: InputProps, config?: any) => {
name: computed(() => inputProps?.name ?? formGroup?.name.value),
size: computed(() => {
const formGroupSize = config.size[formGroup?.size.value as string] ? formGroup?.size.value : null
return inputProps?.size ?? formGroupSize ?? formGroupConfig?.default?.size
return inputProps?.size ?? formGroupSize ?? config.default?.size
}),
color: computed(() => formGroup?.error?.value ? 'red' : inputProps?.color),
emitFormBlur,

View File

@@ -2,7 +2,7 @@ import { computed, toValue, useAttrs } from 'vue'
import type { Ref } from 'vue'
import { useAppConfig } from '#imports'
import { mergeConfig, omit, get } from '../utils'
import type { Strategy } from '../types'
import type { Strategy } from '../types/index'
export const useUI = <T>(key, $ui?: Ref<Partial<T> & { strategy?: Strategy } | undefined>, $config?: Ref<T> | T, $wrapperClass?: Ref<string>, withAppConfig: boolean = false) => {
const $attrs = useAttrs()

View File

@@ -1,5 +1,5 @@
import { computed } from 'vue'
import { hexToRgb } from '../utils'
import { get, hexToRgb } from '../utils'
import { defineNuxtPlugin, useAppConfig, useNuxtApp, useHead } from '#imports'
import colors from '#tailwind-config/theme/colors'
@@ -8,8 +8,8 @@ export default defineNuxtPlugin(() => {
const nuxtApp = useNuxtApp()
const root = computed(() => {
const primary: Record<string, string> | undefined = colors[appConfig.ui.primary]
const gray: Record<string, string> | undefined = colors[appConfig.ui.gray]
const primary: Record<string, string> | undefined = get(colors, appConfig.ui.primary)
const gray: Record<string, string> | undefined = get(colors, appConfig.ui.gray)
if (!primary) {
console.warn(`[@nuxt/ui] Primary color '${appConfig.ui.primary}' not found in Tailwind config`)

View File

@@ -19,193 +19,193 @@ const colorsToExclude = [
const safelistByComponent: Record<string, (colors: string) => TWConfig['safelist']> = {
alert: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-50`)
pattern: RegExp(`^bg-(${colorsAsRegex})-50$`)
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`)
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-400`),
pattern: RegExp(`^ring-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-500`)
pattern: RegExp(`^ring-(${colorsAsRegex})-500$`)
}],
avatar: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`)
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`)
}],
badge: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-50`)
pattern: RegExp(`^bg-(${colorsAsRegex})-50$`)
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`)
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-400`),
pattern: RegExp(`^ring-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-500`)
pattern: RegExp(`^ring-(${colorsAsRegex})-500$`)
}],
button: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-50`),
pattern: RegExp(`^bg-(${colorsAsRegex})-50$`),
variants: ['hover', 'disabled']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-100`),
pattern: RegExp(`^bg-(${colorsAsRegex})-100$`),
variants: ['hover']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark', 'dark:disabled']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`),
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`),
variants: ['disabled', 'dark:hover']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-600`),
pattern: RegExp(`^bg-(${colorsAsRegex})-600$`),
variants: ['hover']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-900`),
pattern: RegExp(`^bg-(${colorsAsRegex})-900$`),
variants: ['dark:hover']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-950`),
pattern: RegExp(`^bg-(${colorsAsRegex})-950$`),
variants: ['dark', 'dark:hover', 'dark:disabled']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark', 'dark:disabled']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`),
pattern: RegExp(`^text-(${colorsAsRegex})-500$`),
variants: ['dark:hover', 'disabled']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-600`),
pattern: RegExp(`^text-(${colorsAsRegex})-600$`),
variants: ['hover']
}, {
pattern: new RegExp(`outline-(${colorsAsRegex})-400`),
pattern: RegExp(`^outline-(${colorsAsRegex})-400$`),
variants: ['dark:focus-visible']
}, {
pattern: new RegExp(`outline-(${colorsAsRegex})-500`),
pattern: RegExp(`^outline-(${colorsAsRegex})-500$`),
variants: ['focus-visible']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-400`),
pattern: RegExp(`^ring-(${colorsAsRegex})-400$`),
variants: ['dark:focus-visible']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-500`),
pattern: RegExp(`^ring-(${colorsAsRegex})-500$`),
variants: ['focus-visible']
}],
input: (colorsAsRegex) => [{
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-400`),
pattern: RegExp(`^ring-(${colorsAsRegex})-400$`),
variants: ['dark', 'dark:focus']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-500`),
pattern: RegExp(`^ring-(${colorsAsRegex})-500$`),
variants: ['focus']
}],
radio: (colorsAsRegex) => [{
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-400`),
pattern: RegExp(`^ring-(${colorsAsRegex})-400$`),
variants: ['dark:focus-visible']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-500`),
pattern: RegExp(`^ring-(${colorsAsRegex})-500$`),
variants: ['focus-visible']
}],
checkbox: (colorsAsRegex) => [{
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-400`),
pattern: RegExp(`^ring-(${colorsAsRegex})-400$`),
variants: ['dark:focus-visible']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-500`),
pattern: RegExp(`^ring-(${colorsAsRegex})-500$`),
variants: ['focus-visible']
}],
toggle: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`)
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-400`),
pattern: RegExp(`^ring-(${colorsAsRegex})-400$`),
variants: ['dark:focus-visible']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-500`),
pattern: RegExp(`^ring-(${colorsAsRegex})-500$`),
variants: ['focus-visible']
}],
range: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`)
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-400`),
pattern: RegExp(`^ring-(${colorsAsRegex})-400$`),
variants: ['dark:focus-visible']
}, {
pattern: new RegExp(`ring-(${colorsAsRegex})-500`),
pattern: RegExp(`^ring-(${colorsAsRegex})-500$`),
variants: ['focus-visible']
}],
progress: (colorsAsRegex) => [{
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}],
meter: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`)
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}],
notification: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`)
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`)
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-400`),
pattern: RegExp(`^text-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`text-(${colorsAsRegex})-500`)
pattern: RegExp(`^text-(${colorsAsRegex})-500$`)
}],
chip: (colorsAsRegex) => [{
pattern: new RegExp(`bg-(${colorsAsRegex})-400`),
pattern: RegExp(`^bg-(${colorsAsRegex})-400$`),
variants: ['dark']
}, {
pattern: new RegExp(`bg-(${colorsAsRegex})-500`)
pattern: RegExp(`^bg-(${colorsAsRegex})-500$`)
}]
}
@@ -324,7 +324,15 @@ export const customSafelistExtractor = (prefix: string, content: string, colors:
return matches.map(match => {
const colorOptions = match.substring(1, match.length - 1).split('|')
return colorOptions.map(color => `${variant ? variant + ':' : ''}` + group.pattern.source.replace(match, color))
return colorOptions.map(
color => {
const classesExtracted = group.pattern.source.replace(match, color).replace('^', '').replace('$', '')
if (variant) {
return `${variant}:${classesExtracted}`
}
return classesExtracted
}
)
}).flat()
})
})

View File

@@ -1,6 +1,6 @@
import { defu, createDefu } from 'defu'
import { extendTailwindMerge } from 'tailwind-merge'
import type { Strategy } from '../types'
import type { Strategy } from '../types/index'
const customTwMerge = extendTailwindMerge<string, string>({
extend: {

View File

@@ -21,7 +21,7 @@ export const nuxtLinkProps = {
required: false
},
rel: {
type: String as PropType<NuxtLinkProps['rel']>,
type: String as PropType<any>,
default: undefined,
required: false
},

View File

@@ -24,17 +24,17 @@ describe('generateSafelist', () => {
[
'default safelist',
{}, [],
['bg-(primary)-50', 'bg-(red)-500'] // these both should be in the safelist
['^bg-(primary)-50$', '^bg-(red)-500$'] // these both should be in the safelist
],
[
'safelisting single new color',
{}, ['myColor'],
'bg-(myColor|primary)-50'
'^bg-(myColor|primary)-50$'
],
[
'reducing amount of theme colors',
{ theme: { colors: { plainBlue: '#00F' } } }, ['plainBlue'],
['bg-(plainBlue|primary)-50', '!', /orange/] // the word "orange" should _not_ be found in any safelist pattern
['^bg-(plainBlue|primary)-50$', '!', /orange/] // the word "orange" should _not_ be found in any safelist pattern
]
])('%s', async (_description, tailwindConfig: Partial<TWConfig>, safelistColors, safelistPatterns) => {
safelistColors.push('primary')