@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
@@ -0,0 +1,95 @@
1
+ import type { ToastRootProps, ToastRootEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/b24ui/toast';
4
+ import type { AvatarProps, ButtonProps, IconComponent } from '../types';
5
+ import type { StringOrVNode, ComponentConfig } from '../types/utils';
6
+ type Toast = ComponentConfig<typeof theme, AppConfig, 'toast'>;
7
+ export interface ToastProps extends Pick<ToastRootProps, 'defaultOpen' | 'open' | 'type' | 'duration'> {
8
+ /**
9
+ * The element or component this component should render as.
10
+ * @defaultValue 'li'
11
+ */
12
+ as?: any;
13
+ title?: StringOrVNode;
14
+ description?: StringOrVNode;
15
+ /**
16
+ * @IconComponent
17
+ */
18
+ icon?: IconComponent;
19
+ avatar?: AvatarProps;
20
+ /**
21
+ * @defaultValue 'default'
22
+ */
23
+ color?: Toast['variants']['color'];
24
+ /**
25
+ * The orientation between the content and the actions
26
+ * @defaultValue 'vertical'
27
+ */
28
+ orientation?: Toast['variants']['orientation'];
29
+ /**
30
+ * Display a list of actions:
31
+ * - under the title and description when orientation is `vertical`
32
+ * - next to the close button when orientation is `horizontal`
33
+ * `{ size: 'xs' }`{lang="ts"}
34
+ */
35
+ actions?: ButtonProps[];
36
+ /**
37
+ * Display a close button to dismiss the toast.
38
+ * `{ size: 'md', color: 'neutral', variant: 'link' }`{lang="ts"}
39
+ * @defaultValue true
40
+ */
41
+ close?: boolean | Partial<ButtonProps>;
42
+ /**
43
+ * The icon displayed in the close button.
44
+ * @defaultValue icons.close
45
+ * @IconComponent
46
+ */
47
+ closeIcon?: IconComponent;
48
+ class?: any;
49
+ b24ui?: Toast['slots'];
50
+ }
51
+ export interface ToastEmits extends ToastRootEmits {
52
+ }
53
+ export interface ToastSlots {
54
+ leading(props?: {}): any;
55
+ title(props?: {}): any;
56
+ description(props?: {}): any;
57
+ actions(props?: {}): any;
58
+ close(props: {
59
+ b24ui: {
60
+ [K in keyof Required<Toast['slots']>]: (props?: Record<string, any>) => string;
61
+ };
62
+ }): any;
63
+ }
64
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ToastProps>, {
65
+ close: boolean;
66
+ orientation: string;
67
+ }>>, {
68
+ height: import("vue").Ref<number, number>;
69
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
70
+ close: boolean | Partial<ButtonProps>;
71
+ orientation: Toast["variants"]["orientation"];
72
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<ToastSlots> & ToastSlots>;
73
+ export default _default;
74
+ type __VLS_WithDefaults<P, D> = {
75
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
76
+ default: D[K];
77
+ }> : P[K];
78
+ };
79
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
80
+ type __VLS_TypePropsToOption<T> = {
81
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
82
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
83
+ } : {
84
+ type: import('vue').PropType<T[K]>;
85
+ required: true;
86
+ };
87
+ };
88
+ type __VLS_WithTemplateSlots<T, S> = T & {
89
+ new (): {
90
+ $slots: S;
91
+ };
92
+ };
93
+ type __VLS_PrettifyLocal<T> = {
94
+ [K in keyof T]: T[K];
95
+ } & {};
@@ -1,114 +1,68 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { ToastProviderProps } from 'reka-ui'
4
- import type { AppConfig } from '@nuxt/schema'
5
- import _appConfig from '#build/app.config'
6
- import theme from '#build/b24ui/toaster'
7
- import { tv } from '../utils/tv'
8
-
9
- const appConfigToaster = _appConfig as AppConfig & { b24ui: { toaster: Partial<typeof theme> } }
10
-
11
- const toaster = tv({ extend: tv(theme), ...(appConfigToaster.b24ui?.toaster || {}) })
12
-
13
- type ToasterVariants = VariantProps<typeof toaster>
14
-
15
- export interface ToasterProps extends Omit<ToastProviderProps, 'swipeDirection'> {
16
- /**
17
- * The position on the screen to display the toasts.
18
- * @defaultValue 'top-right'
19
- */
20
- position?: ToasterVariants['position']
21
- /**
22
- * Expand the toasts to show multiple toasts at once.
23
- * @defaultValue true
24
- */
25
- expand?: boolean
26
- /**
27
- * Render the toaster in a portal.
28
- * @defaultValue true
29
- */
30
- portal?: boolean
31
- /**
32
- * @defaultValue 5000
33
- */
34
- duration?: number
35
- class?: any
36
- b24ui?: Partial<typeof toaster.slots>
37
- }
38
-
39
- export interface ToasterSlots {
40
- default(props?: {}): any
41
- }
42
-
1
+ <script>
2
+ import theme from "#build/b24ui/toaster";
43
3
  export default {
44
- name: 'Toaster'
45
- }
4
+ name: "Toaster"
5
+ };
46
6
  </script>
