@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,102 +1,100 @@
1
- <script lang="ts">
2
- import type { VariantProps } from '@byyuurin/ui-kit'
3
- import type { CheckboxRootProps, PrimitiveProps } from 'reka-ui'
4
- import type { checkbox } from '../theme'
5
- import type { ComponentAttrs } from '../types'
6
-
7
- export interface CheckboxEmits {
8
- change: [payload: Event]
9
- }
10
-
11
- export interface CheckboxSlots {
12
- label?: (props: { label?: string }) => any
13
- description?: (props: { description?: string }) => any
14
- }
15
-
16
- type CheckboxVariants = VariantProps<typeof checkbox>
17
-
18
- export interface CheckboxProps extends ComponentAttrs<typeof checkbox>, Pick<CheckboxRootProps, 'disabled' | 'required' | 'name' | 'value' | 'id' | 'defaultValue'> {
19
- /**
20
- * The element or component this component should render as.
21
- * @default "div"
22
- */
23
- as?: PrimitiveProps['as']
24
- label?: string
25
- description?: string
26
- size?: CheckboxVariants['size']
27
- /**
28
- * The icon displayed when checked.
29
- * @default app.icons.check
30
- */
31
- icon?: string
32
- /**
33
- * The icon displayed when the checkbox is indeterminate.
34
- * @default app.icons.indeterminate
35
- */
36
- indeterminateIcon?: string
37
- }
1
+ <script>
2
+ import theme from "#build/ui/checkbox";
38
3
  </script>
39
4
 
