@bitrix24/b24ui-nuxt 0.5.11 → 0.6.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 (199) hide show
  1. package/.nuxt/b24ui/input-menu.ts +2 -2
  2. package/.nuxt/b24ui/select-menu.ts +4 -4
  3. package/.nuxt/b24ui/select.ts +2 -2
  4. package/dist/meta.d.mts +5208 -5061
  5. package/dist/meta.mjs +5208 -5061
  6. package/dist/module.json +3 -3
  7. package/dist/module.mjs +2 -2
  8. package/dist/runtime/components/Advice.vue +27 -54
  9. package/dist/runtime/components/Advice.vue.d.ts +170 -0
  10. package/dist/runtime/components/Alert.vue +35 -96
  11. package/dist/runtime/components/Alert.vue.d.ts +464 -0
  12. package/dist/runtime/components/App.vue +24 -34
  13. package/dist/runtime/components/App.vue.d.ts +23 -0
  14. package/dist/runtime/components/Avatar.vue +43 -81
  15. package/dist/runtime/components/Avatar.vue.d.ts +281 -0
  16. package/dist/runtime/components/AvatarGroup.vue +40 -76
  17. package/dist/runtime/components/AvatarGroup.vue.d.ts +204 -0
  18. package/dist/runtime/components/Badge.vue +40 -83
  19. package/dist/runtime/components/Badge.vue.d.ts +517 -0
  20. package/dist/runtime/components/Button.vue +96 -155
  21. package/dist/runtime/components/Button.vue.d.ts +640 -0
  22. package/dist/runtime/components/ButtonGroup.vue +19 -51
  23. package/dist/runtime/components/ButtonGroup.vue.d.ts +116 -0
  24. package/dist/runtime/components/Calendar.vue +73 -152
  25. package/dist/runtime/components/Calendar.vue.d.ts +437 -0
  26. package/dist/runtime/components/Checkbox.vue +42 -73
  27. package/dist/runtime/components/Checkbox.vue.d.ts +354 -0
  28. package/dist/runtime/components/Chip.vue +26 -74
  29. package/dist/runtime/components/Chip.vue.d.ts +271 -0
  30. package/dist/runtime/components/Collapsible.vue +22 -41
  31. package/dist/runtime/components/Collapsible.vue.d.ts +118 -0
  32. package/dist/runtime/components/Container.vue +13 -27
  33. package/dist/runtime/components/Container.vue.d.ts +27 -0
  34. package/dist/runtime/components/Countdown.vue +153 -378
  35. package/dist/runtime/components/Countdown.vue.d.ts +356 -0
  36. package/dist/runtime/components/DescriptionList.vue +78 -149
  37. package/dist/runtime/components/DescriptionList.vue.d.ts +379 -0
  38. package/dist/runtime/components/DropdownMenu.vue +38 -139
  39. package/dist/runtime/components/DropdownMenu.vue.d.ts +533 -0
  40. package/dist/runtime/components/DropdownMenuContent.vue +68 -80
  41. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +228 -0
  42. package/dist/runtime/components/Form.vue +130 -217
  43. package/dist/runtime/components/Form.vue.d.ts +55 -0
  44. package/dist/runtime/components/FormField.vue +36 -80
  45. package/dist/runtime/components/FormField.vue.d.ts +282 -0
  46. package/dist/runtime/components/Input.vue +79 -179
  47. package/dist/runtime/components/Input.vue.d.ts +755 -0
  48. package/dist/runtime/components/InputMenu.vue +185 -381
  49. package/dist/runtime/components/InputMenu.vue.d.ts +1523 -0
  50. package/dist/runtime/components/InputNumber.vue +77 -175
  51. package/dist/runtime/components/InputNumber.vue.d.ts +658 -0
  52. package/dist/runtime/components/Kbd.vue +18 -45
  53. package/dist/runtime/components/Kbd.vue.d.ts +109 -0
  54. package/dist/runtime/components/Link.vue +92 -173
  55. package/dist/runtime/components/Link.vue.d.ts +129 -0
  56. package/dist/runtime/components/LinkBase.vue +33 -42
  57. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  58. package/dist/runtime/components/Modal.vue +48 -127
  59. package/dist/runtime/components/Modal.vue.d.ts +327 -0
  60. package/dist/runtime/components/ModalDialogClose.vue +5 -8
  61. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  62. package/dist/runtime/components/Navbar.vue +15 -33
  63. package/dist/runtime/components/Navbar.vue.d.ts +101 -0
  64. package/dist/runtime/components/NavbarDivider.vue +15 -33
  65. package/dist/runtime/components/NavbarDivider.vue.d.ts +101 -0
  66. package/dist/runtime/components/NavbarSection.vue +15 -33
  67. package/dist/runtime/components/NavbarSection.vue.d.ts +101 -0
  68. package/dist/runtime/components/NavbarSpacer.vue +15 -33
  69. package/dist/runtime/components/NavbarSpacer.vue.d.ts +101 -0
  70. package/dist/runtime/components/NavigationMenu.vue +74 -208
  71. package/dist/runtime/components/NavigationMenu.vue.d.ts +824 -0
  72. package/dist/runtime/components/OverlayProvider.vue +14 -18
  73. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  74. package/dist/runtime/components/Popover.vue +40 -81
  75. package/dist/runtime/components/Popover.vue.d.ts +147 -0
  76. package/dist/runtime/components/Progress.vue +70 -136
  77. package/dist/runtime/components/Progress.vue.d.ts +592 -0
  78. package/dist/runtime/components/RadioGroup.vue +59 -134
  79. package/dist/runtime/components/RadioGroup.vue.d.ts +723 -0
  80. package/dist/runtime/components/Range.vue +46 -85
  81. package/dist/runtime/components/Range.vue.d.ts +417 -0
  82. package/dist/runtime/components/Select.vue +110 -260
  83. package/dist/runtime/components/Select.vue.d.ts +1201 -0
  84. package/dist/runtime/components/SelectMenu.vue +161 -347
  85. package/dist/runtime/components/SelectMenu.vue.d.ts +1298 -0
  86. package/dist/runtime/components/Separator.vue +28 -71
  87. package/dist/runtime/components/Separator.vue.d.ts +400 -0
  88. package/dist/runtime/components/Sidebar.vue +15 -33
  89. package/dist/runtime/components/Sidebar.vue.d.ts +101 -0
  90. package/dist/runtime/components/SidebarBody.vue +17 -38
  91. package/dist/runtime/components/SidebarBody.vue.d.ts +90 -0
  92. package/dist/runtime/components/SidebarFooter.vue +15 -33
  93. package/dist/runtime/components/SidebarFooter.vue.d.ts +101 -0
  94. package/dist/runtime/components/SidebarHeader.vue +15 -33
  95. package/dist/runtime/components/SidebarHeader.vue.d.ts +101 -0
  96. package/dist/runtime/components/SidebarHeading.vue +15 -33
  97. package/dist/runtime/components/SidebarHeading.vue.d.ts +101 -0
  98. package/dist/runtime/components/SidebarLayout.vue +34 -70
  99. package/dist/runtime/components/SidebarLayout.vue.d.ts +222 -0
  100. package/dist/runtime/components/SidebarSection.vue +15 -33
  101. package/dist/runtime/components/SidebarSection.vue.d.ts +101 -0
  102. package/dist/runtime/components/SidebarSpacer.vue +15 -33
  103. package/dist/runtime/components/SidebarSpacer.vue.d.ts +101 -0
  104. package/dist/runtime/components/Skeleton.vue +12 -22
  105. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  106. package/dist/runtime/components/Slideover.vue +50 -131
  107. package/dist/runtime/components/Slideover.vue.d.ts +360 -0
  108. package/dist/runtime/components/StackedLayout.vue +34 -73
  109. package/dist/runtime/components/StackedLayout.vue.d.ts +192 -0
  110. package/dist/runtime/components/Switch.vue +46 -95
  111. package/dist/runtime/components/Switch.vue.d.ts +587 -0
  112. package/dist/runtime/components/Tabs.vue +37 -105
  113. package/dist/runtime/components/Tabs.vue.d.ts +453 -0
  114. package/dist/runtime/components/Textarea.vue +92 -201
  115. package/dist/runtime/components/Textarea.vue.d.ts +601 -0
  116. package/dist/runtime/components/Toast.vue +47 -105
  117. package/dist/runtime/components/Toast.vue.d.ts +438 -0
  118. package/dist/runtime/components/Toaster.vue +70 -115
  119. package/dist/runtime/components/Toaster.vue.d.ts +219 -0
  120. package/dist/runtime/components/Tooltip.vue +36 -64
  121. package/dist/runtime/components/Tooltip.vue.d.ts +186 -0
  122. package/dist/runtime/components/content/TableWrapper.vue +24 -70
  123. package/dist/runtime/components/content/TableWrapper.vue.d.ts +237 -0
  124. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  125. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  126. package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
  127. package/dist/runtime/composables/useFormField.d.ts +2 -2
  128. package/dist/runtime/composables/useOverlay.d.ts +14 -7
  129. package/dist/runtime/composables/useOverlay.js +14 -6
  130. package/dist/runtime/prose/A.vue +12 -23
  131. package/dist/runtime/prose/A.vue.d.ts +84 -0
  132. package/dist/runtime/prose/Blockquote.vue +12 -23
  133. package/dist/runtime/prose/Blockquote.vue.d.ts +84 -0
  134. package/dist/runtime/prose/Code.vue +14 -31
  135. package/dist/runtime/prose/Code.vue.d.ts +97 -0
  136. package/dist/runtime/prose/Em.vue +12 -23
  137. package/dist/runtime/prose/Em.vue.d.ts +84 -0
  138. package/dist/runtime/prose/H1.vue +12 -23
  139. package/dist/runtime/prose/H1.vue.d.ts +97 -0
  140. package/dist/runtime/prose/H2.vue +12 -23
  141. package/dist/runtime/prose/H2.vue.d.ts +123 -0
  142. package/dist/runtime/prose/H3.vue +12 -23
  143. package/dist/runtime/prose/H3.vue.d.ts +123 -0
  144. package/dist/runtime/prose/H4.vue +12 -23
  145. package/dist/runtime/prose/H4.vue.d.ts +123 -0
  146. package/dist/runtime/prose/H5.vue +12 -23
  147. package/dist/runtime/prose/H5.vue.d.ts +123 -0
  148. package/dist/runtime/prose/H6.vue +12 -23
  149. package/dist/runtime/prose/H6.vue.d.ts +123 -0
  150. package/dist/runtime/prose/Hr.vue +12 -19
  151. package/dist/runtime/prose/Hr.vue.d.ts +74 -0
  152. package/dist/runtime/prose/Img.vue +12 -23
  153. package/dist/runtime/prose/Img.vue.d.ts +77 -0
  154. package/dist/runtime/prose/Li.vue +12 -23
  155. package/dist/runtime/prose/Li.vue.d.ts +84 -0
  156. package/dist/runtime/prose/Ol.vue +12 -23
  157. package/dist/runtime/prose/Ol.vue.d.ts +84 -0
  158. package/dist/runtime/prose/P.vue +12 -23
  159. package/dist/runtime/prose/P.vue.d.ts +84 -0
  160. package/dist/runtime/prose/Pre.vue +16 -33
  161. package/dist/runtime/prose/Pre.vue.d.ts +117 -0
  162. package/dist/runtime/prose/Strong.vue +12 -23
  163. package/dist/runtime/prose/Strong.vue.d.ts +84 -0
  164. package/dist/runtime/prose/Table.vue +19 -54
  165. package/dist/runtime/prose/Table.vue.d.ts +144 -0
  166. package/dist/runtime/prose/Tbody.vue +12 -23
  167. package/dist/runtime/prose/Tbody.vue.d.ts +84 -0
  168. package/dist/runtime/prose/Td.vue +12 -23
  169. package/dist/runtime/prose/Td.vue.d.ts +84 -0
  170. package/dist/runtime/prose/Th.vue +12 -23
  171. package/dist/runtime/prose/Th.vue.d.ts +84 -0
  172. package/dist/runtime/prose/Thead.vue +12 -23
  173. package/dist/runtime/prose/Thead.vue.d.ts +84 -0
  174. package/dist/runtime/prose/Tr.vue +12 -23
  175. package/dist/runtime/prose/Tr.vue.d.ts +84 -0
  176. package/dist/runtime/prose/Ul.vue +12 -23
  177. package/dist/runtime/prose/Ul.vue.d.ts +84 -0
  178. package/dist/runtime/utils/link.d.ts +3 -3
  179. package/dist/runtime/vue/components/Link.vue +115 -202
  180. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  181. package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.BA6Y2FnC.mjs} +6 -6
  182. package/dist/types.d.mts +3 -5
  183. package/dist/unplugin.mjs +1 -1
  184. package/dist/vite.mjs +1 -1
  185. package/package.json +14 -22
  186. package/dist/meta.cjs +0 -72112
  187. package/dist/meta.d.cts +0 -72110
  188. package/dist/meta.d.ts +0 -72110
  189. package/dist/module.cjs +0 -63
  190. package/dist/module.d.cts +0 -15
  191. package/dist/module.d.ts +0 -15
  192. package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
  193. package/dist/types.d.ts +0 -7
  194. package/dist/unplugin.cjs +0 -236
  195. package/dist/unplugin.d.cts +0 -33
  196. package/dist/unplugin.d.ts +0 -33
  197. package/dist/vite.cjs +0 -21
  198. package/dist/vite.d.cts +0 -14
  199. package/dist/vite.d.ts +0 -14