47
7
 
48
- <script setup lang="ts">
49
- import { ref, computed } from 'vue'
50
- import { ToastProvider, ToastViewport, ToastPortal, useForwardProps } from 'reka-ui'
51
- import { reactivePick } from '@vueuse/core'
52
- import { useToast } from '../composables/useToast'
53
- import type { Toast } from '../composables/useToast'
54
- import { omit } from '../utils'
55
- import B24Toast from './Toast.vue'
56
-
57
- const props = withDefaults(defineProps<ToasterProps>(), {
58
- position: 'top-right' as const,
59
- expand: true,
60
- duration: 5000,
61
- portal: true
62
- })
63
- defineSlots<ToasterSlots>()
64
-
65
- const providerProps = useForwardProps(reactivePick(props, 'duration', 'label', 'swipeThreshold'))
66
-
67
- const proxyToastProps = (toast: Toast) => {
68
- return omit(toast, ['id', 'close'])
69
- }
70
-
71
- const { toasts, remove } = useToast()
72
-
8
+ <script setup>
9
+ import { ref, computed } from "vue";
10
+ import { ToastProvider, ToastViewport, ToastPortal, useForwardProps } from "reka-ui";
11
+ import { reactivePick } from "@vueuse/core";
12
+ import { useAppConfig } from "#imports";
13
+ import { useToast } from "../composables/useToast";
14
+ import { omit } from "../utils";
15
+ import { tv } from "../utils/tv";
16
+ import B24Toast from "./Toast.vue";
17
+ const props = defineProps({
18
+ position: { type: null, required: false, default: "top-right" },
19
+ expand: { type: Boolean, required: false, default: true },
20
+ portal: { type: Boolean, required: false, default: true },
21
+ duration: { type: Number, required: false, default: 5e3 },
22
+ class: { type: null, required: false },
23
+ b24ui: { type: null, required: false },
24
+ label: { type: String, required: false },
25
+ swipeThreshold: { type: Number, required: false }
26
+ });
27
+ defineSlots();
28
+ const { toasts, remove } = useToast();
29
+ const appConfig = useAppConfig();
30
+ const providerProps = useForwardProps(reactivePick(props, "duration", "label", "swipeThreshold"));
31
+ const proxyToastProps = (toast) => {
32
+ return omit(toast, ["id", "close"]);
33
+ };
73
34
  const swipeDirection = computed(() => {
74
35
  switch (props.position) {
75
- case 'top-center':
76
- return 'up'
77
- case 'top-right':
78
- case 'bottom-right':
79
- return 'right'
80
- case 'bottom-center':
81
- return 'down'
82
- case 'top-left':
83
- case 'bottom-left':
84
- return 'left'
36
+ case "top-center":
37
+ return "up";
38
+ case "top-right":
39
+ case "bottom-right":
40
+ return "right";
41
+ case "bottom-center":
42
+ return "down";
43
+ case "top-left":
44
+ case "bottom-left":
45
+ return "left";
85
46
  }
86
- return 'right'
87
- })
88
-
89
- const b24ui = computed(() => toaster({
47
+ return "right";
48
+ });
49
+ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.toaster || {} })({
90
50
  position: props.position,
91
51
  swipeDirection: swipeDirection.value
92
- }))
93
-
94
- function onUpdateOpen(value: boolean, id: string | number) {
52
+ }));
53
+ function onUpdateOpen(value, id) {
95
54
  if (value) {
96
- return
55
+ return;
97
56
  }
98
-
99
- remove(id)
57
+ remove(id);
100
58
  }
