@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,35 +1,54 @@
1
+ import type { ComponentPublicInstance } from 'vue';
1
2
  import type { VariantProps } from '@byyuurin/ui-kit';
2
3
  import type { PinInputRootEmits, PinInputRootProps } from 'reka-ui';
3
- import type { pinInput } from '../theme/index.js';
4
- import type { ComponentAttrs } from '../types/index.js';
4
+ import theme from '#build/ui/pin-input';
5
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
5
6
  type PinInputType = 'text' | 'number';
6
- export type PinInputEmits<T extends PinInputType = 'text' | 'number'> = PinInputRootEmits<T> & {
7
- change: [payload: Event];
8
- blur: [payload: Event];
9
- };
10
- type PinInputVariants = VariantProps<typeof pinInput>;
11
- export interface PinInputProps<T extends PinInputType = 'text' | 'number'> extends ComponentAttrs<typeof pinInput>, Pick<PinInputRootProps<T>, 'as' | 'defaultValue' | 'disabled' | 'id' | 'mask' | 'modelValue' | 'name' | 'otp' | 'placeholder' | 'required' | 'type'> {
12
- variant?: PinInputVariants['variant'];
13
- size?: PinInputVariants['size'];
7
+ type ThemeVariants = VariantProps<typeof theme>;
8
+ export interface PinInputProps<T extends PinInputType = 'text'> extends ComponentBaseProps, Pick<PinInputRootProps<T>, 'defaultValue' | 'disabled' | 'id' | 'mask' | 'modelValue' | 'name' | 'otp' | 'placeholder' | 'required' | 'type'> {
9
+ /**
10
+ * The element or component this component should render as.
11
+ * @default "div"
12
+ */
13
+ as?: PinInputRootProps<T>['as'];
14
+ /** @default "solid" */
15
+ variant?: ThemeVariants['variant'];
16
+ /** @default "md" */
17
+ size?: ThemeVariants['size'];
18
+ /** @default "primary" */
19
+ color?: ThemeVariants['color'];
20
+ /**
21
+ * The number of input fields.
22
+ * @default 5
23
+ */
14
24
  length?: number | string;
15
- underline?: boolean;
25
+ autofocus?: boolean;
26
+ autofocusDelay?: number;
16
27
  highlight?: boolean;
28
+ ui?: ComponentUIProps<typeof theme>;
17
29
  }
18
- declare const _default: <T extends PinInputType = "text" | "number">(__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<{
19
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
20
- readonly onBlur?: ((payload: Event) => any) | undefined;
21
- readonly onChange?: ((payload: Event) => any) | undefined;
22
- readonly "onUpdate:modelValue"?: ((value: T extends "number" ? number[] : string[]) => any) | undefined;
23
- readonly onComplete?: ((value: T extends "number" ? number[] : string[]) => any) | undefined;
24
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onBlur" | "onChange" | "onUpdate:modelValue" | "onComplete"> & PinInputProps<T> & Partial<{}>> & import("vue").PublicProps;
25
- expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
30
+ export type PinInputEmits<T extends PinInputType = 'text'> = PinInputRootEmits<T> & {
31
+ change: [event: Event];
32
+ blur: [event: Event];
33
+ };
34
+ declare const __VLS_export: <T extends PinInputType = "text" | "number">(__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<{
35
+ props: __VLS_PrettifyLocal<PinInputProps<T> & {
36
+ onChange?: ((event: Event) => any) | undefined;
37
+ onBlur?: ((event: Event) => any) | undefined;
38
+ "onUpdate:modelValue"?: ((value: [T] extends ["number"] ? number[] : string[]) => any) | undefined;
39
+ onComplete?: ((value: [T] extends ["number"] ? number[] : string[]) => any) | undefined;
40
+ }> & import("vue").PublicProps;
41
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
42
+ inputsRef: import("vue").Ref<ComponentPublicInstance[], ComponentPublicInstance[]>;
43
+ }>) => void;
26
44
  attrs: any;
27
45
  slots: {};
28
- emit: ((evt: "blur", payload: Event) => void) & ((evt: "change", payload: Event) => void) & ((evt: "update:modelValue", value: T extends "number" ? number[] : string[]) => void) & ((evt: "complete", value: T extends "number" ? number[] : string[]) => void);
46
+ emit: ((evt: "change", event: Event) => void) & ((evt: "blur", event: Event) => void) & ((evt: "update:modelValue", value: [T] extends ["number"] ? number[] : string[]) => void) & ((evt: "complete", value: [T] extends ["number"] ? number[] : string[]) => void);
29
47
  }>) => import("vue").VNode & {
30
48
  __ctx?: Awaited<typeof __VLS_setup>;
31
49
  };
50
+ declare const _default: typeof __VLS_export;
32
51
  export default _default;
33
52
  type __VLS_PrettifyLocal<T> = {
34
- [K in keyof T]: T[K];
53
+ [K in keyof T as K]: T[K];
35
54
  } & {};
@@ -1,5 +1,5 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/popover";
3
3
  </script>
4
4
 
5
5
  <script setup>
@@ -8,57 +8,71 @@ import { defu } from "defu";
8
8
  import { useForwardPropsEmits } from "reka-ui";
9
9
  import { HoverCard, Popover } from "reka-ui/namespaced";
10
10
  import { computed, toRef } from "vue";
11
- import { useTheme } from "../composables/useTheme";
11
+ import { useAppConfig } from "#imports";
12
+ import { usePortal } from "../composables/usePortal";
13
+ import { cv, merge } from "../utils/style";
12
14
  const props = defineProps({
13
- mode: { type: String, required: false, default: "click" },
15
+ mode: { type: null, required: false, default: "click" },
14
16
  content: { type: Object, required: false },
15
17
  arrow: { type: [Boolean, Object], required: false },
16
- portal: { type: Boolean, required: false, default: true },
18
+ portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
19
+ reference: { type: null, required: false },
17
20
  dismissible: { type: Boolean, required: false, default: true },
18
- class: { type: null, required: false },
19
21
  ui: { type: null, required: false },
22
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
20
23
  defaultOpen: { type: Boolean, required: false },
21
24
  open: { type: Boolean, required: false },
22
25
  modal: { type: Boolean, required: false },
23
26
  openDelay: { type: Number, required: false, default: 0 },
24
27
  closeDelay: { type: Number, required: false, default: 0 }
25
28
  });
26
- const emit = defineEmits(["update:open"]);
29
+ const emit = defineEmits(["close-prevent", "update:open"]);
27
30
  const slots = defineSlots();
28
31
  const pick = props.mode === "hover" ? reactivePick(props, "defaultOpen", "open", "openDelay", "closeDelay") : reactivePick(props, "defaultOpen", "open", "modal");
29
32
  const rootProps = useForwardPropsEmits(pick, emit);
33
+ const portalProps = usePortal(toRef(() => props.portal));
30
34
  const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8 }));
