@nuxt/ui 3.0.2 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/.nuxt/ui/accordion.ts +2 -2
  2. package/.nuxt/ui/alert.ts +29 -29
  3. package/.nuxt/ui/avatar-group.ts +1 -1
  4. package/.nuxt/ui/avatar.ts +3 -3
  5. package/.nuxt/ui/badge.ts +33 -33
  6. package/.nuxt/ui/breadcrumb.ts +5 -5
  7. package/.nuxt/ui/button.ts +43 -43
  8. package/.nuxt/ui/calendar.ts +17 -17
  9. package/.nuxt/ui/card.ts +5 -5
  10. package/.nuxt/ui/carousel.ts +6 -6
  11. package/.nuxt/ui/checkbox-group.ts +61 -0
  12. package/.nuxt/ui/checkbox.ts +140 -27
  13. package/.nuxt/ui/chip.ts +8 -8
  14. package/.nuxt/ui/color-picker.ts +3 -3
  15. package/.nuxt/ui/command-palette.ts +14 -14
  16. package/.nuxt/ui/context-menu.ts +33 -33
  17. package/.nuxt/ui/drawer.ts +10 -10
  18. package/.nuxt/ui/dropdown-menu.ts +34 -34
  19. package/.nuxt/ui/form-field.ts +6 -6
  20. package/.nuxt/ui/index.ts +1 -0
  21. package/.nuxt/ui/input-menu.ts +42 -42
  22. package/.nuxt/ui/input-number.ts +20 -20
  23. package/.nuxt/ui/input.ts +23 -23
  24. package/.nuxt/ui/kbd.ts +4 -4
  25. package/.nuxt/ui/link.ts +3 -3
  26. package/.nuxt/ui/modal.ts +5 -5
  27. package/.nuxt/ui/navigation-menu.ts +78 -80
  28. package/.nuxt/ui/pin-input.ts +20 -20
  29. package/.nuxt/ui/popover.ts +2 -2
  30. package/.nuxt/ui/progress.ts +17 -17
  31. package/.nuxt/ui/radio-group.ts +250 -35
  32. package/.nuxt/ui/select-menu.ts +36 -33
  33. package/.nuxt/ui/select.ts +32 -32
  34. package/.nuxt/ui/separator.ts +8 -8
  35. package/.nuxt/ui/skeleton.ts +1 -1
  36. package/.nuxt/ui/slideover.ts +4 -4
  37. package/.nuxt/ui/slider.ts +16 -16
  38. package/.nuxt/ui/stepper.ts +18 -18
  39. package/.nuxt/ui/switch.ts +20 -20
  40. package/.nuxt/ui/table.ts +15 -15
  41. package/.nuxt/ui/tabs.ts +32 -32
  42. package/.nuxt/ui/textarea.ts +40 -35
  43. package/.nuxt/ui/toast.ts +24 -24
  44. package/.nuxt/ui/tooltip.ts +2 -2
  45. package/.nuxt/ui/tree.ts +18 -18
  46. package/.nuxt/ui.css +63 -12
  47. package/README.md +15 -0
  48. package/cli/templates.mjs +18 -17
  49. package/dist/module.json +5 -5
  50. package/dist/module.mjs +12 -7
  51. package/dist/runtime/components/Accordion.vue +36 -93
  52. package/dist/runtime/components/Accordion.vue.d.ts +75 -0
  53. package/dist/runtime/components/Alert.vue +37 -100
  54. package/dist/runtime/components/Alert.vue.d.ts +81 -0
  55. package/dist/runtime/components/App.vue +28 -34
  56. package/dist/runtime/components/App.vue.d.ts +24 -0
  57. package/dist/runtime/components/Avatar.vue +42 -75
  58. package/dist/runtime/components/Avatar.vue.d.ts +39 -0
  59. package/dist/runtime/components/AvatarGroup.vue +40 -77
  60. package/dist/runtime/components/AvatarGroup.vue.d.ts +31 -0
  61. package/dist/runtime/components/Badge.vue +33 -62
  62. package/dist/runtime/components/Badge.vue.d.ts +41 -0
  63. package/dist/runtime/components/Breadcrumb.vue +37 -90
  64. package/dist/runtime/components/Breadcrumb.vue.d.ts +64 -0
  65. package/dist/runtime/components/Button.vue +95 -104
  66. package/dist/runtime/components/Button.vue.d.ts +48 -0
  67. package/dist/runtime/components/ButtonGroup.vue +20 -46
  68. package/dist/runtime/components/ButtonGroup.vue.d.ts +34 -0
  69. package/dist/runtime/components/Calendar.vue +67 -150
  70. package/dist/runtime/components/Calendar.vue.d.ts +111 -0
  71. package/dist/runtime/components/Card.vue +18 -40
  72. package/dist/runtime/components/Card.vue.d.ts +29 -0
  73. package/dist/runtime/components/Carousel.vue +112 -234
  74. package/dist/runtime/components/Carousel.vue.d.ts +122 -0
  75. package/dist/runtime/components/Checkbox.vue +52 -93
  76. package/dist/runtime/components/Checkbox.vue.d.ts +73 -0
  77. package/dist/runtime/components/CheckboxGroup.vue +121 -0
  78. package/dist/runtime/components/CheckboxGroup.vue.d.ts +78 -0
  79. package/dist/runtime/components/Chip.vue +26 -69
  80. package/dist/runtime/components/Chip.vue.d.ts +57 -0
  81. package/dist/runtime/components/Collapsible.vue +22 -41
  82. package/dist/runtime/components/Collapsible.vue.d.ts +35 -0
  83. package/dist/runtime/components/ColorPicker.vue +111 -197
  84. package/dist/runtime/components/ColorPicker.vue.d.ts +48 -0
  85. package/dist/runtime/components/CommandPalette.vue +96 -237
  86. package/dist/runtime/components/CommandPalette.vue.d.ts +161 -0
  87. package/dist/runtime/components/Container.vue +15 -28
  88. package/dist/runtime/components/Container.vue.d.ts +18 -0
  89. package/dist/runtime/components/ContextMenu.vue +34 -133
  90. package/dist/runtime/components/ContextMenu.vue.d.ts +107 -0
  91. package/dist/runtime/components/ContextMenuContent.vue +73 -81
  92. package/dist/runtime/components/ContextMenuContent.vue.d.ts +65 -0
  93. package/dist/runtime/components/Drawer.vue +49 -83
  94. package/dist/runtime/components/Drawer.vue.d.ts +78 -0
  95. package/dist/runtime/components/DropdownMenu.vue +39 -142
  96. package/dist/runtime/components/DropdownMenu.vue.d.ts +117 -0
  97. package/dist/runtime/components/DropdownMenuContent.vue +78 -88
  98. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +68 -0
  99. package/dist/runtime/components/Form.vue +135 -220
  100. package/dist/runtime/components/Form.vue.d.ts +69 -0
  101. package/dist/runtime/components/FormField.vue +35 -77
  102. package/dist/runtime/components/FormField.vue.d.ts +61 -0
  103. package/dist/runtime/components/Icon.vue +12 -19
  104. package/dist/runtime/components/Icon.vue.d.ts +8 -0
  105. package/dist/runtime/components/Input.vue +82 -140
  106. package/dist/runtime/components/Input.vue.d.ts +76 -0
  107. package/dist/runtime/components/InputMenu.vue +185 -332
  108. package/dist/runtime/components/InputMenu.vue.d.ts +324 -0
  109. package/dist/runtime/components/InputNumber.vue +71 -133
  110. package/dist/runtime/components/InputNumber.vue.d.ts +182 -0
  111. package/dist/runtime/components/Kbd.vue +20 -46
  112. package/dist/runtime/components/Kbd.vue.d.ts +34 -0
  113. package/dist/runtime/components/Link.vue +98 -176
  114. package/dist/runtime/components/Link.vue.d.ts +93 -0
  115. package/dist/runtime/components/LinkBase.vue +33 -42
  116. package/dist/runtime/components/LinkBase.vue.d.ts +25 -0
  117. package/dist/runtime/components/Modal.vue +53 -116
  118. package/dist/runtime/components/Modal.vue.d.ts +93 -0
  119. package/dist/runtime/components/NavigationMenu.vue +77 -209
  120. package/dist/runtime/components/NavigationMenu.vue.d.ts +139 -0
  121. package/dist/runtime/components/OverlayProvider.vue +14 -18
  122. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  123. package/dist/runtime/components/Pagination.vue +46 -140
  124. package/dist/runtime/components/Pagination.vue.d.ts +119 -0
  125. package/dist/runtime/components/PinInput.vue +61 -78
  126. package/dist/runtime/components/PinInput.vue.d.ts +57 -0
  127. package/dist/runtime/components/Popover.vue +47 -84
  128. package/dist/runtime/components/Popover.vue.d.ts +63 -0
  129. package/dist/runtime/components/Progress.vue +70 -131
  130. package/dist/runtime/components/Progress.vue.d.ts +66 -0
  131. package/dist/runtime/components/RadioGroup.vue +70 -132
  132. package/dist/runtime/components/RadioGroup.vue.d.ts +91 -0
  133. package/dist/runtime/components/Select.vue +110 -224
  134. package/dist/runtime/components/Select.vue.d.ts +145 -0
  135. package/dist/runtime/components/SelectMenu.vue +161 -310
  136. package/dist/runtime/components/SelectMenu.vue.d.ts +196 -0
  137. package/dist/runtime/components/Separator.vue +29 -71
  138. package/dist/runtime/components/Separator.vue.d.ts +54 -0
  139. package/dist/runtime/components/Skeleton.vue +21 -23
  140. package/dist/runtime/components/Skeleton.vue.d.ts +17 -0
  141. package/dist/runtime/components/Slideover.vue +53 -120
  142. package/dist/runtime/components/Slideover.vue.d.ts +94 -0
  143. package/dist/runtime/components/Slider.vue +46 -84
  144. package/dist/runtime/components/Slider.vue.d.ts +52 -0
  145. package/dist/runtime/components/Stepper.vue +45 -115
  146. package/dist/runtime/components/Stepper.vue.d.ts +83 -0
  147. package/dist/runtime/components/Switch.vue +45 -93
  148. package/dist/runtime/components/Switch.vue.d.ts +70 -0
  149. package/dist/runtime/components/Table.vue +163 -267
  150. package/dist/runtime/components/Table.vue.d.ts +183 -0
  151. package/dist/runtime/components/Tabs.vue +41 -107
  152. package/dist/runtime/components/Tabs.vue.d.ts +88 -0
  153. package/dist/runtime/components/Textarea.vue +113 -158
  154. package/dist/runtime/components/Textarea.vue.d.ts +78 -0
  155. package/dist/runtime/components/Toast.vue +49 -110
  156. package/dist/runtime/components/Toast.vue.d.ts +157 -0
  157. package/dist/runtime/components/Toaster.vue +70 -107
  158. package/dist/runtime/components/Toaster.vue.d.ts +38 -0
  159. package/dist/runtime/components/Tooltip.vue +38 -65
  160. package/dist/runtime/components/Tooltip.vue.d.ts +50 -0
  161. package/dist/runtime/components/Tree.vue +59 -166
  162. package/dist/runtime/components/Tree.vue.d.ts +111 -0
  163. package/dist/runtime/composables/defineShortcuts.d.ts +1 -1
  164. package/dist/runtime/composables/defineShortcuts.js +6 -0
  165. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  166. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  167. package/dist/runtime/composables/useFormField.d.ts +2 -2
  168. package/dist/runtime/composables/useKbd.d.ts +1 -0
  169. package/dist/runtime/composables/useKbd.js +4 -3
  170. package/dist/runtime/composables/useOverlay.d.ts +14 -8
  171. package/dist/runtime/composables/useOverlay.js +20 -7
  172. package/dist/runtime/composables/usePortal.d.ts +6 -0
  173. package/dist/runtime/composables/usePortal.js +17 -0
  174. package/dist/runtime/index.css +1 -1
  175. package/dist/runtime/inertia/components/Link.vue +146 -0
  176. package/dist/runtime/inertia/components/Link.vue.d.ts +63 -0
  177. package/dist/runtime/inertia/stubs.d.ts +43 -0
  178. package/dist/runtime/inertia/stubs.js +82 -0
  179. package/dist/runtime/locale/bg.d.ts +3 -0
  180. package/dist/runtime/locale/bg.js +54 -0
  181. package/dist/runtime/locale/index.d.ts +5 -1
  182. package/dist/runtime/locale/index.js +5 -1
  183. package/dist/runtime/locale/kk.d.ts +3 -0
  184. package/dist/runtime/locale/kk.js +54 -0
  185. package/dist/runtime/locale/tj.d.ts +3 -0
  186. package/dist/runtime/locale/tj.js +54 -0
  187. package/dist/runtime/locale/ug_cn.d.ts +3 -0
  188. package/dist/runtime/locale/ug_cn.js +55 -0
  189. package/dist/runtime/types/form.d.ts +4 -1
  190. package/dist/runtime/types/index.d.ts +1 -0
  191. package/dist/runtime/types/index.js +1 -0
  192. package/dist/runtime/types/tv.d.ts +53 -0
  193. package/dist/runtime/types/tv.js +0 -0
  194. package/dist/runtime/types/utils.d.ts +7 -17
  195. package/dist/runtime/types/utils.js +1 -0
  196. package/dist/runtime/utils/link.d.ts +3 -3
  197. package/dist/runtime/utils/link.js +1 -0
  198. package/dist/runtime/utils/tv.js +2 -2
  199. package/dist/runtime/vue/components/Icon.vue +7 -8
  200. package/dist/runtime/vue/components/Icon.vue.d.ts +5 -0
  201. package/dist/runtime/vue/components/Link.vue +118 -202
  202. package/dist/runtime/vue/components/Link.vue.d.ts +93 -0
  203. package/dist/runtime/vue/stubs.d.ts +2 -2
  204. package/dist/shared/{ui.BkNUP964.mjs → ui.CbtTMMzt.mjs} +631 -366
  205. package/dist/types.d.mts +3 -5
  206. package/dist/unplugin.d.mts +6 -2
  207. package/dist/unplugin.mjs +25 -4
  208. package/dist/vite.d.mts +1 -1
  209. package/dist/vite.mjs +2 -2
  210. package/package.json +96 -54
  211. package/dist/module.cjs +0 -62
  212. package/dist/module.d.cts +0 -45
  213. package/dist/module.d.ts +0 -45
  214. package/dist/shared/ui.BL-XB3u1.cjs +0 -3555
  215. package/dist/types.d.ts +0 -7
  216. package/dist/unplugin.cjs +0 -232
  217. package/dist/unplugin.d.cts +0 -62
  218. package/dist/unplugin.d.ts +0 -62
  219. package/dist/vite.cjs +0 -23
  220. package/dist/vite.d.cts +0 -15
  221. package/dist/vite.d.ts +0 -15
