@byyuurin/ui 0.0.10 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) 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 +48 -72
  6. package/dist/runtime/components/Accordion.vue.d.ts +74 -0
  7. package/dist/runtime/components/Alert.vue +65 -83
  8. package/dist/runtime/components/Alert.vue.d.ts +71 -0
  9. package/dist/runtime/components/App.vue +28 -42
  10. package/dist/runtime/components/App.vue.d.ts +26 -0
  11. package/dist/runtime/components/Avatar.vue +82 -58
  12. package/dist/runtime/components/Avatar.vue.d.ts +39 -0
  13. package/dist/runtime/components/AvatarGroup.vue +43 -70
  14. package/dist/runtime/components/AvatarGroup.vue.d.ts +30 -0
  15. package/dist/runtime/components/Badge.vue +70 -64
  16. package/dist/runtime/components/Badge.vue.d.ts +45 -0
  17. package/dist/runtime/components/Breadcrumb.vue +56 -76
  18. package/dist/runtime/components/Breadcrumb.vue.d.ts +79 -0
  19. package/dist/runtime/components/Button.vue +150 -78
  20. package/dist/runtime/components/Button.vue.d.ts +45 -0
  21. package/dist/runtime/components/Calendar.vue +99 -125
  22. package/dist/runtime/components/Calendar.vue.d.ts +102 -0
  23. package/dist/runtime/components/Card.vue +33 -46
  24. package/dist/runtime/components/Card.vue.d.ts +34 -0
  25. package/dist/runtime/components/Carousel.vue +164 -237
  26. package/dist/runtime/components/Carousel.vue.d.ts +125 -0
  27. package/dist/runtime/components/Checkbox.vue +86 -88
  28. package/dist/runtime/components/Checkbox.vue.d.ts +63 -0
  29. package/dist/runtime/components/Chip.vue +44 -58
  30. package/dist/runtime/components/Chip.vue.d.ts +48 -0
  31. package/dist/runtime/components/Collapsible.vue +29 -33
  32. package/dist/runtime/components/Collapsible.vue.d.ts +34 -0
  33. package/dist/runtime/components/Drawer.vue +110 -150
  34. package/dist/runtime/components/Drawer.vue.d.ts +103 -0
  35. package/dist/runtime/components/DropdownMenu.vue +49 -120
  36. package/dist/runtime/components/DropdownMenu.vue.d.ts +140 -0
  37. package/dist/runtime/components/DropdownMenuContent.vue +177 -143
  38. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
  39. package/dist/runtime/components/FieldGroup.vue +33 -0
  40. package/dist/runtime/components/FieldGroup.vue.d.ts +33 -0
  41. package/dist/runtime/components/Form.vue +245 -275
  42. package/dist/runtime/components/Form.vue.d.ts +103 -0
  43. package/dist/runtime/components/FormField.vue +108 -0
  44. package/dist/runtime/components/FormField.vue.d.ts +63 -0
  45. package/dist/runtime/components/Icon.vue +20 -0
  46. package/dist/runtime/components/Icon.vue.d.ts +9 -0
  47. package/dist/runtime/components/Input.vue +125 -156
  48. package/dist/runtime/components/Input.vue.d.ts +76 -0
  49. package/dist/runtime/components/InputNumber.vue +103 -130
  50. package/dist/runtime/components/InputNumber.vue.d.ts +191 -0
  51. package/dist/runtime/components/Kbd.vue +24 -39
  52. package/dist/runtime/components/Kbd.vue.d.ts +34 -0
  53. package/dist/runtime/components/Link.vue +105 -337
  54. package/dist/runtime/components/Link.vue.d.ts +95 -0
  55. package/dist/runtime/components/LinkBase.vue +31 -71
  56. package/dist/runtime/components/LinkBase.vue.d.ts +33 -0
  57. package/dist/runtime/components/Modal.vue +82 -103
  58. package/dist/runtime/components/Modal.vue.d.ts +96 -0
  59. package/dist/runtime/components/NavigationMenu.vue +336 -0
  60. package/dist/runtime/components/NavigationMenu.vue.d.ts +181 -0
  61. package/dist/runtime/components/OverlayProvider.vue +12 -16
  62. package/dist/runtime/components/OverlayProvider.vue.d.ts +3 -0
  63. package/dist/runtime/components/Pagination.vue +65 -139
  64. package/dist/runtime/components/Pagination.vue.d.ts +116 -0
  65. package/dist/runtime/components/PinInput.vue +78 -73
  66. package/dist/runtime/components/PinInput.vue.d.ts +54 -0
  67. package/dist/runtime/components/Popover.vue +60 -75
  68. package/dist/runtime/components/Popover.vue.d.ts +70 -0
  69. package/dist/runtime/components/Progress.vue +79 -126
  70. package/dist/runtime/components/Progress.vue.d.ts +63 -0
  71. package/dist/runtime/components/RadioGroup.vue +109 -140
  72. package/dist/runtime/components/RadioGroup.vue.d.ts +96 -0
  73. package/dist/runtime/components/ScrollArea.vue +50 -48
  74. package/dist/runtime/components/ScrollArea.vue.d.ts +21 -0
  75. package/dist/runtime/components/Select.vue +221 -221
  76. package/dist/runtime/components/Select.vue.d.ts +260 -0
  77. package/dist/runtime/components/Separator.vue +55 -47
  78. package/dist/runtime/components/Separator.vue.d.ts +48 -0
  79. package/dist/runtime/components/Skeleton.vue +25 -22
  80. package/dist/runtime/components/Skeleton.vue.d.ts +19 -0
  81. package/dist/runtime/components/Slider.vue +73 -77
  82. package/dist/runtime/components/Slider.vue.d.ts +52 -0
  83. package/dist/runtime/components/Switch.vue +66 -77
  84. package/dist/runtime/components/Switch.vue.d.ts +58 -0
  85. package/dist/runtime/components/Table.vue +357 -215
  86. package/dist/runtime/components/Table.vue.d.ts +234 -0
  87. package/dist/runtime/components/Tabs.vue +90 -88
  88. package/dist/runtime/components/Tabs.vue.d.ts +97 -0
  89. package/dist/runtime/components/Textarea.vue +147 -146
  90. package/dist/runtime/components/Textarea.vue.d.ts +76 -0
  91. package/dist/runtime/components/Toast.vue +108 -90
  92. package/dist/runtime/components/Toast.vue.d.ts +152 -0
  93. package/dist/runtime/components/ToastProvider.vue +82 -109
  94. package/dist/runtime/components/ToastProvider.vue.d.ts +51 -0
  95. package/dist/runtime/components/Tooltip.vue +54 -53
  96. package/dist/runtime/components/Tooltip.vue.d.ts +53 -0
  97. package/dist/runtime/composables/defineShortcuts.d.ts +16 -0
  98. package/dist/runtime/composables/defineShortcuts.js +129 -0
  99. package/dist/runtime/composables/useAvatarGroup.d.ts +8 -3
  100. package/dist/runtime/composables/useAvatarGroup.js +10 -3
  101. package/dist/runtime/composables/useComponentIcons.d.ts +9 -6
  102. package/dist/runtime/composables/useComponentIcons.js +4 -4
  103. package/dist/runtime/composables/useFieldGroup.d.ts +8 -0
  104. package/dist/runtime/composables/useFieldGroup.js +14 -0
  105. package/dist/runtime/composables/useFormField.d.ts +62 -0
  106. package/dist/runtime/composables/useFormField.js +99 -0
  107. package/dist/runtime/composables/useKbd.d.ts +3 -2
  108. package/dist/runtime/composables/useKbd.js +3 -2
  109. package/dist/runtime/composables/useLocale.d.ts +68 -5
  110. package/dist/runtime/composables/useLocale.js +11 -11
  111. package/dist/runtime/composables/useOverlay.d.ts +51 -15
  112. package/dist/runtime/composables/useOverlay.js +44 -30
  113. package/dist/runtime/composables/usePortal.d.ts +6 -0
  114. package/dist/runtime/composables/usePortal.js +17 -0
  115. package/dist/runtime/composables/useToast.d.ts +12 -5
  116. package/dist/runtime/composables/useToast.js +12 -7
  117. package/dist/runtime/locale/en.d.ts +30 -1
  118. package/dist/runtime/locale/en.js +2 -1
  119. package/dist/runtime/locale/index.d.ts +2 -2
  120. package/dist/runtime/locale/index.js +1 -1
  121. package/dist/runtime/locale/zh_tw.d.ts +31 -0
  122. package/dist/runtime/locale/{zh-tw.js → zh_tw.js} +2 -1
  123. package/dist/runtime/plugins/colors.d.ts +2 -0
  124. package/dist/runtime/plugins/colors.js +50 -0
  125. package/dist/runtime/types/app.config.d.ts +6 -0
  126. package/dist/runtime/types/form.d.ts +58 -17
  127. package/dist/runtime/types/form.js +11 -0
  128. package/dist/runtime/types/index.d.ts +51 -8
  129. package/dist/runtime/types/index.js +45 -2
  130. package/dist/runtime/types/input.d.ts +8 -0
  131. package/dist/runtime/types/locale.d.ts +5 -0
  132. package/dist/runtime/types/style.d.ts +33 -0
  133. package/dist/runtime/types/style.js +0 -0
  134. package/dist/runtime/types/unocss.d.ts +4 -0
  135. package/dist/runtime/types/utils.d.ts +38 -37
  136. package/dist/runtime/utils/form.d.ts +5 -1
  137. package/dist/runtime/utils/form.js +49 -0
  138. package/dist/runtime/utils/index.d.ts +10 -13
  139. package/dist/runtime/utils/index.js +41 -48
  140. package/dist/runtime/utils/link.d.ts +5 -6
  141. package/dist/runtime/utils/link.js +16 -2
  142. package/dist/runtime/utils/locale.d.ts +5 -0
  143. package/dist/runtime/utils/locale.js +10 -0
  144. package/dist/runtime/utils/style.d.ts +94 -0
  145. package/dist/runtime/utils/style.js +37 -0
  146. package/dist/runtime/vue/components/Icon.vue +15 -0
  147. package/dist/runtime/vue/components/Icon.vue.d.ts +7 -0
  148. package/dist/runtime/vue/components/Link.vue +163 -0
  149. package/dist/runtime/vue/components/Link.vue.d.ts +95 -0
  150. package/dist/runtime/vue/composables/useAppConfig.d.ts +1 -0
  151. package/dist/runtime/vue/composables/useAppConfig.js +4 -0
  152. package/dist/runtime/vue/plugins/color-mode.d.ts +4 -0
  153. package/dist/runtime/vue/plugins/color-mode.js +6 -0
  154. package/dist/runtime/vue/plugins/head.d.ts +4 -0
  155. package/dist/runtime/vue/plugins/head.js +9 -0
  156. package/dist/runtime/vue/stubs.d.ts +16 -1
  157. package/dist/runtime/vue/stubs.js +32 -1
  158. package/dist/setup.d.mts +13 -0
  159. package/dist/setup.mjs +12 -0
  160. package/dist/shared/ui.CzIlLITK.mjs +51 -0
  161. package/dist/shared/ui.DSyJHSTk.mjs +3787 -0
  162. package/dist/shared/ui.DpbffTXs.d.mts +84 -0
  163. package/dist/shared/ui.IulR-OYx.d.mts +64 -0
  164. package/dist/types.d.mts +3 -1
  165. package/dist/unocss.d.mts +12 -52
  166. package/dist/unocss.mjs +144 -253
  167. package/dist/unplugin.d.mts +13 -26
  168. package/dist/unplugin.mjs +193 -18
  169. package/dist/vite.d.mts +10 -1
  170. package/dist/vite.mjs +12 -3
  171. package/package.json +156 -87
  172. package/vue-plugin.d.ts +5 -0
  173. package/dist/module.cjs +0 -5
  174. package/dist/module.d.ts +0 -13
  175. package/dist/module.mjs.map +0 -1
  176. package/dist/runtime/app/injections.d.ts +0 -9307
  177. package/dist/runtime/app/injections.js +0 -61
  178. package/dist/runtime/components/ButtonGroup.vue +0 -46
  179. package/dist/runtime/components/FormItem.vue +0 -129
  180. package/dist/runtime/composables/useButtonGroup.d.ts +0 -5
  181. package/dist/runtime/composables/useButtonGroup.js +0 -9
  182. package/dist/runtime/composables/useFormItem.d.ts +0 -27
  183. package/dist/runtime/composables/useFormItem.js +0 -64
  184. package/dist/runtime/composables/useTheme.d.ts +0 -9
  185. package/dist/runtime/composables/useTheme.js +0 -23
  186. package/dist/runtime/index.d.ts +0 -44
  187. package/dist/runtime/index.js +0 -44
  188. package/dist/runtime/locale/zh-tw.d.ts +0 -2
  189. package/dist/runtime/theme/accordion.d.ts +0 -56
  190. package/dist/runtime/theme/accordion.js +0 -28
  191. package/dist/runtime/theme/alert.d.ts +0 -125
  192. package/dist/runtime/theme/alert.js +0 -47
  193. package/dist/runtime/theme/app.d.ts +0 -19
  194. package/dist/runtime/theme/app.js +0 -19
  195. package/dist/runtime/theme/avatar-group.d.ts +0 -52
  196. package/dist/runtime/theme/avatar-group.js +0 -32
  197. package/dist/runtime/theme/avatar.d.ts +0 -56
  198. package/dist/runtime/theme/avatar.js +0 -34
  199. package/dist/runtime/theme/badge.d.ts +0 -82
  200. package/dist/runtime/theme/badge.js +0 -92
  201. package/dist/runtime/theme/breadcrumb.d.ts +0 -67
  202. package/dist/runtime/theme/breadcrumb.js +0 -44
  203. package/dist/runtime/theme/button-group.d.ts +0 -66
  204. package/dist/runtime/theme/button-group.js +0 -42
  205. package/dist/runtime/theme/button.d.ts +0 -190
  206. package/dist/runtime/theme/button.js +0 -164
  207. package/dist/runtime/theme/calendar.d.ts +0 -56
  208. package/dist/runtime/theme/calendar.js +0 -69
  209. package/dist/runtime/theme/card.d.ts +0 -62
  210. package/dist/runtime/theme/card.js +0 -37
  211. package/dist/runtime/theme/carousel.d.ts +0 -113
  212. package/dist/runtime/theme/carousel.js +0 -43
  213. package/dist/runtime/theme/checkbox.d.ts +0 -88
  214. package/dist/runtime/theme/checkbox.js +0 -54
  215. package/dist/runtime/theme/chip.d.ts +0 -67
  216. package/dist/runtime/theme/chip.js +0 -66
  217. package/dist/runtime/theme/collapsible.d.ts +0 -38
  218. package/dist/runtime/theme/collapsible.js +0 -10
  219. package/dist/runtime/theme/drawer.d.ts +0 -148
  220. package/dist/runtime/theme/drawer.js +0 -113
  221. package/dist/runtime/theme/dropdown-menu.d.ts +0 -71
  222. package/dist/runtime/theme/dropdown-menu.js +0 -83
  223. package/dist/runtime/theme/form-item.d.ts +0 -76
  224. package/dist/runtime/theme/form-item.js +0 -34
  225. package/dist/runtime/theme/form.d.ts +0 -8
  226. package/dist/runtime/theme/form.js +0 -7
  227. package/dist/runtime/theme/index.d.ts +0 -41
  228. package/dist/runtime/theme/index.js +0 -41
  229. package/dist/runtime/theme/input-number.d.ts +0 -121
  230. package/dist/runtime/theme/input-number.js +0 -95
  231. package/dist/runtime/theme/input.d.ts +0 -178
  232. package/dist/runtime/theme/input.js +0 -151
  233. package/dist/runtime/theme/kbd.d.ts +0 -39
  234. package/dist/runtime/theme/kbd.js +0 -26
  235. package/dist/runtime/theme/link.d.ts +0 -44
  236. package/dist/runtime/theme/link.js +0 -26
  237. package/dist/runtime/theme/modal.d.ts +0 -48
  238. package/dist/runtime/theme/modal.js +0 -55
  239. package/dist/runtime/theme/pagination.d.ts +0 -80
  240. package/dist/runtime/theme/pagination.js +0 -17
  241. package/dist/runtime/theme/pinInput.d.ts +0 -100
  242. package/dist/runtime/theme/pinInput.js +0 -111
  243. package/dist/runtime/theme/popover.d.ts +0 -38
  244. package/dist/runtime/theme/popover.js +0 -13
  245. package/dist/runtime/theme/progress.d.ts +0 -186
  246. package/dist/runtime/theme/progress.js +0 -95
  247. package/dist/runtime/theme/radio-group.d.ts +0 -110
  248. package/dist/runtime/theme/radio-group.js +0 -61
  249. package/dist/runtime/theme/scroll-area.d.ts +0 -73
  250. package/dist/runtime/theme/scroll-area.js +0 -33
  251. package/dist/runtime/theme/select.d.ts +0 -192
  252. package/dist/runtime/theme/select.js +0 -173
  253. package/dist/runtime/theme/separator.d.ts +0 -80
  254. package/dist/runtime/theme/separator.js +0 -53
  255. package/dist/runtime/theme/skeleton.d.ts +0 -8
  256. package/dist/runtime/theme/skeleton.js +0 -7
  257. package/dist/runtime/theme/slider.d.ts +0 -76
  258. package/dist/runtime/theme/slider.js +0 -52
  259. package/dist/runtime/theme/switch.d.ts +0 -122
  260. package/dist/runtime/theme/switch.js +0 -78
  261. package/dist/runtime/theme/table.d.ts +0 -92
  262. package/dist/runtime/theme/table.js +0 -36
  263. package/dist/runtime/theme/tabs.d.ts +0 -135
  264. package/dist/runtime/theme/tabs.js +0 -146
  265. package/dist/runtime/theme/textarea.d.ts +0 -96
  266. package/dist/runtime/theme/textarea.js +0 -116
  267. package/dist/runtime/theme/toast-provider.d.ts +0 -122
  268. package/dist/runtime/theme/toast-provider.js +0 -97
  269. package/dist/runtime/theme/toast.d.ts +0 -89
  270. package/dist/runtime/theme/toast.js +0 -35
  271. package/dist/runtime/theme/tooltip.d.ts +0 -44
  272. package/dist/runtime/theme/tooltip.js +0 -11
  273. package/dist/runtime/types/components.d.ts +0 -42
  274. package/dist/runtime/utils/extend-theme.d.ts +0 -9
  275. package/dist/runtime/utils/extend-theme.js +0 -27
  276. package/dist/runtime/utils/styler.d.ts +0 -4
  277. package/dist/runtime/utils/styler.js +0 -10
  278. package/dist/runtime/utils/translator.d.ts +0 -18
  279. package/dist/runtime/utils/translator.js +0 -8
  280. package/dist/shared/ui.3e7fad19.mjs +0 -5
  281. package/dist/shared/ui.3e7fad19.mjs.map +0 -1
  282. package/dist/types.d.ts +0 -1
  283. package/dist/unocss.d.ts +0 -52
  284. package/dist/unocss.mjs.map +0 -1
  285. package/dist/unplugin.d.ts +0 -26
  286. package/dist/unplugin.mjs.map +0 -1
  287. package/dist/vite.d.ts +0 -9
  288. package/dist/vite.mjs.map +0 -1
  289. /package/dist/runtime/types/{components.js → input.js} +0 -0
