@bitrix24/b24ui-nuxt 0.5.11 → 0.6.1

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 (252) hide show
  1. package/.nuxt/b24ui/advice.ts +10 -2
  2. package/.nuxt/b24ui/alert.ts +10 -2
  3. package/.nuxt/b24ui/avatar-group.ts +10 -2
  4. package/.nuxt/b24ui/avatar.ts +10 -2
  5. package/.nuxt/b24ui/badge.ts +10 -2
  6. package/.nuxt/b24ui/button-group.ts +10 -2
  7. package/.nuxt/b24ui/button.ts +16 -6
  8. package/.nuxt/b24ui/calendar.ts +10 -2
  9. package/.nuxt/b24ui/checkbox.ts +10 -2
  10. package/.nuxt/b24ui/chip.ts +10 -2
  11. package/.nuxt/b24ui/collapsible.ts +10 -2
  12. package/.nuxt/b24ui/container.ts +10 -2
  13. package/.nuxt/b24ui/countdown.ts +10 -2
  14. package/.nuxt/b24ui/description-list.ts +10 -2
  15. package/.nuxt/b24ui/dropdown-menu.ts +10 -2
  16. package/.nuxt/b24ui/form-field.ts +10 -2
  17. package/.nuxt/b24ui/form.ts +10 -2
  18. package/.nuxt/b24ui/input-menu.ts +12 -4
  19. package/.nuxt/b24ui/input-number.ts +10 -2
  20. package/.nuxt/b24ui/input.ts +10 -2
  21. package/.nuxt/b24ui/kbd.ts +10 -2
  22. package/.nuxt/b24ui/link.ts +10 -2
  23. package/.nuxt/b24ui/modal.ts +10 -2
  24. package/.nuxt/b24ui/navbar-divider.ts +10 -2
  25. package/.nuxt/b24ui/navbar-section.ts +10 -2
  26. package/.nuxt/b24ui/navbar-spacer.ts +10 -2
  27. package/.nuxt/b24ui/navbar.ts +10 -2
  28. package/.nuxt/b24ui/navigation-menu.ts +10 -2
  29. package/.nuxt/b24ui/popover.ts +10 -2
  30. package/.nuxt/b24ui/progress.ts +10 -2
  31. package/.nuxt/b24ui/radio-group.ts +10 -2
  32. package/.nuxt/b24ui/range.ts +10 -2
  33. package/.nuxt/b24ui/select-menu.ts +14 -6
  34. package/.nuxt/b24ui/select.ts +12 -4
  35. package/.nuxt/b24ui/separator.ts +10 -2
  36. package/.nuxt/b24ui/sidebar-body.ts +10 -2
  37. package/.nuxt/b24ui/sidebar-footer.ts +10 -2
  38. package/.nuxt/b24ui/sidebar-header.ts +10 -2
  39. package/.nuxt/b24ui/sidebar-heading.ts +10 -2
  40. package/.nuxt/b24ui/sidebar-layout.ts +10 -2
  41. package/.nuxt/b24ui/sidebar-section.ts +10 -2
  42. package/.nuxt/b24ui/sidebar-spacer.ts +10 -2
  43. package/.nuxt/b24ui/sidebar.ts +10 -2
  44. package/.nuxt/b24ui/skeleton.ts +10 -2
  45. package/.nuxt/b24ui/slideover.ts +10 -2
  46. package/.nuxt/b24ui/stacked-layout.ts +10 -2
  47. package/.nuxt/b24ui/switch.ts +10 -2
  48. package/.nuxt/b24ui/tabs.ts +10 -2
  49. package/.nuxt/b24ui/textarea.ts +10 -2
  50. package/.nuxt/b24ui/toast.ts +10 -2
  51. package/.nuxt/b24ui/toaster.ts +10 -2
  52. package/.nuxt/b24ui/tooltip.ts +10 -2
  53. package/cli/templates.mjs +19 -15
  54. package/dist/meta.d.mts +5675 -7513
  55. package/dist/meta.mjs +5675 -7513
  56. package/dist/module.json +3 -3
  57. package/dist/module.mjs +2 -2
  58. package/dist/runtime/components/Advice.vue +27 -55
  59. package/dist/runtime/components/Advice.vue.d.ts +56 -0
  60. package/dist/runtime/components/Alert.vue +35 -97
  61. package/dist/runtime/components/Alert.vue.d.ts +97 -0
  62. package/dist/runtime/components/App.vue +24 -34
  63. package/dist/runtime/components/App.vue.d.ts +23 -0
  64. package/dist/runtime/components/Avatar.vue +43 -82
  65. package/dist/runtime/components/Avatar.vue.d.ts +62 -0
  66. package/dist/runtime/components/AvatarGroup.vue +40 -77
  67. package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
  68. package/dist/runtime/components/Badge.vue +40 -84
  69. package/dist/runtime/components/Badge.vue.d.ts +78 -0
  70. package/dist/runtime/components/Button.vue +107 -164
  71. package/dist/runtime/components/Button.vue.d.ts +115 -0
  72. package/dist/runtime/components/ButtonGroup.vue +25 -52
  73. package/dist/runtime/components/ButtonGroup.vue.d.ts +63 -0
  74. package/dist/runtime/components/Calendar.vue +73 -153
  75. package/dist/runtime/components/Calendar.vue.d.ts +107 -0
  76. package/dist/runtime/components/Checkbox.vue +42 -74
  77. package/dist/runtime/components/Checkbox.vue.d.ts +55 -0
  78. package/dist/runtime/components/Chip.vue +26 -75
  79. package/dist/runtime/components/Chip.vue.d.ts +77 -0
  80. package/dist/runtime/components/Collapsible.vue +22 -41
  81. package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
  82. package/dist/runtime/components/Container.vue +15 -28
  83. package/dist/runtime/components/Container.vue.d.ts +27 -0
  84. package/dist/runtime/components/Countdown.vue +153 -379
  85. package/dist/runtime/components/Countdown.vue.d.ts +122 -0
  86. package/dist/runtime/components/DescriptionList.vue +78 -150
  87. package/dist/runtime/components/DescriptionList.vue.d.ts +109 -0
  88. package/dist/runtime/components/DropdownMenu.vue +38 -140
  89. package/dist/runtime/components/DropdownMenu.vue.d.ts +133 -0
  90. package/dist/runtime/components/DropdownMenuContent.vue +65 -79
  91. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
  92. package/dist/runtime/components/Form.vue +132 -218
  93. package/dist/runtime/components/Form.vue.d.ts +55 -0
  94. package/dist/runtime/components/FormField.vue +36 -81
  95. package/dist/runtime/components/FormField.vue.d.ts +73 -0
  96. package/dist/runtime/components/Input.vue +79 -180
  97. package/dist/runtime/components/Input.vue.d.ts +135 -0
  98. package/dist/runtime/components/InputMenu.vue +185 -382
  99. package/dist/runtime/components/InputMenu.vue.d.ts +357 -0
  100. package/dist/runtime/components/InputNumber.vue +77 -176
  101. package/dist/runtime/components/InputNumber.vue.d.ts +238 -0
  102. package/dist/runtime/components/Kbd.vue +20 -46
  103. package/dist/runtime/components/Kbd.vue.d.ts +55 -0
  104. package/dist/runtime/components/Link.vue +99 -179
  105. package/dist/runtime/components/Link.vue.d.ts +129 -0
  106. package/dist/runtime/components/LinkBase.vue +33 -42
  107. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  108. package/dist/runtime/components/Modal.vue +48 -128
  109. package/dist/runtime/components/Modal.vue.d.ts +124 -0
  110. package/dist/runtime/components/ModalDialogClose.vue +5 -8
  111. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  112. package/dist/runtime/components/Navbar.vue +15 -33
  113. package/dist/runtime/components/Navbar.vue.d.ts +46 -0
  114. package/dist/runtime/components/NavbarDivider.vue +15 -33
  115. package/dist/runtime/components/NavbarDivider.vue.d.ts +46 -0
  116. package/dist/runtime/components/NavbarSection.vue +15 -33
  117. package/dist/runtime/components/NavbarSection.vue.d.ts +46 -0
  118. package/dist/runtime/components/NavbarSpacer.vue +15 -33
  119. package/dist/runtime/components/NavbarSpacer.vue.d.ts +46 -0
  120. package/dist/runtime/components/NavigationMenu.vue +74 -209
  121. package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
  122. package/dist/runtime/components/OverlayProvider.vue +14 -18
  123. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  124. package/dist/runtime/components/Popover.vue +40 -82
  125. package/dist/runtime/components/Popover.vue.d.ts +79 -0
  126. package/dist/runtime/components/Progress.vue +70 -137
  127. package/dist/runtime/components/Progress.vue.d.ts +103 -0
  128. package/dist/runtime/components/RadioGroup.vue +59 -135
  129. package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
  130. package/dist/runtime/components/Range.vue +46 -86
  131. package/dist/runtime/components/Range.vue.d.ts +73 -0
  132. package/dist/runtime/components/Select.vue +110 -261
  133. package/dist/runtime/components/Select.vue.d.ts +170 -0
  134. package/dist/runtime/components/SelectMenu.vue +161 -348
  135. package/dist/runtime/components/SelectMenu.vue.d.ts +217 -0
  136. package/dist/runtime/components/Separator.vue +28 -72
  137. package/dist/runtime/components/Separator.vue.d.ts +77 -0
  138. package/dist/runtime/components/Sidebar.vue +15 -33
  139. package/dist/runtime/components/Sidebar.vue.d.ts +46 -0
  140. package/dist/runtime/components/SidebarBody.vue +17 -39
  141. package/dist/runtime/components/SidebarBody.vue.d.ts +53 -0
  142. package/dist/runtime/components/SidebarFooter.vue +15 -33
  143. package/dist/runtime/components/SidebarFooter.vue.d.ts +46 -0
  144. package/dist/runtime/components/SidebarHeader.vue +15 -33
  145. package/dist/runtime/components/SidebarHeader.vue.d.ts +46 -0
  146. package/dist/runtime/components/SidebarHeading.vue +15 -33
  147. package/dist/runtime/components/SidebarHeading.vue.d.ts +46 -0
  148. package/dist/runtime/components/SidebarLayout.vue +34 -71
  149. package/dist/runtime/components/SidebarLayout.vue.d.ts +65 -0
  150. package/dist/runtime/components/SidebarSection.vue +15 -33
  151. package/dist/runtime/components/SidebarSection.vue.d.ts +46 -0
  152. package/dist/runtime/components/SidebarSpacer.vue +15 -33
  153. package/dist/runtime/components/SidebarSpacer.vue.d.ts +46 -0
  154. package/dist/runtime/components/Skeleton.vue +14 -23
  155. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  156. package/dist/runtime/components/Slideover.vue +50 -132
  157. package/dist/runtime/components/Slideover.vue.d.ts +127 -0
  158. package/dist/runtime/components/StackedLayout.vue +34 -74
  159. package/dist/runtime/components/StackedLayout.vue.d.ts +65 -0
  160. package/dist/runtime/components/Switch.vue +46 -96
  161. package/dist/runtime/components/Switch.vue.d.ts +77 -0
  162. package/dist/runtime/components/Tabs.vue +41 -106
  163. package/dist/runtime/components/Tabs.vue.d.ts +104 -0
  164. package/dist/runtime/components/Textarea.vue +92 -202
  165. package/dist/runtime/components/Textarea.vue.d.ts +141 -0
  166. package/dist/runtime/components/Toast.vue +47 -106
  167. package/dist/runtime/components/Toast.vue.d.ts +95 -0
  168. package/dist/runtime/components/Toaster.vue +70 -116
  169. package/dist/runtime/components/Toaster.vue.d.ts +70 -0
  170. package/dist/runtime/components/Tooltip.vue +36 -65
  171. package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
  172. package/dist/runtime/components/content/TableWrapper.vue +24 -71
  173. package/dist/runtime/components/content/TableWrapper.vue.d.ts +83 -0
  174. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  175. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  176. package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
  177. package/dist/runtime/composables/useFormField.d.ts +2 -2
  178. package/dist/runtime/composables/useOverlay.d.ts +14 -7
  179. package/dist/runtime/composables/useOverlay.js +14 -6
  180. package/dist/runtime/prose/A.vue +16 -26
  181. package/dist/runtime/prose/A.vue.d.ts +27 -0
  182. package/dist/runtime/prose/Blockquote.vue +14 -26
  183. package/dist/runtime/prose/Blockquote.vue.d.ts +27 -0
  184. package/dist/runtime/prose/Code.vue +15 -32
  185. package/dist/runtime/prose/Code.vue.d.ts +31 -0
  186. package/dist/runtime/prose/Em.vue +16 -26
  187. package/dist/runtime/prose/Em.vue.d.ts +27 -0
  188. package/dist/runtime/prose/H1.vue +14 -26
  189. package/dist/runtime/prose/H1.vue.d.ts +27 -0
  190. package/dist/runtime/prose/H2.vue +14 -26
  191. package/dist/runtime/prose/H2.vue.d.ts +27 -0
  192. package/dist/runtime/prose/H3.vue +14 -26
  193. package/dist/runtime/prose/H3.vue.d.ts +27 -0
  194. package/dist/runtime/prose/H4.vue +14 -26
  195. package/dist/runtime/prose/H4.vue.d.ts +27 -0
  196. package/dist/runtime/prose/H5.vue +14 -26
  197. package/dist/runtime/prose/H5.vue.d.ts +27 -0
  198. package/dist/runtime/prose/H6.vue +14 -26
  199. package/dist/runtime/prose/H6.vue.d.ts +27 -0
  200. package/dist/runtime/prose/Hr.vue +13 -22
  201. package/dist/runtime/prose/Hr.vue.d.ts +19 -0
  202. package/dist/runtime/prose/Img.vue +13 -26
  203. package/dist/runtime/prose/Img.vue.d.ts +19 -0
  204. package/dist/runtime/prose/Li.vue +14 -26
  205. package/dist/runtime/prose/Li.vue.d.ts +27 -0
  206. package/dist/runtime/prose/Ol.vue +14 -26
  207. package/dist/runtime/prose/Ol.vue.d.ts +27 -0
  208. package/dist/runtime/prose/P.vue +14 -26
  209. package/dist/runtime/prose/P.vue.d.ts +27 -0
  210. package/dist/runtime/prose/Pre.vue +17 -33
  211. package/dist/runtime/prose/Pre.vue.d.ts +47 -0
  212. package/dist/runtime/prose/Strong.vue +14 -26
  213. package/dist/runtime/prose/Strong.vue.d.ts +27 -0
  214. package/dist/runtime/prose/Table.vue +21 -57
  215. package/dist/runtime/prose/Table.vue.d.ts +74 -0
  216. package/dist/runtime/prose/Tbody.vue +14 -26
  217. package/dist/runtime/prose/Tbody.vue.d.ts +27 -0
  218. package/dist/runtime/prose/Td.vue +14 -26
  219. package/dist/runtime/prose/Td.vue.d.ts +27 -0
  220. package/dist/runtime/prose/Th.vue +14 -26
  221. package/dist/runtime/prose/Th.vue.d.ts +27 -0
  222. package/dist/runtime/prose/Thead.vue +14 -26
  223. package/dist/runtime/prose/Thead.vue.d.ts +27 -0
  224. package/dist/runtime/prose/Tr.vue +14 -26
  225. package/dist/runtime/prose/Tr.vue.d.ts +27 -0
  226. package/dist/runtime/prose/Ul.vue +14 -26
  227. package/dist/runtime/prose/Ul.vue.d.ts +27 -0
  228. package/dist/runtime/types/form.d.ts +1 -0
  229. package/dist/runtime/types/utils.d.ts +42 -3
  230. package/dist/runtime/utils/link.d.ts +3 -3
  231. package/dist/runtime/utils/tv.js +2 -2
  232. package/dist/runtime/vue/components/Link.vue +122 -208
  233. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  234. package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.wBs9vEU5.mjs} +33 -8
  235. package/dist/types.d.mts +3 -5
  236. package/dist/unplugin.mjs +1 -1
  237. package/dist/vite.mjs +1 -1
  238. package/package.json +19 -27
  239. package/dist/meta.cjs +0 -72112
  240. package/dist/meta.d.cts +0 -72110
  241. package/dist/meta.d.ts +0 -72110
  242. package/dist/module.cjs +0 -63
  243. package/dist/module.d.cts +0 -15
  244. package/dist/module.d.ts +0 -15
  245. package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
  246. package/dist/types.d.ts +0 -7
  247. package/dist/unplugin.cjs +0 -236
  248. package/dist/unplugin.d.cts +0 -33
  249. package/dist/unplugin.d.ts +0 -33
  250. package/dist/vite.cjs +0 -21
  251. package/dist/vite.d.cts +0 -14
  252. package/dist/vite.d.ts +0 -14
