@nuxt/ui 3.0.1 → 3.1.0

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 (228) hide show
  1. package/.nuxt/ui/accordion.ts +25 -4
  2. package/.nuxt/ui/alert.ts +52 -31
  3. package/.nuxt/ui/avatar-group.ts +24 -3
  4. package/.nuxt/ui/avatar.ts +26 -5
  5. package/.nuxt/ui/badge.ts +56 -35
  6. package/.nuxt/ui/breadcrumb.ts +28 -7
  7. package/.nuxt/ui/button-group.ts +23 -2
  8. package/.nuxt/ui/button.ts +66 -45
  9. package/.nuxt/ui/calendar.ts +39 -18
  10. package/.nuxt/ui/card.ts +28 -7
  11. package/.nuxt/ui/carousel.ts +29 -8
  12. package/.nuxt/ui/checkbox-group.ts +82 -0
  13. package/.nuxt/ui/checkbox.ts +163 -29
  14. package/.nuxt/ui/chip.ts +31 -10
  15. package/.nuxt/ui/collapsible.ts +23 -2
  16. package/.nuxt/ui/color-picker.ts +26 -5
  17. package/.nuxt/ui/command-palette.ts +37 -16
  18. package/.nuxt/ui/container.ts +24 -3
  19. package/.nuxt/ui/context-menu.ts +56 -35
  20. package/.nuxt/ui/drawer.ts +33 -12
  21. package/.nuxt/ui/dropdown-menu.ts +57 -36
  22. package/.nuxt/ui/form-field.ts +29 -8
  23. package/.nuxt/ui/form.ts +23 -2
  24. package/.nuxt/ui/index.ts +1 -0
  25. package/.nuxt/ui/input-menu.ts +65 -44
  26. package/.nuxt/ui/input-number.ts +43 -22
  27. package/.nuxt/ui/input.ts +46 -25
  28. package/.nuxt/ui/kbd.ts +27 -6
  29. package/.nuxt/ui/link.ts +26 -5
  30. package/.nuxt/ui/modal.ts +28 -7
  31. package/.nuxt/ui/navigation-menu.ts +103 -84
  32. package/.nuxt/ui/pagination.ts +23 -2
  33. package/.nuxt/ui/pin-input.ts +43 -22
  34. package/.nuxt/ui/popover.ts +25 -4
  35. package/.nuxt/ui/progress.ts +40 -19
  36. package/.nuxt/ui/radio-group.ts +273 -37
  37. package/.nuxt/ui/select-menu.ts +59 -35
  38. package/.nuxt/ui/select.ts +55 -34
  39. package/.nuxt/ui/separator.ts +31 -10
  40. package/.nuxt/ui/skeleton.ts +24 -3
  41. package/.nuxt/ui/slideover.ts +27 -6
  42. package/.nuxt/ui/slider.ts +39 -18
  43. package/.nuxt/ui/stepper.ts +41 -20
  44. package/.nuxt/ui/switch.ts +44 -23
  45. package/.nuxt/ui/table.ts +38 -17
  46. package/.nuxt/ui/tabs.ts +55 -34
  47. package/.nuxt/ui/textarea.ts +63 -37
  48. package/.nuxt/ui/toast.ts +47 -26
  49. package/.nuxt/ui/toaster.ts +23 -2
  50. package/.nuxt/ui/tooltip.ts +25 -4
  51. package/.nuxt/ui/tree.ts +41 -20
  52. package/.nuxt/ui.css +56 -12
  53. package/README.md +11 -0
  54. package/cli/templates.mjs +18 -17
  55. package/dist/module.d.mts +2 -1
  56. package/dist/module.json +5 -5
  57. package/dist/module.mjs +11 -7
  58. package/dist/runtime/components/Accordion.vue +36 -92
  59. package/dist/runtime/components/Accordion.vue.d.ts +91 -0
  60. package/dist/runtime/components/Alert.vue +37 -100
  61. package/dist/runtime/components/Alert.vue.d.ts +96 -0
  62. package/dist/runtime/components/App.vue +28 -34
  63. package/dist/runtime/components/App.vue.d.ts +24 -0
  64. package/dist/runtime/components/Avatar.vue +47 -78
  65. package/dist/runtime/components/Avatar.vue.d.ts +60 -0
  66. package/dist/runtime/components/AvatarGroup.vue +40 -77
  67. package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
  68. package/dist/runtime/components/Badge.vue +33 -62
  69. package/dist/runtime/components/Badge.vue.d.ts +62 -0
  70. package/dist/runtime/components/Breadcrumb.vue +36 -88
  71. package/dist/runtime/components/Breadcrumb.vue.d.ts +82 -0
  72. package/dist/runtime/components/Button.vue +96 -105
  73. package/dist/runtime/components/Button.vue.d.ts +73 -0
  74. package/dist/runtime/components/ButtonGroup.vue +20 -46
  75. package/dist/runtime/components/ButtonGroup.vue.d.ts +55 -0
  76. package/dist/runtime/components/Calendar.vue +73 -127
  77. package/dist/runtime/components/Calendar.vue.d.ts +107 -0
  78. package/dist/runtime/components/Card.vue +18 -40
  79. package/dist/runtime/components/Card.vue.d.ts +38 -0
  80. package/dist/runtime/components/Carousel.vue +112 -230
  81. package/dist/runtime/components/Carousel.vue.d.ts +120 -0
  82. package/dist/runtime/components/Checkbox.vue +52 -93
  83. package/dist/runtime/components/Checkbox.vue.d.ts +76 -0
  84. package/dist/runtime/components/CheckboxGroup.vue +121 -0
  85. package/dist/runtime/components/CheckboxGroup.vue.d.ts +75 -0
  86. package/dist/runtime/components/Chip.vue +26 -69
  87. package/dist/runtime/components/Chip.vue.d.ts +71 -0
  88. package/dist/runtime/components/Collapsible.vue +22 -41
  89. package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
  90. package/dist/runtime/components/ColorPicker.vue +111 -197
  91. package/dist/runtime/components/ColorPicker.vue.d.ts +63 -0
  92. package/dist/runtime/components/CommandPalette.vue +94 -234
  93. package/dist/runtime/components/CommandPalette.vue.d.ts +173 -0
  94. package/dist/runtime/components/Container.vue +15 -28
  95. package/dist/runtime/components/Container.vue.d.ts +27 -0
  96. package/dist/runtime/components/ContextMenu.vue +32 -119
  97. package/dist/runtime/components/ContextMenu.vue.d.ts +127 -0
  98. package/dist/runtime/components/ContextMenuContent.vue +71 -72
  99. package/dist/runtime/components/ContextMenuContent.vue.d.ts +105 -0
  100. package/dist/runtime/components/Drawer.vue +49 -87
  101. package/dist/runtime/components/Drawer.vue.d.ts +88 -0
  102. package/dist/runtime/components/DropdownMenu.vue +37 -129
  103. package/dist/runtime/components/DropdownMenu.vue.d.ts +141 -0
  104. package/dist/runtime/components/DropdownMenuContent.vue +76 -79
  105. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +55 -0
  106. package/dist/runtime/components/Form.vue +135 -219
  107. package/dist/runtime/components/Form.vue.d.ts +66 -0
  108. package/dist/runtime/components/FormField.vue +36 -77
  109. package/dist/runtime/components/FormField.vue.d.ts +70 -0
  110. package/dist/runtime/components/Icon.vue +12 -19
  111. package/dist/runtime/components/Icon.vue.d.ts +17 -0
  112. package/dist/runtime/components/Input.vue +82 -140
  113. package/dist/runtime/components/Input.vue.d.ts +91 -0
  114. package/dist/runtime/components/InputMenu.vue +193 -302
  115. package/dist/runtime/components/InputMenu.vue.d.ts +312 -0
  116. package/dist/runtime/components/InputNumber.vue +71 -133
  117. package/dist/runtime/components/InputNumber.vue.d.ts +193 -0
  118. package/dist/runtime/components/Kbd.vue +20 -46
  119. package/dist/runtime/components/Kbd.vue.d.ts +55 -0
  120. package/dist/runtime/components/Link.vue +98 -173
  121. package/dist/runtime/components/Link.vue.d.ts +124 -0
  122. package/dist/runtime/components/LinkBase.vue +33 -41
  123. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  124. package/dist/runtime/components/Modal.vue +53 -116
  125. package/dist/runtime/components/Modal.vue.d.ts +109 -0
  126. package/dist/runtime/components/NavigationMenu.vue +78 -186
  127. package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
  128. package/dist/runtime/components/OverlayProvider.vue +14 -18
  129. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  130. package/dist/runtime/components/Pagination.vue +46 -140
  131. package/dist/runtime/components/Pagination.vue.d.ts +143 -0
  132. package/dist/runtime/components/PinInput.vue +61 -78
  133. package/dist/runtime/components/PinInput.vue.d.ts +68 -0
  134. package/dist/runtime/components/Popover.vue +47 -84
  135. package/dist/runtime/components/Popover.vue.d.ts +80 -0
  136. package/dist/runtime/components/Progress.vue +70 -131
  137. package/dist/runtime/components/Progress.vue.d.ts +97 -0
  138. package/dist/runtime/components/RadioGroup.vue +75 -126
  139. package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
  140. package/dist/runtime/components/Select.vue +115 -202
  141. package/dist/runtime/components/Select.vue.d.ts +139 -0
  142. package/dist/runtime/components/SelectMenu.vue +167 -281
  143. package/dist/runtime/components/SelectMenu.vue.d.ts +184 -0
  144. package/dist/runtime/components/Separator.vue +29 -71
  145. package/dist/runtime/components/Separator.vue.d.ts +75 -0
  146. package/dist/runtime/components/Skeleton.vue +21 -23
  147. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  148. package/dist/runtime/components/Slideover.vue +53 -120
  149. package/dist/runtime/components/Slideover.vue.d.ts +111 -0
  150. package/dist/runtime/components/Slider.vue +46 -84
  151. package/dist/runtime/components/Slider.vue.d.ts +71 -0
  152. package/dist/runtime/components/Stepper.vue +44 -113
  153. package/dist/runtime/components/Stepper.vue.d.ts +89 -0
  154. package/dist/runtime/components/Switch.vue +45 -93
  155. package/dist/runtime/components/Switch.vue.d.ts +73 -0
  156. package/dist/runtime/components/Table.vue +165 -264
  157. package/dist/runtime/components/Table.vue.d.ts +183 -0
  158. package/dist/runtime/components/Tabs.vue +40 -105
  159. package/dist/runtime/components/Tabs.vue.d.ts +104 -0
  160. package/dist/runtime/components/Textarea.vue +113 -158
  161. package/dist/runtime/components/Textarea.vue.d.ts +95 -0
  162. package/dist/runtime/components/Toast.vue +49 -110
  163. package/dist/runtime/components/Toast.vue.d.ts +95 -0
  164. package/dist/runtime/components/Toaster.vue +70 -107
  165. package/dist/runtime/components/Toaster.vue.d.ts +63 -0
  166. package/dist/runtime/components/Tooltip.vue +38 -65
  167. package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
  168. package/dist/runtime/components/Tree.vue +57 -150
  169. package/dist/runtime/components/Tree.vue.d.ts +128 -0
  170. package/dist/runtime/composables/defineShortcuts.d.ts +1 -1
  171. package/dist/runtime/composables/defineShortcuts.js +0 -1
  172. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  173. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  174. package/dist/runtime/composables/useFormField.d.ts +2 -2
  175. package/dist/runtime/composables/useFormField.js +1 -1
  176. package/dist/runtime/composables/useOverlay.d.ts +16 -8
  177. package/dist/runtime/composables/useOverlay.js +14 -6
  178. package/dist/runtime/composables/usePortal.d.ts +6 -0
  179. package/dist/runtime/composables/usePortal.js +17 -0
  180. package/dist/runtime/index.css +1 -1
  181. package/dist/runtime/inertia/components/Link.vue +146 -0
  182. package/dist/runtime/inertia/components/Link.vue.d.ts +92 -0
  183. package/dist/runtime/inertia/stubs.d.ts +43 -0
  184. package/dist/runtime/inertia/stubs.js +82 -0
  185. package/dist/runtime/locale/bg.d.ts +3 -0
  186. package/dist/runtime/locale/bg.js +54 -0
  187. package/dist/runtime/locale/hy.d.ts +3 -0
  188. package/dist/runtime/locale/hy.js +54 -0
  189. package/dist/runtime/locale/index.d.ts +6 -1
  190. package/dist/runtime/locale/index.js +6 -1
  191. package/dist/runtime/locale/kk.d.ts +3 -0
  192. package/dist/runtime/locale/kk.js +54 -0
  193. package/dist/runtime/locale/tj.d.ts +3 -0
  194. package/dist/runtime/locale/tj.js +54 -0
  195. package/dist/runtime/locale/ug_cn.d.ts +3 -0
  196. package/dist/runtime/locale/ug_cn.js +55 -0
  197. package/dist/runtime/types/form.d.ts +5 -1
  198. package/dist/runtime/types/index.d.ts +2 -0
  199. package/dist/runtime/types/index.js +2 -0
  200. package/dist/runtime/types/utils.d.ts +70 -10
  201. package/dist/runtime/utils/index.d.ts +1 -0
  202. package/dist/runtime/utils/index.js +3 -0
  203. package/dist/runtime/utils/link.d.ts +4 -27
  204. package/dist/runtime/utils/link.js +32 -1
  205. package/dist/runtime/utils/tv.js +2 -2
  206. package/dist/runtime/vue/components/Icon.vue +7 -8
  207. package/dist/runtime/vue/components/Icon.vue.d.ts +14 -0
  208. package/dist/runtime/vue/components/Link.vue +118 -199
  209. package/dist/runtime/vue/components/Link.vue.d.ts +124 -0
  210. package/dist/runtime/vue/stubs.d.ts +5 -0
  211. package/dist/runtime/vue/stubs.js +11 -2
  212. package/dist/shared/{ui.BCaWD5Ek.mjs → ui.D7lOOabO.mjs} +623 -364
  213. package/dist/types.d.mts +5 -1
  214. package/dist/unplugin.d.mts +6 -1
  215. package/dist/unplugin.mjs +25 -4
  216. package/dist/vite.mjs +1 -1
  217. package/package.json +122 -64
  218. package/dist/module.cjs +0 -62
  219. package/dist/module.d.cts +0 -44
  220. package/dist/module.d.ts +0 -44
  221. package/dist/shared/ui.C6uTSFTI.cjs +0 -3555
  222. package/dist/types.d.ts +0 -1
  223. package/dist/unplugin.cjs +0 -232
  224. package/dist/unplugin.d.cts +0 -61
  225. package/dist/unplugin.d.ts +0 -61
  226. package/dist/vite.cjs +0 -23
  227. package/dist/vite.d.cts +0 -15
  228. package/dist/vite.d.ts +0 -15