@@ -1,136 +1,106 @@
1
- <script lang="ts">
2
- import type { VariantProps } from '@byyuurin/ui-kit'
3
- import type { NumberFieldRootProps } from 'reka-ui'
4
- import type { inputNumber } from '../theme'
5
- import type { ButtonProps, ComponentAttrs } from '../types'
1
+ <script>
2
+ import theme from "#build/ui/input-number";
3
+ </script>
6
4
 
7
- export interface InputNumberEmits {
8
- 'update:modelValue': [payload: number]
9
- 'blur': [event: FocusEvent]
10
- 'change': [payload: Event]
5
+ <script setup>
6
+ import { reactivePick, useVModel } from "@vueuse/core";
7
+ import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot, useForwardPropsEmits } from "reka-ui";
8
+ import { computed, onMounted, ref } from "vue";
9
+ import { useAppConfig } from "#imports";
10
+ import { useFieldGroup } from "../composables/useFieldGroup";
11
+ import { useFormField } from "../composables/useFormField";
12
+ import { useLocale } from "../composables/useLocale";
13
+ import { cv, merge } from "../utils/style";
14
+ import Button from "./Button.vue";
15
+ defineOptions({ inheritAttrs: false });
16
+ const props = defineProps({
17
+ as: { type: null, required: false },
18
+ placeholder: { type: String, required: false },
19
+ variant: { type: null, required: false },
20
+ color: { type: null, required: false },
21
+ size: { type: null, required: false },
22
+ highlight: { type: Boolean, required: false },
23
+ orientation: { type: null, required: false, default: "horizontal" },
24
+ increment: { type: [Boolean, Object], required: false, default: true },
25
+ incrementIcon: { type: [String, Object], required: false },
26
+ incrementDisabled: { type: Boolean, required: false },
27
+ decrement: { type: [Boolean, Object], required: false, default: true },
28
+ decrementIcon: { type: [String, Object], required: false },
29
+ decrementDisabled: { type: Boolean, required: false },
30
+ autofocus: { type: Boolean, required: false },
31
+ autofocusDelay: { type: Number, required: false },
32
+ modelModifiers: { type: Object, required: false },
33
+ locale: { type: String, required: false },
34
+ ui: { type: null, required: false },
35
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
36
+ modelValue: { type: [Number, null], required: false },
37
+ defaultValue: { type: Number, required: false },
38
+ min: { type: Number, required: false },
39
+ max: { type: Number, required: false },
40
+ step: { type: Number, required: false },
41
+ stepSnapping: { type: Boolean, required: false },
42
+ disabled: { type: Boolean, required: false },
43
+ required: { type: Boolean, required: false },
44
+ id: { type: String, required: false },
45
+ name: { type: String, required: false },
46
+ formatOptions: { type: null, required: false },
47
+ disableWheelChange: { type: Boolean, required: false },
48
+ invertWheelChange: { type: Boolean, required: false },
49
+ readonly: { type: Boolean, required: false }
50
+ });
51
+ const emit = defineEmits(["update:modelValue", "blur", "change"]);
52
+ defineSlots();
53
+ const modelValue = useVModel(props, "modelValue", emit, { defaultValue: props.defaultValue });
54
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "defaultValue", "min", "max", "step", "stepSnapping", "formatOptions", "disableWheelChange", "invertWheelChange", "readonly"), emit);
55
+ const { t, code: codeLocale } = useLocale();
56
+ const locale = computed(() => props.locale || codeLocale.value);
57
+ const { id, name, size: formFieldSize, color, highlight, disabled, ariaAttrs, emitFormBlur, emitFormFocus, emitFormInput, emitFormChange } = useFormField(props);
58
+ const { size: fieldGroupSize, orientation } = useFieldGroup(props);
59
+ const appConfig = useAppConfig();
60
+ const ui = computed(() => {
61
+ const styler = cv(merge(theme, appConfig.ui.inputNumber));
62
+ return styler({
63
+ ...props,
64
+ size: fieldGroupSize.value || formFieldSize.value,
65
+ color: color.value,
66
+ highlight: highlight.value,
67
+ fieldGroup: orientation.value,
68
+ increment: props.orientation === "vertical" ? !!props.increment || !!props.decrement : !!props.increment,
69
+ decrement: props.orientation === "vertical" ? false : !!props.decrement
70
+ });
71
+ });
72
+ const incrementIcon = computed(() => props.incrementIcon || (props.orientation === "horizontal" ? appConfig.ui.icons.plus : appConfig.ui.icons.chevronUp));
73
+ const decrementIcon = computed(() => props.decrementIcon || (props.orientation === "horizontal" ? appConfig.ui.icons.minus : appConfig.ui.icons.chevronDown));
74
+ const inputRef = ref(null);
75
+ function onUpdate(value) {
76
+ if (props.modelModifiers?.optional)
77
+ value ??= void 0;
78
+ const event = new Event("change", { target: { value } });
79
+ emit("change", event);
80
+ emitFormChange();
81
+ emitFormInput();
11
82
  }