101
-
102
- const hovered = ref(false)
103
- const expanded = computed(() => props.expand || hovered.value)
104
-
105
- const refs = ref<{ height: number }[]>([])
106
-
107
- const height = computed(() => refs.value.reduce((acc, { height }) => acc + height + 16, 0))
108
- const frontHeight = computed(() => refs.value[refs.value.length - 1]?.height || 0)
109
-
110
- function getOffset(index: number) {
111
- return refs.value.slice(index + 1).reduce((acc, { height }) => acc + height + 16, 0)
59
+ const hovered = ref(false);
60
+ const expanded = computed(() => props.expand || hovered.value);
61
+ const refs = ref([]);
62
+ const height = computed(() => refs.value.reduce((acc, { height: height2 }) => acc + height2 + 16, 0));
63
+ const frontHeight = computed(() => refs.value[refs.value.length - 1]?.height || 0);
64
+ function getOffset(index) {
65
+ return refs.value.slice(index + 1).reduce((acc, { height: height2 }) => acc + height2 + 16, 0);
112
66
  }
113
67
  </script>
114
68
 
@@ -121,20 +75,20 @@ function getOffset(index: number) {
121
75
  :key="toast.id"
122
76
  ref="refs"
123
77
  v-bind="proxyToastProps(toast)"
124
- :close="(toast.close as boolean)"
78
+ :close="toast.close"
125
79
  :data-expanded="expanded"
126
80
  :data-front="!expanded && index === toasts.length - 1"
127
81
  :style="{
128
- '--index': (index - toasts.length) + toasts.length,
129
- '--before': toasts.length - 1 - index,
130
- '--offset': getOffset(index),
131
- '--scale': expanded ? '1' : 'calc(1 - var(--before) * var(--scale-factor))',
132
- '--translate': expanded ? 'calc(var(--offset) * var(--translate-factor))' : 'calc(var(--before) * var(--gap))',
133
- '--transform': 'translateY(var(--translate)) scale(var(--scale))'
134
- }"
82
+ '--index': index - toasts.length + toasts.length,
83
+ '--before': toasts.length - 1 - index,
84
+ '--offset': getOffset(index),
85
+ '--scale': expanded ? '1' : 'calc(1 - var(--before) * var(--scale-factor))',
86
+ '--translate': expanded ? 'calc(var(--offset) * var(--translate-factor))' : 'calc(var(--before) * var(--gap))',
87
+ '--transform': 'translateY(var(--translate)) scale(var(--scale))'
88
+ }"
135
89
  :class="[b24ui.base(), {
136
- 'cursor-pointer': !!toast.onClick
137
- }]"
90
+ 'cursor-pointer': !!toast.onClick
91
+ }]"
138
92
  @update:open="onUpdateOpen($event, toast.id)"
139
93
  @click="toast.onClick && toast.onClick(toast)"
140
94
  />
@@ -144,12 +98,12 @@ function getOffset(index: number) {
144
98
  :data-expanded="expanded"
145
99
  :class="b24ui.viewport({ class: [props.class, props.b24ui?.viewport] })"
146
100
  :style="{
147
- '--scale-factor': '0.05',
148
- '--translate-factor': position?.startsWith('top') ? '1px' : '-1px',
149
- '--gap': position?.startsWith('top') ? '16px' : '-16px',
150
- '--front-height': `${frontHeight}px`,
151
- '--height': `${height}px`
152
- }"
101
+ '--scale-factor': '0.05',
102
+ '--translate-factor': position?.startsWith('top') ? '1px' : '-1px',
103
+ '--gap': position?.startsWith('top') ? '16px' : '-16px',
104
+ '--front-height': `${frontHeight}px`,
105
+ '--height': `${height}px`
106
+ }"
153
107
  @mouseenter="hovered = true"
154
108
  @mouseleave="hovered = false"
155
109
  />