@@ -1,172 +1,115 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/b24ui/button'
6
- import type { LinkProps } from './Link.vue'
7
- import type { UseComponentIconsProps } from '../composables/useComponentIcons'
8
- import { tv } from '../utils/tv'
9
- import type { AvatarProps } from '../types'
10
- import type { PartialString } from '../types/utils'
11
-
12
- const appConfigButton = _appConfig as AppConfig & { b24ui: { button: Partial<typeof theme> } }
13
-
14
- const button = tv({ extend: tv(theme), ...(appConfigButton.b24ui?.button || {}) })
15
-
16
- type ButtonVariants = VariantProps<typeof button>
17
-
18
- export interface ButtonProps extends Omit<UseComponentIconsProps, 'trailing' | 'trailingIcon'>, Omit<LinkProps, 'raw' | 'custom'> {
19
- label?: string
20
- /**
21
- * @defaultValue 'default'
22
- */
23
- color?: ButtonVariants['color']
24
- activeColor?: ButtonVariants['color']
25
- /**
26
- * @defaultValue 'normal'
27
- */
28
- depth?: ButtonVariants['depth']
29
- activeDepth?: ButtonVariants['depth']
30
- /**
31
- * @defaultValue 'md'
32
- */
33
- size?: ButtonVariants['size']
34
- /**
35
- * Rounds the corners of the button
36
- * @defaultValue false
37
- */
38
- rounded?: boolean
39
- /**
40
- * Render the button full width
41
- * @defaultValue false
42
- */
43
- block?: boolean
44
- /**
45
- * Set loading state automatically based on the `@click` promise state
46
- * @defaultValue false
47
- */
48
- loadingAuto?: boolean
49
- /**
50
- * Disable uppercase label
51
- * @defaultValue false
52
- */
53
- normalCase?: boolean
54
- /**
55
- * Shows LoaderWaitIcon in loading mode
56
- * @defaultValue false
57
- */
58
- useWait?: boolean
59
- /**
60
- * Shows LoaderClockIcon icon in loading mode
61
- * @defaultValue false
62
- */
63
- useClock?: boolean
64
- /**
65
- * Shows icons.chevronDown on the right side
66
- * @defaultValue false
67
- */
68
- useDropdown?: boolean
69
- onClick?: ((event: MouseEvent) => void | Promise<void>) | Array<((event: MouseEvent) => void | Promise<void>)>
70
- class?: any
71
- /**
72
- * The class to apply when the link is active
73
- * @defaultValue ''
74
- */
75
- activeClass?: string
76
- /**
77
- * The class to apply when the link is inactive
78
- * @defaultValue ''
79
- */
80
- inactiveClass?: string
81
- b24ui?: PartialString<typeof button.slots>
82
- }
83
-
84
- export interface ButtonSlots {
85
- leading(props?: {}): any
86
- default(props?: {}): any
87
- trailing(props?: {}): any
88
- }
1
+ <script>
2
+ import theme from "#build/b24ui/button";
89
3
  </script>