@@ -1,147 +1,93 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { CalendarRootProps, CalendarRootEmits, RangeCalendarRootEmits, DateRange, CalendarCellTriggerProps } from 'reka-ui'
4
- import type { DateValue } from '@internationalized/date'
5
- import type { AppConfig } from '@nuxt/schema'
6
- import _appConfig from '#build/app.config'
7
- import theme from '#build/ui/calendar'
8
- import { tv } from '../utils/tv'
9
- import type { PartialString } from '../types/utils'
10
-
11
- const appConfigCalendar = _appConfig as AppConfig & { ui: { calendar: Partial<typeof theme> } }
12
-
13
- const calendar = tv({ extend: tv(theme), ...(appConfigCalendar.ui?.calendar || {}) })
14
-
15
- type CalendarVariants = VariantProps<typeof calendar>
16
-
17
- type CalendarModelValue<R extends boolean = false, M extends boolean = false> = R extends true
18
- ? DateRange
19
- : M extends true
20
- ? DateValue[]
21
- : DateValue
22
-
23
- export interface CalendarProps<R extends boolean, M extends boolean> extends Omit<CalendarRootProps, 'as' | 'asChild' | 'modelValue' | 'defaultValue' | 'dir' | 'locale' | 'calendarLabel' | 'multiple'> {
24
- /**
25
- * The element or component this component should render as.
26
- * @defaultValue 'div'
27
- */
28
- as?: any
29
- /**
30
- * The icon to use for the next year control.
31
- * @defaultValue appConfig.ui.icons.chevronDoubleRight
32
- * @IconifyIcon
33
- */
34
- nextYearIcon?: string
35
- /**
36
- * The icon to use for the next month control.
37
- * @defaultValue appConfig.ui.icons.chevronRight
38
- * @IconifyIcon
39
- */
40
- nextMonthIcon?: string
41
- /**
42
- * The icon to use for the previous year control.
43
- * @defaultValue appConfig.ui.icons.chevronDoubleLeft
44
- * @IconifyIcon
45
- */
46
- prevYearIcon?: string
47
- /**
48
- * The icon to use for the previous month control.
49
- * @defaultValue appConfig.ui.icons.chevronLeft
50
- * @IconifyIcon
51
- */
52
- prevMonthIcon?: string
53
- /**
54
- * @defaultValue 'primary'
55
- */
56
- color?: CalendarVariants['color']
57
- /**
58
- * @defaultValue 'md'
59
- */
60
- size?: CalendarVariants['size']
61
- /** Whether or not a range of dates can be selected */
62
- range?: R & boolean
63
- /** Whether or not multiple dates can be selected */
64
- multiple?: M & boolean
65
- /** Show month controls */
66
- monthControls?: boolean
67
- /** Show year controls */
68
- yearControls?: boolean
69
- defaultValue?: CalendarModelValue<R, M>
70
- modelValue?: CalendarModelValue<R, M>
71
- class?: any
72
- ui?: PartialString<typeof calendar.slots>
73
- }
74
-
75
- export interface CalendarEmits<R extends boolean, M extends boolean> extends Omit<CalendarRootEmits & RangeCalendarRootEmits, 'update:modelValue'> {
76
- 'update:modelValue': [date: CalendarModelValue<R, M>]
77
- }
78
-
79
- export interface CalendarSlots {
80
- 'heading': (props: { value: string }) => any
81
- 'day': (props: Pick<CalendarCellTriggerProps, 'day'>) => any
82
- 'week-day': (props: { day: string }) => any
83
- }
1
+ <script>
2
+ import theme from "#build/ui/calendar";
84
3
  </script>
