@byyuurin/ui 0.0.11 → 0.2.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 (297) hide show
  1. package/README.md +170 -58
  2. package/dist/module.d.mts +4 -13
  3. package/dist/module.json +4 -4
  4. package/dist/module.mjs +54 -20
  5. package/dist/runtime/components/Accordion.vue +28 -23
  6. package/dist/runtime/components/Accordion.vue.d.ts +51 -29
  7. package/dist/runtime/components/Alert.vue +47 -27
  8. package/dist/runtime/components/Alert.vue.d.ts +37 -25
  9. package/dist/runtime/components/App.vue +9 -8
  10. package/dist/runtime/components/App.vue.d.ts +22 -20
  11. package/dist/runtime/components/Avatar.vue +65 -21
  12. package/dist/runtime/components/Avatar.vue.d.ts +27 -13
  13. package/dist/runtime/components/AvatarGroup.vue +14 -10
  14. package/dist/runtime/components/AvatarGroup.vue.d.ts +12 -9
  15. package/dist/runtime/components/Badge.vue +64 -32
  16. package/dist/runtime/components/Badge.vue.d.ts +30 -29
  17. package/dist/runtime/components/Breadcrumb.vue +40 -22
  18. package/dist/runtime/components/Breadcrumb.vue.d.ts +48 -21
  19. package/dist/runtime/components/Button.vue +113 -52
  20. package/dist/runtime/components/Button.vue.d.ts +36 -20
  21. package/dist/runtime/components/Calendar.vue +50 -43
  22. package/dist/runtime/components/Calendar.vue.d.ts +58 -31
  23. package/dist/runtime/components/Card.vue +18 -14
  24. package/dist/runtime/components/Card.vue.d.ts +18 -14
  25. package/dist/runtime/components/Carousel.vue +99 -46
  26. package/dist/runtime/components/Carousel.vue.d.ts +46 -25
  27. package/dist/runtime/components/Checkbox.vue +60 -35
  28. package/dist/runtime/components/Checkbox.vue.d.ts +35 -28
  29. package/dist/runtime/components/CheckboxGroup.vue +131 -0
  30. package/dist/runtime/components/CheckboxGroup.vue.d.ts +89 -0
  31. package/dist/runtime/components/Chip.vue +35 -32
  32. package/dist/runtime/components/Chip.vue.d.ts +33 -15
  33. package/dist/runtime/components/Collapsible.vue +13 -9
  34. package/dist/runtime/components/Collapsible.vue.d.ts +16 -8
  35. package/dist/runtime/components/Drawer.vue +80 -70
  36. package/dist/runtime/components/Drawer.vue.d.ts +51 -28
  37. package/dist/runtime/components/DropdownMenu.vue +23 -16
  38. package/dist/runtime/components/DropdownMenu.vue.d.ts +77 -36
  39. package/dist/runtime/components/DropdownMenuContent.vue +136 -106
  40. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +38 -26
  41. package/dist/runtime/components/FieldGroup.vue +33 -0
  42. package/dist/runtime/components/FieldGroup.vue.d.ts +33 -0
  43. package/dist/runtime/components/Form.vue +172 -88
  44. package/dist/runtime/components/Form.vue.d.ts +69 -44
  45. package/dist/runtime/components/FormField.vue +108 -0
  46. package/dist/runtime/components/FormField.vue.d.ts +63 -0
  47. package/dist/runtime/components/Icon.vue +20 -0
  48. package/dist/runtime/components/Icon.vue.d.ts +9 -0
  49. package/dist/runtime/components/Input.vue +84 -79
  50. package/dist/runtime/components/Input.vue.d.ts +55 -43
  51. package/dist/runtime/components/InputNumber.vue +66 -52
  52. package/dist/runtime/components/InputNumber.vue.d.ts +50 -109
  53. package/dist/runtime/components/InputTags.vue +155 -0
  54. package/dist/runtime/components/InputTags.vue.d.ts +85 -0
  55. package/dist/runtime/components/Kbd.vue +11 -5
  56. package/dist/runtime/components/Kbd.vue.d.ts +17 -11
  57. package/dist/runtime/components/Link.vue +54 -197
  58. package/dist/runtime/components/Link.vue.d.ts +17 -17
  59. package/dist/runtime/components/LinkBase.vue +11 -33
  60. package/dist/runtime/components/LinkBase.vue.d.ts +8 -3
  61. package/dist/runtime/components/Marquee.vue +38 -0
  62. package/dist/runtime/components/Marquee.vue.d.ts +54 -0
  63. package/dist/runtime/components/Modal.vue +53 -39
  64. package/dist/runtime/components/Modal.vue.d.ts +64 -34
  65. package/dist/runtime/components/NavigationMenu.vue +345 -0
  66. package/dist/runtime/components/NavigationMenu.vue.d.ts +216 -0
  67. package/dist/runtime/components/OverlayProvider.vue +3 -3
  68. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -1
  69. package/dist/runtime/components/Pagination.vue +39 -47
  70. package/dist/runtime/components/Pagination.vue.d.ts +54 -31
  71. package/dist/runtime/components/PinInput.vue +46 -32
  72. package/dist/runtime/components/PinInput.vue.d.ts +40 -21
  73. package/dist/runtime/components/Popover.vue +33 -19
  74. package/dist/runtime/components/Popover.vue.d.ts +57 -32
  75. package/dist/runtime/components/Progress.vue +31 -26
  76. package/dist/runtime/components/Progress.vue.d.ts +32 -23
  77. package/dist/runtime/components/RadioGroup.vue +75 -48
  78. package/dist/runtime/components/RadioGroup.vue.d.ts +58 -36
  79. package/dist/runtime/components/ScrollArea.vue +33 -31
  80. package/dist/runtime/components/ScrollArea.vue.d.ts +9 -5
  81. package/dist/runtime/components/Select.vue +166 -76
  82. package/dist/runtime/components/Select.vue.d.ts +206 -65
  83. package/dist/runtime/components/Separator.vue +42 -16
  84. package/dist/runtime/components/Separator.vue.d.ts +35 -14
  85. package/dist/runtime/components/Skeleton.vue +18 -6
  86. package/dist/runtime/components/Skeleton.vue.d.ts +4 -4
  87. package/dist/runtime/components/Slider.vue +42 -24
  88. package/dist/runtime/components/Slider.vue.d.ts +43 -27
  89. package/dist/runtime/components/Switch.vue +40 -31
  90. package/dist/runtime/components/Switch.vue.d.ts +36 -27
  91. package/dist/runtime/components/Table.vue +329 -79
  92. package/dist/runtime/components/Table.vue.d.ts +152 -66
  93. package/dist/runtime/components/Tabs.vue +70 -23
  94. package/dist/runtime/components/Tabs.vue.d.ts +61 -29
  95. package/dist/runtime/components/Textarea.vue +102 -54
  96. package/dist/runtime/components/Textarea.vue.d.ts +57 -41
  97. package/dist/runtime/components/Timeline.vue +102 -0
  98. package/dist/runtime/components/Timeline.vue.d.ts +74 -0
  99. package/dist/runtime/components/Toast.vue +84 -38
  100. package/dist/runtime/components/Toast.vue.d.ts +48 -27
  101. package/dist/runtime/components/ToastProvider.vue +31 -22
  102. package/dist/runtime/components/ToastProvider.vue.d.ts +30 -17
  103. package/dist/runtime/components/Tooltip.vue +33 -21
  104. package/dist/runtime/components/Tooltip.vue.d.ts +37 -15
  105. package/dist/runtime/composables/defineShortcuts.d.ts +16 -0
  106. package/dist/runtime/composables/defineShortcuts.js +129 -0
  107. package/dist/runtime/composables/useAvatarGroup.d.ts +8 -3
  108. package/dist/runtime/composables/useAvatarGroup.js +10 -3
  109. package/dist/runtime/composables/useComponentIcons.d.ts +9 -6
  110. package/dist/runtime/composables/useComponentIcons.js +4 -4
  111. package/dist/runtime/composables/useFieldGroup.d.ts +8 -0
  112. package/dist/runtime/composables/useFieldGroup.js +14 -0
  113. package/dist/runtime/composables/useFormField.d.ts +62 -0
  114. package/dist/runtime/composables/useFormField.js +99 -0
  115. package/dist/runtime/composables/useKbd.d.ts +3 -2
  116. package/dist/runtime/composables/useKbd.js +3 -2
  117. package/dist/runtime/composables/useLocale.d.ts +68 -5
  118. package/dist/runtime/composables/useLocale.js +11 -11
  119. package/dist/runtime/composables/useOverlay.d.ts +51 -15
  120. package/dist/runtime/composables/useOverlay.js +44 -30
  121. package/dist/runtime/composables/usePortal.d.ts +6 -0
  122. package/dist/runtime/composables/usePortal.js +17 -0
  123. package/dist/runtime/composables/useToast.d.ts +12 -5
  124. package/dist/runtime/composables/useToast.js +12 -7
  125. package/dist/runtime/locale/en.d.ts +30 -1
  126. package/dist/runtime/locale/en.js +2 -1
  127. package/dist/runtime/locale/index.d.ts +2 -2
  128. package/dist/runtime/locale/index.js +1 -1
  129. package/dist/runtime/locale/zh_tw.d.ts +31 -0
  130. package/dist/runtime/locale/{zh-tw.js → zh_tw.js} +2 -1
  131. package/dist/runtime/plugins/colors.d.ts +2 -0
  132. package/dist/runtime/plugins/colors.js +50 -0
  133. package/dist/runtime/types/app.config.d.ts +6 -0
  134. package/dist/runtime/types/form.d.ts +58 -17
  135. package/dist/runtime/types/form.js +11 -0
  136. package/dist/runtime/types/index.d.ts +56 -8
  137. package/dist/runtime/types/index.js +49 -1
  138. package/dist/runtime/types/input.d.ts +8 -0
  139. package/dist/runtime/types/locale.d.ts +5 -0
  140. package/dist/runtime/types/style.d.ts +33 -0
  141. package/dist/runtime/types/style.js +0 -0
  142. package/dist/runtime/types/unocss.d.ts +4 -0
  143. package/dist/runtime/types/utils.d.ts +41 -37
  144. package/dist/runtime/utils/form.d.ts +5 -1
  145. package/dist/runtime/utils/form.js +49 -0
  146. package/dist/runtime/utils/index.d.ts +10 -13
  147. package/dist/runtime/utils/index.js +41 -48
  148. package/dist/runtime/utils/link.d.ts +3 -2
  149. package/dist/runtime/utils/link.js +16 -2
  150. package/dist/runtime/utils/locale.d.ts +5 -0
  151. package/dist/runtime/utils/locale.js +10 -0
  152. package/dist/runtime/utils/style.d.ts +94 -0
  153. package/dist/runtime/utils/style.js +37 -0
  154. package/dist/runtime/vue/components/Icon.vue +15 -0
  155. package/dist/runtime/vue/components/Icon.vue.d.ts +7 -0
  156. package/dist/runtime/vue/components/Link.vue +163 -0
  157. package/dist/runtime/vue/components/Link.vue.d.ts +95 -0
  158. package/dist/runtime/vue/composables/useAppConfig.d.ts +1 -0
  159. package/dist/runtime/vue/composables/useAppConfig.js +4 -0
  160. package/dist/runtime/vue/plugins/color-mode.d.ts +4 -0
  161. package/dist/runtime/vue/plugins/color-mode.js +6 -0
  162. package/dist/runtime/vue/plugins/head.d.ts +4 -0
  163. package/dist/runtime/vue/plugins/head.js +9 -0
  164. package/dist/runtime/vue/stubs.d.ts +16 -1
  165. package/dist/runtime/vue/stubs.js +32 -1
  166. package/dist/setup.d.mts +13 -0
  167. package/dist/setup.mjs +12 -0
  168. package/dist/shared/ui.CzIlLITK.mjs +51 -0
  169. package/dist/shared/ui.DLOxhmP0.mjs +4242 -0
  170. package/dist/shared/ui.DpbffTXs.d.mts +84 -0
  171. package/dist/shared/ui.IulR-OYx.d.mts +64 -0
  172. package/dist/types.d.mts +3 -1
  173. package/dist/unocss.d.mts +12 -52
  174. package/dist/unocss.mjs +144 -254
  175. package/dist/unplugin.d.mts +13 -26
  176. package/dist/unplugin.mjs +193 -18
  177. package/dist/vite.d.mts +10 -1
  178. package/dist/vite.mjs +12 -3
  179. package/package.json +154 -87
  180. package/vue-plugin.d.ts +5 -0
  181. package/dist/module.d.ts +0 -13
  182. package/dist/module.mjs.map +0 -1
  183. package/dist/runtime/app/injections.d.ts +0 -9331
  184. package/dist/runtime/app/injections.js +0 -61
  185. package/dist/runtime/components/ButtonGroup.vue +0 -26
  186. package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -26
  187. package/dist/runtime/components/FormItem.vue +0 -90
  188. package/dist/runtime/components/FormItem.vue.d.ts +0 -60
  189. package/dist/runtime/composables/useButtonGroup.d.ts +0 -5
  190. package/dist/runtime/composables/useButtonGroup.js +0 -9
  191. package/dist/runtime/composables/useFormItem.d.ts +0 -27
  192. package/dist/runtime/composables/useFormItem.js +0 -64
  193. package/dist/runtime/composables/useTheme.d.ts +0 -9
  194. package/dist/runtime/composables/useTheme.js +0 -23
  195. package/dist/runtime/index.d.ts +0 -44
  196. package/dist/runtime/index.js +0 -44
  197. package/dist/runtime/locale/zh-tw.d.ts +0 -2
  198. package/dist/runtime/theme/accordion.d.ts +0 -50
  199. package/dist/runtime/theme/accordion.js +0 -28
  200. package/dist/runtime/theme/alert.d.ts +0 -119
  201. package/dist/runtime/theme/alert.js +0 -47
  202. package/dist/runtime/theme/app.d.ts +0 -19
  203. package/dist/runtime/theme/app.js +0 -19
  204. package/dist/runtime/theme/avatar-group.d.ts +0 -46
  205. package/dist/runtime/theme/avatar-group.js +0 -32
  206. package/dist/runtime/theme/avatar.d.ts +0 -50
  207. package/dist/runtime/theme/avatar.js +0 -34
  208. package/dist/runtime/theme/badge.d.ts +0 -76
  209. package/dist/runtime/theme/badge.js +0 -92
  210. package/dist/runtime/theme/breadcrumb.d.ts +0 -61
  211. package/dist/runtime/theme/breadcrumb.js +0 -44
  212. package/dist/runtime/theme/button-group.d.ts +0 -60
  213. package/dist/runtime/theme/button-group.js +0 -42
  214. package/dist/runtime/theme/button.d.ts +0 -184
  215. package/dist/runtime/theme/button.js +0 -164
  216. package/dist/runtime/theme/calendar.d.ts +0 -58
  217. package/dist/runtime/theme/calendar.js +0 -86
  218. package/dist/runtime/theme/card.d.ts +0 -56
  219. package/dist/runtime/theme/card.js +0 -37
  220. package/dist/runtime/theme/carousel.d.ts +0 -107
  221. package/dist/runtime/theme/carousel.js +0 -43
  222. package/dist/runtime/theme/checkbox.d.ts +0 -82
  223. package/dist/runtime/theme/checkbox.js +0 -54
  224. package/dist/runtime/theme/chip.d.ts +0 -61
  225. package/dist/runtime/theme/chip.js +0 -66
  226. package/dist/runtime/theme/collapsible.d.ts +0 -32
  227. package/dist/runtime/theme/collapsible.js +0 -10
  228. package/dist/runtime/theme/drawer.d.ts +0 -142
  229. package/dist/runtime/theme/drawer.js +0 -113
  230. package/dist/runtime/theme/dropdown-menu.d.ts +0 -65
  231. package/dist/runtime/theme/dropdown-menu.js +0 -83
  232. package/dist/runtime/theme/form-item.d.ts +0 -70
  233. package/dist/runtime/theme/form-item.js +0 -34
  234. package/dist/runtime/theme/form.d.ts +0 -2
  235. package/dist/runtime/theme/form.js +0 -7
  236. package/dist/runtime/theme/index.d.ts +0 -41
  237. package/dist/runtime/theme/index.js +0 -41
  238. package/dist/runtime/theme/input-number.d.ts +0 -115
  239. package/dist/runtime/theme/input-number.js +0 -95
  240. package/dist/runtime/theme/input.d.ts +0 -172
  241. package/dist/runtime/theme/input.js +0 -151
  242. package/dist/runtime/theme/kbd.d.ts +0 -33
  243. package/dist/runtime/theme/kbd.js +0 -26
  244. package/dist/runtime/theme/link.d.ts +0 -38
  245. package/dist/runtime/theme/link.js +0 -26
  246. package/dist/runtime/theme/modal.d.ts +0 -42
  247. package/dist/runtime/theme/modal.js +0 -55
  248. package/dist/runtime/theme/pagination.d.ts +0 -74
  249. package/dist/runtime/theme/pagination.js +0 -17
  250. package/dist/runtime/theme/pinInput.d.ts +0 -94
  251. package/dist/runtime/theme/pinInput.js +0 -111
  252. package/dist/runtime/theme/popover.d.ts +0 -32
  253. package/dist/runtime/theme/popover.js +0 -13
  254. package/dist/runtime/theme/progress.d.ts +0 -180
  255. package/dist/runtime/theme/progress.js +0 -95
  256. package/dist/runtime/theme/radio-group.d.ts +0 -104
  257. package/dist/runtime/theme/radio-group.js +0 -61
  258. package/dist/runtime/theme/scroll-area.d.ts +0 -67
  259. package/dist/runtime/theme/scroll-area.js +0 -33
  260. package/dist/runtime/theme/select.d.ts +0 -186
  261. package/dist/runtime/theme/select.js +0 -173
  262. package/dist/runtime/theme/separator.d.ts +0 -74
  263. package/dist/runtime/theme/separator.js +0 -53
  264. package/dist/runtime/theme/skeleton.d.ts +0 -2
  265. package/dist/runtime/theme/skeleton.js +0 -7
  266. package/dist/runtime/theme/slider.d.ts +0 -70
  267. package/dist/runtime/theme/slider.js +0 -52
  268. package/dist/runtime/theme/switch.d.ts +0 -116
  269. package/dist/runtime/theme/switch.js +0 -78
  270. package/dist/runtime/theme/table.d.ts +0 -86
  271. package/dist/runtime/theme/table.js +0 -36
  272. package/dist/runtime/theme/tabs.d.ts +0 -129
  273. package/dist/runtime/theme/tabs.js +0 -146
  274. package/dist/runtime/theme/textarea.d.ts +0 -90
  275. package/dist/runtime/theme/textarea.js +0 -116
  276. package/dist/runtime/theme/toast-provider.d.ts +0 -116
  277. package/dist/runtime/theme/toast-provider.js +0 -97
  278. package/dist/runtime/theme/toast.d.ts +0 -83
  279. package/dist/runtime/theme/toast.js +0 -35
  280. package/dist/runtime/theme/tooltip.d.ts +0 -38
  281. package/dist/runtime/theme/tooltip.js +0 -11
  282. package/dist/runtime/types/components.d.ts +0 -42
  283. package/dist/runtime/utils/extend-theme.d.ts +0 -9
  284. package/dist/runtime/utils/extend-theme.js +0 -27
  285. package/dist/runtime/utils/styler.d.ts +0 -4
  286. package/dist/runtime/utils/styler.js +0 -10
  287. package/dist/runtime/utils/translator.d.ts +0 -18
  288. package/dist/runtime/utils/translator.js +0 -8
  289. package/dist/shared/ui.D1BTWZFB.mjs +0 -5
  290. package/dist/shared/ui.D1BTWZFB.mjs.map +0 -1
  291. package/dist/unocss.d.ts +0 -52
  292. package/dist/unocss.mjs.map +0 -1
  293. package/dist/unplugin.d.ts +0 -26
  294. package/dist/unplugin.mjs.map +0 -1
  295. package/dist/vite.d.ts +0 -9
  296. package/dist/vite.mjs.map +0 -1
  297. /package/dist/runtime/types/{components.js → input.js} +0 -0
@@ -1,59 +1,71 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
2
  import type { NumberFieldRootProps } from 'reka-ui';
3
- import type { inputNumber } from '../theme/index.js';
4
- import type { ButtonProps, ComponentAttrs } from '../types/index.js';
5
- export interface InputNumberEmits {
6
- 'update:modelValue': [payload: number];
7
- 'blur': [event: FocusEvent];
8
- 'change': [payload: Event];
9
- }
10
- export interface InputNumberSlots {
11
- increment?: (props?: {}) => any;
12
- decrement?: (props?: {}) => any;
13
- }
14
- type InputNumberVariants = VariantProps<typeof inputNumber>;
15
- export interface InputNumberProps extends ComponentAttrs<typeof inputNumber>, Pick<NumberFieldRootProps, 'as' | 'modelValue' | 'defaultValue' | 'min' | 'max' | 'step' | 'disabled' | 'required' | 'id' | 'name' | 'formatOptions'> {
3
+ import theme from '#build/ui/input-number';
4
+ import type { ButtonProps, ComponentBaseProps, ComponentUIProps, IconProps } from '../types';
5
+ import type { ModelModifiers } from '../types/input';
6
+ import type { MaybeNull, StaticSlot } from '../types/utils';
7
+ type ThemeVariants = VariantProps<typeof theme>;
8
+ export interface InputNumberProps extends ComponentBaseProps, Pick<NumberFieldRootProps, 'modelValue' | 'defaultValue' | 'min' | 'max' | 'step' | 'stepSnapping' | 'disabled' | 'required' | 'id' | 'name' | 'formatOptions' | 'disableWheelChange' | 'invertWheelChange' | 'readonly'> {
9
+ /**
10
+ * The element or component this component should render as.
11
+ * @default "div"
12
+ */
13
+ as?: NumberFieldRootProps['as'];
16
14
  /** The placeholder text when the input is empty. */
17
15
  placeholder?: string;
18
- variant?: InputNumberVariants['variant'];
19
- size?: InputNumberVariants['size'];
20
- underline?: boolean;
16
+ /** @default "outline" */
17
+ variant?: ThemeVariants['variant'];
18
+ /** @default "primary" */
19
+ color?: ThemeVariants['color'];
20
+ /** @default "md" */
21
+ size?: ThemeVariants['size'];
21
22
  /** Highlight the ring color like a focus state. */
22
23
  highlight?: boolean;
23
24
  /**
24
25
  * The orientation of the input menu.
25
26
  * @default "horizontal"
26
27
  */
27
- orientation?: InputNumberVariants['orientation'];
28
+ orientation?: ThemeVariants['orientation'];
28
29
  /**
29
30
  * Configure the increment button. The `color` and `size` are inherited.
30
31
  * @default { variant: 'link' }
31
32
  */
32
- increment?: ButtonProps;
33
+ increment?: boolean | ButtonProps;
33
34
  /**
34
35
  * The icon displayed to increment the value.
35
36
  * @default app.icons.plus
36
37
  */
37
- incrementIcon?: string;
38
+ incrementIcon?: IconProps['name'];
39
+ /** Disable the increment button. */
40
+ incrementDisabled?: boolean;
38
41
  /**
39
42
  * Configure the decrement button. The `color` and `size` are inherited.
40
43
  * @default { variant: 'link' }
41
44
  */
42
- decrement?: ButtonProps;
45
+ decrement?: boolean | ButtonProps;
43
46
  /**
44
47
  * The icon displayed to decrement the value.
45
48
  * @default app.icons.minus
46
49
  */
47
- decrementIcon?: string;
50
+ decrementIcon?: IconProps['name'];
51
+ /** Disable the decrement button. */
52
+ decrementDisabled?: boolean;
48
53
  autofocus?: boolean;
49
54
  autofocusDelay?: number;
50
- /**
51
- * The locale to use for formatting and parsing numbers.
52
- */
53
- locale?: string;
55
+ modelModifiers?: Pick<ModelModifiers, 'optional'>;
56
+ ui?: ComponentUIProps<typeof theme>;
57
+ }
58
+ export interface InputNumberEmits {
59
+ 'update:modelValue': [value: number];
60
+ 'blur': [event: FocusEvent];
61
+ 'change': [event: Event];
62
+ }
63
+ export interface InputNumberSlots {
64
+ increment: StaticSlot;
65
+ decrement: StaticSlot;
54
66
  }
55
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<InputNumberProps, {
56
- inputRef: import("vue").Ref<({
67
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<InputNumberProps, {
68
+ inputRef: import("vue").Ref<MaybeNull<{
57
69
  $: import("vue").ComponentInternalInstance;
58
70
  $data: {};
59
71
  $props: {
@@ -65,43 +77,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<InputNumbe
65
77
  };
66
78
  $refs: {
67
79
  [x: string]: unknown;
68
- } & {
69
- primitiveElement: import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
70
- asChild: {
71
- type: BooleanConstructor;
72
- default: boolean;
73
- };
74
- as: {
75
- type: import("vue").PropType<import("reka-ui").AsTag | import("vue").Component>;
76
- default: string;
77
- };
78
- }>> & Readonly<{}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
79
- [key: string]: any;
80
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
81
- asChild: boolean;
82
- as: import("reka-ui").AsTag | import("vue").Component;
83
- }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
84
- P: {};
85
- B: {};
86
- D: {};
87
- C: {};
88
- M: {};
89
- Defaults: {};
90
- }, Readonly<import("vue").ExtractPropTypes<{
91
- asChild: {
92
- type: BooleanConstructor;
93
- default: boolean;
94
- };
95
- as: {
96
- type: import("vue").PropType<import("reka-ui").AsTag | import("vue").Component>;
97
- default: string;
98
- };
99
- }>> & Readonly<{}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
100
- [key: string]: any;
101
- }>, {}, {}, {}, {
102
- asChild: boolean;
103
- as: import("reka-ui").AsTag | import("vue").Component;
104
- }> | null;
105
80
  };
106
81
  $slots: Readonly<{
107
82
  [name: string]: import("vue").Slot<any> | undefined;
@@ -137,9 +112,9 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<InputNumbe
137
112
  as: import("reka-ui").AsTag | import("vue").Component;
138
113
  }> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
139
114
  $slots: {
140
- default?(_: {}): any;
115
+ default?: (props: {}) => any;
141
116
  };
142
- }) | null, ({
117
+ }>, MaybeNull<{
143
118
  $: import("vue").ComponentInternalInstance;
144
119
  $data: {};
145
120
  $props: {
@@ -151,43 +126,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<InputNumbe
151
126
  };
152
127
  $refs: {
153
128
  [x: string]: unknown;
154
- } & {
155
- primitiveElement: import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
156
- asChild: {
157
- type: BooleanConstructor;
158
- default: boolean;
159
- };
160
- as: {
161
- type: import("vue").PropType<import("reka-ui").AsTag | import("vue").Component>;
162
- default: string;
163
- };
164
- }>> & Readonly<{}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
165
- [key: string]: any;
166
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
167
- asChild: boolean;
168
- as: import("reka-ui").AsTag | import("vue").Component;
169
- }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
170
- P: {};
171
- B: {};
172
- D: {};
173
- C: {};
174
- M: {};
175
- Defaults: {};
176
- }, Readonly<import("vue").ExtractPropTypes<{
177
- asChild: {
178
- type: BooleanConstructor;
179
- default: boolean;
180
- };
181
- as: {
182
- type: import("vue").PropType<import("reka-ui").AsTag | import("vue").Component>;
183
- default: string;
184
- };
185
- }>> & Readonly<{}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
186
- [key: string]: any;
187
- }>, {}, {}, {}, {
188
- asChild: boolean;
189
- as: import("reka-ui").AsTag | import("vue").Component;
190
- }> | null;
191
129
  };