31
35
  const contentEvents = computed(() => {
32
36
  if (props.dismissible)
33
37
  return {};
34
- return {
35
- pointerDownOutside: (e) => e.preventDefault(),
36
- interactOutside: (e) => e.preventDefault(),
37
- escapeKeyDown: (e) => e.preventDefault()
38
- };
38
+ const events = ["pointerDownOutside", "interactOutside", "escapeKeyDown"];
39
+ return events.reduce((acc, curr) => {
40
+ acc[curr] = (e) => {
41
+ e.preventDefault();
42
+ emit("close-prevent");
43
+ };
44
+ return acc;
45
+ }, {});
39
46
  });
40
47
  const arrowProps = toRef(() => props.arrow);
41
48
  const Component = computed(() => props.mode === "hover" ? HoverCard : Popover);
42
- const { generateStyle } = useTheme();
43
- const style = computed(() => generateStyle("popover", props));
49
+ const appConfig = useAppConfig();
50
+ const ui = computed(() => {
51
+ const styler = cv(merge(theme, appConfig.ui.popover));
52
+ return styler(props);
53
+ });
44
54
  </script>
45
55
 
46
56
  <template>
47
- <Component.Root v-slot="{ open }" v-bind="rootProps">
48
- <Component.Trigger v-if="!!slots.default" as-child :class="props.class">
57
+ <Component.Root v-slot="{ open, close }" v-bind="rootProps">
58
+ <Component.Trigger v-if="!!slots.default || !!props.reference" :reference="props.reference" as-child :class="props.class">
49
59
  <slot :open="open"></slot>
