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 @@
+
+
-
+
+
+ Plain Shiki Playground
+ v{{ version }}
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
\ 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: