diff --git a/playground/app/app.vue b/playground/app/app.vue index 6ec626e..8e2cc87 100644 --- a/playground/app/app.vue +++ b/playground/app/app.vue @@ -1,6 +1,37 @@ + + \ No newline at end of file diff --git a/playground/app/assets/style.css b/playground/app/assets/style.css index 748646a..1f78e97 100644 --- a/playground/app/assets/style.css +++ b/playground/app/assets/style.css @@ -21,4 +21,8 @@ body { -webkit-font-smoothing: antialiased; text-size-adjust: 100%; font-family: var(--font); -} \ No newline at end of file +} + +a { + color: inherit; +} diff --git a/playground/app/components/nav-button.vue b/playground/app/components/nav-button.vue new file mode 100644 index 0000000..3010de2 --- /dev/null +++ b/playground/app/components/nav-button.vue @@ -0,0 +1,35 @@ + + + + + \ No newline at end of file diff --git a/playground/app/components/plain-select.vue b/playground/app/components/plain-select.vue new file mode 100644 index 0000000..5a6634f --- /dev/null +++ b/playground/app/components/plain-select.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/playground/app/components/plain-shiki.vue b/playground/app/components/plain-shiki.vue index 8bb4286..f87d129 100644 --- a/playground/app/components/plain-shiki.vue +++ b/playground/app/components/plain-shiki.vue @@ -16,11 +16,9 @@ ref="editor" class="plain-shiki" p="x-3 y-2" - b="1 solid gray op-40 rounded-md" outline="none" whitespace="break-spaces" lh="6" - text="4" contenteditable v-html="example" > diff --git a/playground/app/components/theme-button.vue b/playground/app/components/theme-button.vue index 2c8b3fd..64e6157 100644 --- a/playground/app/components/theme-button.vue +++ b/playground/app/components/theme-button.vue @@ -14,26 +14,17 @@ \ No newline at end of file diff --git a/playground/app/components/theme-switch.vue b/playground/app/components/theme-switch.vue deleted file mode 100644 index 99c29b0..0000000 --- a/playground/app/components/theme-switch.vue +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index a289b46..9f31085 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -24,7 +24,8 @@ export default defineNuxtConfig({ "@nuxt/icon", "@nuxtjs/color-mode", "@unocss/nuxt", - "@vueuse/nuxt" + "@vueuse/nuxt", + "radix-vue/nuxt" ], colorMode: { classSuffix: "" diff --git a/playground/package.json b/playground/package.json index ff4d8dc..9d0e8b5 100644 --- a/playground/package.json +++ b/playground/package.json @@ -7,6 +7,7 @@ }, "dependencies": { "@vueuse/core": "^11.1.0", + "radix-vue": "^1.9.7", "vue": "^3.5.11", "vue-router": "^4.4.5" }, diff --git a/playground/uno.config.ts b/playground/uno.config.ts index ccaa3de..425e7c5 100644 --- a/playground/uno.config.ts +++ b/playground/uno.config.ts @@ -1,8 +1,16 @@ -import { defineConfig, presetAttributify, presetUno } from "unocss"; +import { defineConfig, presetAttributify, presetUno, transformerDirectives } from "unocss"; export default defineConfig({ presets: [ presetUno(), presetAttributify() + ], + theme: { + colors: { + primary: "hsl(154deg 32% 46%)" + } + }, + transformers: [ + transformerDirectives() ] }); \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c8d66a7..ead0951 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,6 +44,9 @@ importers: '@vueuse/core': specifier: ^11.1.0 version: 11.1.0(vue@3.5.11(typescript@5.5.4)) + radix-vue: + specifier: ^1.9.7 + version: 1.9.7(vue@3.5.11(typescript@5.5.4)) vue: specifier: ^3.5.11 version: 3.5.11(typescript@5.5.4) @@ -812,6 +815,18 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.11': + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@floating-ui/vue@1.1.5': + resolution: {integrity: sha512-ynL1p5Z+woPVSwgMGqeDrx6HrJfGIDzFyESFkyqJKilGW1+h/8yVY29Khn0LaU6wHBRwZ13ntG6reiHWK6jyzw==} + '@humanfs/core@0.19.0': resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} engines: {node: '>=18.18.0'} @@ -842,6 +857,12 @@ packages: peerDependencies: vue: '>=3' + '@internationalized/date@3.5.6': + resolution: {integrity: sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==} + + '@internationalized/number@3.5.4': + resolution: {integrity: sha512-h9huwWjNqYyE2FXZZewWqmCdkw1HeFds5q4Siuoms3hUQC5iPJK3aBmkFZoDSLN4UD0Bl8G22L/NdHpeOr+/7A==} + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -979,35 +1000,30 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-glibc@2.4.1': resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.4.1': resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [musl] '@parcel/watcher-linux-x64-glibc@2.4.1': resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-x64-musl@2.4.1': resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [musl] '@parcel/watcher-wasm@2.4.1': resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} @@ -1148,55 +1164,46 @@ packages: resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.24.0': resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.24.0': resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.24.0': resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.24.0': resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.24.0': resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.24.0': resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.24.0': resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.24.0': resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} @@ -1244,6 +1251,17 @@ packages: peerDependencies: stylelint: ^16.0.2 + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + + '@tanstack/virtual-core@3.10.8': + resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} + + '@tanstack/vue-virtual@3.10.8': + resolution: {integrity: sha512-DB5QA8c/LfqOqIUCpSs3RdOTVroRRdqeHMqBkYrcashSZtOzIv8xbiqHgg7RYxDfkH5F3Y+e0MkuuyGNDVB0BQ==} + peerDependencies: + vue: ^2.7.0 || ^3.0.0 + '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -1586,9 +1604,15 @@ packages: '@vue/shared@3.5.11': resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==} + '@vueuse/core@10.11.1': + resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} + '@vueuse/core@11.1.0': resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==} + '@vueuse/metadata@10.11.1': + resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} + '@vueuse/metadata@11.1.0': resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==} @@ -1597,6 +1621,9 @@ packages: peerDependencies: nuxt: ^3.0.0 + '@vueuse/shared@10.11.1': + resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} + '@vueuse/shared@11.1.0': resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} @@ -1752,6 +1779,10 @@ packages: 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'} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -4017,6 +4048,11 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + radix-vue@1.9.7: + resolution: {integrity: sha512-1xleWzWNFPfAMmb81gu/4/MV8dXMvc7j2EIjutBpBcKwxdJfeIcQg4k9De18L2rL1/GZg5wA9KykeKTM4MjWow==} + peerDependencies: + vue: '>= 3.2.0' + radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -5711,6 +5747,26 @@ snapshots: '@fastify/busboy@2.1.1': {} + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.11': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/utils@0.2.8': {} + + '@floating-ui/vue@1.1.5(vue@3.5.11(typescript@5.5.4))': + dependencies: + '@floating-ui/dom': 1.6.11 + '@floating-ui/utils': 0.2.8 + vue-demi: 0.14.10(vue@3.5.11(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@humanfs/core@0.19.0': {} '@humanfs/node@0.16.5': @@ -5745,6 +5801,14 @@ snapshots: '@iconify/types': 2.0.0 vue: 3.5.11(typescript@5.5.4) + '@internationalized/date@3.5.6': + dependencies: + '@swc/helpers': 0.5.13 + + '@internationalized/number@3.5.4': + dependencies: + '@swc/helpers': 0.5.13 + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': @@ -6309,6 +6373,17 @@ snapshots: style-search: 0.1.0 stylelint: 16.9.0(typescript@5.5.4) + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.7.0 + + '@tanstack/virtual-core@3.10.8': {} + + '@tanstack/vue-virtual@3.10.8(vue@3.5.11(typescript@5.5.4))': + dependencies: + '@tanstack/virtual-core': 3.10.8 + vue: 3.5.11(typescript@5.5.4) + '@trysound/sax@0.2.0': {} '@types/debug@4.1.12': @@ -6864,6 +6939,16 @@ snapshots: '@vue/shared@3.5.11': {} + '@vueuse/core@10.11.1(vue@3.5.11(typescript@5.5.4))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.1 + '@vueuse/shared': 10.11.1(vue@3.5.11(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.11(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@vueuse/core@11.1.0(vue@3.5.11(typescript@5.5.4))': dependencies: '@types/web-bluetooth': 0.0.20 @@ -6874,6 +6959,8 @@ snapshots: - '@vue/composition-api' - vue + '@vueuse/metadata@10.11.1': {} + '@vueuse/metadata@11.1.0': {} '@vueuse/nuxt@11.1.0(magicast@0.3.5)(nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.7.4)(eslint@9.12.0(jiti@2.1.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.24.0)(sass@1.79.4)(stylelint@16.9.0(typescript@5.5.4))(terser@5.34.1)(typescript@5.5.4)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)(terser@5.34.1))(webpack-sources@3.2.3))(rollup@4.24.0)(vue@3.5.11(typescript@5.5.4))(webpack-sources@3.2.3)': @@ -6892,6 +6979,13 @@ snapshots: - vue - webpack-sources + '@vueuse/shared@10.11.1(vue@3.5.11(typescript@5.5.4))': + dependencies: + vue-demi: 0.14.10(vue@3.5.11(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@vueuse/shared@11.1.0(vue@3.5.11(typescript@5.5.4))': dependencies: vue-demi: 0.14.10(vue@3.5.11(typescript@5.5.4)) @@ -7090,6 +7184,10 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.4: + dependencies: + tslib: 2.7.0 + array-union@2.1.0: {} assertion-error@2.0.1: {} @@ -9756,6 +9854,23 @@ snapshots: queue-tick@1.0.1: {} + radix-vue@1.9.7(vue@3.5.11(typescript@5.5.4)): + dependencies: + '@floating-ui/dom': 1.6.11 + '@floating-ui/vue': 1.1.5(vue@3.5.11(typescript@5.5.4)) + '@internationalized/date': 3.5.6 + '@internationalized/number': 3.5.4 + '@tanstack/vue-virtual': 3.10.8(vue@3.5.11(typescript@5.5.4)) + '@vueuse/core': 10.11.1(vue@3.5.11(typescript@5.5.4)) + '@vueuse/shared': 10.11.1(vue@3.5.11(typescript@5.5.4)) + aria-hidden: 1.2.4 + defu: 6.1.4 + fast-deep-equal: 3.1.3 + nanoid: 5.0.7 + vue: 3.5.11(typescript@5.5.4) + transitivePeerDependencies: + - '@vue/composition-api' + radix3@1.1.2: {} randombytes@2.1.0: