@byyuurin/ui 0.0.11 → 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 +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 +48 -39
  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 +80 -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/Chip.vue +35 -32
  30. package/dist/runtime/components/Chip.vue.d.ts +33 -15
  31. package/dist/runtime/components/Collapsible.vue +13 -9
  32. package/dist/runtime/components/Collapsible.vue.d.ts +16 -8
  33. package/dist/runtime/components/Drawer.vue +80 -70
  34. package/dist/runtime/components/Drawer.vue.d.ts +51 -28
  35. package/dist/runtime/components/DropdownMenu.vue +23 -16
  36. package/dist/runtime/components/DropdownMenu.vue.d.ts +77 -36
  37. package/dist/runtime/components/DropdownMenuContent.vue +133 -103
  38. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +38 -26
  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 +172 -88
  42. package/dist/runtime/components/Form.vue.d.ts +69 -44
  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 +82 -77
  48. package/dist/runtime/components/Input.vue.d.ts +55 -43
  49. package/dist/runtime/components/InputNumber.vue +65 -49
  50. package/dist/runtime/components/InputNumber.vue.d.ts +51 -105
  51. package/dist/runtime/components/Kbd.vue +11 -5
  52. package/dist/runtime/components/Kbd.vue.d.ts +17 -11
  53. package/dist/runtime/components/Link.vue +54 -197
  54. package/dist/runtime/components/Link.vue.d.ts +17 -17
  55. package/dist/runtime/components/LinkBase.vue +11 -33
  56. package/dist/runtime/components/LinkBase.vue.d.ts +8 -3
  57. package/dist/runtime/components/Modal.vue +53 -39
  58. package/dist/runtime/components/Modal.vue.d.ts +64 -34
  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 +3 -3
  62. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -1
  63. package/dist/runtime/components/Pagination.vue +39 -47
  64. package/dist/runtime/components/Pagination.vue.d.ts +54 -31
  65. package/dist/runtime/components/PinInput.vue +46 -32
  66. package/dist/runtime/components/PinInput.vue.d.ts +40 -21
  67. package/dist/runtime/components/Popover.vue +33 -19
  68. package/dist/runtime/components/Popover.vue.d.ts +57 -32
  69. package/dist/runtime/components/Progress.vue +31 -26
  70. package/dist/runtime/components/Progress.vue.d.ts +32 -23
  71. package/dist/runtime/components/RadioGroup.vue +75 -48
  72. package/dist/runtime/components/RadioGroup.vue.d.ts +58 -36
  73. package/dist/runtime/components/ScrollArea.vue +33 -31
  74. package/dist/runtime/components/ScrollArea.vue.d.ts +9 -5
  75. package/dist/runtime/components/Select.vue +166 -76
  76. package/dist/runtime/components/Select.vue.d.ts +206 -65
  77. package/dist/runtime/components/Separator.vue +42 -16
  78. package/dist/runtime/components/Separator.vue.d.ts +35 -14
  79. package/dist/runtime/components/Skeleton.vue +18 -6
  80. package/dist/runtime/components/Skeleton.vue.d.ts +4 -4
  81. package/dist/runtime/components/Slider.vue +42 -24
  82. package/dist/runtime/components/Slider.vue.d.ts +43 -27
  83. package/dist/runtime/components/Switch.vue +40 -31
  84. package/dist/runtime/components/Switch.vue.d.ts +36 -27
  85. package/dist/runtime/components/Table.vue +279 -51
  86. package/dist/runtime/components/Table.vue.d.ts +151 -65
  87. package/dist/runtime/components/Tabs.vue +70 -23
  88. package/dist/runtime/components/Tabs.vue.d.ts +61 -29
  89. package/dist/runtime/components/Textarea.vue +102 -54
  90. package/dist/runtime/components/Textarea.vue.d.ts +57 -41
  91. package/dist/runtime/components/Toast.vue +84 -38
  92. package/dist/runtime/components/Toast.vue.d.ts +48 -27
  93. package/dist/runtime/components/ToastProvider.vue +31 -22
  94. package/dist/runtime/components/ToastProvider.vue.d.ts +30 -17
  95. package/dist/runtime/components/Tooltip.vue +33 -21
  96. package/dist/runtime/components/Tooltip.vue.d.ts +37 -15
  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 +3 -2
  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 -254
  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 +154 -87
  172. package/vue-plugin.d.ts +5 -0
  173. package/dist/module.d.ts +0 -13
  174. package/dist/module.mjs.map +0 -1
  175. package/dist/runtime/app/injections.d.ts +0 -9331
  176. package/dist/runtime/app/injections.js +0 -61
  177. package/dist/runtime/components/ButtonGroup.vue +0 -26
  178. package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -26
  179. package/dist/runtime/components/FormItem.vue +0 -90
  180. package/dist/runtime/components/FormItem.vue.d.ts +0 -60
  181. package/dist/runtime/composables/useButtonGroup.d.ts +0 -5
  182. package/dist/runtime/composables/useButtonGroup.js +0 -9
  183. package/dist/runtime/composables/useFormItem.d.ts +0 -27
  184. package/dist/runtime/composables/useFormItem.js +0 -64
  185. package/dist/runtime/composables/useTheme.d.ts +0 -9
  186. package/dist/runtime/composables/useTheme.js +0 -23
  187. package/dist/runtime/index.d.ts +0 -44
  188. package/dist/runtime/index.js +0 -44
  189. package/dist/runtime/locale/zh-tw.d.ts +0 -2
  190. package/dist/runtime/theme/accordion.d.ts +0 -50
  191. package/dist/runtime/theme/accordion.js +0 -28
  192. package/dist/runtime/theme/alert.d.ts +0 -119
  193. package/dist/runtime/theme/alert.js +0 -47
  194. package/dist/runtime/theme/app.d.ts +0 -19
  195. package/dist/runtime/theme/app.js +0 -19
  196. package/dist/runtime/theme/avatar-group.d.ts +0 -46
  197. package/dist/runtime/theme/avatar-group.js +0 -32
  198. package/dist/runtime/theme/avatar.d.ts +0 -50
  199. package/dist/runtime/theme/avatar.js +0 -34
  200. package/dist/runtime/theme/badge.d.ts +0 -76
  201. package/dist/runtime/theme/badge.js +0 -92
  202. package/dist/runtime/theme/breadcrumb.d.ts +0 -61
  203. package/dist/runtime/theme/breadcrumb.js +0 -44
  204. package/dist/runtime/theme/button-group.d.ts +0 -60
  205. package/dist/runtime/theme/button-group.js +0 -42
  206. package/dist/runtime/theme/button.d.ts +0 -184
  207. package/dist/runtime/theme/button.js +0 -164
  208. package/dist/runtime/theme/calendar.d.ts +0 -58
  209. package/dist/runtime/theme/calendar.js +0 -86
  210. package/dist/runtime/theme/card.d.ts +0 -56
  211. package/dist/runtime/theme/card.js +0 -37
  212. package/dist/runtime/theme/carousel.d.ts +0 -107
  213. package/dist/runtime/theme/carousel.js +0 -43
  214. package/dist/runtime/theme/checkbox.d.ts +0 -82
  215. package/dist/runtime/theme/checkbox.js +0 -54
  216. package/dist/runtime/theme/chip.d.ts +0 -61
  217. package/dist/runtime/theme/chip.js +0 -66
  218. package/dist/runtime/theme/collapsible.d.ts +0 -32
  219. package/dist/runtime/theme/collapsible.js +0 -10
  220. package/dist/runtime/theme/drawer.d.ts +0 -142
  221. package/dist/runtime/theme/drawer.js +0 -113
  222. package/dist/runtime/theme/dropdown-menu.d.ts +0 -65
  223. package/dist/runtime/theme/dropdown-menu.js +0 -83
  224. package/dist/runtime/theme/form-item.d.ts +0 -70
  225. package/dist/runtime/theme/form-item.js +0 -34
  226. package/dist/runtime/theme/form.d.ts +0 -2
  227. package/dist/runtime/theme/form.js +0 -7
  228. package/dist/runtime/theme/index.d.ts +0 -41
  229. package/dist/runtime/theme/index.js +0 -41
  230. package/dist/runtime/theme/input-number.d.ts +0 -115
  231. package/dist/runtime/theme/input-number.js +0 -95
  232. package/dist/runtime/theme/input.d.ts +0 -172
  233. package/dist/runtime/theme/input.js +0 -151
  234. package/dist/runtime/theme/kbd.d.ts +0 -33
  235. package/dist/runtime/theme/kbd.js +0 -26
  236. package/dist/runtime/theme/link.d.ts +0 -38
  237. package/dist/runtime/theme/link.js +0 -26
  238. package/dist/runtime/theme/modal.d.ts +0 -42
  239. package/dist/runtime/theme/modal.js +0 -55
  240. package/dist/runtime/theme/pagination.d.ts +0 -74
  241. package/dist/runtime/theme/pagination.js +0 -17
  242. package/dist/runtime/theme/pinInput.d.ts +0 -94
  243. package/dist/runtime/theme/pinInput.js +0 -111
  244. package/dist/runtime/theme/popover.d.ts +0 -32
  245. package/dist/runtime/theme/popover.js +0 -13
  246. package/dist/runtime/theme/progress.d.ts +0 -180
  247. package/dist/runtime/theme/progress.js +0 -95
  248. package/dist/runtime/theme/radio-group.d.ts +0 -104
  249. package/dist/runtime/theme/radio-group.js +0 -61
  250. package/dist/runtime/theme/scroll-area.d.ts +0 -67
  251. package/dist/runtime/theme/scroll-area.js +0 -33
  252. package/dist/runtime/theme/select.d.ts +0 -186
  253. package/dist/runtime/theme/select.js +0 -173
  254. package/dist/runtime/theme/separator.d.ts +0 -74
  255. package/dist/runtime/theme/separator.js +0 -53
  256. package/dist/runtime/theme/skeleton.d.ts +0 -2
  257. package/dist/runtime/theme/skeleton.js +0 -7
  258. package/dist/runtime/theme/slider.d.ts +0 -70
  259. package/dist/runtime/theme/slider.js +0 -52
  260. package/dist/runtime/theme/switch.d.ts +0 -116
  261. package/dist/runtime/theme/switch.js +0 -78
  262. package/dist/runtime/theme/table.d.ts +0 -86
  263. package/dist/runtime/theme/table.js +0 -36
  264. package/dist/runtime/theme/tabs.d.ts +0 -129
  265. package/dist/runtime/theme/tabs.js +0 -146
  266. package/dist/runtime/theme/textarea.d.ts +0 -90
  267. package/dist/runtime/theme/textarea.js +0 -116
  268. package/dist/runtime/theme/toast-provider.d.ts +0 -116
  269. package/dist/runtime/theme/toast-provider.js +0 -97
  270. package/dist/runtime/theme/toast.d.ts +0 -83
  271. package/dist/runtime/theme/toast.js +0 -35
  272. package/dist/runtime/theme/tooltip.d.ts +0 -38
  273. package/dist/runtime/theme/tooltip.js +0 -11
  274. package/dist/runtime/types/components.d.ts +0 -42
  275. package/dist/runtime/utils/extend-theme.d.ts +0 -9
  276. package/dist/runtime/utils/extend-theme.js +0 -27
  277. package/dist/runtime/utils/styler.d.ts +0 -4
  278. package/dist/runtime/utils/styler.js +0 -10
  279. package/dist/runtime/utils/translator.d.ts +0 -18
  280. package/dist/runtime/utils/translator.js +0 -8
  281. package/dist/shared/ui.D1BTWZFB.mjs +0 -5
  282. package/dist/shared/ui.D1BTWZFB.mjs.map +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,14 +1,15 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/carousel";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computedAsync, reactivePick } from "@vueuse/core";
6
+ import { reactivePick } from "@vueuse/core";
7
7
  import useEmblaCarousel from "embla-carousel-vue";
8
8
  import { Primitive, useForwardProps } from "reka-ui";
9
- import { computed, onMounted, ref, watch } from "vue";
9
+ import { computed, onBeforeMount, onMounted, ref, watch } from "vue";
10
+ import { useAppConfig } from "#imports";
10
11
  import { useLocale } from "../composables/useLocale";
11
- import { useTheme } from "../composables/useTheme";
12
+ import { cv, merge } from "../utils/style";
12
13
  import Button from "./Button.vue";
13
14
  const props = defineProps({
14
15
  as: { type: null, required: false },
@@ -25,9 +26,9 @@ const props = defineProps({
25
26
  autoHeight: { type: [Boolean, Object], required: false, default: false },
26
27
  classNames: { type: [Boolean, Object], required: false, default: false },
27
28
  fade: { type: [Boolean, Object], required: false, default: false },
28
- wheelGestures: { type: Boolean, required: false, skipCheck: true, default: false },
29
- class: { type: null, required: false },
29
+ wheelGestures: { type: [Boolean, Object], required: false, default: false },
30
30
  ui: { type: null, required: false },
31
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
31
32
  align: { type: [String, Function], required: false, default: "center" },
32
33
  containScroll: { type: [Boolean, String], required: false, default: "trimSnaps" },
33
34
  slidesToScroll: { type: [String, Number], required: false, default: 1 },
@@ -45,51 +46,60 @@ const props = defineProps({
45
46
  active: { type: Boolean, required: false, default: true },
46
47
  breakpoints: { type: Object, required: false, default: () => ({}) }
47
48
  });
49
+ const emit = defineEmits(["select"]);
48
50
  defineSlots();
49
- const rootProps = useForwardProps(reactivePick(props, "active", "align", "breakpoints", "containScroll", "dragFree", "dragThreshold", "duration", "inViewThreshold", "loop", "skipSnaps", "slidesToScroll", "startIndex", "watchDrag", "watchResize", "watchSlides", "watchFocus"));
50
51
  const { t, dir } = useLocale();
51
- const { theme, generateStyle } = useTheme();
52
- const style = computed(() => generateStyle("carousel", props));
53
- const prevIcon = computed(() => props.prevIcon || (dir.value === "rtl" ? theme.value.app.icons.chevronRight : theme.value.app.icons.chevronLeft));
54
- const nextIcon = computed(() => props.nextIcon || (dir.value === "rtl" ? theme.value.app.icons.chevronLeft : theme.value.app.icons.chevronRight));
52
+ const appConfig = useAppConfig();
53
+ const ui = computed(() => {
54
+ const styler = cv(merge(theme, appConfig.ui.carousel));
55
+ return styler(props);
56
+ });
57
+ const rootProps = useForwardProps(reactivePick(props, "active", "align", "breakpoints", "containScroll", "dragFree", "dragThreshold", "duration", "inViewThreshold", "loop", "skipSnaps", "slidesToScroll", "startIndex", "watchDrag", "watchResize", "watchSlides", "watchFocus"));
58
+ const prevIcon = computed(() => props.prevIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronRight : appConfig.ui.icons.chevronLeft));
59
+ const nextIcon = computed(() => props.nextIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronLeft : appConfig.ui.icons.chevronRight));
55
60
  const options = computed(() => ({
56
61
  ...props.fade ? { align: "center", containScroll: false } : {},
57
62
  ...rootProps.value,
58
63
  axis: props.orientation === "horizontal" ? "x" : "y",
59
64
  direction: dir.value === "rtl" ? "rtl" : "ltr"
60
65
  }));
61
- const plugins = computedAsync(async () => {
62
- const plugins2 = [];
66
+ const plugins = ref([]);
67
+ async function loadPlugins() {
68
+ const emblaPlugins = [];
63
69
  if (props.autoplay) {
64
70
  const AutoplayPlugin = await import("embla-carousel-autoplay").then((r) => r.default);
65
- plugins2.push(AutoplayPlugin(typeof props.autoplay === "boolean" ? {} : props.autoplay));
71
+ emblaPlugins.push(AutoplayPlugin(typeof props.autoplay === "boolean" ? {} : props.autoplay));
66
72
  }
67
73
  if (props.autoScroll) {
68
74
  const AutoScrollPlugin = await import("embla-carousel-auto-scroll").then((r) => r.default);
69
- plugins2.push(AutoScrollPlugin(typeof props.autoScroll === "boolean" ? {} : props.autoScroll));
75
+ emblaPlugins.push(AutoScrollPlugin(typeof props.autoScroll === "boolean" ? {} : props.autoScroll));
70
76
  }
71
77
  if (props.autoHeight) {
72
78
  const AutoHeightPlugin = await import("embla-carousel-auto-height").then((r) => r.default);
73
- plugins2.push(AutoHeightPlugin(typeof props.autoHeight === "boolean" ? {} : props.autoHeight));
79
+ emblaPlugins.push(AutoHeightPlugin(typeof props.autoHeight === "boolean" ? {} : props.autoHeight));
74
80
  }
75
81
  if (props.classNames) {
76
82
  const ClassNamesPlugin = await import("embla-carousel-class-names").then((r) => r.default);
77
- plugins2.push(ClassNamesPlugin(typeof props.classNames === "boolean" ? {} : props.classNames));
83
+ emblaPlugins.push(ClassNamesPlugin(typeof props.classNames === "boolean" ? {} : props.classNames));
78
84
  }
79
85
  if (props.fade) {
80
86
  const FadePlugin = await import("embla-carousel-fade").then((r) => r.default);
81
- plugins2.push(FadePlugin(typeof props.fade === "boolean" ? {} : props.fade));
87
+ emblaPlugins.push(FadePlugin(typeof props.fade === "boolean" ? {} : props.fade));
82
88
  }
83
89
  if (props.wheelGestures) {
84
90
  const { WheelGesturesPlugin } = await import("embla-carousel-wheel-gestures");
85
- plugins2.push(WheelGesturesPlugin(typeof props.wheelGestures === "boolean" ? {} : props.wheelGestures));
91
+ emblaPlugins.push(WheelGesturesPlugin(typeof props.wheelGestures === "boolean" ? {} : props.wheelGestures));
86
92
  }
87
- return plugins2;
88
- });
89
- const [emblaRef, emblaApi] = useEmblaCarousel(options.value, plugins.value);
90
- watch([options, plugins], () => {
93
+ plugins.value = emblaPlugins;
94
+ }
95
+ watch(() => [props.autoplay, props.autoScroll, props.autoHeight, props.classNames, props.fade, props.wheelGestures], async () => {
96
+ await loadPlugins();
91
97
  emblaApi.value?.reInit(options.value, plugins.value);
92
- });
98
+ }, { immediate: true });
99
+ const [emblaRef, emblaApi] = useEmblaCarousel(options, plugins);
100
+ watch(options, () => {
101
+ emblaApi.value?.reInit(options.value, plugins.value);
102
+ }, { flush: "post" });
93
103
  function scrollPrev() {
94
104
  emblaApi.value?.scrollPrev();
95
105
  }
@@ -100,8 +110,15 @@ function scrollTo(index) {
100
110
  emblaApi.value?.scrollTo(index);
101
111
  }
102
112
  function onKeyDown(event) {
103
- const prevKey = props.orientation === "vertical" ? "ArrowUp" : "ArrowLeft";
104
- const nextKey = props.orientation === "vertical" ? "ArrowDown" : "ArrowRight";
113
+ let prevKey;
114
+ let nextKey;
115
+ if (props.orientation === "horizontal") {
116
+ prevKey = dir.value === "ltr" ? "ArrowLeft" : "ArrowRight";
117
+ nextKey = dir.value === "ltr" ? "ArrowRight" : "ArrowLeft";
118
+ } else {
119
+ prevKey = "ArrowUp";
120
+ nextKey = "ArrowDown";
121
+ }
105
122
  if (event.key === prevKey) {
106
123
  event.preventDefault();
107
124
  scrollPrev();
@@ -123,15 +140,28 @@ function onSelect(api) {
123
140
  canScrollNext.value = api?.canScrollNext() || false;
124
141
  canScrollPrev.value = api?.canScrollPrev() || false;
125
142
  selectedIndex.value = api?.selectedScrollSnap() || 0;
143
+ emit("select", selectedIndex.value);
144
+ }
145
+ function isCarouselItem(item) {
146
+ return typeof item === "object" && item !== null;
126
147
  }
127
148
  onMounted(() => {
128
149
  if (!emblaApi.value)
129
150
  return;
130
- emblaApi.value?.on("init", onInit);
131
- emblaApi.value?.on("init", onSelect);
132
- emblaApi.value?.on("reInit", onInit);
133
- emblaApi.value?.on("reInit", onSelect);
134
- emblaApi.value?.on("select", onSelect);
151
+ emblaApi.value.on("init", onInit);
152
+ emblaApi.value.on("init", onSelect);
153
+ emblaApi.value.on("reInit", onInit);
154
+ emblaApi.value.on("reInit", onSelect);
155
+ emblaApi.value.on("select", onSelect);
156
+ });
157
+ onBeforeMount(() => {
158
+ if (!emblaApi.value)
159
+ return;
160
+ emblaApi.value.off("init", onInit);
161
+ emblaApi.value.off("init", onSelect);
162
+ emblaApi.value.off("reInit", onInit);
163
+ emblaApi.value.off("reInit", onSelect);
164
+ emblaApi.value.off("select", onSelect);
135
165
  });
136
166
  defineExpose({
137
167
  emblaRef,
@@ -143,20 +173,20 @@ defineExpose({
143
173
  <Primitive
144
174
  :as="props.as"
145
175
  role="region"
146
- aria-roledescription="carousel"
147
176
  tabindex="0"
148
- :class="style.root({ class: [props.class, props.ui?.root] })"
177
+ :class="ui.root({ class: [props.class, props.ui?.root] })"
178
+ aria-roledescription="carousel"
179
+ :data-orientation="props.orientation"
149
180
  data-part="root"
150
181
  @keydown="onKeyDown"
151
182
  >
152
- <div ref="emblaRef" :class="style.viewport({ class: props.ui?.viewport })" data-part="viewport">
153
- <div :class="style.container({ class: props.ui?.container })" data-part="container">
183
+ <div ref="emblaRef" :class="ui.viewport({ class: props.ui?.viewport })" data-part="viewport">
184
+ <div :class="ui.container({ class: props.ui?.container })" data-part="container">
154
185
  <div
155
186
  v-for="(item, index) in props.items"
156
187
  :key="index"
157
- role="group"
158
- aria-roledescription="slide"
159
- :class="style.item({ class: props.ui?.item })"
188
+ v-bind="props.dots ? { role: 'tabpanel' } : { 'role': 'group', 'aria-roledescription': 'slide' }"
189
+ :class="ui.item({ class: [props.ui?.item, ...isCarouselItem(item) ? [item.ui?.item, item.class] : []] })"
160
190
  data-part="item"
161
191
  >
162
192
  <slot :item="item" :index="index"></slot>
@@ -164,38 +194,42 @@ defineExpose({
164
194
  </div>
165
195
  </div>
166
196
 
167
- <div v-if="props.arrows || props.dots" :class="style.controls({ class: props.ui?.controls })" data-part="controls">
168
- <div v-if="props.arrows" :class="style.arrows({ class: props.ui?.arrows })" data-part="arrows">
197
+ <div v-if="props.arrows || props.dots" :class="ui.controls({ class: props.ui?.controls })" data-part="controls">
198
+ <div v-if="props.arrows" :class="ui.arrows({ class: props.ui?.arrows })" data-part="arrows">
169
199
  <Button
170
200
  :disabled="!canScrollPrev"
171
201
  :icon="prevIcon"
172
- size="md"
202
+ color="neutral"
173
203
  variant="outline"
174
204
  :aria-label="t('carousel.prev')"
175
205
  v-bind="typeof props.prev === 'object' ? props.prev : void 0"
176
- :class="style.prev({ class: props.ui?.prev })"
206
+ :class="ui.prev({ class: props.ui?.prev })"
177
207
  data-part="prev"
178
208
  @click="scrollPrev"
179
209
  />
180
210
  <Button
181
211
  :disabled="!canScrollNext"
182
212
  :icon="nextIcon"
183
- size="md"
213
+ color="neutral"
184
214
  variant="outline"
185
215
  :aria-label="t('carousel.next')"
186
216
  v-bind="typeof props.next === 'object' ? props.next : void 0"
187
- :class="style.next({ class: props.ui?.next })"
217
+ :class="ui.next({ class: props.ui?.next })"
188
218
  data-part="next"
189
219
  @click="scrollNext"
190
220
  />
191
221
  </div>
192
222
 
193
- <div v-if="props.dots" :class="style.dots({ class: props.ui?.dots })" data-part="dots">
223
+ <div v-if="props.dots" role="tablist" :aria-label="t('carousel.dots')" :class="ui.dots({ class: props.ui?.dots })" data-part="dots">
194
224
  <template v-for="(_, index) in scrollSnaps" :key="index">
195
225
  <button
226
+ type="button"
227
+ role="tab"
196
228
  :aria-label="t('carousel.goto', { page: index + 1 })"
197
- :class="style.dot({ class: props.ui?.dot, active: selectedIndex === index })"
229
+ :aria-selected="selectedIndex === index"
230
+ :class="ui.dot({ class: props.ui?.dot, active: selectedIndex === index })"
198
231
  data-part="dot"
232
+ :data-state="selectedIndex === index ? 'active' : void 0"
199
233
  @click="scrollTo(index)"
200
234
  ></button>
201
235
  </template>
@@ -6,18 +6,18 @@ import type { AutoplayOptionsType } from 'embla-carousel-autoplay';
6
6
  import type { ClassNamesOptionsType } from 'embla-carousel-class-names';
7
7
  import type { FadeOptionsType } from 'embla-carousel-fade';
8
8
  import type { WheelGesturesPluginOptions } from 'embla-carousel-wheel-gestures';
9
- import type { AcceptableValue, PrimitiveProps } from 'reka-ui';
10
- import type { carousel } from '../theme/index.js';
11
- import type { ButtonProps, ComponentAttrs } from '../types/index.js';
12
- export type CarouselItem = AcceptableValue;
13
- export interface CarouselSlots<T extends CarouselItem = CarouselItem> {
14
- default?: (props: {
15
- item: T;
16
- index: number;
17
- }) => any;
18
- }
19
- type CarouselVariants = VariantProps<typeof carousel>;
20
- export interface CarouselProps<T extends CarouselItem = CarouselItem> extends ComponentAttrs<typeof carousel>, Omit<EmblaOptionsType, 'axis' | 'container' | 'slides' | 'direction'> {
9
+ import type { PrimitiveProps } from 'reka-ui';
10
+ import theme from '#build/ui/carousel';
11
+ import type { ButtonProps, ComponentBaseProps, ComponentUIProps } from '../types';
12
+ import type { AcceptableValue, StaticSlot } from '../types/utils';
13
+ export type CarouselValue = AcceptableValue;
14
+ export type CarouselItem = AcceptableValue | {
15
+ class?: ComponentBaseProps['class'];
16
+ ui?: Pick<ComponentUIProps<typeof theme>, 'item'>;
17
+ [key: string]: any;
18
+ };
19
+ type ThemeVariants = VariantProps<typeof theme>;
20
+ export interface CarouselProps<T extends CarouselItem = CarouselItem> extends ComponentBaseProps, Omit<EmblaOptionsType, 'axis' | 'container' | 'slides' | 'direction'> {
21
21
  /**
22
22
  * The element or component this component should render as.
23
23
  * @default "div"
@@ -53,52 +53,73 @@ export interface CarouselProps<T extends CarouselItem = CarouselItem> extends Co
53
53
  * @default false
54
54
  */
55
55
  dots?: boolean;
56
- orientation?: CarouselVariants['orientation'];
56
+ /**
57
+ * The orientation of the carousel.
58
+ * @default "horizontal"
59
+ */
60
+ orientation?: ThemeVariants['orientation'];
57
61
  items?: T[];
58
62
  /**
59
63
  * Enable Autoplay plugin
60
- * @link https://www.embla-carousel.com/plugins/autoplay/
64
+ * @see https://www.embla-carousel.com/plugins/autoplay/
61
65
  */
62
66
  autoplay?: boolean | AutoplayOptionsType;
63
67
  /**
64
68
  * Enable Auto Scroll plugin
65
- * @link https://www.embla-carousel.com/plugins/auto-scroll/
69
+ * @see https://www.embla-carousel.com/plugins/auto-scroll/
66
70
  */
67
71
  autoScroll?: boolean | AutoScrollOptionsType;
68
72
  /**
69
73
  * Enable Auto Height plugin
70
- * @link https://www.embla-carousel.com/plugins/auto-height/
74
+ * @see https://www.embla-carousel.com/plugins/auto-height/
71
75
  */
72
76
  autoHeight?: boolean | AutoHeightOptionsType;
73
77
  /**
74
78
  * Enable Class Names plugin
75
- * @link https://www.embla-carousel.com/plugins/class-names/
79
+ * @see https://www.embla-carousel.com/plugins/class-names/
76
80
  */
77
81
  classNames?: boolean | ClassNamesOptionsType;
78
82
  /**
79
83
  * Enable Fade plugin
80
- * @link https://www.embla-carousel.com/plugins/fade/
84
+ * @see https://www.embla-carousel.com/plugins/fade/
81
85
  */
82
86
  fade?: boolean | FadeOptionsType;
83
87
  /**
84
88
  * Enable Wheel Gestures plugin
85
- * @link https://www.embla-carousel.com/plugins/wheel-gestures/
89
+ * @see https://www.embla-carousel.com/plugins/wheel-gestures/
86
90
  */
87
91
  wheelGestures?: boolean | WheelGesturesPluginOptions;
92
+ ui?: ComponentUIProps<typeof theme>;
93
+ }
94
+ export interface CarouselEmits {
95
+ /**
96
+ * Emitted when the selected slide changes
97
+ * @param selectedIndex The index of the selected slide
98
+ */
99
+ select: [selectedIndex: number];
100
+ }
101
+ export interface CarouselSlots<T extends CarouselItem = CarouselItem> {
102
+ default: StaticSlot<{
103
+ item: T;
104
+ index: number;
105
+ }>;
88
106
  }
89
- declare const _default: <T extends CarouselItem>(__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<{
90
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, never> & CarouselProps<T> & Partial<{}>> & import("vue").PublicProps;
91
- expose(exposed: import("vue").ShallowUnwrapRef<{
107
+ declare const __VLS_export: <T extends CarouselItem>(__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<{
108
+ props: __VLS_PrettifyLocal<CarouselProps<T> & {
109
+ onSelect?: ((selectedIndex: number) => any) | undefined;
110
+ }> & import("vue").PublicProps;
111
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
92
112
  emblaRef: import("vue").Ref<HTMLElement | undefined, HTMLElement | undefined>;
93
113
  emblaApi: import("vue").Ref<EmblaCarouselType | undefined, EmblaCarouselType | undefined>;
94
- }>): void;
114
+ }>) => void;
95
115
  attrs: any;
96
116
  slots: CarouselSlots<T>;
97
- emit: {};
117
+ emit: (evt: "select", selectedIndex: number) => void;
98
118
  }>) => import("vue").VNode & {
99
119
  __ctx?: Awaited<typeof __VLS_setup>;
100
120
  };
121
+ declare const _default: typeof __VLS_export;
101
122
  export default _default;
102
123
  type __VLS_PrettifyLocal<T> = {
103
- [K in keyof T]: T[K];
124
+ [K in keyof T as K]: T[K];
104
125
  } & {};
@@ -1,22 +1,29 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/checkbox";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { reactivePick } from "@vueuse/core";
6
+ import { reactivePick, useVModel } from "@vueuse/core";
7
7
  import { CheckboxIndicator, CheckboxRoot, Label, Primitive, useForwardProps } from "reka-ui";
8
8
  import { computed, useId } from "vue";
9
- import { useFormItem } from "../composables/useFormItem";
10
- import { useTheme } from "../composables/useTheme";
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 });
11
14
  const props = defineProps({
12
15
  as: { type: null, required: false },
13
16
  label: { type: String, required: false },
14
17
  description: { type: String, required: false },
18
+ variant: { type: null, required: false },
19
+ color: { type: null, required: false },
15
20
  size: { type: null, required: false },
16
- icon: { type: String, required: false },
17
- indeterminateIcon: { type: String, required: false },
18
- class: { 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 },
19
25
  ui: { type: null, required: false },
26
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
20
27
  disabled: { type: Boolean, required: false, default: false },
21
28
  required: { type: Boolean, required: false, default: false },
22
29
  name: { type: String, required: false },
@@ -24,18 +31,21 @@ const props = defineProps({
24
31
  id: { type: String, required: false },
25
32
  defaultValue: { type: [Boolean, String], required: false }
26
33
  });
27
- const emit = defineEmits(["change"]);
34
+ const emit = defineEmits(["update:modelValue", "change"]);
28
35
  const slots = defineSlots();
29
- const innerValue = defineModel({ type: [Boolean, String], ...{ default: void 0 } });
36
+ const modelValue = useVModel(props, "modelValue", emit);
30
37
  const rootProps = useForwardProps(reactivePick(props, "required", "value", "defaultValue"));
31
- const { id: _id, size, name, disabled, ariaAttrs, emitFormChange, emitFormInput } = useFormItem(props);
38
+ const { id: _id, size, name, disabled, ariaAttrs, emitFormChange, emitFormInput } = useFormField(props);
32
39
  const id = _id.value ?? useId();
33
- const { theme, generateStyle } = useTheme();
34
- const style = computed(() => generateStyle("checkbox", {
35
- ...props,
36
- size: size.value,
37
- disabled: disabled.value
38
- }));
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
+ });
39
49
  function onUpdate(value) {
40
50
  const event = new Event("change", { target: value });
41
51
  emit("change", event);
@@ -45,31 +55,46 @@ function onUpdate(value) {
45
55
  </script>
46
56
 
47
57
  <template>
48
- <Primitive :as="props.as" :class="style.root({ class: [props.class, props.ui?.root] })" data-part="root">
49
- <div :class="style.container({ class: props.ui?.container })" data-part="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">
50
60
  <CheckboxRoot
51
- v-slot="{ modelValue }"
52
- v-bind="{ ...rootProps, ...ariaAttrs, id, name, disabled }"
53
- v-model="innerValue"
54
- :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 })"
55
64
  data-part="base"
56
65
  @update:model-value="onUpdate"
57
66
  >
58
- <CheckboxIndicator as-child force-mount>
59
- <span
60
- v-if="modelValue === 'indeterminate'"
61
- :class="style.icon({ class: [props.indeterminateIcon || theme.app.icons.indeterminate, props.ui?.icon] })"
62
- data-part="icon"
63
- ></span>
64
- <span v-else :class="style.icon({ class: [props.icon, theme.app.icons.check, props.ui?.icon] })" data-part="icon"></span>
65
- </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>
66
83
  </CheckboxRoot>
67
84
  </div>
68
- <div v-if="props.label || slots.label || props.description || slots.description" :class="style.wrapper({ class: props.ui?.wrapper })" data-part="wrapper">
69
- <Label v-if="props.label || slots.label" :for="id" :class="style.label({ class: props.ui?.label })" data-part="label">
70
- <slot name="label" :label="props.label">{{ props.label }}</slot>
71
- </Label>
72
- <p v-if="props.description || slots.description" :class="style.description({ class: props.ui?.description })" data-part="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">
73
98
  <slot name="description" :description="props.description">
74
99
  {{ props.description }}
75
100
  </slot>
@@ -1,20 +1,10 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
- import type { CheckboxRootProps, PrimitiveProps } from 'reka-ui';
3
- import type { checkbox } from '../theme/index.js';
4
- import type { ComponentAttrs } from '../types/index.js';
5
- export interface CheckboxEmits {
6
- change: [payload: Event];
7
- }
8
- export interface CheckboxSlots {
9
- label?: (props: {
10
- label?: string;
11
- }) => any;
12
- description?: (props: {
13
- description?: string;
14
- }) => any;
15
- }
16
- type CheckboxVariants = VariantProps<typeof checkbox>;
17
- export interface CheckboxProps extends ComponentAttrs<typeof checkbox>, Pick<CheckboxRootProps, 'disabled' | 'required' | 'name' | 'value' | 'id' | 'defaultValue'> {
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'> {
18
8
  /**
19
9
  * The element or component this component should render as.
20
10
  * @default "div"
@@ -22,32 +12,49 @@ export interface CheckboxProps extends ComponentAttrs<typeof checkbox>, Pick<Che
22
12
  as?: PrimitiveProps['as'];
23
13
  label?: string;
24
14
  description?: string;
25
- size?: CheckboxVariants['size'];
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'];
26
23
  /**
27
24
  * The icon displayed when checked.
28
25
  * @default app.icons.check
29
26
  */
30
- icon?: string;
27
+ icon?: IconProps['name'];
31
28
  /**
32
29
  * The icon displayed when the checkbox is indeterminate.
33
- * @default app.icons.indeterminate
30
+ * @default app.icons.minus
34
31
  */
35
- indeterminateIcon?: string;
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
+ }>;
36
46
  }
37
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<CheckboxProps & {
38
- modelValue?: boolean | "indeterminate";
39
- }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
40
- change: (payload: Event) => any;
47
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<CheckboxProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
48
+ change: (event: Event) => any;
41
49
  "update:modelValue": (value: boolean | "indeterminate") => any;
42
- }, string, import("vue").PublicProps, Readonly<CheckboxProps & {
43
- modelValue?: boolean | "indeterminate";
44
- }> & Readonly<{
45
- onChange?: ((payload: Event) => any) | undefined;
50
+ }, string, import("vue").PublicProps, Readonly<CheckboxProps> & Readonly<{
51
+ onChange?: ((event: Event) => any) | undefined;
46
52
  "onUpdate:modelValue"?: ((value: boolean | "indeterminate") => any) | undefined;
47
53
  }>, {
48
54
  disabled: boolean;
49
55
  required: boolean;
50
56
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, CheckboxSlots>;
57
+ declare const _default: typeof __VLS_export;
51
58
  export default _default;
52
59
  type __VLS_WithSlots<T, S> = T & {
53
60
  new (): {