50
60
  </Component.Trigger>
51
61
 
52
- <Component.Portal :disabled="!portal">
62
+ <Component.Anchor v-if="'Anchor' in Component && !!slots.anchor" as-child>
63
+ <slot name="anchor" v-bind="close ? { close } : {}"></slot>
64
+ </Component.Anchor>
65
+
66
+ <Component.Portal v-bind="portalProps">
53
67
  <Component.Content
54
68
  v-bind="contentProps"
55
- :class="style.content({ class: [!slots.default && props.class, props.ui?.content] })"
69
+ :class="ui.content({ class: [props.ui?.content, !slots.default && props.class] })"
56
70
  data-part="content"
57
71
  v-on="contentEvents"
58
72
  >
59
- <slot name="content"></slot>
73
+ <slot name="content" v-bind="close ? { close } : {}"></slot>
60
74
 
61
- <Component.Arrow v-if="!!arrow" v-bind="arrowProps" :class="style.arrow({ class: props.ui?.arrow })" data-part="arrow" />
75
+ <Component.Arrow v-if="!!props.arrow" v-bind="arrowProps" :class="ui.arrow({ class: props.ui?.arrow })" data-part="arrow" />
62
76
  </Component.Content>
63
77
  </Component.Portal>
64
78
  </Component.Root>
@@ -1,45 +1,70 @@
1
- import type { HoverCardRootProps, PopoverArrowProps, PopoverContentEmits, PopoverContentProps, PopoverRootEmits, PopoverRootProps } from 'reka-ui';
2
- import type { popover } from '../theme/index.js';
3
- import type { ComponentAttrs, EmitsToProps } from '../types/index.js';
4
- export interface PopoverEmits extends PopoverRootEmits {
5
- }
6
- export interface PopoverSlots {
7
- default?: (props: {
8
- open: boolean;
9
- }) => any;
10
- content?: (props?: {}) => any;
11
- }
12
- export interface PopoverProps extends ComponentAttrs<typeof popover>, PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
1
+ import type { HoverCardRootProps, HoverCardTriggerProps, PopoverArrowProps, PopoverContentEmits, PopoverContentProps, PopoverRootEmits, PopoverRootProps } from 'reka-ui';
2
+ import theme from '#build/ui/popover';
3
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
4
+ import type { EmitsToProps, StaticSlot } from '../types/utils';
5
+ type PopoverMode = 'click' | 'hover';
6
+ export interface PopoverProps<M extends PopoverMode = PopoverMode> extends ComponentBaseProps, PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
13
7
  /**
14
8
  * The display mode of the popover.
15
9
  * @default "click"
16
10
  */
17
- mode?: 'click' | 'hover';
18
- /** @default { side: 'bottom', sideOffset: 8, collisionPadding: 8 } */
11
+ mode?: M;
12
+ /**
13
+ * The content of the popover.
14
+ * @default { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
15
+ */
19
16
  content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>;
17
+ /**
18
+ * Display an arrow alongside the popover.
19
+ * @default false
20
+ */
20
21
  arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>;
21
- /** @default true */
22
- portal?: boolean;
22
+ /**
23
+ * Render the popover in a portal.
24
+ * @default true
25
+ */
26
+ portal?: boolean | string | HTMLElement;
27
+ /**
28
+ * The reference (or anchor) element that is being referred to for positioning.
29
+ *
30
+ * If not provided will use the current component as anchor.
31
+ */
32
+ reference?: HoverCardTriggerProps['reference'];
23
33
  /**
24
34
  * When `false`, the popover will not close when clicking outside or pressing escape.
25
35
  * @default true
26
36
  */