40
- <script lang="ts" setup>
41
- import { reactivePick } from '@vueuse/core'
42
- import { CheckboxIndicator, CheckboxRoot, Label, Primitive, useForwardProps } from 'reka-ui'
43
- import { computed, useId } from 'vue'
44
- import { useFormItem } from '../composables/useFormItem'
45
- import { useTheme } from '../composables/useTheme'
46
-
47
- const props = withDefaults(defineProps<CheckboxProps>(), {
48
- required: false,
49
- disabled: false,
50
- })
51
- const emit = defineEmits<CheckboxEmits>()
52
- const slots = defineSlots<CheckboxSlots>()
53
-
54
- const innerValue = defineModel<boolean | 'indeterminate'>({ default: undefined })
55
- const rootProps = useForwardProps(reactivePick(props, 'required', 'value', 'defaultValue'))
56
-
57
- const { id: _id, size, name, disabled, ariaAttrs, emitFormChange, emitFormInput } = useFormItem<CheckboxProps>(props)
58
- const id = _id.value ?? useId()
59
-
60
- const { theme, generateStyle } = useTheme()
61
- const style = computed(() => generateStyle('checkbox', {
62
- ...props,
63
- size: size.value,
64
- disabled: disabled.value,
65
- }))
66
-
67
- function onUpdate(value: any) {
68
- // @ts-expect-error - 'target' does not exist in type 'EventInit'
69
- const event = new Event('change', { target: value })
70
- emit('change', event)
71
- emitFormChange()
72
- emitFormInput()
5
+ <script setup>
6
+ import { reactivePick, useVModel } from "@vueuse/core";
7
+ import { CheckboxIndicator, CheckboxRoot, Label, Primitive, useForwardProps } from "reka-ui";
8
+ import { computed, useId } from "vue";
9
+ import { useAppConfig } from "#imports";
10
+ import { useFormField } from "../composables/useFormField";
11
+ import { cv, merge } from "../utils/style";
12
+ import Icon from "./Icon.vue";
13
+ defineOptions({ inheritAttrs: false });
14
+ const props = defineProps({
15
+ as: { type: null, required: false },
16
+ label: { type: String, required: false },
17
+ description: { type: String, required: false },
18
+ variant: { type: null, required: false },
19
+ color: { type: null, required: false },
20
+ size: { type: null, required: false },
21
+ indicator: { type: null, required: false },
22
+ icon: { type: [String, Object], required: false },
23
+ indeterminateIcon: { type: [String, Object], required: false },
24
+ modelValue: { type: [Boolean, String], required: false },
25
+ ui: { type: null, required: false },
26
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
27
+ disabled: { type: Boolean, required: false, default: false },
28
+ required: { type: Boolean, required: false, default: false },
29
+ name: { type: String, required: false },
30
+ value: { type: null, required: false },
31
+ id: { type: String, required: false },
32
+ defaultValue: { type: [Boolean, String], required: false }
33
+ });
34
+ const emit = defineEmits(["update:modelValue", "change"]);
35
+ const slots = defineSlots();
36
+ const modelValue = useVModel(props, "modelValue", emit);
37
+ const rootProps = useForwardProps(reactivePick(props, "required", "value", "defaultValue"));
38
+ const { id: _id, size, name, disabled, ariaAttrs, emitFormChange, emitFormInput } = useFormField(props);
39
+ const id = _id.value ?? useId();
40
+ const appConfig = useAppConfig();
41
+ const ui = computed(() => {
42
+ const styler = cv(merge(theme, appConfig.ui.checkbox));
43
+ return styler({
44
+ ...props,
45
+ size: size.value,
46
+ disabled: disabled.value
47
+ });
48
+ });
49
+ function onUpdate(value) {
50
+ const event = new Event("change", { target: value });
51
+ emit("change", event);
52
+ emitFormChange();
53
+ emitFormInput();
73
54
  }
74
55
  </script>
75
56
 
76
57
  <template>
77
- <Primitive :as="props.as" :class="style.root({ class: [props.class, props.ui?.root] })">
78
- <div :class="style.container({ class: props.ui?.container })">
58
+ <Primitive :as="!props.variant || props.variant === 'list' ? props.as : Label" :class="ui.root({ class: [props.ui?.root, props.class] })" data-part="root">
59
+ <div :class="ui.container({ class: props.ui?.container })" data-part="container">
79
60
  <CheckboxRoot
80
- v-slot="{ modelValue }"
81
- v-bind="{ ...rootProps, ...ariaAttrs, id, name, disabled }"
82
- v-model="innerValue"
83
- :class="style.base({ class: props.ui?.base })"
61
+ v-bind="{ id, ...rootProps, ...$attrs, ...ariaAttrs, name, disabled }"
62
+ v-model="modelValue"
63
+ :class="ui.base({ class: props.ui?.base })"
64
+ data-part="base"
84
65
  @update:model-value="onUpdate"
85
66
  >
86
- <CheckboxIndicator as-child force-mount>
87
- <span
88
- v-if="modelValue === 'indeterminate'"
89
- :class="style.icon({ class: [props.indeterminateIcon || theme.app.icons.indeterminate, props.ui?.icon] })"
90
- ></span>
91
- <span v-else :class="style.icon({ class: [props.icon, theme.app.icons.check, props.ui?.icon] })"></span>
92
- </CheckboxIndicator>
67
+ <template #default="{ modelValue }">
68
+ <CheckboxIndicator :class="ui.indicator({ class: props.ui?.indicator })" data-part="indicator">
69
+ <Icon
70
+ v-if="modelValue === 'indeterminate'"
71
+ :name="props.indeterminateIcon || appConfig.ui.icons.minus"
72
+ :class="ui.icon({ class: props.ui?.icon })"
73
+ data-part="icon"
74
+ />
75
+ <Icon
76
+ v-else
77
+ :name="props.icon || appConfig.ui.icons.check"
78
+ :class="ui.icon({ class: props.ui?.icon })"
79
+ data-part="icon"
80
+ />
81
+ </CheckboxIndicator>
82
+ </template>
93
83
  </CheckboxRoot>
94
84
  </div>
95
- <div v-if="props.label || slots.label || props.description || slots.description" :class="style.wrapper({ class: props.ui?.wrapper })">
96
- <Label v-if="props.label || slots.label" :for="id" :class="style.label({ class: props.ui?.label })">
97
- <slot name="label" :label="props.label">{{ props.label }}</slot>
98
- </Label>
99
- <p v-if="props.description || slots.description" :class="style.description({ class: props.ui?.description })">
85
+ <div v-if="props.label || !!slots.label || props.description || !!slots.description" :class="ui.wrapper({ class: props.ui?.wrapper })" data-part="wrapper">
86
+ <component
87
+ :is="!props.variant || props.variant === 'list' ? Label : 'p'"
88
+ v-if="props.label || !!slots.label"
89
+ :for="id"
90
+ :class="ui.label({ class: props.ui?.label })"
91
+ data-part="label"
92
+ >
93
+ <slot name="label" :label="props.label">
94
+ {{ props.label }}
95
+ </slot>
96
+ </component>
97
+ <p v-if="props.description || !!slots.description" :class="ui.description({ class: props.ui?.description })" data-part="description">
100
98
  <slot name="description" :description="props.description">
101
99
  {{ props.description }}
102
100
  </slot>
@@ -0,0 +1,63 @@
1
+ import type { VariantProps } from '@byyuurin/ui-kit';
2
+ import type { CheckboxRootEmits, CheckboxRootProps, PrimitiveProps } from 'reka-ui';
3
+ import theme from '#build/ui/checkbox';
4
+ import type { ComponentBaseProps, ComponentUIProps, IconProps } from '../types';
5
+ import type { StaticSlot } from '../types/utils';
6
+ type ThemeVariants = VariantProps<typeof theme>;
7
+ export interface CheckboxProps extends ComponentBaseProps, Pick<CheckboxRootProps, 'disabled' | 'required' | 'name' | 'value' | 'id' | 'defaultValue'> {
8
+ /**
9
+ * The element or component this component should render as.
10
+ * @default "div"
11
+ */
12
+ as?: PrimitiveProps['as'];
13
+ label?: string;
14
+ description?: string;
15
+ /** @default "list" */
16
+ variant?: ThemeVariants['variant'];
17
+ /** @default "primary" */
18
+ color?: ThemeVariants['color'];
19
+ /** @default "md" */
20
+ size?: ThemeVariants['size'];
21
+ /** @default "start" */
22
+ indicator?: ThemeVariants['indicator'];
23
+ /**
24
+ * The icon displayed when checked.
25
+ * @default app.icons.check
26
+ */
27
+ icon?: IconProps['name'];
28
+ /**
29
+ * The icon displayed when the checkbox is indeterminate.
30
+ * @default app.icons.minus
31
+ */
32
+ indeterminateIcon?: IconProps['name'];
33
+ modelValue?: boolean | 'indeterminate';
34
+ ui?: ComponentUIProps<typeof theme>;
35
+ }
36
+ export type CheckboxEmits = CheckboxRootEmits & {
37
+ change: [event: Event];
38
+ };
39
+ export interface CheckboxSlots {
40
+ label: StaticSlot<{
41
+ label?: string;
42
+ }>;
43
+ description: StaticSlot<{
44
+ description?: string;
45
+ }>;
46
+ }
47
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<CheckboxProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
48
+ change: (event: Event) => any;
49
+ "update:modelValue": (value: boolean | "indeterminate") => any;
50
+ }, string, import("vue").PublicProps, Readonly<CheckboxProps> & Readonly<{
51
+ onChange?: ((event: Event) => any) | undefined;
52
+ "onUpdate:modelValue"?: ((value: boolean | "indeterminate") => any) | undefined;
53
+ }>, {
54
+ disabled: boolean;
55
+ required: boolean;
56
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, CheckboxSlots>;
57
+ declare const _default: typeof __VLS_export;
58
+ export default _default;
59
+ type __VLS_WithSlots<T, S> = T & {
60
+ new (): {
61
+ $slots: S;
62
+ };
63
+ };
@@ -1,66 +1,52 @@
1
- <script lang="ts">
2
- import type { VariantProps } from '@byyuurin/ui-kit'
3
- import type { PrimitiveProps } from 'reka-ui'
4
- import type { UseComponentIconsProps } from '../composables/useComponentIcons'
5
- import type { chip } from '../theme'
6
- import type { ComponentAttrs } from '../types'
7
-
8
- export interface ChipSlots {
9
- leading?: (props?: {}) => any
10
- default?: (props?: {}) => any
11
- trailing?: (props?: {}) => any
12
- }
13
-
14
- type ChipVariants = VariantProps<typeof chip>
15
-
16
- export interface ChipProps extends ComponentAttrs<typeof chip>, Omit<UseComponentIconsProps, 'loading' | 'loadingIcon'> {
17
- /**
18
- * The element or component this component should render as.
19
- * @default "div"
20
- */
21
- as?: PrimitiveProps['as']
22
- variant?: ChipVariants['variant']
23
- size?: ChipVariants['size']
24
- label?: string
25
- }
1
+ <script>
2
+ import theme from "#build/ui/chip";
26
3
  </script>
27
4
 
28
- <script setup lang="ts">
29
- import { Primitive } from 'reka-ui'
30
- import { computed } from 'vue'
31
- import { useButtonGroup } from '../composables/useButtonGroup'
32
- import { useComponentIcons } from '../composables/useComponentIcons'
33
- import { useTheme } from '../composables/useTheme'
34
-
35
- const props = withDefaults(defineProps<ChipProps>(), {
36
- variant: 'solid',
37
- })
38
-
39
- const slots = defineSlots<ChipSlots>()
40
-
41
- const { size, orientation } = useButtonGroup(props)
42
- const { isLeading, leadingIconName, isTrailing, trailingIconName } = useComponentIcons(props)
43
-
44
- const { generateStyle } = useTheme()
45
- const style = computed(() => generateStyle('chip', {
46
- ...props,
47
- size: size.value,
48
- groupOrientation: orientation.value,
49
- }))
5
+ <script setup>
6
+ import { useVModel } from "@vueuse/core";
7
+ import { Primitive, Slot } from "reka-ui";
8
+ import { computed } from "vue";
9
+ import { useAppConfig } from "#imports";
10
+ import { useAvatarGroup } from "../composables/useAvatarGroup";
11
+ import { cv, merge } from "../utils/style";
12
+ defineOptions({ inheritAttrs: false });
13
+ const props = defineProps({
14
+ as: { type: null, required: false },
15
+ text: { type: [String, Number], required: false },
16
+ size: { type: null, required: false },
17
+ color: { type: null, required: false },
18
+ position: { type: null, required: false },
19
+ show: { type: Boolean, required: false, default: true },
20
+ inset: { type: Boolean, required: false },
21
+ standalone: { type: Boolean, required: false },
22
+ ui: { type: null, required: false },
23
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true }
24
+ });
25
+ const emit = defineEmits(["update:show"]);
26
+ defineSlots();
27
+ const show = useVModel(props, "show", emit);
28
+ const { size } = useAvatarGroup(props);
29
+ const appConfig = useAppConfig();
30
+ const ui = computed(() => {
31
+ const styler = cv(merge(theme, appConfig.ui.chip));
32
+ return styler({ ...props, size: size.value });
33
+ });
50
34
  </script>
