@bitrix24/b24ui-nuxt 0.5.10 → 0.5.11

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 (190) hide show
  1. package/dist/meta.cjs +72112 -0
  2. package/dist/meta.d.cts +72110 -0
  3. package/dist/meta.d.mts +5060 -5060
  4. package/dist/meta.d.ts +72110 -0
  5. package/dist/meta.mjs +5060 -5060
  6. package/dist/module.cjs +63 -0
  7. package/dist/module.d.cts +15 -0
  8. package/dist/module.d.ts +15 -0
  9. package/dist/module.json +3 -3
  10. package/dist/module.mjs +1 -1
  11. package/dist/runtime/components/Advice.vue +54 -47
  12. package/dist/runtime/components/Alert.vue +96 -71
  13. package/dist/runtime/components/App.vue +34 -37
  14. package/dist/runtime/components/Avatar.vue +81 -69
  15. package/dist/runtime/components/AvatarGroup.vue +76 -53
  16. package/dist/runtime/components/Badge.vue +83 -83
  17. package/dist/runtime/components/Button.vue +157 -220
  18. package/dist/runtime/components/ButtonGroup.vue +51 -35
  19. package/dist/runtime/components/Calendar.vue +152 -186
  20. package/dist/runtime/components/Checkbox.vue +73 -84
  21. package/dist/runtime/components/Chip.vue +74 -59
  22. package/dist/runtime/components/Collapsible.vue +41 -44
  23. package/dist/runtime/components/Container.vue +27 -18
  24. package/dist/runtime/components/Countdown.vue +378 -198
  25. package/dist/runtime/components/DescriptionList.vue +149 -102
  26. package/dist/runtime/components/DropdownMenu.vue +139 -83
  27. package/dist/runtime/components/DropdownMenuContent.vue +84 -137
  28. package/dist/runtime/components/Form.vue +216 -162
  29. package/dist/runtime/components/FormField.vue +80 -76
  30. package/dist/runtime/components/Input.vue +179 -160
  31. package/dist/runtime/components/InputMenu.vue +380 -300
  32. package/dist/runtime/components/InputNumber.vue +175 -178
  33. package/dist/runtime/components/Kbd.vue +45 -33
  34. package/dist/runtime/components/Link.vue +173 -179
  35. package/dist/runtime/components/LinkBase.vue +42 -64
  36. package/dist/runtime/components/Modal.vue +127 -105
  37. package/dist/runtime/components/ModalDialogClose.vue +8 -4
  38. package/dist/runtime/components/Navbar.vue +33 -24
  39. package/dist/runtime/components/NavbarDivider.vue +33 -24
  40. package/dist/runtime/components/NavbarSection.vue +33 -24
  41. package/dist/runtime/components/NavbarSpacer.vue +33 -24
  42. package/dist/runtime/components/NavigationMenu.vue +210 -144
  43. package/dist/runtime/components/OverlayProvider.vue +17 -13
  44. package/dist/runtime/components/Popover.vue +81 -81
  45. package/dist/runtime/components/Progress.vue +136 -109
  46. package/dist/runtime/components/RadioGroup.vue +134 -120
  47. package/dist/runtime/components/Range.vue +85 -94
  48. package/dist/runtime/components/Select.vue +260 -212
  49. package/dist/runtime/components/SelectMenu.vue +365 -272
  50. package/dist/runtime/components/Separator.vue +71 -61
  51. package/dist/runtime/components/Sidebar.vue +33 -24
  52. package/dist/runtime/components/SidebarBody.vue +38 -30
  53. package/dist/runtime/components/SidebarFooter.vue +33 -24
  54. package/dist/runtime/components/SidebarHeader.vue +33 -24
  55. package/dist/runtime/components/SidebarHeading.vue +33 -24
  56. package/dist/runtime/components/SidebarLayout.vue +70 -40
  57. package/dist/runtime/components/SidebarSection.vue +33 -24
  58. package/dist/runtime/components/SidebarSpacer.vue +33 -24
  59. package/dist/runtime/components/Skeleton.vue +22 -17
  60. package/dist/runtime/components/Slideover.vue +131 -108
  61. package/dist/runtime/components/StackedLayout.vue +73 -40
  62. package/dist/runtime/components/Switch.vue +95 -100
  63. package/dist/runtime/components/Tabs.vue +107 -81
  64. package/dist/runtime/components/Textarea.vue +201 -177
  65. package/dist/runtime/components/Toast.vue +105 -94
  66. package/dist/runtime/components/Toaster.vue +116 -94
  67. package/dist/runtime/components/Tooltip.vue +64 -78
  68. package/dist/runtime/components/content/TableWrapper.vue +70 -58
  69. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  70. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  71. package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
  72. package/dist/runtime/composables/useFormField.d.ts +1 -1
  73. package/dist/runtime/prose/A.vue +23 -18
  74. package/dist/runtime/prose/Blockquote.vue +23 -18
  75. package/dist/runtime/prose/Code.vue +31 -23
  76. package/dist/runtime/prose/Em.vue +23 -18
  77. package/dist/runtime/prose/H1.vue +23 -18
  78. package/dist/runtime/prose/H2.vue +23 -18
  79. package/dist/runtime/prose/H3.vue +23 -18
  80. package/dist/runtime/prose/H4.vue +23 -18
  81. package/dist/runtime/prose/H5.vue +23 -18
  82. package/dist/runtime/prose/H6.vue +23 -18
  83. package/dist/runtime/prose/Hr.vue +19 -18
  84. package/dist/runtime/prose/Img.vue +23 -18
  85. package/dist/runtime/prose/Li.vue +23 -18
  86. package/dist/runtime/prose/Ol.vue +23 -18
  87. package/dist/runtime/prose/P.vue +23 -18
  88. package/dist/runtime/prose/Pre.vue +33 -28
  89. package/dist/runtime/prose/Strong.vue +23 -18
  90. package/dist/runtime/prose/Table.vue +54 -44
  91. package/dist/runtime/prose/Tbody.vue +23 -18
  92. package/dist/runtime/prose/Td.vue +23 -18
  93. package/dist/runtime/prose/Th.vue +23 -18
  94. package/dist/runtime/prose/Thead.vue +23 -18
  95. package/dist/runtime/prose/Tr.vue +23 -18
  96. package/dist/runtime/prose/Ul.vue +23 -18
  97. package/dist/runtime/vue/components/Link.vue +202 -201
  98. package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +7721 -0
  99. package/dist/types.d.mts +5 -3
  100. package/dist/types.d.ts +7 -0
  101. package/dist/unplugin.cjs +236 -0
  102. package/dist/unplugin.d.cts +33 -0
  103. package/dist/unplugin.d.ts +33 -0
  104. package/dist/vite.cjs +21 -0
  105. package/dist/vite.d.cts +14 -0
  106. package/dist/vite.d.ts +14 -0
  107. package/package.json +25 -13
  108. package/dist/runtime/components/Advice.vue.d.ts +0 -170
  109. package/dist/runtime/components/Alert.vue.d.ts +0 -464
  110. package/dist/runtime/components/App.vue.d.ts +0 -23
  111. package/dist/runtime/components/Avatar.vue.d.ts +0 -281
  112. package/dist/runtime/components/AvatarGroup.vue.d.ts +0 -204
  113. package/dist/runtime/components/Badge.vue.d.ts +0 -517
  114. package/dist/runtime/components/Button.vue.d.ts +0 -640
  115. package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -116
  116. package/dist/runtime/components/Calendar.vue.d.ts +0 -437
  117. package/dist/runtime/components/Checkbox.vue.d.ts +0 -354
  118. package/dist/runtime/components/Chip.vue.d.ts +0 -271
  119. package/dist/runtime/components/Collapsible.vue.d.ts +0 -118
  120. package/dist/runtime/components/Container.vue.d.ts +0 -27
  121. package/dist/runtime/components/Countdown.vue.d.ts +0 -356
  122. package/dist/runtime/components/DescriptionList.vue.d.ts +0 -379
  123. package/dist/runtime/components/DropdownMenu.vue.d.ts +0 -533
  124. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +0 -228
  125. package/dist/runtime/components/Form.vue.d.ts +0 -55
  126. package/dist/runtime/components/FormField.vue.d.ts +0 -282
  127. package/dist/runtime/components/Input.vue.d.ts +0 -755
  128. package/dist/runtime/components/InputMenu.vue.d.ts +0 -1504
  129. package/dist/runtime/components/InputNumber.vue.d.ts +0 -658
  130. package/dist/runtime/components/Kbd.vue.d.ts +0 -109
  131. package/dist/runtime/components/Link.vue.d.ts +0 -129
  132. package/dist/runtime/components/LinkBase.vue.d.ts +0 -48
  133. package/dist/runtime/components/Modal.vue.d.ts +0 -327
  134. package/dist/runtime/components/ModalDialogClose.vue.d.ts +0 -10
  135. package/dist/runtime/components/Navbar.vue.d.ts +0 -101
  136. package/dist/runtime/components/NavbarDivider.vue.d.ts +0 -101
  137. package/dist/runtime/components/NavbarSection.vue.d.ts +0 -101
  138. package/dist/runtime/components/NavbarSpacer.vue.d.ts +0 -101
  139. package/dist/runtime/components/NavigationMenu.vue.d.ts +0 -824
  140. package/dist/runtime/components/OverlayProvider.vue.d.ts +0 -2
  141. package/dist/runtime/components/Popover.vue.d.ts +0 -147
  142. package/dist/runtime/components/Progress.vue.d.ts +0 -592
  143. package/dist/runtime/components/RadioGroup.vue.d.ts +0 -723
  144. package/dist/runtime/components/Range.vue.d.ts +0 -417
  145. package/dist/runtime/components/Select.vue.d.ts +0 -1200
  146. package/dist/runtime/components/SelectMenu.vue.d.ts +0 -1298
  147. package/dist/runtime/components/Separator.vue.d.ts +0 -400
  148. package/dist/runtime/components/Sidebar.vue.d.ts +0 -101
  149. package/dist/runtime/components/SidebarBody.vue.d.ts +0 -90
  150. package/dist/runtime/components/SidebarFooter.vue.d.ts +0 -101
  151. package/dist/runtime/components/SidebarHeader.vue.d.ts +0 -101
  152. package/dist/runtime/components/SidebarHeading.vue.d.ts +0 -101
  153. package/dist/runtime/components/SidebarLayout.vue.d.ts +0 -222
  154. package/dist/runtime/components/SidebarSection.vue.d.ts +0 -101
  155. package/dist/runtime/components/SidebarSpacer.vue.d.ts +0 -101
  156. package/dist/runtime/components/Skeleton.vue.d.ts +0 -26
  157. package/dist/runtime/components/Slideover.vue.d.ts +0 -360
  158. package/dist/runtime/components/StackedLayout.vue.d.ts +0 -192
  159. package/dist/runtime/components/Switch.vue.d.ts +0 -587
  160. package/dist/runtime/components/Tabs.vue.d.ts +0 -453
  161. package/dist/runtime/components/Textarea.vue.d.ts +0 -601
  162. package/dist/runtime/components/Toast.vue.d.ts +0 -438
  163. package/dist/runtime/components/Toaster.vue.d.ts +0 -219
  164. package/dist/runtime/components/Tooltip.vue.d.ts +0 -186
  165. package/dist/runtime/components/content/TableWrapper.vue.d.ts +0 -237
  166. package/dist/runtime/prose/A.vue.d.ts +0 -84
  167. package/dist/runtime/prose/Blockquote.vue.d.ts +0 -84
  168. package/dist/runtime/prose/Code.vue.d.ts +0 -97
  169. package/dist/runtime/prose/Em.vue.d.ts +0 -84
  170. package/dist/runtime/prose/H1.vue.d.ts +0 -97
  171. package/dist/runtime/prose/H2.vue.d.ts +0 -123
  172. package/dist/runtime/prose/H3.vue.d.ts +0 -123
  173. package/dist/runtime/prose/H4.vue.d.ts +0 -123
  174. package/dist/runtime/prose/H5.vue.d.ts +0 -123
  175. package/dist/runtime/prose/H6.vue.d.ts +0 -123
  176. package/dist/runtime/prose/Hr.vue.d.ts +0 -74
  177. package/dist/runtime/prose/Img.vue.d.ts +0 -77
  178. package/dist/runtime/prose/Li.vue.d.ts +0 -84
  179. package/dist/runtime/prose/Ol.vue.d.ts +0 -84
  180. package/dist/runtime/prose/P.vue.d.ts +0 -84
  181. package/dist/runtime/prose/Pre.vue.d.ts +0 -117
  182. package/dist/runtime/prose/Strong.vue.d.ts +0 -84
  183. package/dist/runtime/prose/Table.vue.d.ts +0 -144
  184. package/dist/runtime/prose/Tbody.vue.d.ts +0 -84
  185. package/dist/runtime/prose/Td.vue.d.ts +0 -84
  186. package/dist/runtime/prose/Th.vue.d.ts +0 -84
  187. package/dist/runtime/prose/Thead.vue.d.ts +0 -84
  188. package/dist/runtime/prose/Tr.vue.d.ts +0 -84
  189. package/dist/runtime/prose/Ul.vue.d.ts +0 -84
  190. package/dist/runtime/vue/components/Link.vue.d.ts +0 -129
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ const defu = require('defu');
4
+ const kit = require('@nuxt/kit');
5
+ const templates = require('./shared/b24ui-nuxt.DrKwIWoc.cjs');
6
+ require('node:url');
7
+ require('scule');
8
+
9
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
10
+ const name = "@bitrix24/b24ui-nuxt";
11
+ const version = "0.5.11";
12
+
13
+ const module$1 = kit.defineNuxtModule({
14
+ meta: {
15
+ name,
16
+ version,
17
+ docs: "https://bitrix24.github.io/b24ui/guide/installation-nuxt-app.html",
18
+ configKey: "b24ui",
19
+ compatibility: {
20
+ nuxt: ">=3.16.0"
21
+ }
22
+ },
23
+ defaults: templates.defaultOptions,
24
+ async setup(options, nuxt) {
25
+ const { resolve } = kit.createResolver((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('module.cjs', document.baseURI).href)));
26
+ nuxt.options.b24ui = options;
27
+ nuxt.options.alias["#b24ui"] = resolve("./runtime");
28
+ nuxt.options.appConfig.b24ui = defu.defu(nuxt.options.appConfig.b24ui || {}, templates.getDefaultUiConfig());
29
+ nuxt.options.app.rootAttrs = nuxt.options.app.rootAttrs || {};
30
+ nuxt.options.app.rootAttrs.class = [nuxt.options.app.rootAttrs.class, "isolate"].filter(Boolean).join(" ");
31
+ if (nuxt.options.builder === "@nuxt/vite-builder") {
32
+ const plugin = await import('@tailwindcss/vite').then((r) => r.default);
33
+ kit.addVitePlugin(plugin());
34
+ } else {
35
+ nuxt.options.postcss.plugins["@tailwindcss/postcss"] = {};
36
+ }
37
+ async function registerModule(name2, key, options2) {
38
+ if (!kit.hasNuxtModule(name2)) {
39
+ await kit.installModule(name2, options2);
40
+ } else {
41
+ nuxt.options[key] = defu.defu(nuxt.options[key], options2);
42
+ }
43
+ }
44
+ if (options.colorMode) {
45
+ await registerModule("@nuxtjs/color-mode", "colorMode", { classSuffix: "", disableTransition: true });
46
+ }
47
+ kit.addPlugin({ src: resolve("./runtime/plugins/colors") });
48
+ kit.addComponentsDir({
49
+ path: resolve("./runtime/components"),
50
+ prefix: "B24",
51
+ pathPrefix: false
52
+ });
53
+ kit.addComponentsDir({
54
+ path: resolve("./runtime/prose"),
55
+ prefix: "Prose",
56
+ pathPrefix: false
57
+ });
58
+ kit.addImportsDir(resolve("./runtime/composables"));
59
+ templates.addTemplates(options, nuxt, resolve);
60
+ }
61
+ });
62
+
63
+ module.exports = module$1;
@@ -0,0 +1,15 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+ export * from '../dist/runtime/types/index.js';
3
+
4
+ interface ModuleOptions {
5
+ /**
6
+ * Enable or disable `@nuxtjs/color-mode` module
7
+ * @defaultValue `true`
8
+ * @link https://bitrix24.github.io/b24ui/guide/color-mode-nuxt.html
9
+ */
10
+ colorMode?: boolean;
11
+ }
12
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
13
+
14
+ export { _default as default };
15
+ export type { ModuleOptions };
@@ -0,0 +1,15 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+ export * from '../dist/runtime/types/index.js';
3
+
4
+ interface ModuleOptions {
5
+ /**
6
+ * Enable or disable `@nuxtjs/color-mode` module
7
+ * @defaultValue `true`
8
+ * @link https://bitrix24.github.io/b24ui/guide/color-mode-nuxt.html
9
+ */
10
+ colorMode?: boolean;
11
+ }
12
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
13
+
14
+ export { _default as default };
15
+ export type { ModuleOptions };
package/dist/module.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@bitrix24/b24ui-nuxt",
3
- "version": "0.5.10",
3
+ "version": "0.5.11",
4
4
  "docs": "https://bitrix24.github.io/b24ui/guide/installation-nuxt-app.html",