85
4
 
86
- <script setup lang="ts" generic="R extends boolean = false, M extends boolean = false">
87
- import { computed } from 'vue'
88
- import { useForwardPropsEmits } from 'reka-ui'
89
- import { Calendar as SingleCalendar, RangeCalendar } from 'reka-ui/namespaced'
90
- import { reactiveOmit } from '@vueuse/core'
91
- import { useAppConfig } from '#imports'
92
- import { useLocale } from '../composables/useLocale'
93
- import UButton from './Button.vue'
94
-
95
- const props = withDefaults(defineProps<CalendarProps<R, M>>(), {
96
- fixedWeeks: true,
97
- monthControls: true,
98
- yearControls: true
99
- })
100
- const emits = defineEmits<CalendarEmits<R, M>>()
101
- defineSlots<CalendarSlots>()
102
-
103
- const appConfig = useAppConfig()
104
- const { code: locale, dir, t } = useLocale()
105
-
106
- const rootProps = useForwardPropsEmits(reactiveOmit(props, 'range', 'modelValue', 'defaultValue', 'color', 'size', 'monthControls', 'yearControls', 'class', 'ui'), emits)
107
-
108
- const nextYearIcon = computed(() => props.nextYearIcon || (dir.value === 'rtl' ? appConfig.ui.icons.chevronDoubleLeft : appConfig.ui.icons.chevronDoubleRight))
109
- const nextMonthIcon = computed(() => props.nextMonthIcon || (dir.value === 'rtl' ? appConfig.ui.icons.chevronLeft : appConfig.ui.icons.chevronRight))
110
- const prevYearIcon = computed(() => props.prevYearIcon || (dir.value === 'rtl' ? appConfig.ui.icons.chevronDoubleRight : appConfig.ui.icons.chevronDoubleLeft))
111
- const prevMonthIcon = computed(() => props.prevMonthIcon || (dir.value === 'rtl' ? appConfig.ui.icons.chevronRight : appConfig.ui.icons.chevronLeft))
112
-
113
- const ui = computed(() => calendar({
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { useForwardPropsEmits } from "reka-ui";
8
+ import { Calendar as SingleCalendar, RangeCalendar } from "reka-ui/namespaced";
9
+ import { reactiveOmit } from "@vueuse/core";
10
+ import { useAppConfig } from "#imports";
11
+ import { useLocale } from "../composables/useLocale";
12
+ import { tv } from "../utils/tv";
13
+ import UButton from "./Button.vue";
14
+ const props = defineProps({
15
+ as: { type: null, required: false },
16
+ nextYearIcon: { type: String, required: false },
17
+ nextYear: { type: Object, required: false },
18
+ nextMonthIcon: { type: String, required: false },
19
+ nextMonth: { type: Object, required: false },
20
+ prevYearIcon: { type: String, required: false },
21
+ prevYear: { type: Object, required: false },
22
+ prevMonthIcon: { type: String, required: false },
23
+ prevMonth: { type: Object, required: false },
24
+ color: { type: null, required: false },
25
+ size: { type: null, required: false },
26
+ range: { type: Boolean, required: false },
27
+ multiple: { type: Boolean, required: false },
28
+ monthControls: { type: Boolean, required: false, default: true },
29
+ yearControls: { type: Boolean, required: false, default: true },
30
+ defaultValue: { type: null, required: false },
31
+ modelValue: { type: null, required: false },
32
+ class: { type: null, required: false },
33
+ ui: { type: null, required: false },
34
+ defaultPlaceholder: { type: null, required: false },
35
+ placeholder: { type: null, required: false },
36
+ allowNonContiguousRanges: { type: Boolean, required: false },
37
+ pagedNavigation: { type: Boolean, required: false },
38
+ preventDeselect: { type: Boolean, required: false },
39
+ weekStartsOn: { type: Number, required: false },
40
+ weekdayFormat: { type: String, required: false },
41
+ fixedWeeks: { type: Boolean, required: false, default: true },
42
+ maxValue: { type: null, required: false },
43
+ minValue: { type: null, required: false },
44
+ numberOfMonths: { type: Number, required: false },
45
+ disabled: { type: Boolean, required: false },
46
+ readonly: { type: Boolean, required: false },
47
+ initialFocus: { type: Boolean, required: false },
48
+ isDateDisabled: { type: Function, required: false },
49
+ isDateUnavailable: { type: Function, required: false },
50
+ nextPage: { type: Function, required: false },
51
+ prevPage: { type: Function, required: false }
52
+ });
53
+ const emits = defineEmits(["update:modelValue", "update:placeholder", "update:startValue"]);
54
+ defineSlots();
55
+ const { code: locale, dir, t } = useLocale();
56
+ const appConfig = useAppConfig();
57
+ const rootProps = useForwardPropsEmits(reactiveOmit(props, "range", "modelValue", "defaultValue", "color", "size", "monthControls", "yearControls", "class", "ui"), emits);
58
+ const nextYearIcon = computed(() => props.nextYearIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronDoubleLeft : appConfig.ui.icons.chevronDoubleRight));
59
+ const nextMonthIcon = computed(() => props.nextMonthIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronLeft : appConfig.ui.icons.chevronRight));
60
+ const prevYearIcon = computed(() => props.prevYearIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronDoubleRight : appConfig.ui.icons.chevronDoubleLeft));
61
+ const prevMonthIcon = computed(() => props.prevMonthIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronRight : appConfig.ui.icons.chevronLeft));
62
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.calendar || {} })({
114
63
  color: props.color,
115
64
  size: props.size
116
- }))
117
-
118
- function paginateYear(date: DateValue, sign: -1 | 1) {
65
+ }));
66
+ function paginateYear(date, sign) {
119
67
  if (sign === -1) {
120
- return date.subtract({ years: 1 })
68
+ return date.subtract({ years: 1 });
121
69
  }
122
-
123
- return date.add({ years: 1 })
70
+ return date.add({ years: 1 });
124
71
  }
125
-
126
- const Calendar = computed(() => props.range ? RangeCalendar : SingleCalendar)
72
+ const Calendar = computed(() => props.range ? RangeCalendar : SingleCalendar);
127
73
  </script>
128
74
 
129
75
  <template>
130
76
  <Calendar.Root
131
77
  v-slot="{ weekDays, grid }"
132
78
  v-bind="rootProps"
133
- :model-value="(modelValue as CalendarModelValue<true & false>)"
134
- :default-value="(defaultValue as CalendarModelValue<true & false>)"
79
+ :model-value="modelValue"
80
+ :default-value="defaultValue"
135
81
  :locale="locale"
136
82
  :dir="dir"
137
83
  :class="ui.root({ class: [props.class, props.ui?.root] })"
138
84
  >
139
85
  <Calendar.Header :class="ui.header({ class: props.ui?.header })">
140
- <Calendar.Prev v-if="props.yearControls" :prev-page="(date: DateValue) => paginateYear(date, -1)" :aria-label="t('calendar.prevYear')" as-child>
141
- <UButton :icon="prevYearIcon" :size="props.size" color="neutral" variant="ghost" />
86
+ <Calendar.Prev v-if="props.yearControls" :prev-page="(date) => paginateYear(date, -1)" :aria-label="t('calendar.prevYear')" as-child>
87
+ <UButton :icon="prevYearIcon" :size="props.size" color="neutral" variant="ghost" v-bind="props.prevYear" />
142
88
  </Calendar.Prev>