90
4
 
91
- <script setup lang="ts">
92
- import { type Ref, computed, ref, inject } from 'vue'
93
- import { useForwardProps } from 'reka-ui'
94
- import { useComponentIcons } from '../composables/useComponentIcons'
95
- import { useButtonGroup } from '../composables/useButtonGroup'
96
- import { formLoadingInjectionKey } from '../composables/useFormField'
97
- import { omit } from '../utils'
98
- import { pickLinkProps } from '../utils/link'
99
- import B24Avatar from './Avatar.vue'
100
- import B24Link from './Link.vue'
101
- import B24LinkBase from './LinkBase.vue'
102
- import ChevronDownIcon from '@bitrix24/b24icons-vue/actions/ChevronDownIcon'
103
- import LoaderWaitIcon from '@bitrix24/b24icons-vue/animated/LoaderWaitIcon'
104
- import LoaderClockIcon from '@bitrix24/b24icons-vue/animated/LoaderClockIcon'
105
- import SpinnerIcon from '@bitrix24/b24icons-vue/specialized/SpinnerIcon'
106
-
107
- const props = withDefaults(defineProps<ButtonProps>(), {
108
- type: 'button',
109
- active: undefined,
110
- activeClass: '',
111
- inactiveClass: ''
112
- })
113
-
114
- const slots = defineSlots<ButtonSlots>()
115
-
116
- const linkProps = useForwardProps(pickLinkProps(props))
117
-
118
- /**
119
- * @memo Problem use at Docs (vue): omit not exports
120
- */
5
+ <script setup>
6
+ import { computed, ref, inject } from "vue";
7
+ import { defu } from "defu";
8
+ import { useForwardProps } from "reka-ui";
9
+ import { useAppConfig } from "#imports";
10
+ import { useComponentIcons } from "../composables/useComponentIcons";
11
+ import { useButtonGroup } from "../composables/useButtonGroup";
12
+ import { formLoadingInjectionKey } from "../composables/useFormField";
13
+ import { omit } from "../utils";
14
+ import { tv } from "../utils/tv";
15
+ import { pickLinkProps } from "../utils/link";
16
+ import B24Avatar from "./Avatar.vue";
17
+ import B24Link from "./Link.vue";
18
+ import B24LinkBase from "./LinkBase.vue";
19
+ import ChevronDownIcon from "@bitrix24/b24icons-vue/actions/ChevronDownIcon";
20
+ import LoaderWaitIcon from "@bitrix24/b24icons-vue/animated/LoaderWaitIcon";
21
+ import LoaderClockIcon from "@bitrix24/b24icons-vue/animated/LoaderClockIcon";
22
+ import SpinnerIcon from "@bitrix24/b24icons-vue/specialized/SpinnerIcon";
23
+ const props = defineProps({
24
+ label: { type: String, required: false },
25
+ color: { type: null, required: false },
26
+ activeColor: { type: null, required: false },
27
+ depth: { type: null, required: false },
28
+ activeDepth: { type: null, required: false },
29
+ size: { type: null, required: false },
30
+ rounded: { type: Boolean, required: false },
31
+ block: { type: Boolean, required: false },
32
+ loadingAuto: { type: Boolean, required: false },
33
+ normalCase: { type: Boolean, required: false },
34
+ useWait: { type: Boolean, required: false },
35
+ useClock: { type: Boolean, required: false },
36
+ useDropdown: { type: Boolean, required: false },
37
+ onClick: { type: [Function, Array], required: false },
38
+ class: { type: null, required: false },
39
+ activeClass: { type: String, required: false, default: "" },
40
+ inactiveClass: { type: String, required: false, default: "" },
41
+ b24ui: { type: null, required: false },
42
+ icon: { type: [Function, Object], required: false },
43
+ avatar: { type: Object, required: false },
44
+ loading: { type: Boolean, required: false },
45
+ as: { type: null, required: false },
46
+ type: { type: null, required: false, default: "button" },
47
+ disabled: { type: Boolean, required: false },
48
+ active: { type: Boolean, required: false, default: void 0 },
49
+ exact: { type: Boolean, required: false },
50
+ exactQuery: { type: [Boolean, String], required: false },
51
+ exactHash: { type: Boolean, required: false },
52
+ isAction: { type: Boolean, required: false },
53
+ to: { type: null, required: false },
54
+ href: { type: null, required: false },
55
+ external: { type: Boolean, required: false },
56
+ target: { type: [String, Object, null], required: false },
57
+ rel: { type: [String, Object, null], required: false },
58
+ noRel: { type: Boolean, required: false },
59
+ prefetchedClass: { type: String, required: false },
60
+ prefetch: { type: Boolean, required: false },
61
+ prefetchOn: { type: [String, Object], required: false },
62
+ noPrefetch: { type: Boolean, required: false },
63
+ exactActiveClass: { type: String, required: false },
64
+ ariaCurrentValue: { type: String, required: false },
65
+ viewTransition: { type: Boolean, required: false },
66
+ replace: { type: Boolean, required: false }
67
+ });
68
+ const slots = defineSlots();
69
+ const appConfig = useAppConfig();
70
+ const { orientation, size: buttonSize, noSplit } = useButtonGroup(props);
71
+ const linkProps = useForwardProps(pickLinkProps(props));
121
72
  const proxyLinkProps = computed(() => {
122
- return omit(linkProps.value, ['type', 'disabled', 'onClick'])
123
- })
124
-
125
- const { orientation, size: buttonSize, noSplit } = useButtonGroup<ButtonProps>(props)
126
-
127
- const loadingAutoState = ref(false)
128
- const formLoading = inject<Ref<boolean> | undefined>(formLoadingInjectionKey, undefined)
129
-
130
- async function onClickWrapper(event: MouseEvent) {
131
- loadingAutoState.value = true
132
- const callbacks = Array.isArray(props.onClick) ? props.onClick : [props.onClick]
73
+ return omit(linkProps.value, ["type", "disabled", "onClick"]);
74
+ });
75
+ const loadingAutoState = ref(false);
76
+ const formLoading = inject(formLoadingInjectionKey, void 0);
77
+ async function onClickWrapper(event) {
78
+ loadingAutoState.value = true;
79
+ const callbacks = Array.isArray(props.onClick) ? props.onClick : [props.onClick];
133
80
  try {
134
- await Promise.all(callbacks.map(fn => fn?.(event)))
81
+ await Promise.all(callbacks.map((fn) => fn?.(event)));
135
82
  } finally {
136
- loadingAutoState.value = false
83
+ loadingAutoState.value = false;
137
84
  }
138
85
  }