5
5
  "configKey": "b24ui",
6
6
  "compatibility": {
7
7
  "nuxt": ">=3.16.0"
8
8
  },
9
9
  "builder": {
10
- "@nuxt/module-builder": "1.0.0",
11
- "unbuild": "3.5.0"
10
+ "@nuxt/module-builder": "0.8.4",
11
+ "unbuild": "2.0.0"
12
12
  }
13
13
  }
package/dist/module.mjs CHANGED
@@ -5,7 +5,7 @@ import 'node:url';
5
5
  import 'scule';
6
6
 
7
7
  const name = "@bitrix24/b24ui-nuxt";
8
- const version = "0.5.10";
8
+ const version = "0.5.11";
9
9
 
10
10
  const module = defineNuxtModule({
11
11
  meta: {
@@ -1,54 +1,61 @@
1
- <script>
2
- import _appConfig from "#build/app.config";
3
- import theme from "#build/b24ui/advice";
4
- import { tv } from "../utils/tv";
5
- const appConfigAdvice = _appConfig;
6
- const advice = tv({ extend: tv(theme), ...appConfigAdvice.b24ui?.advice || {} });
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/advice'
6
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons'
7
+ import { tv } from '../utils/tv'
8
+ import type { AvatarProps } from '../types'
9
+
10
+ const appConfigAdvice = _appConfig as AppConfig & { b24ui: { advice: Partial<typeof theme> } }
11
+
12
+ const advice = tv({ extend: tv(theme), ...(appConfigAdvice.b24ui?.advice || {}) })
13
+
14
+ type AdviceVariants = VariantProps<typeof advice>
15
+
16
+ export interface AdviceProps extends Omit<UseComponentIconsProps, 'loading' | 'trailing' | 'trailingIcon'> {
17
+ /**
18
+ * The element or component this component should render as.
19
+ * @defaultValue 'div'
20
+ */
21
+ as?: any
22
+ description?: string
23
+ /**
24
+ * @defaultValue 'bottom'
25
+ */
26
+ angle?: AdviceVariants['angle']
27
+ class?: any
28
+ b24ui?: Partial<typeof advice.slots>
29
+ }
30
+
31
+ export interface AdviceSlots {
32
+ leading(props?: {}): any
33
+ default(props?: {}): any
34
+ }
7
35
  </script>
8
36
 
9
- <script setup>
10
- import { computed } from "vue";
11
- import { useComponentIcons } from "../composables/useComponentIcons";
12
- defineOptions({ inheritAttrs: false });
13
- const props = defineProps({
14
- as: {
15
- type: null,
16
- required: false,
17
- default: "div"
18
- },
19
- description: {
20
- type: String,
21
- required: false
22
- },
23
- angle: {
24
- type: null,
25
- required: false,
26
- default: "bottom"
27
- },
28
- class: {
29
- type: null,
30
- required: false
31
- },
32
- b24ui: {
33
- type: Object,
34
- required: false
35
- },
36
- icon: {
37
- type: [Function, Object],
38
- required: false
39
- },
40
- avatar: {
41
- type: Object,
42
- required: false
43
- }
44
- });
45
- const slots = defineSlots();
37
+ <script setup lang="ts">
38
+ import { computed } from 'vue'
39
+ import { Primitive } from 'reka-ui'
40
+ import { useComponentIcons } from '../composables/useComponentIcons'
41
+ import B24Avatar from './Avatar.vue'
42
+ import PersonIcon from '@bitrix24/b24icons-vue/main/PersonIcon'
43
+
44
+ defineOptions({ inheritAttrs: false })
45
+
46
+ const props = withDefaults(defineProps<AdviceProps>(), {
47
+ as: 'div',
48
+ angle: 'bottom'
49
+ })
50
+ const slots = defineSlots<AdviceSlots>()
51
+
46
52
  const { isLeading, leadingIconName } = useComponentIcons(
47
53
  computed(() => ({ ...props, loading: false }))
48
- );
54
+ )
55
+
49
56
  const b24ui = computed(() => advice({
50
57
  angle: props.angle
51
- }));
58
+ }))
52
59
  </script>