51
35
 
52
36
  <template>
53
- <Primitive :as="props.as" :class="style.base({ class: [props.class, props.ui?.base] })">
54
- <slot name="leading">
55
- <span v-if="isLeading && leadingIconName" :class="style.leadingIcon({ class: [leadingIconName, props.ui?.leadingIcon] })"></span>
56
- </slot>
57
-
58
- <span v-if="props.label || slots.default" :class="style.label({ class: props.ui?.label })">
59
- <slot>{{ props.label }}</slot>
37
+ <Primitive
38
+ :as="props.as"
39
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
40
+ data-part="root"
41
+ >
42
+ <Slot v-bind="$attrs">
43
+ <slot></slot>
44
+ </Slot>
45
+
46
+ <span v-if="show" :class="ui.base({ class: props.ui?.base })" data-part="base">
47
+ <slot name="content">
48
+ {{ props.text }}
49
+ </slot>
60
50
  </span>
61
-
62
- <slot name="trailing">
63
- <span v-if="isTrailing && trailingIconName" :class="style.trailingIcon({ class: [trailingIconName, props.ui?.trailingIcon] })"></span>
64
- </slot>
65
51
  </Primitive>
66
52
  </template>
@@ -0,0 +1,48 @@
1
+ import type { VariantProps } from '@byyuurin/ui-kit';
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import theme from '#build/ui/chip';
4
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
5
+ import type { StaticSlot } from '../types/utils';
6
+ type ThemeVariants = VariantProps<typeof theme>;
7
+ export interface ChipProps extends ComponentBaseProps {
8
+ /**
9
+ * The element or component this component should render as.
10
+ * @default "div"
11
+ */
12
+ as?: PrimitiveProps['as'];
13
+ /** Display some text inside the chip. */
14
+ text?: string | number;
15
+ /** @default "md" */
16
+ size?: ThemeVariants['size'];
17
+ /** @default "primary" */
18
+ color?: ThemeVariants['color'];
19
+ /** @default "top-right" */
20
+ position?: ThemeVariants['position'];
21
+ show?: boolean;
22
+ /** When `true`, keep the chip inside the component for rounded elements. */
23
+ inset?: boolean;
24
+ /** When `true`, render the chip relatively to the parent. */
25
+ standalone?: boolean;
26
+ ui?: ComponentUIProps<typeof theme>;
27
+ }
28
+ export interface ChipEmits {
29
+ 'update:show': [show: boolean];
30
+ }
31
+ export interface ChipSlots {
32
+ default: StaticSlot;
33
+ content: StaticSlot;
34
+ }
35
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ChipProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
36
+ "update:show": (show: boolean) => any;
37
+ }, string, import("vue").PublicProps, Readonly<ChipProps> & Readonly<{
38
+ "onUpdate:show"?: ((show: boolean) => any) | undefined;
39
+ }>, {
40
+ show: boolean;
41
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ChipSlots>;
42
+ declare const _default: typeof __VLS_export;
43
+ export default _default;
44
+ type __VLS_WithSlots<T, S> = T & {
45
+ new (): {
46
+ $slots: S;
47
+ };
48
+ };
@@ -1,48 +1,44 @@
1
- <script lang="ts">
2
- import type { CollapsibleRootEmits, CollapsibleRootProps } from 'reka-ui'
3
- import type { collapsible } from '../theme'
4
- import type { ComponentAttrs } from '../types'
5
-
6
- export interface CollapsibleEmits extends CollapsibleRootEmits {}
7
-
8
- export interface CollapsibleSlots {
9
- default?: (props: { open: boolean }) => any
10
- content?: (props?: {}) => any
11
- }
12
-
13
- export interface CollapsibleProps extends ComponentAttrs<typeof collapsible>, Pick<CollapsibleRootProps, 'as' | 'defaultOpen' | 'open' | 'disabled' | 'unmountOnHide'> {
14
- }
1
+ <script>
2
+ import theme from "#build/ui/collapsible";
15
3
  </script>
16
4
 
17
- <script setup lang="ts">
18
- import { reactivePick } from '@vueuse/core'
19
- import { CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, useForwardPropsEmits } from 'reka-ui'
20
- import { computed } from 'vue'
21
- import { useTheme } from '../composables/useTheme'
22
-
23
- const props = withDefaults(defineProps<CollapsibleProps>(), {
24
- unmountOnHide: true,
25
- })
26
- const emit = defineEmits<CollapsibleEmits>()
27
- const slots = defineSlots<CollapsibleSlots>()
28
-
29
- const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'defaultOpen', 'open', 'disabled', 'unmountOnHide'), emit)
30
-
31
- const { generateStyle } = useTheme()
32
- const style = computed(() => generateStyle('collapsible', props))
5
+ <script setup>
6
+ import { reactivePick } from "@vueuse/core";
7
+ import { CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, useForwardPropsEmits } from "reka-ui";
8
+ import { computed } from "vue";
9
+ import { useAppConfig } from "#imports";
10
+ import { cv, merge } from "../utils/style";
11
+ const props = defineProps({
12
+ as: { type: null, required: false },
13
+ ui: { type: null, required: false },
14
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
15
+ defaultOpen: { type: Boolean, required: false },
16
+ open: { type: Boolean, required: false },
17
+ disabled: { type: Boolean, required: false },
18
+ unmountOnHide: { type: Boolean, required: false, default: true }
19
+ });
20
+ const emit = defineEmits(["update:open"]);
21
+ const slots = defineSlots();
22
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "defaultOpen", "open", "disabled", "unmountOnHide"), emit);
23
+ const appConfig = useAppConfig();
24
+ const ui = computed(() => {
25
+ const styler = cv(merge(theme, appConfig.ui.collapsible));
26
+ return styler(props);
27
+ });
33
28
  </script>