@@ -0,0 +1,70 @@
1
+ import type { ToastProviderProps } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/b24ui/toaster';
4
+ import type { ComponentConfig } from '../types/utils';
5
+ type Toaster = ComponentConfig<typeof theme, AppConfig, 'toaster'>;
6
+ export interface ToasterProps extends Omit<ToastProviderProps, 'swipeDirection'> {
7
+ /**
8
+ * The position on the screen to display the toasts.
9
+ * @defaultValue 'top-right'
10
+ */
11
+ position?: Toaster['variants']['position'];
12
+ /**
13
+ * Expand the toasts to show multiple toasts at once.
14
+ * @defaultValue true
15
+ */
16
+ expand?: boolean;
17
+ /**
18
+ * Render the toaster in a portal.
19
+ * @defaultValue true
20
+ */
21
+ portal?: boolean;
22
+ /**
23
+ * @defaultValue 5000
24
+ */
25
+ duration?: number;
26
+ class?: any;
27
+ b24ui?: Toaster['slots'];
28
+ }
29
+ export interface ToasterSlots {
30
+ default(props?: {}): any;
31
+ }
32
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ToasterProps>, {
33
+ position: "top-right";
34
+ expand: boolean;
35
+ duration: number;
36
+ portal: boolean;
37
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ToasterProps>, {
38
+ position: "top-right";
39
+ expand: boolean;
40
+ duration: number;
41
+ portal: boolean;
42
+ }>>> & Readonly<{}>, {
43
+ position: Toaster["variants"]["position"];
44
+ duration: number;
45
+ expand: boolean;
46
+ portal: boolean;
47
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<ToasterSlots> & ToasterSlots>;
48
+ export default _default;
49
+ type __VLS_WithDefaults<P, D> = {
50
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
51
+ default: D[K];
52
+ }> : P[K];
53
+ };
54
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
55
+ type __VLS_TypePropsToOption<T> = {
56
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
57
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
58
+ } : {
59
+ type: import('vue').PropType<T[K]>;
60
+ required: true;
61
+ };
62
+ };
63
+ type __VLS_WithTemplateSlots<T, S> = T & {
64
+ new (): {
65
+ $slots: S;
66
+ };
67
+ };
68
+ type __VLS_PrettifyLocal<T> = {
69
+ [K in keyof T]: T[K];
70
+ } & {};
@@ -1,69 +1,40 @@
1
- <script lang="ts">
2
- import type { TooltipRootProps, TooltipRootEmits, TooltipContentProps, TooltipContentEmits, TooltipArrowProps } from 'reka-ui'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/b24ui/tooltip'
6
- import { tv } from '../utils/tv'
7
- import type { KbdProps } from '../types'
8
- import type { EmitsToProps } from '../types/utils'
9
-
10
- const appConfigTooltip = _appConfig as AppConfig & { b24ui: { tooltip: Partial<typeof theme> } }
11
-
12
- const tooltip = tv({ extend: tv(theme), ...(appConfigTooltip.b24ui?.tooltip || {}) })
13
-
14
- export interface TooltipProps extends TooltipRootProps {
15
- /** The text content of the tooltip. */
16
- text?: string
17
- /** The keyboard keys to display in the tooltip. */
18
- kbds?: KbdProps['value'][] | KbdProps[]
19
- /**
20
- * The content of the tooltip.
21
- * @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
22
- */
23
- content?: Omit<TooltipContentProps, 'as' | 'asChild'> & Partial<EmitsToProps<TooltipContentEmits>>
24
- /**
25
- * Display an arrow alongside the tooltip.
26
- * @defaultValue false
27
- */
28
- arrow?: boolean | Omit<TooltipArrowProps, 'as' | 'asChild'>
29
- /**
30
- * Render the tooltip in a portal.
31
- * @defaultValue true
32
- */
33
- portal?: boolean
34
- class?: any
35
- b24ui?: Partial<typeof tooltip.slots>
36
- }
37
-
38
- export interface TooltipEmits extends TooltipRootEmits {}
39
-
40
- export interface TooltipSlots {
41
- default(props: { open: boolean }): any
42
- content(props?: {}): any
43
- }
1
+ <script>
2
+ import theme from "#build/b24ui/tooltip";
44
3
  </script>
45
4
 