53
60
 
54
61
  <template>
@@ -62,7 +69,7 @@ const b24ui = computed(() => advice({
62
69
  />
63
70
  <B24Avatar
64
71
  v-else-if="!!avatar"
65
- :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
72
+ :size="((props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()) as AvatarProps['size'])"
66
73
  v-bind="avatar"
67
74
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
68
75
  />
@@ -73,7 +80,7 @@ const b24ui = computed(() => advice({
73
80
  :class="b24ui.leading({ class: props.b24ui?.leading })"
74
81
  >
75
82
  <B24Avatar
76
- :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
83
+ :size="((props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()) as AvatarProps['size'])"
77
84
  :icon="PersonIcon"
78
85
  alt="Person"
79
86
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
@@ -1,78 +1,103 @@
1
- <script>
2
- import _appConfig from "#build/app.config";
3
- import theme from "#build/b24ui/alert";
4
- import { tv } from "../utils/tv";
5
- const appConfigAlert = _appConfig;
6
- const alert = tv({ extend: tv(theme), ...appConfigAlert.b24ui?.alert || {} });
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/alert'
6
+ import { tv } from '../utils/tv'
7
+ import type { AvatarProps, ButtonProps, IconComponent } from '../types'
8
+
9
+ const appConfigAlert = _appConfig as AppConfig & { b24ui: { alert: Partial<typeof theme> } }
10
+
11
+ const alert = tv({ extend: tv(theme), ...(appConfigAlert.b24ui?.alert || {}) })
12
+
13
+ type AlertVariants = VariantProps<typeof alert>
14
+
15
+ export interface AlertProps {
16
+ /**
17
+ * The element or component this component should render as.
18
+ * @defaultValue 'div'
19
+ */
20
+ as?: any
21
+ title?: string
22
+ description?: string
23
+ /**
24
+ * Display an icon on the left side.
25
+ * @IconComponent
26
+ */
27
+ icon?: IconComponent
28
+ avatar?: AvatarProps
29
+ /**
30
+ * @defaultValue 'default'
31
+ */
32
+ color?: AlertVariants['color']
33
+ /**
34
+ * The orientation between the content and the actions.
35
+ * @defaultValue 'vertical'
36
+ */
37
+ orientation?: AlertVariants['orientation']
38
+ /**
39
+ * @defaultValue 'md'
40
+ */
41
+ size?: AlertVariants['size']
42
+ /**
43
+ * Display a list of actions:
44
+ * - under the title and description when orientation is `vertical`
45
+ * - next to the close button when orientation is `horizontal`
46
+ * `{ size: 'xs' }`{lang="ts"}
47
+ */
48
+ actions?: ButtonProps[]
49
+ /**
50
+ * Display a close button to dismiss the alert.
51
+ * `{ size: 'md', color: 'neutral', variant: 'link' }`{lang="ts"}
52
+ * @emits 'update:open'
53
+ * @defaultValue false
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
+ class?: any
63
+ b24ui?: Partial<typeof alert.slots>
64
+ }
65
+
66
+ export interface AlertEmits {
67
+ (e: 'update:open', value: boolean): void
68
+ }
69
+
70
+ export interface AlertSlots {
71
+ leading(props?: {}): any
72
+ title(props?: {}): any
73
+ description(props?: {}): any
74
+ actions(props?: {}): any
75
+ close(props: { b24ui: ReturnType<typeof alert> }): any
76
+ }
7
77
  </script>
8
78
 
9
- <script setup>
10
- import { computed } from "vue";
11
- import { useLocale } from "../composables/useLocale";
12
- const props = defineProps({
13
- as: {
14
- type: null,
15
- required: false
16
- },
17
- title: {
18
- type: String,
19
- required: false
20
- },
21
- description: {
22
- type: String,
23
- required: false
24
- },
25
- icon: {
26
- type: [Function, Object],
27
- required: false
28
- },
29
- avatar: {
30
- type: Object,
31
- required: false
32
- },
33
- color: {
34
- type: null,
35
- required: false
36
- },
37
- orientation: {
38
- type: null,
39
- required: false,
40
- default: "vertical"
41
- },
42
- size: {
43
- type: null,
44
- required: false
45
- },
46
- actions: {
47
- type: Array,
48
- required: false
49
- },
50
- close: {
51
- type: [Boolean, Object],
52
- required: false
53
- },
54
- closeIcon: {
55
- type: [Function, Object],
56
- required: false
57
- },
58
- class: {
59
- type: null,
60
- required: false
61
- },
62
- b24ui: {
63
- type: Object,
64
- required: false
65
- }
66
- });
67
- const emits = defineEmits(["update:open"]);
68
- const slots = defineSlots();
69
- const { t } = useLocale();
79
+ <script setup lang="ts">
80
+ import { computed } from 'vue'
81
+ import { Primitive } from 'reka-ui'
82
+ import { useLocale } from '../composables/useLocale'
83
+ import icons from '../dictionary/icons'
84
+ import B24Avatar from './Avatar.vue'
85
+ import B24Button from './Button.vue'
86
+
87
+ const props = withDefaults(defineProps<AlertProps>(), {
88
+ orientation: 'vertical'
89
+ })
90
+ const emits = defineEmits<AlertEmits>()
91
+ const slots = defineSlots<AlertSlots>()
92
+
93
+ const { t } = useLocale()
94
+
70
95
  const b24ui = computed(() => alert({
71
96
  color: props.color,
72
97
  size: props.size,
73
98
  orientation: props.orientation,
74
99
  title: !!props.title || !!slots.title
75
- }));
100
+ }))
76
101
  </script>
77
102
 
78
103
  <template>
@@ -83,7 +108,7 @@ const b24ui = computed(() => alert({
83
108
  v-if="icon"
84
109
  :class="b24ui.icon({ class: props.b24ui?.icon })"
85
110
  />
86
- <B24Avatar v-else-if="avatar" :size="props.b24ui?.avatarSize || b24ui.avatarSize()" v-bind="avatar" :class="b24ui.avatar({ class: props.b24ui?.avatar })" />
111
+ <B24Avatar v-else-if="avatar" :size="((props.b24ui?.avatarSize || b24ui.avatarSize()) as AvatarProps['size'])" v-bind="avatar" :class="b24ui.avatar({ class: props.b24ui?.avatar })" />
87
112
  </slot>
88
113
 
89
114
  <div :class="b24ui.wrapper({ class: props.b24ui?.wrapper })">
@@ -105,7 +130,7 @@ const b24ui = computed(() => alert({
105
130
  </div>
106
131
  </div>
107
132
 
108
- <div v-if="orientation === 'horizontal' && actions?.length || close" :class="b24ui.actions({ class: props.b24ui?.actions, orientation: 'horizontal' })">
133
+ <div v-if="(orientation === 'horizontal' && actions?.length) || close" :class="b24ui.actions({ class: props.b24ui?.actions, orientation: 'horizontal' })">
109
134
  <template v-if="orientation === 'horizontal' && actions?.length">
110
135
  <slot name="actions">
111
136
  <B24Button v-for="(action, index) in actions" :key="index" size="xs" v-bind="action" />
@@ -119,7 +144,7 @@ const b24ui = computed(() => alert({
119
144
  size="xs"
120
145
  color="link"
121
146
  :aria-label="t('alert.close')"
122
- v-bind="typeof close === 'object' ? close : {}"
147
+ v-bind="(typeof close === 'object' ? close as Partial<ButtonProps> : {})"
123
148
  :class="b24ui.close({ class: props.b24ui?.close })"
124
149
  @click="emits('update:open', false)"
125
150
  />
@@ -1,46 +1,43 @@
1
- <script>
1
+ <script lang="ts">
2
+ import type { ConfigProviderProps, TooltipProviderProps } from 'reka-ui'
3
+ import type { ToasterProps, Locale, Messages } from '../types'
4
+
5
+ export interface AppProps<T extends Messages = Messages> extends Omit<ConfigProviderProps, 'useId' | 'dir' | 'locale'> {
6
+ tooltip?: TooltipProviderProps
7
+ toaster?: ToasterProps | null
8
+ locale?: Locale<T>
9
+ }
10
+
11
+ export interface AppSlots {
12
+ default(props?: {}): any
13
+ }
14
+
2
15
  export default {
3
- name: "App"
4
- };
16
+ name: 'App'
17
+ }
5
18
  </script>
6
19
 
7
- <script setup>
8
- import { toRef, provide } from "vue";
9
- import { useForwardProps } from "reka-ui";
10
- import { reactivePick } from "@vueuse/core";
11
- import { localeContextInjectionKey } from "../composables/useLocale";
12
- const props = defineProps({
13
- tooltip: {
14
- type: Object,
15
- required: false
16
- },
17
- toaster: {
18
- type: [Object, null],
19
- required: false
20
- },
21
- locale: {
22
- type: null,
23
- required: false
24
- },
25
- scrollBody: {
26
- type: [Boolean, Object],
27
- required: false
28
- },
29
- nonce: {
30
- type: String,
31
- required: false
32
- }
33
- });
34
- defineSlots();
35
- const configProviderProps = useForwardProps(reactivePick(props, "scrollBody"));
36
- const tooltipProps = toRef(() => props.tooltip);
37
- const toasterProps = toRef(() => props.toaster);
38
- const locale = toRef(() => props.locale);
39
- provide(localeContextInjectionKey, locale);
20
+ <script setup lang="ts" generic="T extends Messages">
21
+ import { toRef, useId, provide } from 'vue'
22
+ import { ConfigProvider, TooltipProvider, useForwardProps } from 'reka-ui'
23
+ import { reactivePick } from '@vueuse/core'
24
+ import { localeContextInjectionKey } from '../composables/useLocale'
25
+ import B24Toaster from './Toaster.vue'
26
+ import B24OverlayProvider from './OverlayProvider.vue'
27
+
28
+ const props = defineProps<AppProps<T>>()
29
+ defineSlots<AppSlots>()
30
+
31
+ const configProviderProps = useForwardProps(reactivePick(props, 'scrollBody'))
32
+ const tooltipProps = toRef(() => props.tooltip)
33
+ const toasterProps = toRef(() => props.toaster)
34
+
35
+ const locale = toRef(() => props.locale)
36
+ provide(localeContextInjectionKey, locale)
40
37
  </script>
41
38
 
42
39
  <template>
43
- <ConfigProvider :use-id="() => useId()" :dir="locale?.dir" :locale="locale?.code" v-bind="configProviderProps">
40
+ <ConfigProvider :use-id="() => (useId() as string)" :dir="locale?.dir" :locale="locale?.code" v-bind="configProviderProps">
44
41
  <TooltipProvider v-bind="tooltipProps">
45
42
  <B24Toaster v-if="toaster !== null" v-bind="toasterProps">
46
43
  <slot />