@@ -1,43 +1,34 @@
1
- <script lang="ts">
2
- import type { LinkProps } from '../types'
1
+ <script>
3
2
 
4
- export interface LinkBaseProps {
5
- as?: string
6
- type?: string
7
- disabled?: boolean
8
- onClick?: ((e: MouseEvent) => void | Promise<void>) | Array<((e: MouseEvent) => void | Promise<void>)>
9
- href?: string
10
- navigate?: (e: MouseEvent) => void
11
- target?: LinkProps['target']
12
- rel?: LinkProps['rel']
13
- active?: boolean
14
- isExternal?: boolean
15
- }
16
3
  </script>
17
4
 
18
- <script setup lang="ts">
19
- import { Primitive } from 'reka-ui'
20
-
21
- const props = withDefaults(defineProps<LinkBaseProps>(), {
22
- as: 'button',
23
- type: 'button'
24
- })
25
-
26
- function onClickWrapper(e: MouseEvent) {
5
+ <script setup>
6
+ import { Primitive } from "reka-ui";
7
+ const props = defineProps({
8
+ as: { type: String, required: false, default: "button" },
9
+ type: { type: String, required: false, default: "button" },
10
+ disabled: { type: Boolean, required: false },
11
+ onClick: { type: [Function, Array], required: false },
12
+ href: { type: String, required: false },
13
+ navigate: { type: Function, required: false },
14
+ target: { type: [String, Object, null], required: false },
15
+ rel: { type: [String, Object, null], required: false },
16
+ active: { type: Boolean, required: false },
17
+ isExternal: { type: Boolean, required: false }
18
+ });
19
+ function onClickWrapper(e) {
27
20
  if (props.disabled) {
28
- e.stopPropagation()
29
- e.preventDefault()
30
- return
21
+ e.stopPropagation();
22
+ e.preventDefault();
23
+ return;
31
24
  }
32
-
33
25
  if (props.onClick) {
34
26
  for (const onClick of Array.isArray(props.onClick) ? props.onClick : [props.onClick]) {
35
- onClick(e)
27
+ onClick(e);
36
28
  }
37
29
  }
38
-
39
30
  if (props.href && props.navigate && !props.isExternal) {
40
- props.navigate(e)
31
+ props.navigate(e);
41
32
  }
42
33
  }
43
34
  </script>
@@ -45,18 +36,18 @@ function onClickWrapper(e: MouseEvent) {
45
36
  <template>
46
37
  <Primitive
47
38
  v-bind="href ? {
48
- 'as': 'a',
49
- 'href': disabled ? undefined : href,
50
- 'aria-disabled': disabled ? 'true' : undefined,
51
- 'role': disabled ? 'link' : undefined,
52
- 'tabindex': disabled ? -1 : undefined
53
- } : as === 'button' ? {
54
- as,
55
- type,
56
- disabled
57
- } : {
58
- as
59
- }"
39
+ 'as': 'a',
40
+ 'href': disabled ? void 0 : href,
41
+ 'aria-disabled': disabled ? 'true' : void 0,
42
+ 'role': disabled ? 'link' : void 0,
43
+ 'tabindex': disabled ? -1 : void 0
44
+ } : as === 'button' ? {
45
+ as,
46
+ type,
47
+ disabled
48
+ } : {
49
+ as
50
+ }"
60
51
  :rel="rel"
