diff --git a/formkit.config.ts b/formkit.config.ts
index 4255b91..b7fe9de 100644
--- a/formkit.config.ts
+++ b/formkit.config.ts
@@ -7,11 +7,17 @@ import { createProPlugin, toggle } from '@formkit/pro'
import * as defaultRules from '@formkit/rules'
import { createThemePlugin } from '@formkit/themes'
import { createValidationPlugin } from '@formkit/validation'
-import { /* defaultConfig, */ bindings } from '@formkit/vue'
+import { /* defaultConfig, */ bindings, createInput } from '@formkit/vue'
import { addAsteriskPlugin } from './formkit.addAsteriskPlugin'
import { rootClasses } from "./formkit.config.theme"
+import FormKitToggle from "./src/headlessui-switch.vue";
-const library = createLibraryPlugin({ text, form, submit, group, checkbox, range, list, number, textarea, })
+
+const library = createLibraryPlugin({
+ text, form, submit, group, checkbox, range, list, number, textarea,
+
+ mytoggle: createInput(FormKitToggle)
+})
const validation = createValidationPlugin(defaultRules)
const i18n = createI18nPlugin({ zh })
const theme = undefined;
diff --git a/package.json b/package.json
index 01c3264..e758e62 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"@formkit/themes": "latest",
"@formkit/vue": "latest",
"@formkit/zod": "^1.6.9",
+ "@headlessui/vue": "^1.7.23",
"autoprefixer": "latest",
"i18next": "^23.16.6",
"postcss": "latest",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3cdcd45..7b17f76 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -29,6 +29,9 @@ importers:
'@formkit/zod':
specifier: ^1.6.9
version: 1.6.9(zod@3.23.8)
+ '@headlessui/vue':
+ specifier: ^1.7.23
+ version: 1.7.23(vue@3.5.13(typescript@5.6.3))
autoprefixer:
specifier: latest
version: 10.4.20(postcss@8.4.49)
@@ -299,6 +302,12 @@ packages:
peerDependencies:
zod: ^3.0.0
+ '@headlessui/vue@1.7.23':
+ resolution: {integrity: sha512-JzdCNqurrtuu0YW6QaDtR2PIYCKPUWq28csDyMvN4zmGccmE7lz40Is6hc3LA4HFeCI7sekZ/PQMTNmn9I/4Wg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ vue: ^3.2.0
+
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -436,6 +445,14 @@ packages:
cpu: [x64]
os: [win32]
+ '@tanstack/virtual-core@3.10.9':
+ resolution: {integrity: sha512-kBknKOKzmeR7lN+vSadaKWXaLS0SZZG+oqpQ/k80Q6g9REn6zRHS/ZYdrIzHnpHgy/eWs00SujveUN/GJT2qTw==}
+
+ '@tanstack/vue-virtual@3.10.9':
+ resolution: {integrity: sha512-KU2quiwJQpA0sdflpXw24bhW+x8PG+FlrSJK3Ilobim671HNn4ztLVWUCEz3Inei4dLYq+GW1MK9X6i6ZeirkQ==}
+ peerDependencies:
+ vue: ^2.7.0 || ^3.0.0
+
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
@@ -1208,6 +1225,11 @@ snapshots:
'@formkit/core': 1.6.9
zod: 3.23.8
+ '@headlessui/vue@1.7.23(vue@3.5.13(typescript@5.6.3))':
+ dependencies:
+ '@tanstack/vue-virtual': 3.10.9(vue@3.5.13(typescript@5.6.3))
+ vue: 3.5.13(typescript@5.6.3)
+
'@isaacs/cliui@8.0.2':
dependencies:
string-width: 5.1.2
@@ -1303,6 +1325,13 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.27.2':
optional: true
+ '@tanstack/virtual-core@3.10.9': {}
+
+ '@tanstack/vue-virtual@3.10.9(vue@3.5.13(typescript@5.6.3))':
+ dependencies:
+ '@tanstack/virtual-core': 3.10.9
+ vue: 3.5.13(typescript@5.6.3)
+
'@types/estree@1.0.6': {}
'@vitejs/plugin-vue@5.2.0(vite@5.4.11)(vue@3.5.13(typescript@5.6.3))':
diff --git a/src/headlessui-switch.vue b/src/headlessui-switch.vue
new file mode 100644
index 0000000..9acca01
--- /dev/null
+++ b/src/headlessui-switch.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
diff --git a/src/tutorial-form/index.vue b/src/tutorial-form/index.vue
index 8faf888..b37032c 100644
--- a/src/tutorial-form/index.vue
+++ b/src/tutorial-form/index.vue
@@ -146,6 +146,11 @@ onMounted(() => {
:label="`如果清空 name 输入框,这个确认框及其值将被移除。`"
/>
+
+