diff --git a/apps/www/.vitepress/theme/config/docs.ts b/apps/www/.vitepress/theme/config/docs.ts
index 4f69dc39..7432c50a 100644
--- a/apps/www/.vitepress/theme/config/docs.ts
+++ b/apps/www/.vitepress/theme/config/docs.ts
@@ -254,6 +254,12 @@ export const docsConfig: DocsConfig = {
href: '/docs/components/pagination',
items: [],
},
+ {
+ title: 'Pin Input',
+ href: '/docs/components/pin-input',
+ label: 'New',
+ items: [],
+ },
{
title: 'Popover',
href: '/docs/components/popover',
diff --git a/apps/www/__registry__/index.ts b/apps/www/__registry__/index.ts
index c8ca92f4..3bee58c3 100644
--- a/apps/www/__registry__/index.ts
+++ b/apps/www/__registry__/index.ts
@@ -485,6 +485,20 @@ export const Index = {
component: () => import('../src/lib/registry/default/example/PaginationDemo.vue').then(m => m.default),
files: ['../src/lib/registry/default/example/PaginationDemo.vue'],
},
+ PinInputDemo: {
+ name: 'PinInputDemo',
+ type: 'components:example',
+ registryDependencies: ['pin-input'],
+ component: () => import('../src/lib/registry/default/example/PinInputDemo.vue').then(m => m.default),
+ files: ['../src/lib/registry/default/example/PinInputDemo.vue'],
+ },
+ PinInputFormDemo: {
+ name: 'PinInputFormDemo',
+ type: 'components:example',
+ registryDependencies: ['pin-input', 'button', 'form', 'toast'],
+ component: () => import('../src/lib/registry/default/example/PinInputFormDemo.vue').then(m => m.default),
+ files: ['../src/lib/registry/default/example/PinInputFormDemo.vue'],
+ },
PopoverDemo: {
name: 'PopoverDemo',
type: 'components:example',
@@ -1390,6 +1404,20 @@ export const Index = {
component: () => import('../src/lib/registry/new-york/example/PaginationDemo.vue').then(m => m.default),
files: ['../src/lib/registry/new-york/example/PaginationDemo.vue'],
},
+ PinInputDemo: {
+ name: 'PinInputDemo',
+ type: 'components:example',
+ registryDependencies: ['pin-input'],
+ component: () => import('../src/lib/registry/new-york/example/PinInputDemo.vue').then(m => m.default),
+ files: ['../src/lib/registry/new-york/example/PinInputDemo.vue'],
+ },
+ PinInputFormDemo: {
+ name: 'PinInputFormDemo',
+ type: 'components:example',
+ registryDependencies: ['pin-input', 'button', 'form', 'toast'],
+ component: () => import('../src/lib/registry/new-york/example/PinInputFormDemo.vue').then(m => m.default),
+ files: ['../src/lib/registry/new-york/example/PinInputFormDemo.vue'],
+ },
PopoverDemo: {
name: 'PopoverDemo',
type: 'components:example',
diff --git a/apps/www/src/content/docs/components/pin-input.md b/apps/www/src/content/docs/components/pin-input.md
new file mode 100644
index 00000000..207e11c4
--- /dev/null
+++ b/apps/www/src/content/docs/components/pin-input.md
@@ -0,0 +1,21 @@
+---
+title: PIN Input
+description: Allows users to input a sequence of one-character alphanumeric inputs.
+source: apps/www/src/lib/registry/default/ui/pin-input
+primitive: https://www.radix-vue.com/components/pin-input.html
+---
+
+
+
+
+## Installation
+
+```bash
+npx shadcn-vue@latest add pin-input
+```
+
+## Usage
+
+### Form
+
+
diff --git a/apps/www/src/lib/registry/default/example/PinInputDemo.vue b/apps/www/src/lib/registry/default/example/PinInputDemo.vue
new file mode 100644
index 00000000..fb5d5c93
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/PinInputDemo.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/example/PinInputFormDemo.vue b/apps/www/src/lib/registry/default/example/PinInputFormDemo.vue
new file mode 100644
index 00000000..0f909a95
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/PinInputFormDemo.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/pin-input/PinInput.vue b/apps/www/src/lib/registry/default/ui/pin-input/PinInput.vue
new file mode 100644
index 00000000..9a5edb97
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/pin-input/PinInput.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/pin-input/PinInputInput.vue b/apps/www/src/lib/registry/default/ui/pin-input/PinInputInput.vue
new file mode 100644
index 00000000..47eaccbe
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/pin-input/PinInputInput.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/pin-input/index.ts b/apps/www/src/lib/registry/default/ui/pin-input/index.ts
new file mode 100644
index 00000000..ee290cc8
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/pin-input/index.ts
@@ -0,0 +1,2 @@
+export { default as PinInput } from './PinInput.vue'
+export { default as PinInputInput } from './PinInputInput.vue'
diff --git a/apps/www/src/lib/registry/new-york/example/PinInputDemo.vue b/apps/www/src/lib/registry/new-york/example/PinInputDemo.vue
new file mode 100644
index 00000000..0d8bacf2
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/example/PinInputDemo.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/example/PinInputFormDemo.vue b/apps/www/src/lib/registry/new-york/example/PinInputFormDemo.vue
new file mode 100644
index 00000000..50b3345b
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/example/PinInputFormDemo.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/pin-input/PinInput.vue b/apps/www/src/lib/registry/new-york/ui/pin-input/PinInput.vue
new file mode 100644
index 00000000..9a5edb97
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/pin-input/PinInput.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/pin-input/PinInputInput.vue b/apps/www/src/lib/registry/new-york/ui/pin-input/PinInputInput.vue
new file mode 100644
index 00000000..47eaccbe
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/pin-input/PinInputInput.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/pin-input/index.ts b/apps/www/src/lib/registry/new-york/ui/pin-input/index.ts
new file mode 100644
index 00000000..ee290cc8
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/pin-input/index.ts
@@ -0,0 +1,2 @@
+export { default as PinInput } from './PinInput.vue'
+export { default as PinInputInput } from './PinInputInput.vue'
diff --git a/apps/www/src/public/registry/index.json b/apps/www/src/public/registry/index.json
index 9589b3b6..de3369a8 100644
--- a/apps/www/src/public/registry/index.json
+++ b/apps/www/src/public/registry/index.json
@@ -392,6 +392,19 @@
],
"type": "components:ui"
},
+ {
+ "name": "pin-input",
+ "dependencies": [],
+ "registryDependencies": [
+ "utils"
+ ],
+ "files": [
+ "ui/pin-input/PinInput.vue",
+ "ui/pin-input/PinInputInput.vue",
+ "ui/pin-input/index.ts"
+ ],
+ "type": "components:ui"
+ },
{
"name": "popover",
"dependencies": [],
diff --git a/apps/www/src/public/registry/styles/default/pin-input.json b/apps/www/src/public/registry/styles/default/pin-input.json
new file mode 100644
index 00000000..ee35d2bf
--- /dev/null
+++ b/apps/www/src/public/registry/styles/default/pin-input.json
@@ -0,0 +1,22 @@
+{
+ "name": "pin-input",
+ "dependencies": [],
+ "registryDependencies": [
+ "utils"
+ ],
+ "files": [
+ {
+ "name": "PinInput.vue",
+ "content": "\n\n\n \n \n \n\n"
+ },
+ {
+ "name": "PinInputInput.vue",
+ "content": "\n\n\n \n\n"
+ },
+ {
+ "name": "index.ts",
+ "content": "export { default as PinInput } from './PinInput.vue'\nexport { default as PinInputInput } from './PinInputInput.vue'\n"
+ }
+ ],
+ "type": "components:ui"
+}
\ No newline at end of file
diff --git a/apps/www/src/public/registry/styles/new-york/pin-input.json b/apps/www/src/public/registry/styles/new-york/pin-input.json
new file mode 100644
index 00000000..ee35d2bf
--- /dev/null
+++ b/apps/www/src/public/registry/styles/new-york/pin-input.json
@@ -0,0 +1,22 @@
+{
+ "name": "pin-input",
+ "dependencies": [],
+ "registryDependencies": [
+ "utils"
+ ],
+ "files": [
+ {
+ "name": "PinInput.vue",
+ "content": "\n\n\n \n \n \n\n"
+ },
+ {
+ "name": "PinInputInput.vue",
+ "content": "\n\n\n \n\n"
+ },
+ {
+ "name": "index.ts",
+ "content": "export { default as PinInput } from './PinInput.vue'\nexport { default as PinInputInput } from './PinInputInput.vue'\n"
+ }
+ ],
+ "type": "components:ui"
+}
\ No newline at end of file