139
-
140
86
  const isLoading = computed(() => {
141
- return props.loading || (props.loadingAuto && (loadingAutoState.value || (formLoading?.value && props.type === 'submit')))
142
- })
143
-
87
+ return props.loading || props.loadingAuto && (loadingAutoState.value || formLoading?.value && props.type === "submit");
88
+ });
144
89
  const { isLeading, leadingIconName } = useComponentIcons(
145
90
  computed(() => ({ ...props, loading: false }))
146
- )
147
-
91
+ );
148
92
  const isLabel = computed(() => {
149
- let isUseSlot = false
150
-
93
+ let isUseSlot = false;
151
94
  if (slots && !!slots.default) {
152
- isUseSlot = true
95
+ isUseSlot = true;
153
96
  }
154
-
155
- return (props?.label || '').length > 0 || isUseSlot
156
- })
157
-
97
+ return (props?.label || "").length > 0 || isUseSlot;
98
+ });
158
99
  const b24ui = computed(() => tv({
159
- extend: button,
160
- variants: {
161
- active: {
162
- true: {
163
- base: props.activeClass
164
- },
165
- false: {
166
- base: props.inactiveClass
100
+ extend: tv(theme),
101
+ ...defu({
102
+ variants: {
103
+ active: {
104
+ true: {
105
+ base: props.activeClass
106
+ },
107
+ false: {
108
+ base: props.inactiveClass
109
+ }
167
110
  }
168
111
  }
169
- }
112
+ }, appConfig.b24ui?.button || {})
170
113
  })({
171
114
  color: props.color,
172
115
  depth: props.depth,
@@ -182,7 +125,7 @@ const b24ui = computed(() => tv({
182
125
  useClock: Boolean(props.useClock),
183
126
  leading: Boolean(isLeading.value),
184
127
  buttonGroup: orientation.value
185
- }))
128
+ }));
186
129
  </script>
187
130
 
188
131
  <template>
@@ -197,11 +140,11 @@ const b24ui = computed(() => tv({
197
140
  <B24LinkBase
198
141
  v-bind="slotProps"
199
142
  :class="b24ui.base({
200
- class: [props.class, props.b24ui?.base],
201
- active,
202
- ...(active && activeDepth ? { depth: activeDepth } : {}),
203
- ...(active && activeColor ? { color: activeColor } : {})
204
- })"
143
+ class: [props.class, props.b24ui?.base],
144
+ active,
145
+ ...active && activeDepth ? { depth: activeDepth } : {},
146
+ ...active && activeColor ? { color: activeColor } : {}
147
+ })"
205
148
  @click="onClickWrapper"
206
149
  >
207
150
  <div
@@ -214,19 +157,19 @@ const b24ui = computed(() => tv({
214
157
  </div>
215
158
  <div
216
159
  :class="[
217
- b24ui.baseLine({ class: [props.b24ui?.baseLine] }),
218
- isLoading ? 'invisible' : ''
219
- ]"
160
+ b24ui.baseLine({ class: [props.b24ui?.baseLine] }),
161
+ isLoading ? 'invisible' : ''
162
+ ]"
220
163
  >
221
164
  <slot name="leading">
222
165
  <Component
223
166
  :is="leadingIconName"
224
- v-if="isLeading && (typeof leadingIconName !== 'undefined')"
167
+ v-if="isLeading && typeof leadingIconName !== 'undefined'"
225
168
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
226
169
  />
227
170
  <B24Avatar
228
171
  v-else-if="!!avatar"
229
- :size="((props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()) as AvatarProps['size'])"
172
+ :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
230
173
  v-bind="avatar"
231
174
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
232
175
  />
@@ -0,0 +1,115 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/b24ui/button';
3
+ import type { LinkProps } from './Link.vue';
4
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
5
+ import type { ComponentConfig } from '../types/utils';
6
+ type Button = ComponentConfig<typeof theme, AppConfig, 'button'>;
7
+ export interface ButtonProps extends Omit<UseComponentIconsProps, 'trailing' | 'trailingIcon'>, Omit<LinkProps, 'raw' | 'custom'> {
8
+ label?: string;
9
+ /**
10
+ * @defaultValue 'default'
11
+ */
12
+ color?: Button['variants']['color'];
13
+ activeColor?: Button['variants']['color'];
14
+ /**
15
+ * @defaultValue 'normal'
16
+ */
17
+ depth?: Button['variants']['depth'];
18
+ activeDepth?: Button['variants']['depth'];
19
+ /**
20
+ * @defaultValue 'md'
21
+ */
22
+ size?: Button['variants']['size'];
23
+ /**
24
+ * Rounds the corners of the button
25
+ * @defaultValue false
26
+ */
27
+ rounded?: boolean;
28
+ /**
29
+ * Render the button full width
30
+ * @defaultValue false
31
+ */
32
+ block?: boolean;
33
+ /**
34
+ * Set loading state automatically based on the `@click` promise state
35
+ * @defaultValue false
36
+ */
37
+ loadingAuto?: boolean;
38
+ /**
39
+ * Disable uppercase label
40
+ * @defaultValue false
41
+ */
42
+ normalCase?: boolean;
43
+ /**
44
+ * Shows LoaderWaitIcon in loading mode
45
+ * @defaultValue false
46
+ */
47
+ useWait?: boolean;
48
+ /**
49
+ * Shows LoaderClockIcon icon in loading mode
50
+ * @defaultValue false
51
+ */
52
+ useClock?: boolean;
53
+ /**
54
+ * Shows icons.chevronDown on the right side
55
+ * @defaultValue false
56
+ */
57
+ useDropdown?: boolean;
58
+ onClick?: ((event: MouseEvent) => void | Promise<void>) | Array<((event: MouseEvent) => void | Promise<void>)>;
59
+ class?: any;
60
+ /**
61
+ * The class to apply when the link is active
62
+ * @defaultValue ''
63
+ */
64
+ activeClass?: string;
65
+ /**
66
+ * The class to apply when the link is inactive
67
+ * @defaultValue ''
68
+ */
69
+ inactiveClass?: string;
70
+ b24ui?: Button['slots'];
71
+ }
72
+ export interface ButtonSlots {
73
+ leading(props?: {}): any;
74
+ default(props?: {}): any;
75
+ trailing(props?: {}): any;
76
+ }
77
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ButtonProps>, {
78
+ type: string;
79
+ active: undefined;
80
+ activeClass: string;
81
+ inactiveClass: string;
82
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ButtonProps>, {
83
+ type: string;
84
+ active: undefined;
85
+ activeClass: string;
86
+ inactiveClass: string;
87
+ }>>> & Readonly<{}>, {
88
+ type: "reset" | "submit" | "button";
89
+ activeClass: string;
90
+ active: boolean;
91
+ inactiveClass: string;
92
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<ButtonSlots> & ButtonSlots>;
93
+ export default _default;
94
+ type __VLS_WithDefaults<P, D> = {
95
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
96
+ default: D[K];
97
+ }> : P[K];
98
+ };
99
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
100
+ type __VLS_TypePropsToOption<T> = {
101
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
102
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
103
+ } : {
104
+ type: import('vue').PropType<T[K]>;
105
+ required: true;
106
+ };
107
+ };
108
+ type __VLS_WithTemplateSlots<T, S> = T & {
109
+ new (): {
110
+ $slots: S;
111
+ };
112
+ };
113
+ type __VLS_PrettifyLocal<T> = {
114
+ [K in keyof T]: T[K];
115
+ } & {};
@@ -1,64 +1,37 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/b24ui/button-group'
6
- import { tv } from '../utils/tv'
7
-
8
- const appConfigButtonGroup = _appConfig as AppConfig & { b24ui: { buttonGroup: Partial<typeof theme> } }
9
-
10
- const buttonGroup = tv({ extend: tv(theme), ...(appConfigButtonGroup.b24ui?.buttonGroup) })
11
-
12
- type ButtonGroupVariants = VariantProps<typeof buttonGroup>
13
-
14
- export interface ButtonGroupProps {
15
- /**
16
- * The element or component this component should render as.
17
- * @defaultValue 'div'
18
- */
19
- as?: any
20
- /**
21
- * @defaultValue 'md'
22
- */
23
- size?: ButtonGroupVariants['size']
24
- /**
25
- * The orientation the buttons are laid out.
26
- * @defaultValue 'horizontal'
27
- */
28
- orientation?: ButtonGroupVariants['orientation']
29
- /**
30
- * Disable show split
31
- * @defaultValue false
32
- */
33
- noSplit?: boolean
34
- class?: any
35
- }
36
-
37
- export interface ButtonGroupSlots {
38
- default(props?: {}): any
39
- }
1
+ <script>
2
+ import theme from "#build/b24ui/button-group";
40
3
  </script>
41
4
 
42
- <script setup lang="ts">
43
- import { provide, computed } from 'vue'
44
- import { Primitive } from 'reka-ui'
45
- import { buttonGroupInjectionKey } from '../composables/useButtonGroup'
46
-
47
- const props = withDefaults(defineProps<ButtonGroupProps>(), {
48
- orientation: 'horizontal',
49
- noSplit: false
50
- })
51
- defineSlots<ButtonGroupSlots>()
52
-
5
+ <script setup>
6
+ import { provide, computed } from "vue";
7
+ import { Primitive } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { buttonGroupInjectionKey } from "../composables/useButtonGroup";
10
+ import { tv } from "../utils/tv";
11
+ const props = defineProps({
12
+ as: { type: null, required: false },
13
+ size: { type: null, required: false },
14
+ orientation: { type: null, required: false, default: "horizontal" },
15
+ noSplit: { type: Boolean, required: false, default: false },
16
+ class: { type: null, required: false },
17
+ b24ui: { type: null, required: false }
18
+ });
19
+ defineSlots();
20
+ const appConfig = useAppConfig();
21
+ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.buttonGroup || {} }));
53
22
  provide(buttonGroupInjectionKey, computed(() => ({
54
23
  orientation: props.orientation,
55
24
  noSplit: Boolean(props.noSplit),
56
25
  size: props.size
57
- })))
26
+ })));
58
27
  </script>