34
29
 
35
30
  <template>
36
31
  <CollapsibleRoot
37
32
  v-slot="{ open }"
38
33
  v-bind="rootProps"
39
- :class="style.root({ class: [props.class, props.ui?.root] })"
34
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
35
+ data-part="root"
40
36
  >
41
- <CollapsibleTrigger v-if="slots.default" as-child>
37
+ <CollapsibleTrigger v-if="!!slots.default" as-child>
42
38
  <slot :open="open"></slot>
43
39
  </CollapsibleTrigger>
44
40
 
45
- <CollapsibleContent :class="style.content({ class: props.ui?.content })">
41
+ <CollapsibleContent :class="ui.content({ class: props.ui?.content })" data-part="content">
46
42
  <slot name="content"></slot>
47
43
  </CollapsibleContent>
48
44
  </CollapsibleRoot>
@@ -0,0 +1,34 @@
1
+ import type { CollapsibleRootEmits, CollapsibleRootProps } from 'reka-ui';
2
+ import theme from '#build/ui/collapsible';
3
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
4
+ import type { StaticSlot } from '../types/utils';
5
+ export interface CollapsibleProps extends ComponentBaseProps, Pick<CollapsibleRootProps, 'defaultOpen' | 'open' | 'disabled' | 'unmountOnHide'> {
6
+ /**
7
+ * The element or component this component should render as.
8
+ * @default "div"
9
+ */
10
+ as?: CollapsibleRootProps['as'];
11
+ ui?: ComponentUIProps<typeof theme>;
12
+ }
13
+ export interface CollapsibleEmits extends CollapsibleRootEmits {
14
+ }
15
+ export interface CollapsibleSlots {
16
+ default: StaticSlot<{
17
+ open: boolean;
18
+ }>;
19
+ content: StaticSlot;
20
+ }
21
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<CollapsibleProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
+ "update:open": (value: boolean) => any;
23
+ }, string, import("vue").PublicProps, Readonly<CollapsibleProps> & Readonly<{
24
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
25
+ }>, {
26
+ unmountOnHide: boolean;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, CollapsibleSlots>;
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
+ };