192
130
  $slots: Readonly<{
193
131
  [name: string]: import("vue").Slot<any> | undefined;
@@ -223,20 +161,23 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<InputNumbe
223
161
  as: import("reka-ui").AsTag | import("vue").Component;
224
162
  }> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
225
163
  $slots: {
226
- default?(_: {}): any;
164
+ default?: (props: {}) => any;
227
165
  };
228
- }) | null>;
166
+ }>>;
229
167
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
168
+ change: (event: Event) => any;
230
169
  blur: (event: FocusEvent) => any;
231
- change: (payload: Event) => any;
232
- "update:modelValue": (payload: number) => any;
170
+ "update:modelValue": (value: number) => any;
233
171
  }, string, import("vue").PublicProps, Readonly<InputNumberProps> & Readonly<{
172
+ onChange?: ((event: Event) => any) | undefined;
234
173
  onBlur?: ((event: FocusEvent) => any) | undefined;
235
- onChange?: ((payload: Event) => any) | undefined;
236
- "onUpdate:modelValue"?: ((payload: number) => any) | undefined;
174
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
237
175
  }>, {
238
176
  orientation: "horizontal" | "vertical";
177
+ increment: boolean | ButtonProps;
178
+ decrement: boolean | ButtonProps;
239
179
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, InputNumberSlots>;
180
+ declare const _default: typeof __VLS_export;
240
181
  export default _default;
241
182
  type __VLS_WithSlots<T, S> = T & {
242
183
  new (): {
@@ -0,0 +1,155 @@
1
+ <script>
2
+ import theme from "#build/ui/input-tags";
3
+ </script>
4
+
5
+ <script setup>
6
+ import { reactivePick } from "@vueuse/core";
7
+ import { TagsInputInput, TagsInputItem, TagsInputItemDelete, TagsInputItemText, TagsInputRoot, useForwardPropsEmits } from "reka-ui";
8
+ import { computed, onMounted, shallowRef, toRaw, toRef } from "vue";
9
+ import { useAppConfig } from "#imports";
10
+ import { useComponentIcons } from "../composables/useComponentIcons";
11
+ import { useFieldGroup } from "../composables/useFieldGroup";
12
+ import { useFormField } from "../composables/useFormField";
13
+ import { cv, merge } from "../utils/style";
14
+ import Avatar from "./Avatar.vue";
15
+ import Icon from "./Icon.vue";
16
+ defineOptions({ inheritAttrs: false });
17
+ const props = defineProps({
18
+ as: { type: null, required: false },
19
+ placeholder: { type: String, required: false },
20
+ maxLength: { type: Number, required: false },
21
+ color: { type: null, required: false },
22
+ variant: { type: null, required: false },
23
+ size: { type: null, required: false },
24
+ autofocus: { type: Boolean, required: false },
25
+ autofocusDelay: { type: Number, required: false, default: 0 },
26
+ deleteIcon: { type: [String, Object], required: false },
27
+ highlight: { type: Boolean, required: false },
28
+ ui: { type: null, required: false },
29
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
30
+ modelValue: { type: [Array, null], required: false },
31
+ defaultValue: { type: Array, required: false },
32
+ addOnPaste: { type: Boolean, required: false },
33
+ addOnTab: { type: Boolean, required: false },
34
+ addOnBlur: { type: Boolean, required: false },
35
+ duplicate: { type: Boolean, required: false },
36
+ disabled: { type: Boolean, required: false },
37
+ delimiter: { type: null, required: false },
38
+ max: { type: Number, required: false },
39
+ id: { type: String, required: false },
40
+ convertValue: { type: Function, required: false },
41
+ displayValue: { type: Function, required: false },
42
+ name: { type: String, required: false },
43
+ required: { type: Boolean, required: false },
44
+ icon: { type: [String, Object], required: false },
45
+ avatar: { type: Object, required: false },
46
+ leading: { type: Boolean, required: false },
47
+ leadingIcon: { type: [String, Object], required: false },
48
+ trailing: { type: Boolean, required: false },
49
+ trailingIcon: { type: [String, Object], required: false },
50
+ loading: { type: Boolean, required: false },
51
+ loadingIcon: { type: [String, Object], required: false }
52
+ });
53
+ const emit = defineEmits(["change", "blur", "focus", "update:modelValue", "invalid", "addTag", "removeTag"]);
54
+ const slots = defineSlots();
55
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "addOnPaste", "addOnTab", "addOnBlur", "duplicate", "delimiter", "max", "convertValue", "displayValue", "required"), emit);
56
+ const { id, name, size: formFieldSize, color, highlight, disabled, ariaAttrs, emitFormBlur, emitFormInput, emitFormChange, emitFormFocus } = useFormField(props);
57
+ const { orientation, size: fieldGroupSize } = useFieldGroup(props);
58
+ const { isLeading, leadingIconName, isTrailing, trailingIconName } = useComponentIcons(props);
59
+ const appConfig = useAppConfig();
60
+ const ui = computed(() => {
61
+ const styler = cv(merge(theme, appConfig.ui.inputTags));
62
+ return styler({
63
+ ...props,
64
+ color: color.value,
65
+ size: fieldGroupSize.value || formFieldSize.value,
66
+ highlight: highlight.value,
67
+ leading: isLeading.value || !!props.avatar || !!slots.leading,
68
+ trailing: isTrailing.value || !!slots.trailing,
69
+ fieldGroup: orientation.value
70
+ });
71
+ });
72
+ const inputRef = shallowRef(null);
73
+ function onUpdate(value) {
74
+ if (toRaw(props.modelValue) === value)
75
+ return;
76
+ const event = new Event("change", { target: { value } });
77
+ emit("change", event);
78
+ emitFormChange();
79
+ emitFormInput();
80
+ }
81
+ function onBlur(event) {
82
+ emit("blur", event);
83
+ emitFormBlur();
84
+ }
85
+ function onFocus(event) {
86
+ emit("focus", event);
87
+ emitFormFocus();
88
+ }
89
+ function autoFocus() {
90
+ if (props.autofocus)
91
+ inputRef.value?.$el?.focus();
92
+ }
93
+ onMounted(() => {
94
+ setTimeout(() => autoFocus(), props.autofocusDelay);
95
+ });
96
+ defineExpose({
97
+ inputRef: toRef(() => inputRef.value?.$el)
98
+ });
99
+ </script>
100
+
101
+ <template>
102
+ <TagsInputRoot
103
+ v-slot="{ modelValue: tags }"
104
+ :model-value="props.modelValue"
105
+ :default-value="props.defaultValue"
106
+ :class="ui.root({ class: [ui.base({ class: props.ui?.base }), props.ui?.root, props.class] })"
107
+ v-bind="{ ...rootProps, id, name, disabled }"
108
+ data-part="root"
109
+ @update:model-value="onUpdate"
110
+ >
111
+ <TagsInputItem
112
+ v-for="(item, index) in tags"
113
+ :key="index"
114
+ :value="item"
115
+ :class="ui.item({ class: props.ui?.item })"
116
+ data-part="item"
117
+ >
118
+ <TagsInputItemText :class="ui.itemText({ class: props.ui?.itemText })" data-part="itemText">
119
+ <slot name="item-text" :item="item" :index="index" :ui="ui"></slot>
120
+ </TagsInputItemText>
121
+
122
+ <TagsInputItemDelete :disabled="disabled" :class="ui.itemDelete({ class: props.ui?.itemDelete })" data-part="itemDelete">
123
+ <slot name="item-delete" :item="item" :index="index" :ui="ui">
124
+ <Icon :name="props.deleteIcon || appConfig.ui.icons.close" :class="ui.itemDeleteIcon({ class: props.ui?.itemDeleteIcon })" data-part="itemDeleteIcon" />
125
+ </slot>
126
+ </TagsInputItemDelete>
127
+ </TagsInputItem>
128
+
129
+ <TagsInputInput
130
+ ref="inputRef"
131
+ v-bind="{ ...$attrs, ...ariaAttrs }"
132
+ :placeholder="props.placeholder"
133
+ :max-length="props.maxLength"
134
+ :class="ui.input({ class: props.ui?.input })"
135
+ data-part="input"
136
+ @blur="onBlur"
137
+ @focus="onFocus"
138
+ />
139
+
140
+ <span v-if="isLeading || props.avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })" data-part="leading">
141
+ <slot name="leading" :ui="ui">
142
+ <Icon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" data-part="leadingIcon" />
143
+ <Avatar v-else-if="props.avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="props.avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" data-part="leadingAvatar" />
144
+ </slot>
145
+ </span>
146
+
147
+ <slot :ui="ui"></slot>
148
+
149
+ <span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })" data-part="trailing">
150
+ <slot name="trailing" :ui="ui">
151
+ <Icon v-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" data-part="trailingIcon" />
152
+ </slot>
153
+ </span>
154
+ </TagsInputRoot>
155
+ </template>
@@ -0,0 +1,85 @@
1
+ import type { VariantProps } from '@byyuurin/ui-kit';
2
+ import type { AcceptableInputValue, TagsInputRootEmits, TagsInputRootProps } from 'reka-ui';
3
+ import theme from '#build/ui/input-tags';
4
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
5
+ import type { ComponentBaseProps, ComponentStyler, ComponentUIProps, IconProps } from '../types';
6
+ import type { StaticSlot } from '../types/utils';
7
+ type ThemeVariants = VariantProps<typeof theme>;
8
+ export type InputTagsItem = AcceptableInputValue;
9
+ export interface InputTagsProps<T extends InputTagsItem = InputTagsItem> extends ComponentBaseProps, Pick<TagsInputRootProps<T>, 'modelValue' | 'defaultValue' | 'addOnPaste' | 'addOnTab' | 'addOnBlur' | 'duplicate' | 'disabled' | 'delimiter' | 'max' | 'id' | 'convertValue' | 'displayValue' | 'name' | 'required'>, UseComponentIconsProps {
10
+ /**
11
+ * The element or component this component should render as.
12
+ * @default "div"
13
+ */
14
+ as?: TagsInputRootProps<T>['as'];
15
+ /** The placeholder text when the input is empty. */
16
+ placeholder?: string;
17
+ /** The maximum number of character allowed. */
18
+ maxLength?: number;
19
+ /** @default "primary" */
20
+ color?: ThemeVariants['color'];
21
+ /** @default "outline" */
22
+ variant?: ThemeVariants['variant'];
23
+ /** @default "md" */
24
+ size?: ThemeVariants['size'];
25
+ autofocus?: boolean;
26
+ autofocusDelay?: number;
27
+ /**
28
+ * The icon displayed to delete a tag.
29
+ * @default appConfig.ui.icons.close
30
+ */
31
+ deleteIcon?: IconProps['name'];
32
+ /** Highlight the ring color like a focus state. */
33
+ highlight?: boolean;
34
+ ui?: ComponentUIProps<typeof theme>;
35
+ }
36
+ export interface InputTagsEmits<T extends InputTagsItem> extends TagsInputRootEmits<T> {
37
+ change: [event: Event];
38
+ blur: [event: FocusEvent];
39
+ focus: [event: FocusEvent];
40
+ }
41
+ export interface InputTagsSlots<T extends InputTagsItem = InputTagsItem> {
42
+ 'leading': StaticSlot<{
43
+ ui: ComponentStyler<typeof theme>;
44
+ }>;
45
+ 'default': StaticSlot<{
46
+ ui: ComponentStyler<typeof theme>;
47
+ }>;
48
+ 'trailing': StaticSlot<{
49
+ ui: ComponentStyler<typeof theme>;
50
+ }>;
51
+ 'item-text': StaticSlot<{
52
+ item: T;
53
+ index: number;
54
+ ui: ComponentStyler<typeof theme>;
55
+ }>;
56
+ 'item-delete': StaticSlot<{
57
+ item: T;
58
+ index: number;
59
+ ui: ComponentStyler<typeof theme>;
60
+ }>;
61
+ }
62
+ declare const __VLS_export: <T extends InputTagsItem>(__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<{
63
+ props: __VLS_PrettifyLocal<InputTagsProps<AcceptableInputValue> & {
64
+ onChange?: ((event: Event) => any) | undefined;
65
+ onBlur?: ((event: FocusEvent) => any) | undefined;
66
+ onFocus?: ((event: FocusEvent) => any) | undefined;
67
+ onInvalid?: ((payload: T) => any) | undefined;
68
+ "onUpdate:modelValue"?: ((payload: T[]) => any) | undefined;
69
+ onAddTag?: ((payload: T) => any) | undefined;
70
+ onRemoveTag?: ((payload: T) => any) | undefined;
71
+ }> & import("vue").PublicProps;
72
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
73
+ inputRef: Readonly<import("vue").Ref<HTMLInputElement, HTMLInputElement>>;
74
+ }>) => void;
75
+ attrs: any;
76
+ slots: InputTagsSlots<T>;
77
+ emit: ((evt: "change", event: Event) => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "invalid", payload: T) => void) & ((evt: "update:modelValue", payload: T[]) => void) & ((evt: "addTag", payload: T) => void) & ((evt: "removeTag", payload: T) => void);
78
+ }>) => import("vue").VNode & {
79
+ __ctx?: Awaited<typeof __VLS_setup>;
80
+ };
81
+ declare const _default: typeof __VLS_export;
82
+ export default _default;
83
+ type __VLS_PrettifyLocal<T> = {
84
+ [K in keyof T as K]: T[K];
85
+ } & {};
@@ -1,26 +1,32 @@
1
1
  <script>