59
28
 
60
29
  <template>
61
- <Primitive :as="as" class="group/items is-button-group" :class="buttonGroup({ orientation, class: props.class })">
30
+ <Primitive
31
+ :as="as"
32
+ class="group/items is-button-group"
33
+ :class="b24ui({ orientation, class: props.class })"
34
+ >
62
35
  <slot />
63
36
  </Primitive>
64
37
  </template>
@@ -0,0 +1,63 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/b24ui/button-group';
3
+ import type { ComponentConfig } from '../types/utils';
4
+ type ButtonGroup = ComponentConfig<typeof theme, AppConfig, 'buttonGroup'>;
5
+ export interface ButtonGroupProps {
6
+ /**
7
+ * The element or component this component should render as.
8
+ * @defaultValue 'div'
9
+ */
10
+ as?: any;
11
+ /**
12
+ * @defaultValue 'md'
13
+ */
14
+ size?: ButtonGroup['variants']['size'];
15
+ /**
16
+ * The orientation the buttons are laid out.
17
+ * @defaultValue 'horizontal'
18
+ */
19
+ orientation?: ButtonGroup['variants']['orientation'];
20
+ /**
21
+ * Disable show split
22
+ * @defaultValue false
23
+ */
24
+ noSplit?: boolean;
25
+ class?: any;
26
+ b24ui?: ButtonGroup['slots'];
27
+ }
28
+ export interface ButtonGroupSlots {
29
+ default(props?: {}): any;
30
+ }
31
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ButtonGroupProps>, {
32
+ orientation: string;
33
+ noSplit: boolean;
34
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ButtonGroupProps>, {
35
+ orientation: string;
36
+ noSplit: boolean;
37
+ }>>> & Readonly<{}>, {
38
+ orientation: ButtonGroup["variants"]["orientation"];
39
+ noSplit: boolean;
40
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<ButtonGroupSlots> & ButtonGroupSlots>;
41
+ export default _default;
42
+ type __VLS_WithDefaults<P, D> = {
43
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
44
+ default: D[K];
45
+ }> : P[K];
46
+ };
47
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
48
+ type __VLS_TypePropsToOption<T> = {
49
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
50
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
51
+ } : {
52
+ type: import('vue').PropType<T[K]>;
53
+ required: true;
54
+ };
55
+ };
56
+ type __VLS_WithTemplateSlots<T, S> = T & {
57
+ new (): {
58
+ $slots: S;
59
+ };
60
+ };
61
+ type __VLS_PrettifyLocal<T> = {
62
+ [K in keyof T]: T[K];
63
+ } & {};