12
-
13
- export interface InputNumberSlots {
14
- increment?: (props?: {}) => any
15
- decrement?: (props?: {}) => any
83
+ function onBlur(event) {
84
+ emitFormBlur();
85
+ emit("blur", event);
16
86
  }
17
-
18
- type InputNumberVariants = VariantProps<typeof inputNumber>
19
-
20
- export interface InputNumberProps extends ComponentAttrs<typeof inputNumber>, Pick<NumberFieldRootProps, 'as' | 'modelValue' | 'defaultValue' | 'min' | 'max' | 'step' | 'disabled' | 'required' | 'id' | 'name' | 'formatOptions'> {
21
- /** The placeholder text when the input is empty. */
22
- placeholder?: string
23
- variant?: InputNumberVariants['variant']
24
- size?: InputNumberVariants['size']
25
- underline?: boolean
26
- /** Highlight the ring color like a focus state. */
27
- highlight?: boolean
28
- /**
29
- * The orientation of the input menu.
30
- * @default "horizontal"
31
- */
32
- orientation?: InputNumberVariants['orientation']
33
- /**
34
- * Configure the increment button. The `color` and `size` are inherited.
35
- * @default { variant: 'link' }
36
- */
37
- increment?: ButtonProps
38
- /**
39
- * The icon displayed to increment the value.
40
- * @default app.icons.plus
41
- */
42
- incrementIcon?: string
43
- /**
44
- * Configure the decrement button. The `color` and `size` are inherited.
45
- * @default { variant: 'link' }
46
- */
47
- decrement?: ButtonProps
48
- /**
49
- * The icon displayed to decrement the value.
50
- * @default app.icons.minus
51
- */
52
- decrementIcon?: string
53
- autofocus?: boolean
54
- autofocusDelay?: number
55
- /**
56
- * The locale to use for formatting and parsing numbers.
57
- */
58
- locale?: string
59
- }
60
- </script>
61
-
62
- <script setup lang="ts">
63
- import { reactivePick } from '@vueuse/core'
64
- import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot, useForwardPropsEmits } from 'reka-ui'
65
- import { computed, onMounted, ref } from 'vue'
66
- import { useFormItem } from '../composables/useFormItem'
67
- import { useLocale } from '../composables/useLocale'
68
- import { useTheme } from '../composables/useTheme'
69
- import Button from './Button.vue'
70
-
71
- defineOptions({
72
- inheritAttrs: false,
73
- })
74
-
75
- const props = withDefaults(defineProps<InputNumberProps>(), {
76
- orientation: 'horizontal',
77
- })
78
-
79
- const emit = defineEmits<InputNumberEmits>()
80
- defineSlots<InputNumberSlots>()
81
-
82
- const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'modelValue', 'defaultValue', 'min', 'max', 'step', 'formatOptions'), emit)
83
-
84
- const inputRef = ref<InstanceType<typeof NumberFieldInput> | null>(null)
85
-
86
- const { t, code: codeLocale } = useLocale()
87
- const locale = computed(() => props.locale || codeLocale.value)
88
- const { id, name, size, highlight, disabled, ariaAttrs, emitFormBlur, emitFormFocus, emitFormInput, emitFormChange } = useFormItem<InputNumberProps>(props)
89
- const { theme, generateStyle } = useTheme()
90
- const incrementIcon = computed(() => props.incrementIcon || (props.orientation === 'horizontal' ? theme.value.app.icons.plus : theme.value.app.icons.chevronUp))
91
- const decrementIcon = computed(() => props.decrementIcon || (props.orientation === 'horizontal' ? theme.value.app.icons.minus : theme.value.app.icons.chevronDown))
92
-
93
- const style = computed(() => generateStyle('inputNumber', {
94
- ...props,
95
- size: size.value,
96
- highlight: highlight.value,
97
- }))
98
-
99
- onMounted(() => {
100
- setTimeout(() => {
101
- autoFocus()
102
- }, props.autofocusDelay)
103
- })
104
-
105
- defineExpose({
106
- inputRef,
107
- })
108
-
109
87
  function autoFocus() {
110
88
  if (props.autofocus)
111
- inputRef.value?.$el?.focus()
112
- }
113
-
114
- function onUpdate(value: number) {
115
- // @ts-expect-error - 'target' does not exist in type 'EventInit'
116
- const event = new Event('change', { target: { value } })
117
- emit('change', event)
118
- emitFormChange()
119
- emitFormInput()
120
- }
121
-
122
- function onBlur(event: FocusEvent) {
123
- emit('blur', event)
124
- emitFormBlur()
89
+ inputRef.value?.$el?.focus();
125
90
  }