143
89
  <Calendar.Prev v-if="props.monthControls" :aria-label="t('calendar.prevMonth')" as-child>
144
- <UButton :icon="prevMonthIcon" :size="props.size" color="neutral" variant="ghost" />
90
+ <UButton :icon="prevMonthIcon" :size="props.size" color="neutral" variant="ghost" v-bind="props.prevMonth" />
145
91
  </Calendar.Prev>
146
92
  <Calendar.Heading v-slot="{ headingValue }" :class="ui.heading({ class: props.ui?.heading })">
147
93
  <slot name="heading" :value="headingValue">
@@ -149,10 +95,10 @@ const Calendar = computed(() => props.range ? RangeCalendar : SingleCalendar)
149
95
  </slot>
150
96
  </Calendar.Heading>
151
97
  <Calendar.Next v-if="props.monthControls" :aria-label="t('calendar.nextMonth')" as-child>
152
- <UButton :icon="nextMonthIcon" :size="props.size" color="neutral" variant="ghost" />
98
+ <UButton :icon="nextMonthIcon" :size="props.size" color="neutral" variant="ghost" v-bind="props.nextMonth" />
153
99
  </Calendar.Next>
154
- <Calendar.Next v-if="props.yearControls" :next-page="(date: DateValue) => paginateYear(date, 1)" :aria-label="t('calendar.nextYear')" as-child>
155
- <UButton :icon="nextYearIcon" :size="props.size" color="neutral" variant="ghost" />
100
+ <Calendar.Next v-if="props.yearControls" :next-page="(date) => paginateYear(date, 1)" :aria-label="t('calendar.nextYear')" as-child>
101
+ <UButton :icon="nextYearIcon" :size="props.size" color="neutral" variant="ghost" v-bind="props.nextYear" />
156
102
  </Calendar.Next>
