@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
@@ -0,0 +1,183 @@
1
+ import type { Ref, WatchOptions } from 'vue';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import type { Cell, Header, RowData, TableMeta } from '@tanstack/table-core';
4
+ import type { CellContext, ColumnDef, ColumnFiltersOptions, ColumnFiltersState, ColumnOrderState, ColumnPinningOptions, ColumnPinningState, ColumnSizingInfoState, ColumnSizingOptions, ColumnSizingState, CoreOptions, ExpandedOptions, ExpandedState, FacetedOptions, GlobalFilterOptions, GroupingOptions, GroupingState, HeaderContext, PaginationOptions, PaginationState, Row, RowPinningOptions, RowPinningState, RowSelectionOptions, RowSelectionState, SortingOptions, SortingState, VisibilityOptions, VisibilityState } from '@tanstack/vue-table';
5
+ import theme from '#build/ui/table';
6
+ import type { ComponentConfig } from '../types/utils';
7
+ declare module '@tanstack/table-core' {
8
+ interface ColumnMeta<TData extends RowData, TValue> {
9
+ class?: {
10
+ th?: string | ((cell: Header<TData, TValue>) => string);
11
+ td?: string | ((cell: Cell<TData, TValue>) => string);
12
+ };
13
+ }
14
+ interface TableMeta<TData> {
15
+ class?: {
16
+ tr?: string | ((row: Row<TData>) => string);
17
+ };
18
+ }
19
+ }
20
+ type Table = ComponentConfig<typeof theme, AppConfig, 'table'>;
21
+ export type TableRow<T> = Row<T>;
22
+ export type TableData = RowData;
23
+ export type TableColumn<T extends TableData, D = unknown> = ColumnDef<T, D>;
24
+ export interface TableOptions<T extends TableData> extends Omit<CoreOptions<T>, 'data' | 'columns' | 'getCoreRowModel' | 'state' | 'onStateChange' | 'renderFallbackValue'> {
25
+ state?: CoreOptions<T>['state'];
26
+ onStateChange?: CoreOptions<T>['onStateChange'];
27
+ renderFallbackValue?: CoreOptions<T>['renderFallbackValue'];
28
+ }
29
+ export interface TableProps<T extends TableData> extends TableOptions<T> {
30
+ /**
31
+ * The element or component this component should render as.
32
+ * @defaultValue 'div'
33
+ */
34
+ as?: any;
35
+ data?: T[];
36
+ columns?: TableColumn<T>[];
37
+ caption?: string;
38
+ meta?: TableMeta<T>;
39
+ /**
40
+ * The text to display when the table is empty.
41
+ * @defaultValue t('table.noData')
42
+ */
43
+ empty?: string;
44
+ /**
45
+ * Whether the table should have a sticky header.
46
+ * @defaultValue false
47
+ */
48
+ sticky?: boolean;
49
+ /** Whether the table should be in loading state. */
50
+ loading?: boolean;
51
+ /**
52
+ * @defaultValue 'primary'
53
+ */
54
+ loadingColor?: Table['variants']['loadingColor'];
55
+ /**
56
+ * @defaultValue 'carousel'
57
+ */
58
+ loadingAnimation?: Table['variants']['loadingAnimation'];
59
+ /**
60
+ * Use the `watchOptions` prop to customize reactivity (for ex: disable deep watching for changes in your data or limiting the max traversal depth). This can improve performance by reducing unnecessary re-renders, but it should be used with caution as it may lead to unexpected behavior if not managed properly.
61
+ * @link [API Docs](https://vuejs.org/api/options-state.html#watch)
62
+ * @link [Guide](https://vuejs.org/guide/essentials/watchers.html)
63
+ * @defaultValue { deep: true }
64
+ */
65
+ watchOptions?: WatchOptions;
66
+ /**
67
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#table-options)
68
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)
69
+ */
70
+ globalFilterOptions?: Omit<GlobalFilterOptions<T>, 'onGlobalFilterChange'>;
71
+ /**
72
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#table-options)
73
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)
74
+ */
75
+ columnFiltersOptions?: Omit<ColumnFiltersOptions<T>, 'getFilteredRowModel' | 'onColumnFiltersChange'>;
76
+ /**
77
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#table-options)
78
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)
79
+ */
80
+ columnPinningOptions?: Omit<ColumnPinningOptions, 'onColumnPinningChange'>;
81
+ /**
82
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#table-options)
83
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)
84
+ */
85
+ columnSizingOptions?: Omit<ColumnSizingOptions, 'onColumnSizingChange' | 'onColumnSizingInfoChange'>;
86
+ /**
87
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#table-options)
88
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)
89
+ */
90
+ visibilityOptions?: Omit<VisibilityOptions, 'onColumnVisibilityChange'>;
91
+ /**
92
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#table-options)
93
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)
94
+ */
95
+ sortingOptions?: Omit<SortingOptions<T>, 'getSortedRowModel' | 'onSortingChange'>;
96
+ /**
97
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#table-options)
98
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)
99
+ */
100
+ groupingOptions?: Omit<GroupingOptions, 'onGroupingChange'>;
101
+ /**
102
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#table-options)
103
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)
104
+ */
105
+ expandedOptions?: Omit<ExpandedOptions<T>, 'getExpandedRowModel' | 'onExpandedChange'>;
106
+ /**
107
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#table-options)
108
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
109
+ */
110
+ rowSelectionOptions?: Omit<RowSelectionOptions<T>, 'onRowSelectionChange'>;
111
+ /**
112
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#table-options)
113
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)
114
+ */
115
+ rowPinningOptions?: Omit<RowPinningOptions<T>, 'onRowPinningChange'>;
116
+ /**
117
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#table-options)
118
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)
119
+ */
120
+ paginationOptions?: Omit<PaginationOptions, 'onPaginationChange'>;
121
+ /**
122
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#table-options)
123
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)
124
+ */
125
+ facetedOptions?: FacetedOptions<T>;
126
+ onSelect?: (row: TableRow<T>, e?: Event) => void;
127
+ class?: any;
128
+ ui?: Table['slots'];
129
+ }
130
+ type DynamicHeaderSlots<T, K = keyof T> = Record<string, (props: HeaderContext<T, unknown>) => any> & Record<`${K extends string ? K : never}-header`, (props: HeaderContext<T, unknown>) => any>;
131
+ type DynamicCellSlots<T, K = keyof T> = Record<string, (props: CellContext<T, unknown>) => any> & Record<`${K extends string ? K : never}-cell`, (props: CellContext<T, unknown>) => any>;
132
+ export type TableSlots<T> = {
133
+ expanded: (props: {
134
+ row: Row<T>;
135
+ }) => any;
136
+ empty: (props?: {}) => any;
137
+ loading: (props?: {}) => any;
138
+ caption: (props?: {}) => any;
139
+ } & DynamicHeaderSlots<T> & DynamicCellSlots<T>;
140
+ declare const _default: <T extends TableData>(__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<{
141
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
142
+ readonly "onUpdate:globalFilter"?: ((value: string) => any) | undefined;
143
+ readonly "onUpdate:columnFilters"?: ((value: ColumnFiltersState) => any) | undefined;
144
+ readonly "onUpdate:columnOrder"?: ((value: ColumnOrderState) => any) | undefined;
145
+ readonly "onUpdate:columnVisibility"?: ((value: VisibilityState) => any) | undefined;
146
+ readonly "onUpdate:columnPinning"?: ((value: ColumnPinningState) => any) | undefined;
147
+ readonly "onUpdate:columnSizing"?: ((value: ColumnSizingState) => any) | undefined;
148
+ readonly "onUpdate:columnSizingInfo"?: ((value: ColumnSizingInfoState) => any) | undefined;
149
+ readonly "onUpdate:rowSelection"?: ((value: RowSelectionState) => any) | undefined;
150
+ readonly "onUpdate:rowPinning"?: ((value: RowPinningState) => any) | undefined;
151
+ readonly "onUpdate:sorting"?: ((value: SortingState) => any) | undefined;
152
+ readonly "onUpdate:grouping"?: ((value: GroupingState) => any) | undefined;
153
+ readonly "onUpdate:expanded"?: ((value: ExpandedState) => any) | undefined;
154
+ readonly "onUpdate:pagination"?: ((value: PaginationState) => any) | undefined;
155
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:globalFilter" | "onUpdate:columnFilters" | "onUpdate:columnOrder" | "onUpdate:columnVisibility" | "onUpdate:columnPinning" | "onUpdate:columnSizing" | "onUpdate:columnSizingInfo" | "onUpdate:rowSelection" | "onUpdate:rowPinning" | "onUpdate:sorting" | "onUpdate:grouping" | "onUpdate:expanded" | "onUpdate:pagination"> & (TableProps<T> & {
156
+ globalFilter?: string;
157
+ columnFilters?: ColumnFiltersState;
158
+ columnOrder?: ColumnOrderState;
159
+ columnVisibility?: VisibilityState;
160
+ columnPinning?: ColumnPinningState;
161
+ columnSizing?: ColumnSizingState;
162
+ columnSizingInfo?: ColumnSizingInfoState;
163
+ rowSelection?: RowSelectionState;
164
+ rowPinning?: RowPinningState;
165
+ sorting?: SortingState;
166
+ grouping?: GroupingState;
167
+ expanded?: ExpandedState;
168
+ pagination?: PaginationState;
169
+ }) & Partial<{}>> & import("vue").PublicProps;
170
+ expose(exposed: import("vue").ShallowUnwrapRef<{
171
+ tableRef: Ref<HTMLTableElement | undefined, HTMLTableElement | undefined>;
172
+ tableApi: import("@tanstack/table-core").Table<T>;
173
+ }>): void;
174
+ attrs: any;
175
+ slots: TableSlots<T>;
176
+ emit: ((evt: "update:globalFilter", value: string) => void) & ((evt: "update:columnFilters", value: ColumnFiltersState) => void) & ((evt: "update:columnOrder", value: ColumnOrderState) => void) & ((evt: "update:columnVisibility", value: VisibilityState) => void) & ((evt: "update:columnPinning", value: ColumnPinningState) => void) & ((evt: "update:columnSizing", value: ColumnSizingState) => void) & ((evt: "update:columnSizingInfo", value: ColumnSizingInfoState) => void) & ((evt: "update:rowSelection", value: RowSelectionState) => void) & ((evt: "update:rowPinning", value: RowPinningState) => void) & ((evt: "update:sorting", value: SortingState) => void) & ((evt: "update:grouping", value: GroupingState) => void) & ((evt: "update:expanded", value: ExpandedState) => void) & ((evt: "update:pagination", value: PaginationState) => void);
177
+ }>) => import("vue").VNode & {
178
+ __ctx?: Awaited<typeof __VLS_setup>;
179
+ };
180
+ export default _default;
181
+ type __VLS_PrettifyLocal<T> = {
182
+ [K in keyof T]: T[K];
183
+ } & {};
@@ -1,112 +1,42 @@
1
- <!-- eslint-disable vue/block-tag-newline -->
2
- <script lang="ts">
3
- import type { VariantProps } from 'tailwind-variants'
4
- import type { TabsRootProps, TabsRootEmits } from 'reka-ui'
5
- import type { AppConfig } from '@nuxt/schema'
6
- import _appConfig from '#build/app.config'
7
- import theme from '#build/ui/tabs'
8
- import { tv } from '../utils/tv'
9
- import type { AvatarProps } from '../types'
10
- import type { DynamicSlots, PartialString } from '../types/utils'
11
-
12
- const appConfigTabs = _appConfig as AppConfig & { ui: { tabs: Partial<typeof theme> } }
13
-
14
- const tabs = tv({ extend: tv(theme), ...(appConfigTabs.ui?.tabs || {}) })
15
-
16
- export interface TabsItem {
17
- label?: string
18
- /**
19
- * @IconifyIcon
20
- */
21
- icon?: string
22
- avatar?: AvatarProps
23
- slot?: string
24
- content?: string
25
- /** A unique value for the tab item. Defaults to the index. */
26
- value?: string | number
27
- disabled?: boolean
28
- [key: string]: any
29
- }
30
-
31
- type TabsVariants = VariantProps<typeof tabs>
32
-
33
- export interface TabsProps<T extends TabsItem = TabsItem> extends Pick<TabsRootProps<string | number>, 'defaultValue' | 'modelValue' | 'activationMode' | 'unmountOnHide'> {
34
- /**
35
- * The element or component this component should render as.
36
- * @defaultValue 'div'
37
- */
38
- as?: any
39
- items?: T[]
40
- /**
41
- * @defaultValue 'primary'
42
- */
43
- color?: TabsVariants['color']
44
- /**
45
- * @defaultValue 'pill'
46
- */
47
- variant?: TabsVariants['variant']
48
- /**
49
- * @defaultValue 'md'
50
- */
51
- size?: TabsVariants['size']
52
- /**
53
- * The orientation of the tabs.
54
- * @defaultValue 'horizontal'
55
- */
56
- orientation?: TabsRootProps['orientation']
57
- /**
58
- * The content of the tabs, can be disabled to prevent rendering the content.
59
- * @defaultValue true
60
- */
61
- content?: boolean
62
- /**
63
- * The key used to get the label from the item.
64
- * @defaultValue 'label'
65
- */
66
- labelKey?: string
67
- class?: any
68
- ui?: PartialString<typeof tabs.slots>
69
- }
70
-
71
- export interface TabsEmits extends TabsRootEmits<string | number> {}
72
-
73
- type SlotProps<T extends TabsItem> = (props: { item: T, index: number }) => any
74
-
75
- export type TabsSlots<T extends TabsItem = TabsItem> = {
76
- leading: SlotProps<T>
77
- default: SlotProps<T>
78
- trailing: SlotProps<T>
79
- content: SlotProps<T>
80
- } & DynamicSlots<T, undefined, { index: number }>
81
-
1
+ <script>
2
+ import theme from "#build/ui/tabs";
82
3
  </script>