91
+ onMounted(() => {
92
+ setTimeout(() => autoFocus(), props.autofocusDelay);
93
+ });
94
+ defineExpose({
95
+ inputRef
96
+ });
126
97
  </script>
127
98
 
128
99
  <template>
129
100
  <NumberFieldRoot
130
- v-bind="{ ...rootProps, id, name, disabled }"
131
- :class="style.base({ class: [props.class, props.ui?.base] })"
132
- :locale="locale"
133
- :aria-disabled="disabled ? true : undefined"
101
+ v-bind="{ ...rootProps, id, name, disabled, locale, modelValue }"
102
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
103
+ data-part="root"
134
104
  @update:model-value="onUpdate"
135
105
  >
136
106
  <NumberFieldInput
@@ -138,34 +108,37 @@ function onBlur(event: FocusEvent) {
138
108
  ref="inputRef"
139
109
  :placeholder="props.placeholder"
140
110
  :required="props.required"
141
- :class="style.input({ class: props.ui?.input })"
111
+ :class="ui.base({ class: props.ui?.base })"
112
+ data-part="base"
142
113
  @blur="onBlur"
143
114
  @focus="emitFormFocus"
144
115
  />
145
116
 
146
- <div :class="style.increment({ class: props.ui?.increment })">
147
- <NumberFieldIncrement as-child :disabled="disabled">
117
+ <div v-if="props.increment" :class="ui.increment({ class: props.ui?.increment })" data-part="increment">
118
+ <NumberFieldIncrement :disabled="disabled || incrementDisabled" as-child>
148
119
  <slot name="increment">
149
120
  <Button
150
121
  :icon="incrementIcon"
151
122
  :size="props.size"
123
+ :color="color"
152
124
  variant="link"
153
125
  :aria-label="t('inputNumber.increment')"
154
- v-bind="typeof props.increment === 'object' ? props.increment : undefined"
126
+ v-bind="typeof props.increment === 'object' ? props.increment : void 0"
155
127
  />
156
128
  </slot>
157
129
  </NumberFieldIncrement>
158
130
  </div>
159
131
 
160
- <div :class="style.decrement({ class: props.ui?.decrement })">
161
- <NumberFieldDecrement as-child :disabled="disabled">
132
+ <div v-if="props.decrement" :class="ui.decrement({ class: props.ui?.decrement })" data-part="decrement">
133
+ <NumberFieldDecrement :disabled="disabled || decrementDisabled" as-child>
162
134
  <slot name="decrement">
163
135
  <Button
164
136
  :icon="decrementIcon"
165
137
  :size="props.size"
138
+ :color="color"
166
139
  variant="link"
167
140
  :aria-label="t('inputNumber.decrement')"
168
- v-bind="typeof props.decrement === 'object' ? props.decrement : undefined"
141
+ v-bind="typeof props.decrement === 'object' ? props.decrement : void 0"
169
142
  />
170
143
  </slot>
171
144
  </NumberFieldDecrement>
@@ -0,0 +1,191 @@
1
+ import type { VariantProps } from '@byyuurin/ui-kit';
2
+ import type { NumberFieldRootProps } from 'reka-ui';
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'];
14
+ /** The placeholder text when the input is empty. */
15
+ placeholder?: string;
16
+ /** @default "outline" */
17
+ variant?: ThemeVariants['variant'];
18
+ /** @default "primary" */
19
+ color?: ThemeVariants['color'];
20
+ /** @default "md" */
21
+ size?: ThemeVariants['size'];
22
+ /** Highlight the ring color like a focus state. */
23
+ highlight?: boolean;
24
+ /**
25
+ * The orientation of the input menu.
26
+ * @default "horizontal"
27
+ */
28
+ orientation?: ThemeVariants['orientation'];
29
+ /**
30
+ * Configure the increment button. The `color` and `size` are inherited.
31
+ * @default { variant: 'link' }
32
+ */
33
+ increment?: boolean | ButtonProps;
34
+ /**
35
+ * The icon displayed to increment the value.
36
+ * @default app.icons.plus
37
+ */
38
+ incrementIcon?: IconProps['name'];
39
+ /** Disable the increment button. */
40
+ incrementDisabled?: boolean;
41
+ /**
42
+ * Configure the decrement button. The `color` and `size` are inherited.
43
+ * @default { variant: 'link' }
44
+ */
45
+ decrement?: boolean | ButtonProps;
46
+ /**
47
+ * The icon displayed to decrement the value.
48
+ * @default app.icons.minus
49
+ */
50
+ decrementIcon?: IconProps['name'];
51
+ /** Disable the decrement button. */
52
+ decrementDisabled?: boolean;
53
+ autofocus?: boolean;
54
+ autofocusDelay?: number;
55
+ modelModifiers?: Pick<ModelModifiers, 'optional'>;
56
+ /**
57
+ * The locale to use for formatting and parsing numbers.
58
+ * @default App.locale.code
59
+ */
60
+ locale?: string;
61
+ ui?: ComponentUIProps<typeof theme>;
62
+ }
63
+ export interface InputNumberEmits {
64
+ 'update:modelValue': [value: number];
65
+ 'blur': [event: FocusEvent];
66
+ 'change': [event: Event];
67
+ }
68
+ export interface InputNumberSlots {
69
+ increment: StaticSlot;
70
+ decrement: StaticSlot;
71
+ }
72
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<InputNumberProps, {
73
+ inputRef: import("vue").Ref<MaybeNull<{
74
+ $: import("vue").ComponentInternalInstance;
75
+ $data: {};
76
+ $props: {
77
+ readonly asChild?: boolean | undefined;
78
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
79
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
80
+ $attrs: {
81
+ [x: string]: unknown;
82
+ };
83
+ $refs: {
84
+ [x: string]: unknown;
85
+ };
86
+ $slots: Readonly<{
87
+ [name: string]: import("vue").Slot<any> | undefined;
88
+ }>;
89
+ $root: import("vue").ComponentPublicInstance | null;
90
+ $parent: import("vue").ComponentPublicInstance | null;
91
+ $host: Element | null;
92
+ $emit: (event: string, ...args: any[]) => void;
93
+ $el: any;
94
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
95
+ as: import("reka-ui").AsTag | import("vue").Component;
96
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
97
+ beforeCreate?: (() => void) | (() => void)[];
98
+ created?: (() => void) | (() => void)[];
99
+ beforeMount?: (() => void) | (() => void)[];
100
+ mounted?: (() => void) | (() => void)[];
101
+ beforeUpdate?: (() => void) | (() => void)[];
102
+ updated?: (() => void) | (() => void)[];
103
+ activated?: (() => void) | (() => void)[];
104
+ deactivated?: (() => void) | (() => void)[];
105
+ beforeDestroy?: (() => void) | (() => void)[];
106
+ beforeUnmount?: (() => void) | (() => void)[];
107
+ destroyed?: (() => void) | (() => void)[];
108
+ unmounted?: (() => void) | (() => void)[];
109
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
110
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
111
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
112
+ };
113
+ $forceUpdate: () => void;
114
+ $nextTick: typeof import("vue").nextTick;
115
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
116
+ } & Readonly<{
117
+ as: import("reka-ui").AsTag | import("vue").Component;
118
+ }> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
119
+ $slots: {
120
+ default?: (props: {}) => any;
121
+ };
122
+ }>, MaybeNull<{
123
+ $: import("vue").ComponentInternalInstance;
124
+ $data: {};
125
+ $props: {
126
+ readonly asChild?: boolean | undefined;
127
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
128
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
129
+ $attrs: {
130
+ [x: string]: unknown;
131
+ };
132
+ $refs: {
133
+ [x: string]: unknown;
134
+ };
135
+ $slots: Readonly<{
136
+ [name: string]: import("vue").Slot<any> | undefined;
137
+ }>;
138
+ $root: import("vue").ComponentPublicInstance | null;
139
+ $parent: import("vue").ComponentPublicInstance | null;
140
+ $host: Element | null;
141
+ $emit: (event: string, ...args: any[]) => void;
142
+ $el: any;
143
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
144
+ as: import("reka-ui").AsTag | import("vue").Component;
145
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
146
+ beforeCreate?: (() => void) | (() => void)[];
147
+ created?: (() => void) | (() => void)[];
148
+ beforeMount?: (() => void) | (() => void)[];
149
+ mounted?: (() => void) | (() => void)[];
150
+ beforeUpdate?: (() => void) | (() => void)[];
151
+ updated?: (() => void) | (() => void)[];
152
+ activated?: (() => void) | (() => void)[];
153
+ deactivated?: (() => void) | (() => void)[];
154
+ beforeDestroy?: (() => void) | (() => void)[];
155
+ beforeUnmount?: (() => void) | (() => void)[];
156
+ destroyed?: (() => void) | (() => void)[];
157
+ unmounted?: (() => void) | (() => void)[];
158
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
159
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
160
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
161
+ };
162
+ $forceUpdate: () => void;
163
+ $nextTick: typeof import("vue").nextTick;
164
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
165
+ } & Readonly<{
166
+ as: import("reka-ui").AsTag | import("vue").Component;
167
+ }> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
168
+ $slots: {
169
+ default?: (props: {}) => any;
170
+ };
171
+ }>>;
172
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
173
+ change: (event: Event) => any;
174
+ blur: (event: FocusEvent) => any;
175
+ "update:modelValue": (value: number) => any;
176
+ }, string, import("vue").PublicProps, Readonly<InputNumberProps> & Readonly<{
177
+ onChange?: ((event: Event) => any) | undefined;
178
+ onBlur?: ((event: FocusEvent) => any) | undefined;
179
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
180
+ }>, {
181
+ orientation: "horizontal" | "vertical";
182
+ increment: boolean | ButtonProps;
183
+ decrement: boolean | ButtonProps;
184
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, InputNumberSlots>;
185
+ declare const _default: typeof __VLS_export;
186
+ export default _default;
187
+ type __VLS_WithSlots<T, S> = T & {
188
+ new (): {
189
+ $slots: S;
190
+ };
191
+ };
@@ -1,47 +1,32 @@
1
- <script lang="ts">
2
- import type { VariantProps } from '@byyuurin/ui-kit'
3
- import type { PrimitiveProps } from 'reka-ui'
4
- import { computed } from 'vue'
5
- import type { KbdKey } from '../composables/useKbd'
6
- import type { kbd } from '../theme'
7
- import type { ComponentAttrs } from '../types'
8
-
9
- export interface KbdSlots {
10
- default?: (props?: {}) => any
11
- }
12
-
13
- type KbdVariants = VariantProps<typeof kbd>
14
-
15
- export interface KbdProps extends Omit<ComponentAttrs<typeof kbd>, 'ui'> {
16
- /**
17
- * The element or component this component should render as.
18
- * @default "kbd"
19
- */
20
- as?: PrimitiveProps['as']
21
- variant?: KbdVariants['variant']
22
- size?: KbdVariants['size']
23
- value?: KbdKey | (string & {})
24
- }
1
+ <script>
2
+ import { computed } from "vue";
3
+ import theme from "#build/ui/kbd";
25
4
  </script>
26
5
 
27
- <script setup lang="ts">
28
- import { Primitive } from 'reka-ui'
29
- import { useKbd } from '../composables/useKbd'
30
- import { useTheme } from '../composables/useTheme'
31
-
32
- const props = withDefaults(defineProps<KbdProps>(), {
33
- as: 'kbd',
34
- })
35
-
36
- defineSlots<KbdSlots>()
37
-
38
- const { getKbdKey } = useKbd()
39
- const { generateStyle } = useTheme()
40
- const style = computed(() => generateStyle('kbd', props))
6
+ <script setup>
7
+ import { Primitive } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { useKbd } from "../composables/useKbd";
10
+ import { cv, merge } from "../utils/style";
11
+ const props = defineProps({
12
+ as: { type: null, required: false, default: "kbd" },
13
+ variant: { type: null, required: false },
14
+ size: { type: null, required: false },
15
+ color: { type: null, required: false },
16
+ value: { type: null, required: false },
17
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true }
18
+ });
19
+ defineSlots();
20
+ const { getKbdKey } = useKbd();
21
+ const appConfig = useAppConfig();
22
+ const ui = computed(() => {
23
+ const styler = cv(merge(theme, appConfig.ui.kbd));
24
+ return styler(props);
25
+ });
41
26
  </script>
42
27
 
43
28
  <template>
44
- <Primitive :as="props.as" :class="style">
29
+ <Primitive :as="props.as" :class="ui.base({ class: props.class })" data-part="base">
45
30
  <slot>{{ getKbdKey(props.value) }}</slot>
46
31
  </Primitive>
47
32
  </template>
@@ -0,0 +1,34 @@
1
+ import type { VariantProps } from '@byyuurin/ui-kit';
2
+ import type { PrimitiveProps } from 'reka-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 {
9
+ /**
10
+ * The element or component this component should render as.
11
+ * @default "kbd"
12
+ */
13
+ as?: PrimitiveProps['as'];
14
+ /** @default "outline" */
15
+ variant?: ThemeVariants['variant'];
16
+ /** @default "md" */
17
+ size?: ThemeVariants['size'];
18
+ /** @default "neutral" */
19
+ color?: ThemeVariants['color'];
20
+ value?: KbdKey | (string & {});
21
+ }
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<{}>, {
26
+ as: import("reka-ui").AsTag | import("vue").Component;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, KbdSlots>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };