diff --git a/apps/www/.vitepress/theme/config/docs.ts b/apps/www/.vitepress/theme/config/docs.ts
index 96c2ed48..399a8235 100644
--- a/apps/www/.vitepress/theme/config/docs.ts
+++ b/apps/www/.vitepress/theme/config/docs.ts
@@ -256,6 +256,11 @@ export const docsConfig: DocsConfig = {
title: 'Navigation Menu',
href: '/docs/components/navigation-menu',
},
+ {
+ title: 'Number Field',
+ href: '/docs/components/number-field',
+ label: 'Alpha',
+ },
{
title: 'Pagination',
href: '/docs/components/pagination',
diff --git a/apps/www/__registry__/index.ts b/apps/www/__registry__/index.ts
index 4a20e476..89d29018 100644
--- a/apps/www/__registry__/index.ts
+++ b/apps/www/__registry__/index.ts
@@ -759,6 +759,48 @@ export const Index = {
component: () => import("../src/lib/registry/default/example/NavigationMenuDemoItem.vue").then((m) => m.default),
files: ["../src/lib/registry/default/example/NavigationMenuDemoItem.vue"],
},
+ "NumberFieldCurrency": {
+ name: "NumberFieldCurrency",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/default/example/NumberFieldCurrency.vue").then((m) => m.default),
+ files: ["../src/lib/registry/default/example/NumberFieldCurrency.vue"],
+ },
+ "NumberFieldDecimal": {
+ name: "NumberFieldDecimal",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/default/example/NumberFieldDecimal.vue").then((m) => m.default),
+ files: ["../src/lib/registry/default/example/NumberFieldDecimal.vue"],
+ },
+ "NumberFieldDemo": {
+ name: "NumberFieldDemo",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/default/example/NumberFieldDemo.vue").then((m) => m.default),
+ files: ["../src/lib/registry/default/example/NumberFieldDemo.vue"],
+ },
+ "NumberFieldDisabled": {
+ name: "NumberFieldDisabled",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/default/example/NumberFieldDisabled.vue").then((m) => m.default),
+ files: ["../src/lib/registry/default/example/NumberFieldDisabled.vue"],
+ },
+ "NumberFieldForm": {
+ name: "NumberFieldForm",
+ type: "components:example",
+ registryDependencies: ["button","form","number-field","toast"],
+ component: () => import("../src/lib/registry/default/example/NumberFieldForm.vue").then((m) => m.default),
+ files: ["../src/lib/registry/default/example/NumberFieldForm.vue"],
+ },
+ "NumberFieldPercentage": {
+ name: "NumberFieldPercentage",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/default/example/NumberFieldPercentage.vue").then((m) => m.default),
+ files: ["../src/lib/registry/default/example/NumberFieldPercentage.vue"],
+ },
"PaginationDemo": {
name: "PaginationDemo",
type: "components:example",
@@ -2167,6 +2209,48 @@ export const Index = {
component: () => import("../src/lib/registry/new-york/example/NavigationMenuDemoItem.vue").then((m) => m.default),
files: ["../src/lib/registry/new-york/example/NavigationMenuDemoItem.vue"],
},
+ "NumberFieldCurrency": {
+ name: "NumberFieldCurrency",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/new-york/example/NumberFieldCurrency.vue").then((m) => m.default),
+ files: ["../src/lib/registry/new-york/example/NumberFieldCurrency.vue"],
+ },
+ "NumberFieldDecimal": {
+ name: "NumberFieldDecimal",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/new-york/example/NumberFieldDecimal.vue").then((m) => m.default),
+ files: ["../src/lib/registry/new-york/example/NumberFieldDecimal.vue"],
+ },
+ "NumberFieldDemo": {
+ name: "NumberFieldDemo",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/new-york/example/NumberFieldDemo.vue").then((m) => m.default),
+ files: ["../src/lib/registry/new-york/example/NumberFieldDemo.vue"],
+ },
+ "NumberFieldDisabled": {
+ name: "NumberFieldDisabled",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/new-york/example/NumberFieldDisabled.vue").then((m) => m.default),
+ files: ["../src/lib/registry/new-york/example/NumberFieldDisabled.vue"],
+ },
+ "NumberFieldForm": {
+ name: "NumberFieldForm",
+ type: "components:example",
+ registryDependencies: ["button","form","number-field","toast"],
+ component: () => import("../src/lib/registry/new-york/example/NumberFieldForm.vue").then((m) => m.default),
+ files: ["../src/lib/registry/new-york/example/NumberFieldForm.vue"],
+ },
+ "NumberFieldPercentage": {
+ name: "NumberFieldPercentage",
+ type: "components:example",
+ registryDependencies: ["number-field"],
+ component: () => import("../src/lib/registry/new-york/example/NumberFieldPercentage.vue").then((m) => m.default),
+ files: ["../src/lib/registry/new-york/example/NumberFieldPercentage.vue"],
+ },
"PaginationDemo": {
name: "PaginationDemo",
type: "components:example",
diff --git a/apps/www/src/content/docs/components/number-field.md b/apps/www/src/content/docs/components/number-field.md
new file mode 100644
index 00000000..5be93859
--- /dev/null
+++ b/apps/www/src/content/docs/components/number-field.md
@@ -0,0 +1,71 @@
+---
+title: Number Field
+description: A number field allows a user to enter a number and increment or decrement the value using stepper buttons.
+source: apps/www/src/lib/registry/default/ui/number-field
+primitive: https://www.radix-vue.com/components/number-field.html
+---
+
+
+
+## Installation
+
+
+
+
+```bash
+npx shadcn-vue@latest add number-field
+```
+
+
+
+## Usage
+
+```vue
+
+
+
+
+ Age
+
+
+
+
+
+
+
+```
+
+## Examples
+
+### Default
+
+
+
+### Disabled
+
+
+
+### Decimal
+
+
+
+### Percentage
+
+
+
+### Currency
+
+
+
+### Form
+
+
diff --git a/apps/www/src/lib/registry/default/example/NumberFieldCurrency.vue b/apps/www/src/lib/registry/default/example/NumberFieldCurrency.vue
new file mode 100644
index 00000000..68d1c66e
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/NumberFieldCurrency.vue
@@ -0,0 +1,29 @@
+
+
+
+
+ Balance
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/example/NumberFieldDecimal.vue b/apps/www/src/lib/registry/default/example/NumberFieldDecimal.vue
new file mode 100644
index 00000000..7d223790
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/NumberFieldDecimal.vue
@@ -0,0 +1,27 @@
+
+
+
+
+ Number
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/example/NumberFieldDemo.vue b/apps/www/src/lib/registry/default/example/NumberFieldDemo.vue
new file mode 100644
index 00000000..434738cb
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/NumberFieldDemo.vue
@@ -0,0 +1,21 @@
+
+
+
+
+ Age
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/example/NumberFieldDisabled.vue b/apps/www/src/lib/registry/default/example/NumberFieldDisabled.vue
new file mode 100644
index 00000000..bfba65a1
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/NumberFieldDisabled.vue
@@ -0,0 +1,21 @@
+
+
+
+
+ Age
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/example/NumberFieldForm.vue b/apps/www/src/lib/registry/default/example/NumberFieldForm.vue
new file mode 100644
index 00000000..56418ff4
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/NumberFieldForm.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/example/NumberFieldPercentage.vue b/apps/www/src/lib/registry/default/example/NumberFieldPercentage.vue
new file mode 100644
index 00000000..102c915b
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/NumberFieldPercentage.vue
@@ -0,0 +1,27 @@
+
+
+
+
+ Percent
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/number-field/NumberField.vue b/apps/www/src/lib/registry/default/ui/number-field/NumberField.vue
new file mode 100644
index 00000000..c89c06fb
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/number-field/NumberField.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/number-field/NumberFieldContent.vue b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldContent.vue
new file mode 100644
index 00000000..12c8d7ed
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldContent.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/number-field/NumberFieldDecrement.vue b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldDecrement.vue
new file mode 100644
index 00000000..0829f9b0
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldDecrement.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/number-field/NumberFieldIncrement.vue b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldIncrement.vue
new file mode 100644
index 00000000..45690be8
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldIncrement.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/number-field/NumberFieldInput.vue b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldInput.vue
new file mode 100644
index 00000000..4a8eefac
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldInput.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/number-field/NumberFieldLabel.vue b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldLabel.vue
new file mode 100644
index 00000000..b6c2737a
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/number-field/NumberFieldLabel.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/number-field/index.ts b/apps/www/src/lib/registry/default/ui/number-field/index.ts
new file mode 100644
index 00000000..3d33c8d8
--- /dev/null
+++ b/apps/www/src/lib/registry/default/ui/number-field/index.ts
@@ -0,0 +1,6 @@
+export { default as NumberField } from './NumberField.vue'
+export { default as NumberFieldInput } from './NumberFieldInput.vue'
+export { default as NumberFieldLabel } from './NumberFieldLabel.vue'
+export { default as NumberFieldIncrement } from './NumberFieldIncrement.vue'
+export { default as NumberFieldDecrement } from './NumberFieldDecrement.vue'
+export { default as NumberFieldContent } from './NumberFieldContent.vue'
diff --git a/apps/www/src/lib/registry/new-york/example/NumberFieldCurrency.vue b/apps/www/src/lib/registry/new-york/example/NumberFieldCurrency.vue
new file mode 100644
index 00000000..00906ac6
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/example/NumberFieldCurrency.vue
@@ -0,0 +1,29 @@
+
+
+
+
+ Balance
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/example/NumberFieldDecimal.vue b/apps/www/src/lib/registry/new-york/example/NumberFieldDecimal.vue
new file mode 100644
index 00000000..8f39c4e4
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/example/NumberFieldDecimal.vue
@@ -0,0 +1,27 @@
+
+
+
+
+ Number
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/example/NumberFieldDemo.vue b/apps/www/src/lib/registry/new-york/example/NumberFieldDemo.vue
new file mode 100644
index 00000000..a3b25e0f
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/example/NumberFieldDemo.vue
@@ -0,0 +1,21 @@
+
+
+
+
+ Age
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/example/NumberFieldDisabled.vue b/apps/www/src/lib/registry/new-york/example/NumberFieldDisabled.vue
new file mode 100644
index 00000000..02f7447b
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/example/NumberFieldDisabled.vue
@@ -0,0 +1,21 @@
+
+
+
+
+ Age
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/example/NumberFieldForm.vue b/apps/www/src/lib/registry/new-york/example/NumberFieldForm.vue
new file mode 100644
index 00000000..c866b191
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/example/NumberFieldForm.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/example/NumberFieldPercentage.vue b/apps/www/src/lib/registry/new-york/example/NumberFieldPercentage.vue
new file mode 100644
index 00000000..102c915b
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/example/NumberFieldPercentage.vue
@@ -0,0 +1,27 @@
+
+
+
+
+ Percent
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/number-field/NumberField.vue b/apps/www/src/lib/registry/new-york/ui/number-field/NumberField.vue
new file mode 100644
index 00000000..c89c06fb
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/number-field/NumberField.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldContent.vue b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldContent.vue
new file mode 100644
index 00000000..12c8d7ed
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldContent.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldDecrement.vue b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldDecrement.vue
new file mode 100644
index 00000000..0829f9b0
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldDecrement.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldIncrement.vue b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldIncrement.vue
new file mode 100644
index 00000000..45690be8
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldIncrement.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldInput.vue b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldInput.vue
new file mode 100644
index 00000000..9a0ee0e6
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldInput.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldLabel.vue b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldLabel.vue
new file mode 100644
index 00000000..b6c2737a
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/number-field/NumberFieldLabel.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/apps/www/src/lib/registry/new-york/ui/number-field/index.ts b/apps/www/src/lib/registry/new-york/ui/number-field/index.ts
new file mode 100644
index 00000000..3d33c8d8
--- /dev/null
+++ b/apps/www/src/lib/registry/new-york/ui/number-field/index.ts
@@ -0,0 +1,6 @@
+export { default as NumberField } from './NumberField.vue'
+export { default as NumberFieldInput } from './NumberFieldInput.vue'
+export { default as NumberFieldLabel } from './NumberFieldLabel.vue'
+export { default as NumberFieldIncrement } from './NumberFieldIncrement.vue'
+export { default as NumberFieldDecrement } from './NumberFieldDecrement.vue'
+export { default as NumberFieldContent } from './NumberFieldContent.vue'
diff --git a/apps/www/src/public/registry/index.json b/apps/www/src/public/registry/index.json
index 1fa7d985..1ab8b586 100644
--- a/apps/www/src/public/registry/index.json
+++ b/apps/www/src/public/registry/index.json
@@ -553,6 +553,23 @@
],
"type": "components:ui"
},
+ {
+ "name": "number-field",
+ "dependencies": [],
+ "registryDependencies": [
+ "utils"
+ ],
+ "files": [
+ "ui/number-field/NumberField.vue",
+ "ui/number-field/NumberFieldContent.vue",
+ "ui/number-field/NumberFieldDecrement.vue",
+ "ui/number-field/NumberFieldIncrement.vue",
+ "ui/number-field/NumberFieldInput.vue",
+ "ui/number-field/NumberFieldLabel.vue",
+ "ui/number-field/index.ts"
+ ],
+ "type": "components:ui"
+ },
{
"name": "pagination",
"dependencies": [],
diff --git a/apps/www/src/public/registry/styles/default/number-field.json b/apps/www/src/public/registry/styles/default/number-field.json
new file mode 100644
index 00000000..8b2c3934
--- /dev/null
+++ b/apps/www/src/public/registry/styles/default/number-field.json
@@ -0,0 +1,38 @@
+{
+ "name": "number-field",
+ "dependencies": [],
+ "registryDependencies": [
+ "utils"
+ ],
+ "files": [
+ {
+ "name": "NumberField.vue",
+ "content": "\n\n\n \n \n \n\n"
+ },
+ {
+ "name": "NumberFieldContent.vue",
+ "content": "\n\n\n \n \n
\n\n"
+ },
+ {
+ "name": "NumberFieldDecrement.vue",
+ "content": "\n\n\n \n \n \n \n \n\n"
+ },
+ {
+ "name": "NumberFieldIncrement.vue",
+ "content": "\n\n\n \n \n \n \n \n\n"
+ },
+ {
+ "name": "NumberFieldInput.vue",
+ "content": "\n\n\n \n\n"
+ },
+ {
+ "name": "NumberFieldLabel.vue",
+ "content": "\n\n\n \n \n \n\n"
+ },
+ {
+ "name": "index.ts",
+ "content": "export { default as NumberField } from './NumberField.vue'\nexport { default as NumberFieldInput } from './NumberFieldInput.vue'\nexport { default as NumberFieldLabel } from './NumberFieldLabel.vue'\nexport { default as NumberFieldIncrement } from './NumberFieldIncrement.vue'\nexport { default as NumberFieldDecrement } from './NumberFieldDecrement.vue'\nexport { default as NumberFieldContent } from './NumberFieldContent.vue'\n"
+ }
+ ],
+ "type": "components:ui"
+}