83
4
 
84
- <script setup lang="ts" generic="T extends TabsItem">
85
- import { computed } from 'vue'
86
- import { TabsRoot, TabsList, TabsIndicator, TabsTrigger, TabsContent, useForwardPropsEmits } from 'reka-ui'
87
- import { reactivePick } from '@vueuse/core'
88
- import { get } from '../utils'
89
- import UIcon from './Icon.vue'
90
- import UAvatar from './Avatar.vue'
91
-
92
- const props = withDefaults(defineProps<TabsProps<T>>(), {
93
- content: true,
94
- defaultValue: '0',
95
- orientation: 'horizontal',
96
- unmountOnHide: true,
97
- labelKey: 'label'
98
- })
99
- const emits = defineEmits<TabsEmits>()
100
- const slots = defineSlots<TabsSlots<T>>()
101
-
102
- const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'modelValue', 'defaultValue', 'orientation', 'activationMode', 'unmountOnHide'), emits)
103
-
104
- const ui = computed(() => tabs({
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { TabsRoot, TabsList, TabsIndicator, TabsTrigger, TabsContent, 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
+ import UAvatar from "./Avatar.vue";
14
+ const props = defineProps({
15
+ as: { type: null, required: false },
16
+ items: { type: Array, required: false },
17
+ color: { type: null, required: false },
18
+ variant: { type: null, required: false },
19
+ size: { type: null, required: false },
20
+ orientation: { type: null, required: false, default: "horizontal" },
21
+ content: { type: Boolean, required: false, default: true },
22
+ labelKey: { type: String, required: false, default: "label" },
23
+ class: { type: null, required: false },
24
+ ui: { type: null, required: false },
25
+ defaultValue: { type: null, required: false, default: "0" },
26
+ modelValue: { type: null, required: false },
27
+ activationMode: { type: String, required: false },
28
+ unmountOnHide: { type: Boolean, required: false, default: true }
29
+ });
30
+ const emits = defineEmits(["update:modelValue"]);
31
+ const slots = defineSlots();
32
+ const appConfig = useAppConfig();
33
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "modelValue", "defaultValue", "orientation", "activationMode", "unmountOnHide"), emits);
34
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.tabs || {} })({
105
35
  color: props.color,
106
36
  variant: props.variant,
107
37
  size: props.size,
108
38
  orientation: props.orientation
109
- }))
39
+ }));
110
40
  </script>