46
- <script setup lang="ts">
47
- import { computed, toRef } from 'vue'
48
- import { defu } from 'defu'
49
- import { TooltipRoot, TooltipTrigger, TooltipPortal, TooltipContent, TooltipArrow, useForwardPropsEmits } from 'reka-ui'
50
- import { reactivePick } from '@vueuse/core'
51
- import B24Kbd from './Kbd.vue'
52
-
53
- const props = withDefaults(defineProps<TooltipProps>(), {
54
- portal: true
55
- })
56
- const emits = defineEmits<TooltipEmits>()
57
- const slots = defineSlots<TooltipSlots>()
58
-
59
- const rootProps = useForwardPropsEmits(reactivePick(props, 'defaultOpen', 'open', 'delayDuration', 'disableHoverableContent', 'disableClosingTrigger', 'disabled', 'ignoreNonKeyboardFocus'), emits)
60
- const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8, collisionPadding: 8 }) as TooltipContentProps)
61
- const arrowProps = toRef(() => props.arrow as TooltipArrowProps)
62
-
63
- // eslint-disable-next-line vue/no-dupe-keys
64
- const b24ui = computed(() => tooltip({
5
+ <script setup>
6
+ import { computed, toRef } from "vue";
7
+ import { defu } from "defu";
8
+ import { TooltipRoot, TooltipTrigger, TooltipPortal, TooltipContent, TooltipArrow, useForwardPropsEmits } from "reka-ui";
9
+ import { reactivePick } from "@vueuse/core";
10
+ import { useAppConfig } from "#imports";
11
+ import { tv } from "../utils/tv";
12
+ import B24Kbd from "./Kbd.vue";
13
+ const props = defineProps({
14
+ text: { type: String, required: false },
15
+ kbds: { type: Array, required: false },
16
+ content: { type: Object, required: false },
17
+ arrow: { type: [Boolean, Object], required: false },
18
+ portal: { type: Boolean, required: false, default: true },
19
+ class: { type: null, required: false },
20
+ b24ui: { type: null, required: false },
21
+ defaultOpen: { type: Boolean, required: false },
22
+ open: { type: Boolean, required: false },
23
+ delayDuration: { type: Number, required: false },
24
+ disableHoverableContent: { type: Boolean, required: false },
25
+ disableClosingTrigger: { type: Boolean, required: false },
26
+ disabled: { type: Boolean, required: false },
27
+ ignoreNonKeyboardFocus: { type: Boolean, required: false }
28
+ });
29
+ const emits = defineEmits(["update:open"]);
30
+ const slots = defineSlots();
31
+ const appConfig = useAppConfig();
32
+ const rootProps = useForwardPropsEmits(reactivePick(props, "defaultOpen", "open", "delayDuration", "disableHoverableContent", "disableClosingTrigger", "disabled", "ignoreNonKeyboardFocus"), emits);
33
+ const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8 }));
34
+ const arrowProps = toRef(() => props.arrow);
35
+ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.tooltip || {} })({
65
36
  side: contentProps.value.side
66
- }))
37
+ }));
67
38
  </script>
68
39
 
69
40
  <template>