61
52
  :target="target"
62
53
  @click="onClickWrapper"
@@ -0,0 +1,48 @@
1
+ import type { LinkProps } from '../types';
2
+ export interface LinkBaseProps {
3
+ as?: string;
4
+ type?: string;
5
+ disabled?: boolean;
6
+ onClick?: ((e: MouseEvent) => void | Promise<void>) | Array<((e: MouseEvent) => void | Promise<void>)>;
7
+ href?: string;
8
+ navigate?: (e: MouseEvent) => void;
9
+ target?: LinkProps['target'];
10
+ rel?: LinkProps['rel'];
11
+ active?: boolean;
12
+ isExternal?: boolean;
13
+ }
14
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkBaseProps>, {
15
+ as: string;
16
+ type: string;
17
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkBaseProps>, {
18
+ as: string;
19
+ type: string;
20
+ }>>> & Readonly<{}>, {
21
+ as: string;
22
+ type: string;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
24
+ default?(_: {}): any;
25
+ }>;
26
+ export default _default;
27
+ type __VLS_WithDefaults<P, D> = {
28
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
29
+ default: D[K];
30
+ }> : P[K];
31
+ };
32
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
33
+ type __VLS_TypePropsToOption<T> = {
34
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
35
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
36
+ } : {
37
+ type: import('vue').PropType<T[K]>;
38
+ required: true;
39
+ };
40
+ };
41
+ type __VLS_WithTemplateSlots<T, S> = T & {
42
+ new (): {
43
+ $slots: S;
44
+ };
45
+ };
46
+ type __VLS_PrettifyLocal<T> = {
47
+ [K in keyof T]: T[K];
48
+ } & {};
@@ -1,140 +1,61 @@
1
- <script lang="ts">
2
- import type { DialogRootProps, DialogRootEmits, DialogContentProps, DialogContentEmits } from 'reka-ui'
3
- import type { VariantProps } from 'tailwind-variants'
4
- import type { AppConfig } from '@nuxt/schema'
5
- import _appConfig from '#build/app.config'
6
- import theme from '#build/b24ui/modal'
7
- import { tv } from '../utils/tv'
8
- import type { ButtonProps, IconComponent } from '../types'
9
- import type { EmitsToProps } from '../types/utils'
10
-
11
- const appConfigModal = _appConfig as AppConfig & { b24ui: { modal: Partial<typeof theme> } }
12
-
13
- const modal = tv({ extend: tv(theme), ...(appConfigModal.b24ui?.modal || {}) })
14
-
15
- type ModalVariants = VariantProps<typeof modal>
16
-
17
- export interface ModalProps extends DialogRootProps {
18
- title?: string
19
- description?: string
20
- /**
21
- * The content of the modal
22
- */
23
- content?: Omit<DialogContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<DialogContentEmits>>
24
- /**
25
- * Render an overlay behind the modal.
26
- * @defaultValue true
27
- */
28
- overlay?: boolean
29
- /**
30
- * Render an overlay blur behind the modal.
31
- * `auto` use `motion-safe`.
32
- * @defaultValue 'auto'
33
- */
34
- overlayBlur?: ModalVariants['overlayBlur']
35
- /**
36
- * Animate the modal when opening or closing.
37
- * @defaultValue true
38
- */
39
- transition?: boolean
40
- /**
41
- * When `true`, the modal will take up the full screen.
42
- * @defaultValue false
43
- */
44
- fullscreen?: boolean
45
- /**
46
- * Render the modal in a portal.
47
- * @defaultValue true
48
- */
49
- portal?: boolean
50
- /**
51
- * Display a close button to dismiss the modal.
52
- * `{ size: 'xs', color: 'link' }`{lang="ts"}
53
- * @defaultValue true
54
- */
55
- close?: boolean | Partial<ButtonProps>
56
- /**
57
- * The icon displayed in the close button.
58
- * @defaultValue icons.close
59
- * @IconComponent
60
- */
61
- closeIcon?: IconComponent
62
- /**
63
- * When `false`, the modal will not close when clicking outside or pressing escape.
64
- * @defaultValue false
65
- */
66
- dismissible?: boolean
67
- /**
68
- * @defaultValue true
69
- */
70
- scrollbarThin?: boolean
71
- class?: any
72
- b24ui?: Partial<typeof modal.slots>
73
- }
74
-
75
- export interface ModalEmits extends DialogRootEmits {
76
- 'after:leave': []
77
- }
78
-
79
- export interface ModalSlots {
80
- default(props: { open: boolean }): any
81
- content(props?: {}): any
82
- header(props?: {}): any
83
- title(props?: {}): any
84
- description(props?: {}): any
85
- close(props: { b24ui: ReturnType<typeof modal> }): any
86
- body(props?: {}): any
87
- footer(props?: {}): any
88
- }
1
+ <script>
2
+ import _appConfig from "#build/app.config";
3
+ import theme from "#build/b24ui/modal";
4
+ import { tv } from "../utils/tv";
5
+ const appConfigModal = _appConfig;
6
+ const modal = tv({ extend: tv(theme), ...appConfigModal.b24ui?.modal || {} });
89
7
  </script>