27
37
  dismissible?: boolean;
38
+ ui?: ComponentUIProps<typeof theme>;
28
39
  }
29
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<PopoverProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
- "update:open": (value: boolean) => any;
31
- }, string, import("vue").PublicProps, Readonly<PopoverProps> & Readonly<{
32
- "onUpdate:open"?: ((value: boolean) => any) | undefined;
33
- }>, {
34
- mode: "click" | "hover";
35
- portal: boolean;
36
- dismissible: boolean;
37
- openDelay: number;
38
- closeDelay: number;
39
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PopoverSlots>;
40
- export default _default;
41
- type __VLS_WithSlots<T, S> = T & {
42
- new (): {
43
- $slots: S;
44
- };
40
+ export interface PopoverEmits extends PopoverRootEmits {
41
+ 'close-prevent': [];
42
+ }
43
+ export interface PopoverSlots<M extends PopoverMode = PopoverMode> {
44
+ default: StaticSlot<{
45
+ open: boolean;
46
+ }>;
47
+ content: StaticSlot<[M] extends ['hover'] ? undefined : {
48
+ close: () => void;
49
+ }>;
50
+ anchor: StaticSlot<[M] extends ['hover'] ? undefined : {
51
+ close: () => void;
52
+ }>;
53
+ }
54
+ declare const __VLS_export: <M extends PopoverMode>(__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<{
55
+ props: __VLS_PrettifyLocal<PopoverProps<M> & {
56
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
57
+ "onClose-prevent"?: (() => any) | undefined;
58
+ }> & import("vue").PublicProps;
59
+ expose: (exposed: {}) => void;
60
+ attrs: any;
61
+ slots: PopoverSlots<M>;
62
+ emit: ((evt: "update:open", value: boolean) => void) & ((evt: "close-prevent") => void);
63
+ }>) => import("vue").VNode & {
64
+ __ctx?: Awaited<typeof __VLS_setup>;
45
65
  };
66
+ declare const _default: typeof __VLS_export;
67
+ export default _default;
68
+ type __VLS_PrettifyLocal<T> = {
69
+ [K in keyof T as K]: T[K];
70
+ } & {};
@@ -1,31 +1,35 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/progress";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
6
  import { reactivePick } from "@vueuse/core";
7
7
  import { Primitive, ProgressIndicator, ProgressRoot, useForwardPropsEmits } from "reka-ui";
8
8
  import { computed } from "vue";
9
+ import { useAppConfig } from "#imports";
9
10
  import { useLocale } from "../composables/useLocale";
10
- import { useTheme } from "../composables/useTheme";
11
+ import { cv, merge } from "../utils/style";
11
12
  const props = defineProps({
12
13
  as: { type: null, required: false },
13
- max: { type: [Number, Array], required: false },
14
14
  size: { type: null, required: false },
15
+ color: { type: null, required: false },
15
16
  orientation: { type: null, required: false, default: "horizontal" },
17
+ animation: { type: null, required: false },
18
+ max: { type: [Number, Array], required: false },
16
19
  status: { type: Boolean, required: false },
17
- inverted: { type: Boolean, required: false },
18
- class: { type: null, required: false },
20
+ inverted: { type: Boolean, required: false, default: false },
19
21
  ui: { type: null, required: false },
22
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
20
23
  getValueLabel: { type: Function, required: false },
24
+ getValueText: { type: Function, required: false },
21
25
  modelValue: { type: [Number, null], required: false, default: null }
22
26
  });
23
27
  const emit = defineEmits(["update:modelValue", "update:max"]);
24
28
  const slots = defineSlots();
25
- const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "modelValue"), emit);
26
- const isIndeterminate = computed(() => rootProps.value.modelValue === null || Number.isNaN(+rootProps.value.modelValue));
29
+ const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "getValueText", "modelValue"), emit);
30
+ const isIndeterminate = computed(() => rootProps.value.modelValue === null);
27
31
  const hasSteps = computed(() => Array.isArray(props.max));