@@ -81,8 +52,8 @@ const b24ui = computed(() => tooltip({
81
52
  <B24Kbd
82
53
  v-for="(kbd, index) in kbds"
83
54
  :key="index"
84
- :size="((props.b24ui?.kbdsSize || b24ui.kbdsSize()) as KbdProps['size'])"
85
- :depth="((props.b24ui?.kbdsDepth || b24ui.kbdsDepth()) as KbdProps['depth'])"
55
+ :size="props.b24ui?.kbdsSize || b24ui.kbdsSize()"
56
+ :depth="props.b24ui?.kbdsDepth || b24ui.kbdsDepth()"
86
57
  v-bind="typeof kbd === 'string' ? { value: kbd } : kbd"
87
58
  />
88
59
  </span>
@@ -0,0 +1,65 @@
1
+ import type { TooltipRootProps, TooltipRootEmits, TooltipContentProps, TooltipContentEmits, TooltipArrowProps } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/b24ui/tooltip';
4
+ import type { KbdProps } from '../types';
5
+ import type { EmitsToProps, ComponentConfig } from '../types/utils';
6
+ type Tooltip = ComponentConfig<typeof theme, AppConfig, 'tooltip'>;
7
+ export interface TooltipProps extends TooltipRootProps {
8
+ /** The text content of the tooltip. */
9
+ text?: string;
10
+ /** The keyboard keys to display in the tooltip. */
11
+ kbds?: KbdProps['value'][] | KbdProps[];
12
+ /**
13
+ * The content of the tooltip.
14
+ * @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
15
+ */
16
+ content?: Omit<TooltipContentProps, 'as' | 'asChild'> & Partial<EmitsToProps<TooltipContentEmits>>;
17
+ /**
18
+ * Display an arrow alongside the tooltip.
19
+ * @defaultValue false
20
+ */
21
+ arrow?: boolean | Omit<TooltipArrowProps, 'as' | 'asChild'>;
22
+ /**
23
+ * Render the tooltip in a portal.
24
+ * @defaultValue true
25
+ */
26
+ portal?: boolean;
27
+ class?: any;
28
+ b24ui?: Tooltip['slots'];
29
+ }
30
+ export interface TooltipEmits extends TooltipRootEmits {
31
+ }
32
+ export interface TooltipSlots {
33
+ default(props: {
34
+ open: boolean;
35
+ }): any;
36
+ content(props?: {}): any;
37
+ }
38
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<TooltipProps>, {
39
+ portal: boolean;
40
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
41
+ portal: boolean;
42
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<TooltipSlots> & TooltipSlots>;
43
+ export default _default;
44
+ type __VLS_WithDefaults<P, D> = {
45
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
46
+ default: D[K];
47
+ }> : P[K];
48
+ };
49
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
50
+ type __VLS_TypePropsToOption<T> = {
51
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
52
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
53
+ } : {
54
+ type: import('vue').PropType<T[K]>;
55
+ required: true;
56
+ };
57
+ };
58
+ type __VLS_WithTemplateSlots<T, S> = T & {
59
+ new (): {
60
+ $slots: S;
61
+ };
62
+ };
63
+ type __VLS_PrettifyLocal<T> = {
64
+ [K in keyof T]: T[K];
65
+ } & {};
@@ -1,75 +1,28 @@
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/content/table-wrapper'
6
- import { tv } from '../../utils/tv'
7
-
8
- const appConfigTableWrapper = _appConfig as AppConfig & { b24ui: { content: { tableWrapper: Partial<typeof theme> } } }
9
-
10
- const tableWrapper = tv({ extend: tv(theme), ...(appConfigTableWrapper.b24ui?.content?.tableWrapper || {}) })
11
-
12
- type TableWrapperVariants = VariantProps<typeof tableWrapper>
13
-
14
- export interface TableWrapperProps {
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?: TableWrapperVariants['size']
24
- /**
25
- * @defaultValue false
26
- */
27
- rounded?: boolean
28
- /**
29
- * @defaultValue false
30
- */
31
- zebra?: boolean
32
- /**
33
- * @defaultValue false
34
- */
35
- pinRows?: boolean
36
- /**
37
- * @defaultValue false
38
- */
39
- pinCols?: boolean
40
- /**
41
- * @defaultValue false
42
- */
43
- rowHover?: boolean
44
- /**
45
- * @defaultValue false
46
- */
47
- bordered?: boolean
48
- /**
49
- * @defaultValue true
50
- */
51
- scrollbarThin?: boolean
52
- class?: any
53
- b24ui?: Partial<typeof tableWrapper.slots>
54
- }
55
-
56
- export interface TableWrapperSlots {
57
- default(props?: {}): any
58
- }
1
+ <script>
2
+ import theme from "#build/b24ui/content/table-wrapper";
59
3
  </script>
60
4
 
61
- <script setup lang="ts">
62
- import { computed } from 'vue'
63
- import { Primitive } from 'reka-ui'
64
-
65
- defineOptions({ inheritAttrs: false })
66
-
67
- const props = withDefaults(defineProps<TableWrapperProps>(), {
68
- as: 'div',
69
- scrollbarThin: true
70
- })
71
-
72
- const b24ui = computed(() => tableWrapper({
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { Primitive } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { tv } from "../../utils/tv";
10
+ defineOptions({ inheritAttrs: false });
11
+ const props = defineProps({
12
+ as: { type: null, required: false, default: "div" },
13
+ size: { type: null, required: false },
14
+ rounded: { type: Boolean, required: false },
15
+ zebra: { type: Boolean, required: false },
16
+ pinRows: { type: Boolean, required: false },
17
+ pinCols: { type: Boolean, required: false },
18
+ rowHover: { type: Boolean, required: false },
19
+ bordered: { type: Boolean, required: false },
20
+ scrollbarThin: { type: Boolean, required: false, default: true },
21
+ class: { type: null, required: false },
22
+ b24ui: { type: null, required: false }
23
+ });
24
+ const appConfig = useAppConfig();
25
+ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.content?.tableWrapper || {} })({
73
26
  size: props.size,
74
27
  rounded: Boolean(props.rounded),
75
28
  zebra: Boolean(props.zebra),
@@ -78,7 +31,7 @@ const b24ui = computed(() => tableWrapper({
78
31
  rowHover: Boolean(props.rowHover),
79
32
  bordered: Boolean(props.bordered),
80
33
  scrollbarThin: Boolean(props.scrollbarThin)
81
- }))
34
+ }));
82
35
  </script>
83
36
 
84
37
  <template>