90
8
 
91
- <script setup lang="ts">
92
- import { computed, toRef } from 'vue'
93
- import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose, VisuallyHidden, useForwardPropsEmits } from 'reka-ui'
94
- import { reactivePick } from '@vueuse/core'
95
- import { useLocale } from '../composables/useLocale'
96
- import icons from '../dictionary/icons'
97
- import B24Button from './Button.vue'
98
-
99
- const props = withDefaults(defineProps<ModalProps>(), {
100
- close: true,
101
- portal: true,
102
- overlay: true,
103
- transition: true,
104
- modal: true,
105
- dismissible: true,
106
- scrollbarThin: true,
107
- overlayBlur: 'auto'
108
- })
109
- const emits = defineEmits<ModalEmits>()
110
- const slots = defineSlots<ModalSlots>()
111
-
112
- const { t } = useLocale()
113
-
114
- const rootProps = useForwardPropsEmits(reactivePick(props, 'open', 'defaultOpen', 'modal'), emits)
115
- const contentProps = toRef(() => props.content)
9
+ <script setup>
10
+ import { computed, toRef } from "vue";
11
+ import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose, VisuallyHidden, useForwardPropsEmits } from "reka-ui";
12
+ import { reactivePick } from "@vueuse/core";
13
+ import { useLocale } from "../composables/useLocale";
14
+ import icons from "../dictionary/icons";
15
+ import B24Button from "./Button.vue";
16
+ const props = defineProps({
17
+ title: { type: String, required: false },
18
+ description: { type: String, required: false },
19
+ content: { type: Object, required: false },
20
+ overlay: { type: Boolean, required: false, default: true },
21
+ overlayBlur: { type: null, required: false, default: "auto" },
22
+ transition: { type: Boolean, required: false, default: true },
23
+ fullscreen: { type: Boolean, required: false },
24
+ portal: { type: Boolean, required: false, default: true },
25
+ close: { type: [Boolean, Object], required: false, default: true },
26
+ closeIcon: { type: [Function, Object], required: false },
27
+ dismissible: { type: Boolean, required: false, default: true },
28
+ scrollbarThin: { type: Boolean, required: false, default: true },
29
+ class: { type: null, required: false },
30
+ b24ui: { type: Object, required: false },
31
+ open: { type: Boolean, required: false },
32
+ defaultOpen: { type: Boolean, required: false },
33
+ modal: { type: Boolean, required: false, default: true }
34
+ });
35
+ const emits = defineEmits(["after:leave", "update:open"]);
36
+ const slots = defineSlots();
37
+ const { t } = useLocale();
38
+ const rootProps = useForwardPropsEmits(reactivePick(props, "open", "defaultOpen", "modal"), emits);
39
+ const contentProps = toRef(() => props.content);
116
40
  const contentEvents = computed(() => {
117
41
  const events = {
118
- closeAutoFocus: (e: Event) => e.preventDefault()
119
- }
120
-
42
+ closeAutoFocus: (e) => e.preventDefault()
43
+ };
121
44
  if (!props.dismissible) {
122
45
  return {
123
- pointerDownOutside: (e: Event) => e.preventDefault(),
124
- interactOutside: (e: Event) => e.preventDefault(),
125
- escapeKeyDown: (e: Event) => e.preventDefault(),
46
+ pointerDownOutside: (e) => e.preventDefault(),
47
+ interactOutside: (e) => e.preventDefault(),
48
+ escapeKeyDown: (e) => e.preventDefault(),
126
49
  ...events
127
- }
50
+ };
128
51
  }