157
103
  </Calendar.Header>
158
104
  <div :class="ui.body({ class: props.ui?.body })">
@@ -0,0 +1,107 @@
1
+ import type { CalendarRootProps, CalendarRootEmits, RangeCalendarRootProps, RangeCalendarRootEmits, DateRange, CalendarCellTriggerProps } from 'reka-ui';
2
+ import type { DateValue } from '@internationalized/date';
3
+ import type { AppConfig } from '@nuxt/schema';
4
+ import theme from '#build/ui/calendar';
5
+ import type { ButtonProps } from '../types';
6
+ import type { ComponentConfig } from '../types/utils';
7
+ type Calendar = ComponentConfig<typeof theme, AppConfig, 'calendar'>;
8
+ type CalendarDefaultValue<R extends boolean = false, M extends boolean = false> = R extends true ? DateRange : M extends true ? DateValue[] : DateValue;
9
+ type CalendarModelValue<R extends boolean = false, M extends boolean = false> = R extends true ? (DateRange | null) : M extends true ? (DateValue[] | undefined) : (DateValue | undefined);
10
+ type _CalendarRootProps = Omit<CalendarRootProps, 'as' | 'asChild' | 'modelValue' | 'defaultValue' | 'dir' | 'locale' | 'calendarLabel' | 'multiple'>;
11
+ type _RangeCalendarRootProps = Omit<RangeCalendarRootProps, 'as' | 'asChild' | 'modelValue' | 'defaultValue' | 'dir' | 'locale' | 'calendarLabel' | 'multiple'>;
12
+ export interface CalendarProps<R extends boolean = false, M extends boolean = false> extends _RangeCalendarRootProps, _CalendarRootProps {
13
+ /**
14
+ * The element or component this component should render as.
15
+ * @defaultValue 'div'
16
+ */
17
+ as?: any;
18
+ /**
19
+ * The icon to use for the next year control.
20
+ * @defaultValue appConfig.ui.icons.chevronDoubleRight
21
+ * @IconifyIcon
22
+ */
23
+ nextYearIcon?: string;
24
+ /**
25
+ * Configure the next year button.
26
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
27
+ */
28
+ nextYear?: ButtonProps;
29
+ /**
30
+ * The icon to use for the next month control.
31
+ * @defaultValue appConfig.ui.icons.chevronRight
32
+ * @IconifyIcon
33
+ */
34
+ nextMonthIcon?: string;
35
+ /**
36
+ * Configure the next month button.
37
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
38
+ */
39
+ nextMonth?: ButtonProps;
40
+ /**
41
+ * The icon to use for the previous year control.
42
+ * @defaultValue appConfig.ui.icons.chevronDoubleLeft
43
+ * @IconifyIcon
44
+ */
45
+ prevYearIcon?: string;
46
+ /**
47
+ * Configure the prev year button.
48
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
49
+ */
50
+ prevYear?: ButtonProps;
51
+ /**
52
+ * The icon to use for the previous month control.
53
+ * @defaultValue appConfig.ui.icons.chevronLeft
54
+ * @IconifyIcon
55
+ */
56
+ prevMonthIcon?: string;
57
+ /**
58
+ * Configure the prev month button.
59
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
60
+ */
61
+ prevMonth?: ButtonProps;
62
+ /**
63
+ * @defaultValue 'primary'
64
+ */
65
+ color?: Calendar['variants']['color'];
66
+ /**
67
+ * @defaultValue 'md'
68
+ */
69
+ size?: Calendar['variants']['size'];
70
+ /** Whether or not a range of dates can be selected */
71
+ range?: R & boolean;
72
+ /** Whether or not multiple dates can be selected */
73
+ multiple?: M & boolean;
74
+ /** Show month controls */
75
+ monthControls?: boolean;
76
+ /** Show year controls */
77
+ yearControls?: boolean;
78
+ defaultValue?: CalendarDefaultValue<R, M>;
79
+ modelValue?: CalendarModelValue<R, M>;
80
+ class?: any;
81
+ ui?: Calendar['slots'];
82
+ }
83
+ export interface CalendarEmits<R extends boolean, M extends boolean> extends Omit<CalendarRootEmits & RangeCalendarRootEmits, 'update:modelValue'> {
84
+ 'update:modelValue': [date: CalendarModelValue<R, M>];
85
+ }
86
+ export interface CalendarSlots {
87
+ 'heading': (props: {
88
+ value: string;
89
+ }) => any;
90
+ 'day': (props: Pick<CalendarCellTriggerProps, 'day'>) => any;
91
+ 'week-day': (props: {
92
+ day: string;
93
+ }) => any;
94
+ }
95
+ declare const _default: <R extends boolean, M extends boolean>(__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<{
96
+ props: __VLS_PrettifyLocal<any & CalendarProps<R, M> & Partial<{}>> & (import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps);
97
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
98
+ attrs: any;
99
+ slots: Readonly<CalendarSlots> & CalendarSlots;
100
+ emit: ((evt: "update:modelValue", date: CalendarModelValue<R, M>) => void) & ((evt: "update:placeholder", ...args: [date: DateValue] & [date: DateValue]) => void) & ((evt: "update:startValue", date: DateValue | undefined) => void);
101
+ }>) => import("vue").VNode & {
102
+ __ctx?: Awaited<typeof __VLS_setup>;
103
+ };
104
+ export default _default;
105
+ type __VLS_PrettifyLocal<T> = {
106
+ [K in keyof T]: T[K];
107
+ } & {};
@@ -1,45 +1,23 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/ui/card'
6
- import { tv } from '../utils/tv'
7
-
8
- const appConfigCard = _appConfig as AppConfig & { ui: { card: Partial<typeof theme> } }
9
-
10
- const card = tv({ extend: tv(theme), ...(appConfigCard.ui?.card || {}) })
11
-
12
- type CardVariants = VariantProps<typeof card>
13
-
14
- export interface CardProps {
15
- /**
16
- * The element or component this component should render as.
17
- * @defaultValue 'div'
18
- */
19
- as?: any
20
- /**
21
- * @defaultValue 'outline'
22
- */
23
- variant?: CardVariants['variant']
24
- class?: any
25
- ui?: Partial<typeof card.slots>
26
- }
27
-
28
- export interface CardSlots {
29
- header(props?: {}): any
30
- default(props?: {}): any
31
- footer(props?: {}): any
32
- }
1
+ <script>
2
+ import theme from "#build/ui/card";
33
3
  </script>