2
2
  import { computed } from "vue";
3
+ import theme from "#build/ui/kbd";
3
4
  </script>
4
5
 
5
6
  <script setup>
6
7
  import { Primitive } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
7
9
  import { useKbd } from "../composables/useKbd";
8
- import { useTheme } from "../composables/useTheme";
10
+ import { cv, merge } from "../utils/style";
9
11
  const props = defineProps({
10
12
  as: { type: null, required: false, default: "kbd" },
11
13
  variant: { type: null, required: false },
12
14
  size: { type: null, required: false },
15
+ color: { type: null, required: false },
13
16
  value: { type: null, required: false },
14
- class: { type: null, required: false }
17
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true }
15
18
  });
16
19
  defineSlots();
17
20
  const { getKbdKey } = useKbd();
18
- const { generateStyle } = useTheme();
19
- const style = computed(() => generateStyle("kbd", props));
21
+ const appConfig = useAppConfig();
22
+ const ui = computed(() => {
23
+ const styler = cv(merge(theme, appConfig.ui.kbd));
24
+ return styler(props);
25
+ });
20
26
  </script>
21
27
 
22
28
  <template>
23
- <Primitive :as="props.as" :class="style.base()" data-part="base">
29
+ <Primitive :as="props.as" :class="ui.base({ class: props.class })" data-part="base">
24
30
  <slot>{{ getKbdKey(props.value) }}</slot>