111
41
 
112
42
  <template>
@@ -114,23 +44,27 @@ const ui = computed(() => tabs({
114
44
  <TabsList :class="ui.list({ class: props.ui?.list })">
115
45
  <TabsIndicator :class="ui.indicator({ class: props.ui?.indicator })" />
116
46
 
47
+ <slot name="list-leading" />
48
+
117
49
  <TabsTrigger v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :disabled="item.disabled" :class="ui.trigger({ class: props.ui?.trigger })">
118
50
  <slot name="leading" :item="item" :index="index">
119
51
  <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
120
- <UAvatar v-else-if="item.avatar" :size="((props.ui?.leadingAvatarSize || ui.leadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
52
+ <UAvatar v-else-if="item.avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="item.avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
121
53
  </slot>
122
54
 
123
- <span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
124
- <slot :item="item" :index="index">{{ get(item, props.labelKey as string) }}</slot>
55
+ <span v-if="get(item, props.labelKey) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
56
+ <slot :item="item" :index="index">{{ get(item, props.labelKey) }}</slot>
125
57
  </span>
126
58
 
127
59
  <slot name="trailing" :item="item" :index="index" />
128
60
  </TabsTrigger>
61
+
62
+ <slot name="list-trailing" />
129
63
  </TabsList>
130
64
 
131
65
  <template v-if="!!content">
132
66
  <TabsContent v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :class="ui.content({ class: props.ui?.content })">
133
- <slot :name="((item.slot || 'content') as keyof TabsSlots<T>)" :item="(item as Extract<T, { slot: string; }>)" :index="index">
67
+ <slot :name="item.slot || 'content'" :item="item" :index="index">
134
68
  {{ item.content }}
135
69
  </slot>
136
70
  </TabsContent>
@@ -0,0 +1,88 @@
1
+ import type { TabsRootProps, TabsRootEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/tabs';
4
+ import type { AvatarProps } from '../types';
5
+ import type { DynamicSlots, ComponentConfig } from '../types/utils';
6
+ type Tabs = ComponentConfig<typeof theme, AppConfig, 'tabs'>;
7
+ export interface TabsItem {
8
+ label?: string;
9
+ /**
10
+ * @IconifyIcon
11
+ */
12
+ icon?: string;
13
+ avatar?: AvatarProps;
14
+ slot?: string;
15
+ content?: string;
16
+ /** A unique value for the tab item. Defaults to the index. */
17
+ value?: string | number;
18
+ disabled?: boolean;
19
+ [key: string]: any;
20
+ }
21
+ export interface TabsProps<T extends TabsItem = TabsItem> extends Pick<TabsRootProps<string | number>, 'defaultValue' | 'modelValue' | 'activationMode' | 'unmountOnHide'> {
22
+ /**
23
+ * The element or component this component should render as.
24
+ * @defaultValue 'div'
25
+ */
26
+ as?: any;
27
+ items?: T[];
28
+ /**
29
+ * @defaultValue 'primary'
30
+ */
31
+ color?: Tabs['variants']['color'];
32
+ /**
33
+ * @defaultValue 'pill'
34
+ */
35
+ variant?: Tabs['variants']['variant'];
36
+ /**
37
+ * @defaultValue 'md'
38
+ */
39
+ size?: Tabs['variants']['size'];
40
+ /**
41
+ * The orientation of the tabs.
42
+ * @defaultValue 'horizontal'
43
+ */
44
+ orientation?: TabsRootProps['orientation'];
45
+ /**
46
+ * The content of the tabs, can be disabled to prevent rendering the content.
47
+ * @defaultValue true
48
+ */
49
+ content?: boolean;
50
+ /**
51
+ * The key used to get the label from the item.
52
+ * @defaultValue 'label'
53
+ */
54
+ labelKey?: string;
55
+ class?: any;
56
+ ui?: Tabs['slots'];
57
+ }
58
+ export interface TabsEmits extends TabsRootEmits<string | number> {
59
+ }
60
+ type SlotProps<T extends TabsItem> = (props: {
61
+ item: T;
62
+ index: number;
63
+ }) => any;
64
+ export type TabsSlots<T extends TabsItem = TabsItem> = {
65
+ 'leading': SlotProps<T>;
66
+ 'default': SlotProps<T>;
67
+ 'trailing': SlotProps<T>;
68
+ 'content': SlotProps<T>;
69
+ 'list-leading': (props?: {}) => any;
70
+ 'list-trailing': (props?: {}) => any;
71
+ } & DynamicSlots<T, undefined, {
72
+ index: number;
73
+ }>;
74
+ declare const _default: <T extends TabsItem>(__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<{
75
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
76
+ readonly "onUpdate:modelValue"?: ((payload: string | number) => any) | undefined;
77
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:modelValue"> & TabsProps<T> & Partial<{}>> & import("vue").PublicProps;
78
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
79
+ attrs: any;
80
+ slots: TabsSlots<T>;
81
+ emit: (evt: "update:modelValue", payload: string | number) => void;
82
+ }>) => import("vue").VNode & {
83
+ __ctx?: Awaited<typeof __VLS_setup>;
84
+ };
85
+ export default _default;
86
+ type __VLS_PrettifyLocal<T> = {
87
+ [K in keyof T]: T[K];
88
+ } & {};