package/.nuxt/ui/tree.ts CHANGED
@@ -20,9 +20,9 @@ export default {
20
20
  "slots": {
21
21
  "root": "relative isolate",
22
22
  "item": "",
23
- "listWithChildren": "ms-4.5 border-s border-(--ui-border)",
23
+ "listWithChildren": "ms-4.5 border-s border-default",
24
24
  "itemWithChildren": "ps-1.5 -ms-px",
25
- "link": "relative group w-full flex items-center text-sm before:absolute before:inset-y-px before:inset-x-0 before:z-[-1] before:rounded-[calc(var(--ui-radius)*1.5)] focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
25
+ "link": "relative group w-full flex items-center text-sm before:absolute before:inset-y-px before:inset-x-0 before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
26
26
  "linkLeadingIcon": "shrink-0",
27
27
  "linkLabel": "truncate",
28
28
  "linkTrailing": "ms-auto inline-flex gap-1.5 items-center",
@@ -31,25 +31,25 @@ export default {
31
31
  "variants": {
32
32
  "color": {
33
33
  "primary": {
34
- "link": "focus-visible:before:ring-(--ui-primary)"
34
+ "link": "focus-visible:before:ring-primary"
35
35
  },
36
36
  "secondary": {
37
- "link": "focus-visible:before:ring-(--ui-secondary)"
37
+ "link": "focus-visible:before:ring-secondary"
38
38
  },
39
39
  "success": {
40
- "link": "focus-visible:before:ring-(--ui-success)"
40
+ "link": "focus-visible:before:ring-success"
41
41
  },
42
42
  "info": {
43
- "link": "focus-visible:before:ring-(--ui-info)"
43
+ "link": "focus-visible:before:ring-info"
44
44
  },
45
45
  "warning": {
46
- "link": "focus-visible:before:ring-(--ui-warning)"
46
+ "link": "focus-visible:before:ring-warning"
47
47
  },
48
48
  "error": {
49
- "link": "focus-visible:before:ring-(--ui-error)"
49
+ "link": "focus-visible:before:ring-error"
50
50
  },
51
51
  "neutral": {
52
- "link": "focus-visible:before:ring-(--ui-border-inverted)"
52
+ "link": "focus-visible:before:ring-inverted"
53
53
  }
54
54
  },
55
55
  "size": {
@@ -81,11 +81,11 @@ export default {
81
81
  },
82
82
  "selected": {
83
83
  "true": {
84
- "link": "before:bg-(--ui-bg-elevated)"
84
+ "link": "before:bg-elevated"
85
85
  },
86
86
  "false": {
87
87
  "link": [
88
- "hover:not-disabled:text-(--ui-text-highlighted) hover:not-disabled:before:bg-(--ui-bg-elevated)/50",
88
+ "hover:not-disabled:text-highlighted hover:not-disabled:before:bg-elevated/50",
89
89
  "transition-colors before:transition-colors"
90
90
  ]
91
91
  }
@@ -101,49 +101,49 @@ export default {
101
101
  "color": "primary" as typeof color[number],
102
102
  "selected": true,
103
103
  "class": {
104
- "link": "text-(--ui-primary)"
104
+ "link": "text-primary"
105
105
  }
106
106
  },
107
107
  {
108
108
  "color": "secondary" as typeof color[number],
109
109
  "selected": true,
110
110
  "class": {
111
- "link": "text-(--ui-secondary)"
111
+ "link": "text-secondary"
112
112
  }
113
113
  },
114
114
  {
115
115
  "color": "success" as typeof color[number],
116
116
  "selected": true,
117
117
  "class": {
118
- "link": "text-(--ui-success)"
118
+ "link": "text-success"
119
119
  }
120
120
  },
121
121
  {
122
122
  "color": "info" as typeof color[number],
123
123
  "selected": true,
124
124
  "class": {
125
- "link": "text-(--ui-info)"
125
+ "link": "text-info"
126
126
  }
127
127
  },
128
128
  {
129
129
  "color": "warning" as typeof color[number],
130
130
  "selected": true,
131
131
  "class": {
132
- "link": "text-(--ui-warning)"
132
+ "link": "text-warning"
133
133
  }
134
134
  },
135
135
  {
136
136
  "color": "error" as typeof color[number],
137
137
  "selected": true,
138
138
  "class": {
139
- "link": "text-(--ui-error)"
139
+ "link": "text-error"
140
140
  }
141
141
  },
142
142
  {
143
143
  "color": "neutral" as typeof color[number],
144
144
  "selected": true,
145
145
  "class": {
146
- "link": "text-(--ui-text-highlighted)"
146
+ "link": "text-highlighted"
147
147
  }
148
148
  }
149
149
  ],
package/.nuxt/ui.css CHANGED
@@ -1,17 +1,17 @@
1
1
  @source "./ui";
2
2
 
3
- @theme default {
4
- --color-old-neutral-50: oklch(0.985 0 0);
5
- --color-old-neutral-100: oklch(0.97 0 0);
6
- --color-old-neutral-200: oklch(0.922 0 0);
7
- --color-old-neutral-300: oklch(0.87 0 0);
8
- --color-old-neutral-400: oklch(0.708 0 0);
9
- --color-old-neutral-500: oklch(0.556 0 0);
10
- --color-old-neutral-600: oklch(0.439 0 0);
11
- --color-old-neutral-700: oklch(0.371 0 0);
12
- --color-old-neutral-800: oklch(0.269 0 0);
13
- --color-old-neutral-900: oklch(0.205 0 0);
14
- --color-old-neutral-950: oklch(0.145 0 0);
3
+ @theme default inline {
4
+ --color-old-neutral-50: oklch(98.5% 0 0);
5
+ --color-old-neutral-100: oklch(97% 0 0);
6
+ --color-old-neutral-200: oklch(92.2% 0 0);
7
+ --color-old-neutral-300: oklch(87% 0 0);
8
+ --color-old-neutral-400: oklch(70.8% 0 0);
9
+ --color-old-neutral-500: oklch(55.6% 0 0);
10
+ --color-old-neutral-600: oklch(43.9% 0 0);
11
+ --color-old-neutral-700: oklch(37.1% 0 0);
12
+ --color-old-neutral-800: oklch(26.9% 0 0);
13
+ --color-old-neutral-900: oklch(20.5% 0 0);
14
+ --color-old-neutral-950: oklch(14.5% 0 0);
15
15
  --color-primary-50: var(--ui-color-primary-50);
16
16
  --color-primary-100: var(--ui-color-primary-100);
17
17
  --color-primary-200: var(--ui-color-primary-200);
@@ -89,4 +89,55 @@
89
89
  --color-neutral-800: var(--ui-color-neutral-800);
90
90
  --color-neutral-900: var(--ui-color-neutral-900);
91
91
  --color-neutral-950: var(--ui-color-neutral-950);
92
+ --color-primary: var(--ui-primary);
93
+ --color-secondary: var(--ui-secondary);
94
+ --color-success: var(--ui-success);
95
+ --color-info: var(--ui-info);
96
+ --color-warning: var(--ui-warning);
97
+ --color-error: var(--ui-error);
98
+ --radius-xs: calc(var(--ui-radius) * 0.5);
99
+ --radius-sm: var(--ui-radius);
100
+ --radius-md: calc(var(--ui-radius) * 1.5);
101
+ --radius-lg: calc(var(--ui-radius) * 2);
102
+ --radius-xl: calc(var(--ui-radius) * 3);
103
+ --radius-2xl: calc(var(--ui-radius) * 4);
104
+ --radius-3xl: calc(var(--ui-radius) * 6);
105
+ --text-color-dimmed: var(--ui-text-dimmed);
106
+ --text-color-muted: var(--ui-text-muted);
107
+ --text-color-toned: var(--ui-text-toned);
108
+ --text-color-default: var(--ui-text);
109
+ --text-color-highlighted: var(--ui-text-highlighted);
110
+ --text-color-inverted: var(--ui-text-inverted);
111
+ --background-color-default: var(--ui-bg);
112
+ --background-color-muted: var(--ui-bg-muted);
113
+ --background-color-elevated: var(--ui-bg-elevated);
114
+ --background-color-accented: var(--ui-bg-accented);
115
+ --background-color-inverted: var(--ui-bg-inverted);
116
+ --background-color-border: var(--ui-border);
117
+ --border-color-default: var(--ui-border);
118
+ --border-color-muted: var(--ui-border-muted);
119
+ --border-color-accented: var(--ui-border-accented);
120
+ --border-color-inverted: var(--ui-border-inverted);
121
+ --border-color-bg: var(--ui-bg);
122
+ --ring-color-default: var(--ui-border);
123
+ --ring-color-muted: var(--ui-border-muted);
124
+ --ring-color-accented: var(--ui-border-accented);
125
+ --ring-color-inverted: var(--ui-border-inverted);
126
+ --ring-color-bg: var(--ui-bg);
127
+ --ring-offset-color-default: var(--ui-border);
128
+ --ring-offset-color-muted: var(--ui-border-muted);
129
+ --ring-offset-color-accented: var(--ui-border-accented);
130
+ --ring-offset-color-inverted: var(--ui-border-inverted);
131
+ --ring-offset-color-bg: var(--ui-bg);
132
+ --divide-color-default: var(--ui-border);
133
+ --divide-color-muted: var(--ui-border-muted);
134
+ --divide-color-accented: var(--ui-border-accented);
135
+ --divide-color-inverted: var(--ui-border-inverted);
136
+ --divide-color-bg: var(--ui-bg);
137
+ --outline-color-default: var(--ui-border);
138
+ --outline-color-inverted: var(--ui-border-inverted);
139
+ --stroke-default: var(--ui-border);
140
+ --stroke-inverted: var(--ui-border-inverted);
141
+ --fill-default: var(--ui-border);
142
+ --fill-inverted: var(--ui-border-inverted);
92
143
  }
package/README.md CHANGED
@@ -16,6 +16,10 @@ Nuxt UI harnesses the combined strengths of [Reka UI](https://reka-ui.com/), [Ta
16
16
  > [!NOTE]
17
17
  > You are on the `v3` development branch, check out the [v2 branch](https://github.com/nuxt/ui/tree/v2) for Nuxt UI v2.
18
18
 
19
+ > [!TIP]
20
+ > **Looking for more components ?**
21
+ > Check out [Nuxt UI Pro](https://ui.nuxt.com/pro), a collection of premium Vue components, composables, and utilities built on top of Nuxt UI for faster and more powerful app development.
22
+
19
23
  ## Documentation
20
24
 
21
25
  Visit https://ui.nuxt.com to explore the documentation.
@@ -104,6 +108,17 @@ app.mount('#app')
104
108
 
105
109
  Learn more in the [installation guide](https://ui.nuxt.com/getting-started/installation/vue).
106
110
 
111
+ ## Contribution
112
+
113
+ Thank you for considering contributing to Nuxt UI. Here are a few ways you can get involved:
114
+
115
+ - Reporting Bugs: If you come across any bugs or issues, please check out the reporting bugs guide to learn how to submit a bug report.
116
+ - Suggestions: Have any thoughts to enhance Nuxt UI? We'd love to hear them! Check out the [contribution guide](https://ui.nuxt.com/getting-started/contribution) to share your suggestions.
117
+
118
+ ## Local Development
119
+
120
+ Follow the docs to [set up your local development environment](https://ui.nuxt.com/getting-started/contribution#local-development) and contribute.
121
+
107
122
  ## Credits
108
123
 
109
124
  - [nuxt/nuxt](https://github.com/nuxt/nuxt)
package/cli/templates.mjs CHANGED
@@ -31,13 +31,10 @@ const component = ({ name, primitive, pro, prose, content }) => {
31
31
  ? `
32
32
  <script lang="ts">
33
33
  import type { AppConfig } from '@nuxt/schema'
34
- import _appConfig from '#build/app.config'
35
34
  import theme from '#build/${path}/${prose ? 'prose/' : ''}${content ? 'content/' : ''}${kebabName}'
36
- import { tv } from '${pro ? '#ui/utils/tv' : '../utils/tv'}'
35
+ import type { ComponentConfig } from '../types/utils'
37
36
 
38
- const appConfig${camelName} = _appConfig as AppConfig & { ${key}: { ${prose ? 'prose: { ' : ''}${camelName}: Partial<typeof theme> } }${prose ? ' }' : ''}
39
-
40
- const ${camelName} = tv({ extend: tv(theme), ...(appConfig${camelName}.${key}?.${prose ? 'prose?.' : ''}${camelName} || {}) })
37
+ type ${upperName} = ComponentConfig<typeof theme, AppConfig, ${upperName}${pro ? `, '${key}'` : ''}>
41
38
 
42
39
  export interface ${upperName}Props {
43
40
  /**
@@ -46,7 +43,7 @@ export interface ${upperName}Props {
46
43
  */
47
44
  as?: any
48
45
  class?: any
49
- ui?: Partial<typeof ${camelName}.slots>
46
+ ui?: ${upperName}['slots']
50
47
  }
51
48
 
52
49
  export interface ${upperName}Slots {
@@ -55,12 +52,17 @@ export interface ${upperName}Slots {
55
52
  </script>
56
53
 
57
54
  <script setup lang="ts">
55
+ import { computed } from 'vue'
58
56
  import { Primitive } from 'reka-ui'
57
+ import { useAppConfig } from '#imports'
58
+ import { tv } from '../utils/tv'
59
59
 
60
60
  const props = defineProps<${upperName}Props>()
61
61
  defineSlots<${upperName}Slots>()
62
62
 
63
- const ui = ${camelName}()
63
+ const appConfig = useAppConfig() as ${upperName}['AppConfig']
64
+
65
+ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.${camelName} || {}) })())
64
66
  </script>
65
67
 
66
68
  <template>
@@ -71,22 +73,16 @@ const ui = ${camelName}()
71
73
  `
72
74
  : `
73
75
  <script lang="ts">
74
- import type { VariantProps } from 'tailwind-variants'
75
76
  import type { ${upperName}RootProps, ${upperName}RootEmits } from 'reka-ui'
76
77
  import type { AppConfig } from '@nuxt/schema'
77
- import _appConfig from '#build/app.config'
78
78
  import theme from '#build/${path}/${prose ? 'prose/' : ''}${content ? 'content/' : ''}${kebabName}'
79
- import { tv } from '${pro ? '#ui/utils/tv' : '../utils/tv'}'
80
-
81
- const appConfig${camelName} = _appConfig as AppConfig & { ${key}: { ${prose ? 'prose: { ' : ''}${camelName}: Partial<typeof theme> } }${prose ? ' }' : ''}
79
+ import type { ComponentConfig } from '../types/utils'
82
80
 
83
- const ${camelName} = tv({ extend: tv(theme), ...(appConfig${camelName}.${key}?.${prose ? 'prose?.' : ''}${camelName} || {}) })
84
-
85
- type ${upperName}Variants = VariantProps<typeof ${camelName}>
81
+ type ${upperName} = ComponentConfig<typeof theme, AppConfig, ${upperName}${pro ? `, '${key}'` : ''}>
86
82
 
87
83
  export interface ${upperName}Props extends Pick<${upperName}RootProps> {
88
84
  class?: any
89
- ui?: Partial<typeof ${camelName}.slots>
85
+ ui?: ${upperName}['slots']
90
86
  }
91
87
 
92
88
  export interface ${upperName}Emits extends ${upperName}RootEmits {}
@@ -95,16 +91,21 @@ export interface ${upperName}Slots {}
95
91
  </script>
96
92
 
97
93
  <script setup lang="ts">
94
+ import { computed } from 'vue'
98
95
  import { ${upperName}Root, useForwardPropsEmits } from 'reka-ui'
99
96
  import { reactivePick } from '@vueuse/core'
97
+ import { useAppConfig } from '#imports'
98
+ import { tv } from '../utils/tv'
100
99
 
101
100
  const props = defineProps<${upperName}Props>()
102
101
  const emits = defineEmits<${upperName}Emits>()
103
102
  const slots = defineSlots<${upperName}Slots>()
104
103
 
104
+ const appConfig = useAppConfig() as ${upperName}['AppConfig']
105
+
105
106
  const rootProps = useForwardPropsEmits(reactivePick(props), emits)
106
107
 
107
- const ui = ${camelName}()
108
+ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.${camelName} || {}) })())
108
109
  </script>
109
110
 
110
111
  <template>
package/dist/module.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
- "name": "ui",
2
+ "name": "@nuxt/ui",
3
+ "version": "3.1.1",
4
+ "docs": "https://ui.nuxt.com/getting-started/installation/nuxt",
3
5
  "configKey": "ui",
4
6
  "compatibility": {
5
7
  "nuxt": ">=3.16.0"
6
8
  },
7
- "docs": "https://ui.nuxt.com/getting-started/installation/nuxt",
8
- "version": "3.0.2",
9
9
  "builder": {
10
- "@nuxt/module-builder": "0.8.4",
11
- "unbuild": "2.0.0"
10
+ "@nuxt/module-builder": "1.0.1",
11
+ "unbuild": "3.5.0"
12
12
  }
13
13
  }
package/dist/module.mjs CHANGED
@@ -1,19 +1,24 @@
1
1
  import { defu } from 'defu';
2
2
  import { defineNuxtModule, createResolver, addVitePlugin, addPlugin, addComponentsDir, addImportsDir, hasNuxtModule, installModule } from '@nuxt/kit';
3
- import { d as defaultOptions, r as resolveColors, a as getDefaultUiConfig, b as addTemplates } from './shared/ui.BkNUP964.mjs';
3
+ import { d as defaultOptions, r as resolveColors, a as getDefaultUiConfig, b as addTemplates } from './shared/ui.CbtTMMzt.mjs';
4
4
  import '../dist/runtime/utils/index.js';
5
5
  import 'node:url';
6
6
  import 'scule';
7
7
  import 'tailwindcss/colors';
8
+ import 'knitwork';
9
+
10
+ const name = "@nuxt/ui";
11
+ const version = "3.1.1";
8
12
 
9
13
  const module = defineNuxtModule({
10
14
  meta: {
11
- name: "ui",
15
+ name,
16
+ version,
17
+ docs: "https://ui.nuxt.com/getting-started/installation/nuxt",
12
18
  configKey: "ui",
13
19
  compatibility: {
14
20
  nuxt: ">=3.16.0"
15
- },
16
- docs: "https://ui.nuxt.com/getting-started/installation/nuxt"
21
+ }
17
22
  },
18
23
  defaults: defaultOptions,
19
24
  async setup(options, nuxt) {
@@ -31,9 +36,9 @@ const module = defineNuxtModule({
31
36
  } else {
32
37
  nuxt.options.postcss.plugins["@tailwindcss/postcss"] = {};
33
38
  }
34
- async function registerModule(name, key, options2) {
35
- if (!hasNuxtModule(name)) {
36
- await installModule(name, options2);
39
+ async function registerModule(name2, key, options2) {
40
+ if (!hasNuxtModule(name2)) {
41
+ await installModule(name2, options2);
37
42
  } else {
38
43
  nuxt.options[key] = defu(nuxt.options[key], options2);
39
44
  }
@@ -1,93 +1,36 @@
1
- <!-- eslint-disable vue/block-tag-newline -->
2
- <script lang="ts">
3
- import type { AccordionRootProps, AccordionRootEmits } from 'reka-ui'
4
- import type { AppConfig } from '@nuxt/schema'
5
- import _appConfig from '#build/app.config'
6
- import theme from '#build/ui/accordion'
7
- import { tv } from '../utils/tv'
8
- import type { DynamicSlots } from '../types/utils'
9
-
10
- const appConfigAccordion = _appConfig as AppConfig & { ui: { accordion: Partial<typeof theme> } }
11
-
12
- const accordion = tv({ extend: tv(theme), ...(appConfigAccordion.ui?.accordion || {}) })
13
-
14
- export interface AccordionItem {
15
- label?: string
16
- /**
17
- * @IconifyIcon
18
- */
19
- icon?: string
20
- /**
21
- * @IconifyIcon
22
- */
23
- trailingIcon?: string
24
- slot?: string
25
- content?: string
26
- /** A unique value for the accordion item. Defaults to the index. */
27
- value?: string
28
- disabled?: boolean
29
- [key: string]: any
30
- }
31
-
32
- export interface AccordionProps<T extends AccordionItem = AccordionItem> extends Pick<AccordionRootProps, 'collapsible' | 'defaultValue' | 'modelValue' | 'type' | 'disabled' | 'unmountOnHide'> {
33
- /**
34
- * The element or component this component should render as.
35
- * @defaultValue 'div'
36
- */
37
- as?: any
38
- items?: T[]
39
- /**
40
- * The icon displayed on the right side of the trigger.
41
- * @defaultValue appConfig.ui.icons.chevronDown
42
- * @IconifyIcon
43
- */
44
- trailingIcon?: string
45
- /**
46
- * The key used to get the label from the item.
47
- * @defaultValue 'label'
48
- */
49
- labelKey?: string
50
- class?: any
51
- ui?: Partial<typeof accordion.slots>
52
- }
53
-
54
- export interface AccordionEmits extends AccordionRootEmits {}
55
-
56
- type SlotProps<T extends AccordionItem> = (props: { item: T, index: number, open: boolean }) => any
57
-
58
- export type AccordionSlots<T extends AccordionItem = AccordionItem> = {
59
- leading: SlotProps<T>
60
- default: SlotProps<T>
61
- trailing: SlotProps<T>
62
- content: SlotProps<T>
63
- body: SlotProps<T>
64
- } & DynamicSlots<T, 'body', { index: number, open: boolean }>
65
-
1
+ <script>
2
+ import theme from "#build/ui/accordion";
66
3
  </script>
67
4
 
68
- <script setup lang="ts" generic="T extends AccordionItem">
69
- import { computed } from 'vue'
70
- import { AccordionRoot, AccordionItem, AccordionHeader, AccordionTrigger, AccordionContent, useForwardPropsEmits } from 'reka-ui'
71
- import { reactivePick } from '@vueuse/core'
72
- import { useAppConfig } from '#imports'
73
- import { get } from '../utils'
74
- import UIcon from './Icon.vue'
75
-
76
- const props = withDefaults(defineProps<AccordionProps<T>>(), {
77
- type: 'single',
78
- collapsible: true,
79
- unmountOnHide: true,
80
- labelKey: 'label'
81
- })
82
- const emits = defineEmits<AccordionEmits>()
83
- const slots = defineSlots<AccordionSlots<T>>()
84
-
85
- const appConfig = useAppConfig()
86
- const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'collapsible', 'defaultValue', 'disabled', 'modelValue', 'type', 'unmountOnHide'), emits)
87
-
88
- const ui = computed(() => accordion({
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { AccordionRoot, AccordionItem, AccordionHeader, AccordionTrigger, AccordionContent, useForwardPropsEmits } from "reka-ui";
8
+ import { reactivePick } from "@vueuse/core";
9
+ import { useAppConfig } from "#imports";
10
+ import { get } from "../utils";
11
+ import { tv } from "../utils/tv";
12
+ import UIcon from "./Icon.vue";
13
+ const props = defineProps({
14
+ as: { type: null, required: false },
15
+ items: { type: Array, required: false },
16
+ trailingIcon: { type: String, required: false },
17
+ labelKey: { type: String, required: false, default: "label" },
18
+ class: { type: null, required: false },
19
+ ui: { type: null, required: false },
20
+ collapsible: { type: Boolean, required: false, default: true },
21
+ defaultValue: { type: null, required: false },
22
+ modelValue: { type: null, required: false },
23
+ type: { type: String, required: false, default: "single" },
24
+ disabled: { type: Boolean, required: false },
25
+ unmountOnHide: { type: Boolean, required: false, default: true }
26
+ });
27
+ const emits = defineEmits(["update:modelValue"]);
28
+ const slots = defineSlots();
29
+ const appConfig = useAppConfig();
30
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "collapsible", "defaultValue", "disabled", "modelValue", "type", "unmountOnHide"), emits);
31
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.accordion || {} })({
89
32
  disabled: props.disabled
90
- }))
33
+ }));
91
34
  </script>
92
35
 
93
36
  <template>
@@ -100,14 +43,14 @@ const ui = computed(() => accordion({
100
43
  :disabled="item.disabled"
101
44
  :class="ui.item({ class: props.ui?.item })"
102
45
  >
103
- <AccordionHeader :class="ui.header({ class: props.ui?.header })">
46
+ <AccordionHeader as="div" :class="ui.header({ class: props.ui?.header })">
104
47
  <AccordionTrigger :class="ui.trigger({ class: props.ui?.trigger, disabled: item.disabled })">
105
48
  <slot name="leading" :item="item" :index="index" :open="open">
106
49
  <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
107
50
  </slot>
108
51
 
109
- <span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
110
- <slot :item="item" :index="index" :open="open">{{ get(item, props.labelKey as string) }}</slot>
52
+ <span v-if="get(item, props.labelKey) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
53
+ <slot :item="item" :index="index" :open="open">{{ get(item, props.labelKey) }}</slot>
111
54
  </span>
112
55
 
113
56
  <slot name="trailing" :item="item" :index="index" :open="open">
@@ -116,10 +59,10 @@ const ui = computed(() => accordion({
116
59
  </AccordionTrigger>
117
60
  </AccordionHeader>
118
61
 
119
- <AccordionContent v-if="item.content || !!slots.content || (item.slot && !!slots[item.slot as keyof AccordionSlots<T>]) || !!slots.body || (item.slot && !!slots[`${item.slot}-body` as keyof AccordionSlots<T>])" :class="ui.content({ class: props.ui?.content })">
120
- <slot :name="((item.slot || 'content') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
62
+ <AccordionContent v-if="item.content || !!slots.content || item.slot && !!slots[item.slot] || !!slots.body || item.slot && !!slots[`${item.slot}-body`]" :class="ui.content({ class: props.ui?.content })">
63
+ <slot :name="item.slot || 'content'" :item="item" :index="index" :open="open">
121
64
  <div :class="ui.body({ class: props.ui?.body })">
122
- <slot :name="((item.slot ? `${item.slot}-body`: 'body') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
65
+ <slot :name="item.slot ? `${item.slot}-body` : 'body'" :item="item" :index="index" :open="open">
123
66
  {{ item.content }}
124
67
  </slot>
125
68
  </div>
@@ -0,0 +1,75 @@
1
+ import type { AccordionRootProps, AccordionRootEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/accordion';
4
+ import type { DynamicSlots, ComponentConfig } from '../types/utils';
5
+ type Accordion = ComponentConfig<typeof theme, AppConfig, 'accordion'>;
6
+ export interface AccordionItem {
7
+ label?: string;
8
+ /**
9
+ * @IconifyIcon
10
+ */
11
+ icon?: string;
12
+ /**
13
+ * @IconifyIcon
14
+ */
15
+ trailingIcon?: string;
16
+ slot?: string;
17
+ content?: string;
18
+ /** A unique value for the accordion item. Defaults to the index. */
19
+ value?: string;
20
+ disabled?: boolean;
21
+ [key: string]: any;
22
+ }
23
+ export interface AccordionProps<T extends AccordionItem = AccordionItem> extends Pick<AccordionRootProps, 'collapsible' | 'defaultValue' | 'modelValue' | 'type' | 'disabled' | 'unmountOnHide'> {
24
+ /**
25
+ * The element or component this component should render as.
26
+ * @defaultValue 'div'
27
+ */
28
+ as?: any;
29
+ items?: T[];
30
+ /**
31
+ * The icon displayed on the right side of the trigger.
32
+ * @defaultValue appConfig.ui.icons.chevronDown
33
+ * @IconifyIcon
34
+ */
35
+ trailingIcon?: string;
36
+ /**
37
+ * The key used to get the label from the item.
38
+ * @defaultValue 'label'
39
+ */
40
+ labelKey?: string;
41
+ class?: any;
42
+ ui?: Accordion['slots'];
43
+ }
44
+ export interface AccordionEmits extends AccordionRootEmits {
45
+ }
46
+ type SlotProps<T extends AccordionItem> = (props: {
47
+ item: T;
48
+ index: number;
49
+ open: boolean;
50
+ }) => any;
51
+ export type AccordionSlots<T extends AccordionItem = AccordionItem> = {
52
+ leading: SlotProps<T>;
53
+ default: SlotProps<T>;
54
+ trailing: SlotProps<T>;
55
+ content: SlotProps<T>;
56
+ body: SlotProps<T>;
57
+ } & DynamicSlots<T, 'body', {
58
+ index: number;
59
+ open: boolean;
60
+ }>;
61
+ declare const _default: <T extends AccordionItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
62
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
63
+ readonly "onUpdate:modelValue"?: ((value: string | string[] | undefined) => any) | undefined;
64
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:modelValue"> & AccordionProps<T> & Partial<{}>> & import("vue").PublicProps;
65
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
66
+ attrs: any;
67
+ slots: AccordionSlots<T>;
68
+ emit: (evt: "update:modelValue", value: string | string[] | undefined) => void;
69
+ }>) => import("vue").VNode & {
70
+ __ctx?: Awaited<typeof __VLS_setup>;
71
+ };
72
+ export default _default;
73
+ type __VLS_PrettifyLocal<T> = {
74
+ [K in keyof T]: T[K];
75
+ } & {};