129
-
130
- return events
131
- })
132
-
52
+ return events;
53
+ });
133
54
  const b24ui = computed(() => modal({
134
55
  transition: props.transition,
135
56
  fullscreen: props.fullscreen,
136
57
  overlayBlur: props.overlayBlur
137
- }))
58
+ }));
138
59
  </script>
139
60
 
140
61
  <template>
@@ -147,7 +68,7 @@ const b24ui = computed(() => modal({
147
68
  <DialogOverlay v-if="overlay" :class="b24ui.overlay({ class: props.b24ui?.overlay })" />
148
69
 
149
70
  <DialogContent :class="b24ui.content({ class: [!slots.default && props.class, props.b24ui?.content] })" v-bind="contentProps" @after-leave="emits('after:leave')" v-on="contentEvents">
150
- <VisuallyHidden v-if="!!slots.content && ((title || !!slots.title) || (description || !!slots.description))">
71
+ <VisuallyHidden v-if="!!slots.content && (title || !!slots.title || (description || !!slots.description))">
151
72
  <DialogTitle v-if="title || !!slots.title">
152
73
  <slot name="title">
153
74
  {{ title }}
@@ -186,7 +107,7 @@ const b24ui = computed(() => modal({
186
107
  size="xs"
187
108
  color="link"
188
109
  :aria-label="t('modal.close')"
189
- v-bind="(typeof close === 'object' ? close as Partial<ButtonProps> : {})"
110
+ v-bind="typeof close === 'object' ? close : {}"
190
111
  :class="b24ui.close({ class: props.b24ui?.close })"
191
112
  />
192
113
  </slot>
@@ -0,0 +1,327 @@
1
+ import type { DialogRootProps, DialogRootEmits, DialogContentProps, DialogContentEmits } from 'reka-ui';
2
+ import type { VariantProps } from 'tailwind-variants';
3
+ import type { ButtonProps, IconComponent } from '../types';
4
+ import type { EmitsToProps } from '../types/utils';
5
+ declare const modal: import("tailwind-variants").TVReturnType<{
6
+ overlayBlur: {
7
+ auto: {
8
+ overlay: string;
9
+ };
10
+ on: {
11
+ overlay: string;
12
+ };
13
+ off: {
14
+ overlay: string;
15
+ };
16
+ };
17
+ transition: {
18
+ true: {
19
+ overlay: string;
20
+ content: string;
21
+ };
22
+ };
23
+ fullscreen: {
24
+ true: {
25
+ content: string;
26
+ };
27
+ false: {
28
+ content: string;
29
+ };
30
+ };
31
+ scrollbarThin: {
32
+ true: {
33
+ body: string;
34
+ };
35
+ };
36
+ }, {
37
+ overlay: string;
38
+ content: string;
39
+ header: string;
40
+ wrapper: string;
41
+ body: string;
42
+ footer: string;
43
+ title: string;
44
+ description: string;
45
+ close: string;
46
+ }, undefined, {
47
+ overlayBlur: {
48
+ auto: {
49
+ overlay: string;
50
+ };
51
+ on: {
52
+ overlay: string;
53
+ };
54
+ off: {
55
+ overlay: string;
56
+ };
57
+ };
58
+ transition: {
59
+ true: {
60
+ overlay: string;
61
+ content: string;
62
+ };
63
+ };
64
+ fullscreen: {
65
+ true: {
66
+ content: string;
67
+ };
68
+ false: {
69
+ content: string;
70
+ };
71
+ };
72
+ scrollbarThin: {
73
+ true: {
74
+ body: string;
75
+ };
76
+ };
77
+ }, {
78
+ overlay: string;
79
+ content: string;
80
+ header: string;
81
+ wrapper: string;
82
+ body: string;
83
+ footer: string;
84
+ title: string;
85
+ description: string;
86
+ close: string;
87
+ }, import("tailwind-variants").TVReturnType<{
88
+ overlayBlur: {
89
+ auto: {
90
+ overlay: string;
91
+ };
92
+ on: {
93
+ overlay: string;
94
+ };
95
+ off: {
96
+ overlay: string;
97
+ };
98
+ };
99
+ transition: {
100
+ true: {
101
+ overlay: string;
102
+ content: string;
103
+ };
104
+ };
105
+ fullscreen: {
106
+ true: {
107
+ content: string;
108
+ };
109
+ false: {
110
+ content: string;
111
+ };
112
+ };
113
+ scrollbarThin: {
114
+ true: {
115
+ body: string;
116
+ };
117
+ };
118
+ }, {
119
+ overlay: string;
120
+ content: string;
121
+ header: string;
122
+ wrapper: string;
123
+ body: string;
124
+ footer: string;
125
+ title: string;
126
+ description: string;
127
+ close: string;
128
+ }, undefined, {
129
+ overlayBlur: {
130
+ auto: {
131
+ overlay: string;
132
+ };
133
+ on: {
134
+ overlay: string;
135
+ };
136
+ off: {
137
+ overlay: string;
138
+ };
139
+ };
140
+ transition: {
141
+ true: {
142
+ overlay: string;
143
+ content: string;
144
+ };
145
+ };
146
+ fullscreen: {
147
+ true: {
148
+ content: string;
149
+ };
150
+ false: {
151
+ content: string;
152
+ };
153
+ };
154
+ scrollbarThin: {
155
+ true: {
156
+ body: string;
157
+ };
158
+ };
159
+ }, {
160
+ overlay: string;
161
+ content: string;
162
+ header: string;
163
+ wrapper: string;
164
+ body: string;
165
+ footer: string;
166
+ title: string;
167
+ description: string;
168
+ close: string;
169
+ }, import("tailwind-variants").TVReturnType<{
170
+ overlayBlur: {
171
+ auto: {
172
+ overlay: string;
173
+ };
174
+ on: {
175
+ overlay: string;
176
+ };
177
+ off: {
178
+ overlay: string;
179
+ };
180
+ };
181
+ transition: {
182
+ true: {
183
+ overlay: string;
184
+ content: string;
185
+ };
186
+ };
187
+ fullscreen: {
188
+ true: {
189
+ content: string;
190
+ };
191
+ false: {
192
+ content: string;
193
+ };
194
+ };
195
+ scrollbarThin: {
196
+ true: {
197
+ body: string;
198
+ };
199
+ };
200
+ }, {
201
+ overlay: string;
202
+ content: string;
203
+ header: string;
204
+ wrapper: string;
205
+ body: string;
206
+ footer: string;
207
+ title: string;
208
+ description: string;
209
+ close: string;
210
+ }, undefined, unknown, unknown, undefined>>>;
211
+ type ModalVariants = VariantProps<typeof modal>;
212
+ export interface ModalProps extends DialogRootProps {
213
+ title?: string;
214
+ description?: string;
215
+ /**
216
+ * The content of the modal
217
+ */
218
+ content?: Omit<DialogContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<DialogContentEmits>>;
219
+ /**
220
+ * Render an overlay behind the modal.
221
+ * @defaultValue true
222
+ */
223
+ overlay?: boolean;
224
+ /**
225
+ * Render an overlay blur behind the modal.
226
+ * `auto` use `motion-safe`.
227
+ * @defaultValue 'auto'
228
+ */
229
+ overlayBlur?: ModalVariants['overlayBlur'];
230
+ /**
231
+ * Animate the modal when opening or closing.
232
+ * @defaultValue true
233
+ */
234
+ transition?: boolean;
235
+ /**
236
+ * When `true`, the modal will take up the full screen.
237
+ * @defaultValue false
238
+ */
239
+ fullscreen?: boolean;
240
+ /**
241
+ * Render the modal in a portal.
242
+ * @defaultValue true
243
+ */
244
+ portal?: boolean;
245
+ /**
246
+ * Display a close button to dismiss the modal.
247
+ * `{ size: 'xs', color: 'link' }`{lang="ts"}
248
+ * @defaultValue true
249
+ */
250
+ close?: boolean | Partial<ButtonProps>;
251
+ /**
252
+ * The icon displayed in the close button.
253
+ * @defaultValue icons.close
254
+ * @IconComponent
255
+ */
256
+ closeIcon?: IconComponent;
257
+ /**
258
+ * When `false`, the modal will not close when clicking outside or pressing escape.
259
+ * @defaultValue false
260
+ */
261
+ dismissible?: boolean;
262
+ /**
263
+ * @defaultValue true
264
+ */
265
+ scrollbarThin?: boolean;
266
+ class?: any;
267
+ b24ui?: Partial<typeof modal.slots>;
268
+ }
269
+ export interface ModalEmits extends DialogRootEmits {
270
+ 'after:leave': [];
271
+ }
272
+ export interface ModalSlots {
273
+ default(props: {
274
+ open: boolean;
275
+ }): any;
276
+ content(props?: {}): any;
277
+ header(props?: {}): any;
278
+ title(props?: {}): any;
279
+ description(props?: {}): any;
280
+ close(props: {
281
+ b24ui: ReturnType<typeof modal>;
282
+ }): any;
283
+ body(props?: {}): any;
284
+ footer(props?: {}): any;
285
+ }
286
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ModalProps>, {
287
+ close: boolean;
288
+ portal: boolean;
289
+ overlay: boolean;
290
+ transition: boolean;
291
+ modal: boolean;
292
+ dismissible: boolean;
293
+ scrollbarThin: boolean;
294
+ overlayBlur: string;
295
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
296
+ modal: boolean;
297
+ close: boolean | Partial<ButtonProps>;
298
+ portal: boolean;
299
+ overlay: boolean;
300
+ overlayBlur: "off" | "auto" | "on";
301
+ transition: boolean;
302
+ scrollbarThin: boolean;
303
+ dismissible: boolean;
304
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<ModalSlots> & ModalSlots>;
305
+ export default _default;
306
+ type __VLS_WithDefaults<P, D> = {
307
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
308
+ default: D[K];
309
+ }> : P[K];
310
+ };
311
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
312
+ type __VLS_TypePropsToOption<T> = {
313
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
314
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
315
+ } : {
316
+ type: import('vue').PropType<T[K]>;
317
+ required: true;
318
+ };
319
+ };
320
+ type __VLS_WithTemplateSlots<T, S> = T & {
321
+ new (): {
322
+ $slots: S;
323
+ };
324
+ };
325
+ type __VLS_PrettifyLocal<T> = {
326
+ [K in keyof T]: T[K];
327
+ } & {};
@@ -1,13 +1,10 @@
1
- <script lang="ts">
2
- export interface ModalDialogCloseSlots {
3
- default(props: {}): any
4
- }
5
- </script>
1
+ <script>
6
2
 
7
- <script setup lang="ts">
8
- import { DialogClose } from 'reka-ui'
3
+ </script>
9
4
 
10
- defineSlots<ModalDialogCloseSlots>()
5
+ <script setup>
6
+ import { DialogClose } from "reka-ui";
7
+ defineSlots();
11
8
  </script>
12
9
 
13
10
  <template>