28
- const max = computed(() => {
32
+ const realMax = computed(() => {
29
33
  if (isIndeterminate.value || !props.max)
30
34
  return;
31
35
  if (Array.isArray(props.max))
@@ -37,14 +41,12 @@ const percent = computed(() => {
37
41
  return;
38
42
  if (rootProps.value.modelValue < 0)
39
43
  return 0;
40
- const _max = max.value ?? 100;
41
- if (rootProps.value.modelValue > _max)
44
+ const max = realMax.value ?? 100;
45
+ if (rootProps.value.modelValue > max)
42
46
  return 100;
43
- return Math.round(rootProps.value.modelValue / _max * 100);
47
+ return Math.round(rootProps.value.modelValue / max * 100);
44
48
  });
45
49
  const { dir } = useLocale();
46
- const { generateStyle } = useTheme();
47
- const style = computed(() => generateStyle("progress", props));
48
50
  const indicatorStyle = computed(() => {
49
51
  if (percent.value === void 0)
50
52
  return;
@@ -55,9 +57,8 @@ const indicatorStyle = computed(() => {
55
57
  return { transform: `translateX(${props.inverted ? "" : "-"}${100 - percent.value}%)` };
56
58
  });
57
59
  const statusStyle = computed(() => {
58
- return {
59
- [props.orientation === "vertical" ? "height" : "width"]: percent.value ? `${percent.value}%` : "fit-content"
60
- };
60
+ const value = `${Math.max(percent.value ?? 0, 0)}%`;
61
+ return props.orientation === "vertical" ? { height: value } : { width: value };
61
62
  });
62
63
  function isActive(index) {
63
64
  return index === Number(props.modelValue);
@@ -66,7 +67,7 @@ function isFirst(index) {
66
67
  return index === 0;
67
68
  }
68
69
  function isLast(index) {
69
- return index === max.value;
70
+ return index === realMax.value;
70
71
  }
71
72
  function stepVariant(index) {
72
73
  index = Number(index);
@@ -78,11 +79,16 @@ function stepVariant(index) {
78
79
  return "last";
79
80
  return "other";
80
81
  }
82
+ const appConfig = useAppConfig();
83
+ const ui = computed(() => {
84
+ const styler = cv(merge(theme, appConfig.ui.progress));
85
+ return styler(props);
86
+ });
81
87
  </script>
82
88
 
83
89
  <template>
84
- <Primitive :as="props.as" :class="style.wrapper({ class: [props.class, props.ui?.wrapper] })" data-part="wrapper">
85
- <div v-if="!isIndeterminate && (props.status || slots.status)" :class="style.status({ class: props.ui?.status })" data-part="status" :style="statusStyle">
90
+ <Primitive :as="props.as" :class="ui.root({ class: [props.ui?.root, props.class] })" :data-orientation="orientation" data-part="root">
91
+ <div v-if="!isIndeterminate && (props.status || !!slots.status)" :class="ui.status({ class: props.ui?.status })" data-part="status" :style="statusStyle">
86
92
  <slot name="status" :percent="percent">
87
93
  {{ percent }}%
88
94
  </slot>
@@ -90,17 +96,16 @@ function stepVariant(index) {
90
96
 
91
97
  <ProgressRoot
92
98
  v-bind="rootProps"
93
- :model-value="Number.isNaN(rootProps.modelValue) ? null : rootProps.modelValue"
94
- :max="max"
95
- :class="style.root({ class: props.ui?.root })"
96
- data-part="root"
99
+ :max="realMax"
100
+ :class="ui.base({ class: props.ui?.base })"
101
+ data-part="base"
97
102
  style="transform: translateZ(0)"
98
103
  >
99
- <ProgressIndicator :class="style.indicator({ class: props.ui?.indicator })" data-part="indicator" :style="indicatorStyle" />
104
+ <ProgressIndicator :class="ui.indicator({ class: props.ui?.indicator })" data-part="indicator" :style="indicatorStyle" />
100
105
  </ProgressRoot>
101
106
 
102
- <div v-if="hasSteps" :class="style.steps({ class: props.ui?.steps })" data-part="steps">
103
- <div v-for="(step, index) in props.max" :key="index" :class="style.step({ class: props.ui?.step, step: stepVariant(index) })" data-part="step">
107
+ <div v-if="hasSteps" :class="ui.steps({ class: props.ui?.steps })" data-part="steps">
108
+ <div v-for="(step, index) in props.max" :key="index" :class="ui.step({ class: props.ui?.step, step: stepVariant(index) })" data-part="step">
104
109
  <slot :name="`step-${index}`" :step="step">
105
110
  {{ step }}
106
111
  </slot>
@@ -1,42 +1,49 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
2
  import type { PrimitiveProps, ProgressRootEmits, ProgressRootProps } from 'reka-ui';
3
- import type { progress } from '../theme/index.js';
4
- import type { ComponentAttrs } from '../types/index.js';
5
- export interface ProgressEmits extends ProgressRootEmits {
6
- }
7
- export type ProgressSlots = {
8
- status?: (props: {
9
- percent?: number;
10
- }) => any;
11
- } & {
12
- [key: `step-${number}`]: (props: {
13
- step: string | number;
14
- }) => any;
15
- };
16
- type ProgressVariants = VariantProps<typeof progress>;
17
- export interface ProgressProps extends ComponentAttrs<typeof progress>, Pick<ProgressRootProps, 'getValueLabel' | 'modelValue'> {
3
+ import theme from '#build/ui/progress';
4
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
5
+ import type { StaticSlot } from '../types/utils';
6
+ type ThemeVariants = VariantProps<typeof theme>;
7
+ export interface ProgressProps extends ComponentBaseProps, Pick<ProgressRootProps, 'getValueLabel' | 'getValueText' | 'modelValue'> {
18
8
  /**
19
9
  * The element or component this component should render as.
20
10
  * @default "div"
21
11
  */
22
12
  as?: PrimitiveProps['as'];
23
- /** The maximum progress value. */
24
- max?: number | string[];
25
- /**
26
- * @default "md"
27
- */
28
- size?: ProgressVariants['size'];
13
+ /** @default "md" */
14
+ size?: ThemeVariants['size'];
15
+ /** @default "primary" */
16
+ color?: ThemeVariants['color'];
29
17
  /**
30
18
  * The orientation of the progress bar.
31
19
  * @default "horizontal"
32
20
  */
33
- orientation?: ProgressVariants['orientation'];
21
+ orientation?: ThemeVariants['orientation'];
22
+ /**
23
+ * The animation of the progress bar.
24
+ * @default "carousel"
25
+ */
26
+ animation?: ThemeVariants['animation'];
27
+ /** The maximum progress value. */
28
+ max?: number | Array<any>;
34
29
  /** Display the current progress value. */
35
30
  status?: boolean;
36
31
  /** Whether the progress is visually inverted. */
37
32
  inverted?: boolean;
33
+ ui?: ComponentUIProps<typeof theme>;
34
+ }
35
+ export interface ProgressEmits extends ProgressRootEmits {
38
36
  }
39
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
+ export type ProgressSlots = {
38
+ status: StaticSlot<{
39
+ percent?: number;
40
+ }>;
41
+ } & {
42
+ [key: `step-${number}`]: StaticSlot<{
43
+ step: string | number;
44
+ }>;
45
+ };
46
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
40
47
  "update:modelValue": (value: string[] | undefined) => any;
41
48
  "update:max": (value: number) => any;
42
49
  }, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{
@@ -44,8 +51,10 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ProgressPr
44
51
  "onUpdate:max"?: ((value: number) => any) | undefined;
45
52
  }>, {
46
53
  orientation: "horizontal" | "vertical";
54
+ inverted: boolean;
47
55
  modelValue: number | null;
48
56
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
57
+ declare const _default: typeof __VLS_export;
49
58
  export default _default;
50
59
  type __VLS_WithSlots<T, S> = T & {
51
60
  new (): {