34
4
 
35
- <script setup lang="ts">
36
- import { computed } from 'vue'
37
- import { Primitive } from 'reka-ui'
38
-
39
- const props = defineProps<CardProps>()
40
- const slots = defineSlots<CardSlots>()
41
-
42
- const ui = computed(() => card({ variant: props.variant }))
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { Primitive } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { tv } from "../utils/tv";
10
+ const props = defineProps({
11
+ as: { type: null, required: false },
12
+ variant: { type: null, required: false },
13
+ class: { type: null, required: false },
14
+ ui: { type: null, required: false }
15
+ });
16
+ const slots = defineSlots();
17
+ const appConfig = useAppConfig();
18
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.card || {} })({
19
+ variant: props.variant
20
+ }));
43
21
  </script>
44
22
 
45
23
  <template>
@@ -0,0 +1,38 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/card';
3
+ import type { ComponentConfig } from '../types/utils';
4
+ type Card = ComponentConfig<typeof theme, AppConfig, 'card'>;
5
+ export interface CardProps {
6
+ /**
7
+ * The element or component this component should render as.
8
+ * @defaultValue 'div'
9
+ */
10
+ as?: any;
11
+ /**
12
+ * @defaultValue 'outline'
13
+ */
14
+ variant?: Card['variants']['variant'];
15
+ class?: any;
16
+ ui?: Card['slots'];
17
+ }
18
+ export interface CardSlots {
19
+ header(props?: {}): any;
20
+ default(props?: {}): any;
21
+ footer(props?: {}): any;
22
+ }
23
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<CardProps>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<CardProps>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<CardSlots> & CardSlots>;
24
+ export default _default;
25
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
26
+ type __VLS_TypePropsToOption<T> = {
27
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
28
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
29
+ } : {
30
+ type: import('vue').PropType<T[K]>;
31
+ required: true;
32
+ };
33
+ };
34
+ type __VLS_WithTemplateSlots<T, S> = T & {
35
+ new (): {
36
+ $slots: S;
37
+ };
38
+ };