25
31
  </Primitive>
26
32
  </template>
@@ -1,25 +1,31 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
2
  import type { PrimitiveProps } from 'reka-ui';
3
- import type { KbdKey } from '../composables/useKbd.js';
4
- import type { kbd } from '../theme/index.js';
5
- import type { ComponentAttrs } from '../types/index.js';
6
- export interface KbdSlots {
7
- default?: (props?: {}) => any;
8
- }
9
- type KbdVariants = VariantProps<typeof kbd>;
10
- export interface KbdProps extends Omit<ComponentAttrs<typeof kbd>, 'ui'> {
3
+ import theme from '#build/ui/kbd';
4
+ import type { KbdKey } from '../composables/useKbd';
5
+ import type { ComponentBaseProps } from '../types';
6
+ import type { StaticSlot } from '../types/utils';
7
+ type ThemeVariants = VariantProps<typeof theme>;
8
+ export interface KbdProps extends ComponentBaseProps {
11
9
  /**
12
10
  * The element or component this component should render as.
13
11
  * @default "kbd"
14
12
  */
15
13
  as?: PrimitiveProps['as'];
16
- variant?: KbdVariants['variant'];
17
- size?: KbdVariants['size'];
14
+ /** @default "outline" */
15
+ variant?: ThemeVariants['variant'];
16
+ /** @default "md" */
17
+ size?: ThemeVariants['size'];
18
+ /** @default "neutral" */
19
+ color?: ThemeVariants['color'];
18
20
  value?: KbdKey | (string & {});
19
21
  }
20
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<KbdProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<KbdProps> & Readonly<{}>, {
22
+ export interface KbdSlots {
23
+ default: StaticSlot;
24
+ }
25
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<KbdProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<KbdProps> & Readonly<{}>, {
21
26
  as: import("reka-ui").AsTag | import("vue").Component;
22
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, KbdSlots>;
28
+ declare const _default: typeof __VLS_export;
23
29
  export default _default;
24
30
  type __VLS_WithSlots<T, S> = T & {
25
31
  new (): {