@bitrix24/b24ui-nuxt 0.5.11 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/.nuxt/b24ui/advice.ts +10 -2
  2. package/.nuxt/b24ui/alert.ts +10 -2
  3. package/.nuxt/b24ui/avatar-group.ts +10 -2
  4. package/.nuxt/b24ui/avatar.ts +10 -2
  5. package/.nuxt/b24ui/badge.ts +10 -2
  6. package/.nuxt/b24ui/button-group.ts +10 -2
  7. package/.nuxt/b24ui/button.ts +16 -6
  8. package/.nuxt/b24ui/calendar.ts +10 -2
  9. package/.nuxt/b24ui/checkbox.ts +10 -2
  10. package/.nuxt/b24ui/chip.ts +10 -2
  11. package/.nuxt/b24ui/collapsible.ts +10 -2
  12. package/.nuxt/b24ui/container.ts +10 -2
  13. package/.nuxt/b24ui/countdown.ts +10 -2
  14. package/.nuxt/b24ui/description-list.ts +10 -2
  15. package/.nuxt/b24ui/dropdown-menu.ts +10 -2
  16. package/.nuxt/b24ui/form-field.ts +10 -2
  17. package/.nuxt/b24ui/form.ts +10 -2
  18. package/.nuxt/b24ui/input-menu.ts +12 -4
  19. package/.nuxt/b24ui/input-number.ts +10 -2
  20. package/.nuxt/b24ui/input.ts +10 -2
  21. package/.nuxt/b24ui/kbd.ts +10 -2
  22. package/.nuxt/b24ui/link.ts +10 -2
  23. package/.nuxt/b24ui/modal.ts +10 -2
  24. package/.nuxt/b24ui/navbar-divider.ts +10 -2
  25. package/.nuxt/b24ui/navbar-section.ts +10 -2
  26. package/.nuxt/b24ui/navbar-spacer.ts +10 -2
  27. package/.nuxt/b24ui/navbar.ts +10 -2
  28. package/.nuxt/b24ui/navigation-menu.ts +10 -2
  29. package/.nuxt/b24ui/popover.ts +10 -2
  30. package/.nuxt/b24ui/progress.ts +10 -2
  31. package/.nuxt/b24ui/radio-group.ts +10 -2
  32. package/.nuxt/b24ui/range.ts +10 -2
  33. package/.nuxt/b24ui/select-menu.ts +14 -6
  34. package/.nuxt/b24ui/select.ts +12 -4
  35. package/.nuxt/b24ui/separator.ts +10 -2
  36. package/.nuxt/b24ui/sidebar-body.ts +10 -2
  37. package/.nuxt/b24ui/sidebar-footer.ts +10 -2
  38. package/.nuxt/b24ui/sidebar-header.ts +10 -2
  39. package/.nuxt/b24ui/sidebar-heading.ts +10 -2
  40. package/.nuxt/b24ui/sidebar-layout.ts +10 -2
  41. package/.nuxt/b24ui/sidebar-section.ts +10 -2
  42. package/.nuxt/b24ui/sidebar-spacer.ts +10 -2
  43. package/.nuxt/b24ui/sidebar.ts +10 -2
  44. package/.nuxt/b24ui/skeleton.ts +10 -2
  45. package/.nuxt/b24ui/slideover.ts +10 -2
  46. package/.nuxt/b24ui/stacked-layout.ts +10 -2
  47. package/.nuxt/b24ui/switch.ts +10 -2
  48. package/.nuxt/b24ui/tabs.ts +10 -2
  49. package/.nuxt/b24ui/textarea.ts +10 -2
  50. package/.nuxt/b24ui/toast.ts +10 -2
  51. package/.nuxt/b24ui/toaster.ts +10 -2
  52. package/.nuxt/b24ui/tooltip.ts +10 -2
  53. package/cli/templates.mjs +19 -15
  54. package/dist/meta.d.mts +5675 -7513
  55. package/dist/meta.mjs +5675 -7513
  56. package/dist/module.json +3 -3
  57. package/dist/module.mjs +2 -2
  58. package/dist/runtime/components/Advice.vue +27 -55
  59. package/dist/runtime/components/Advice.vue.d.ts +56 -0
  60. package/dist/runtime/components/Alert.vue +35 -97
  61. package/dist/runtime/components/Alert.vue.d.ts +97 -0
  62. package/dist/runtime/components/App.vue +24 -34
  63. package/dist/runtime/components/App.vue.d.ts +23 -0
  64. package/dist/runtime/components/Avatar.vue +43 -82
  65. package/dist/runtime/components/Avatar.vue.d.ts +62 -0
  66. package/dist/runtime/components/AvatarGroup.vue +40 -77
  67. package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
  68. package/dist/runtime/components/Badge.vue +40 -84
  69. package/dist/runtime/components/Badge.vue.d.ts +78 -0
  70. package/dist/runtime/components/Button.vue +107 -164
  71. package/dist/runtime/components/Button.vue.d.ts +115 -0
  72. package/dist/runtime/components/ButtonGroup.vue +25 -52
  73. package/dist/runtime/components/ButtonGroup.vue.d.ts +63 -0
  74. package/dist/runtime/components/Calendar.vue +73 -153
  75. package/dist/runtime/components/Calendar.vue.d.ts +107 -0
  76. package/dist/runtime/components/Checkbox.vue +42 -74
  77. package/dist/runtime/components/Checkbox.vue.d.ts +55 -0
  78. package/dist/runtime/components/Chip.vue +26 -75
  79. package/dist/runtime/components/Chip.vue.d.ts +77 -0
  80. package/dist/runtime/components/Collapsible.vue +22 -41
  81. package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
  82. package/dist/runtime/components/Container.vue +15 -28
  83. package/dist/runtime/components/Container.vue.d.ts +27 -0
  84. package/dist/runtime/components/Countdown.vue +153 -379
  85. package/dist/runtime/components/Countdown.vue.d.ts +122 -0
  86. package/dist/runtime/components/DescriptionList.vue +78 -150
  87. package/dist/runtime/components/DescriptionList.vue.d.ts +109 -0
  88. package/dist/runtime/components/DropdownMenu.vue +38 -140
  89. package/dist/runtime/components/DropdownMenu.vue.d.ts +133 -0
  90. package/dist/runtime/components/DropdownMenuContent.vue +65 -79
  91. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
  92. package/dist/runtime/components/Form.vue +132 -218
  93. package/dist/runtime/components/Form.vue.d.ts +55 -0
  94. package/dist/runtime/components/FormField.vue +36 -81
  95. package/dist/runtime/components/FormField.vue.d.ts +73 -0
  96. package/dist/runtime/components/Input.vue +79 -180
  97. package/dist/runtime/components/Input.vue.d.ts +135 -0
  98. package/dist/runtime/components/InputMenu.vue +185 -382
  99. package/dist/runtime/components/InputMenu.vue.d.ts +357 -0
  100. package/dist/runtime/components/InputNumber.vue +77 -176
  101. package/dist/runtime/components/InputNumber.vue.d.ts +238 -0
  102. package/dist/runtime/components/Kbd.vue +20 -46
  103. package/dist/runtime/components/Kbd.vue.d.ts +55 -0
  104. package/dist/runtime/components/Link.vue +99 -179
  105. package/dist/runtime/components/Link.vue.d.ts +129 -0
  106. package/dist/runtime/components/LinkBase.vue +33 -42
  107. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  108. package/dist/runtime/components/Modal.vue +48 -128
  109. package/dist/runtime/components/Modal.vue.d.ts +124 -0
  110. package/dist/runtime/components/ModalDialogClose.vue +5 -8
  111. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  112. package/dist/runtime/components/Navbar.vue +15 -33
  113. package/dist/runtime/components/Navbar.vue.d.ts +46 -0
  114. package/dist/runtime/components/NavbarDivider.vue +15 -33
  115. package/dist/runtime/components/NavbarDivider.vue.d.ts +46 -0
  116. package/dist/runtime/components/NavbarSection.vue +15 -33
  117. package/dist/runtime/components/NavbarSection.vue.d.ts +46 -0
  118. package/dist/runtime/components/NavbarSpacer.vue +15 -33
  119. package/dist/runtime/components/NavbarSpacer.vue.d.ts +46 -0
  120. package/dist/runtime/components/NavigationMenu.vue +74 -209
  121. package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
  122. package/dist/runtime/components/OverlayProvider.vue +14 -18
  123. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  124. package/dist/runtime/components/Popover.vue +40 -82
  125. package/dist/runtime/components/Popover.vue.d.ts +79 -0
  126. package/dist/runtime/components/Progress.vue +70 -137
  127. package/dist/runtime/components/Progress.vue.d.ts +103 -0
  128. package/dist/runtime/components/RadioGroup.vue +59 -135
  129. package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
  130. package/dist/runtime/components/Range.vue +46 -86
  131. package/dist/runtime/components/Range.vue.d.ts +73 -0
  132. package/dist/runtime/components/Select.vue +110 -261
  133. package/dist/runtime/components/Select.vue.d.ts +170 -0
  134. package/dist/runtime/components/SelectMenu.vue +161 -348
  135. package/dist/runtime/components/SelectMenu.vue.d.ts +217 -0
  136. package/dist/runtime/components/Separator.vue +28 -72
  137. package/dist/runtime/components/Separator.vue.d.ts +77 -0
  138. package/dist/runtime/components/Sidebar.vue +15 -33
  139. package/dist/runtime/components/Sidebar.vue.d.ts +46 -0
  140. package/dist/runtime/components/SidebarBody.vue +17 -39
  141. package/dist/runtime/components/SidebarBody.vue.d.ts +53 -0
  142. package/dist/runtime/components/SidebarFooter.vue +15 -33
  143. package/dist/runtime/components/SidebarFooter.vue.d.ts +46 -0
  144. package/dist/runtime/components/SidebarHeader.vue +15 -33
  145. package/dist/runtime/components/SidebarHeader.vue.d.ts +46 -0
  146. package/dist/runtime/components/SidebarHeading.vue +15 -33
  147. package/dist/runtime/components/SidebarHeading.vue.d.ts +46 -0
  148. package/dist/runtime/components/SidebarLayout.vue +34 -71
  149. package/dist/runtime/components/SidebarLayout.vue.d.ts +65 -0
  150. package/dist/runtime/components/SidebarSection.vue +15 -33
  151. package/dist/runtime/components/SidebarSection.vue.d.ts +46 -0
  152. package/dist/runtime/components/SidebarSpacer.vue +15 -33
  153. package/dist/runtime/components/SidebarSpacer.vue.d.ts +46 -0
  154. package/dist/runtime/components/Skeleton.vue +14 -23
  155. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  156. package/dist/runtime/components/Slideover.vue +50 -132
  157. package/dist/runtime/components/Slideover.vue.d.ts +127 -0
  158. package/dist/runtime/components/StackedLayout.vue +34 -74
  159. package/dist/runtime/components/StackedLayout.vue.d.ts +65 -0
  160. package/dist/runtime/components/Switch.vue +46 -96
  161. package/dist/runtime/components/Switch.vue.d.ts +77 -0
  162. package/dist/runtime/components/Tabs.vue +41 -106
  163. package/dist/runtime/components/Tabs.vue.d.ts +104 -0
  164. package/dist/runtime/components/Textarea.vue +92 -202
  165. package/dist/runtime/components/Textarea.vue.d.ts +141 -0
  166. package/dist/runtime/components/Toast.vue +47 -106
  167. package/dist/runtime/components/Toast.vue.d.ts +95 -0
  168. package/dist/runtime/components/Toaster.vue +70 -116
  169. package/dist/runtime/components/Toaster.vue.d.ts +70 -0
  170. package/dist/runtime/components/Tooltip.vue +36 -65
  171. package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
  172. package/dist/runtime/components/content/TableWrapper.vue +24 -71
  173. package/dist/runtime/components/content/TableWrapper.vue.d.ts +83 -0
  174. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  175. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  176. package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
  177. package/dist/runtime/composables/useFormField.d.ts +2 -2
  178. package/dist/runtime/composables/useOverlay.d.ts +14 -7
  179. package/dist/runtime/composables/useOverlay.js +14 -6
  180. package/dist/runtime/prose/A.vue +16 -26
  181. package/dist/runtime/prose/A.vue.d.ts +27 -0
  182. package/dist/runtime/prose/Blockquote.vue +14 -26
  183. package/dist/runtime/prose/Blockquote.vue.d.ts +27 -0
  184. package/dist/runtime/prose/Code.vue +15 -32
  185. package/dist/runtime/prose/Code.vue.d.ts +31 -0
  186. package/dist/runtime/prose/Em.vue +16 -26
  187. package/dist/runtime/prose/Em.vue.d.ts +27 -0
  188. package/dist/runtime/prose/H1.vue +14 -26
  189. package/dist/runtime/prose/H1.vue.d.ts +27 -0
  190. package/dist/runtime/prose/H2.vue +14 -26
  191. package/dist/runtime/prose/H2.vue.d.ts +27 -0
  192. package/dist/runtime/prose/H3.vue +14 -26
  193. package/dist/runtime/prose/H3.vue.d.ts +27 -0
  194. package/dist/runtime/prose/H4.vue +14 -26
  195. package/dist/runtime/prose/H4.vue.d.ts +27 -0
  196. package/dist/runtime/prose/H5.vue +14 -26
  197. package/dist/runtime/prose/H5.vue.d.ts +27 -0
  198. package/dist/runtime/prose/H6.vue +14 -26
  199. package/dist/runtime/prose/H6.vue.d.ts +27 -0
  200. package/dist/runtime/prose/Hr.vue +13 -22
  201. package/dist/runtime/prose/Hr.vue.d.ts +19 -0
  202. package/dist/runtime/prose/Img.vue +13 -26
  203. package/dist/runtime/prose/Img.vue.d.ts +19 -0
  204. package/dist/runtime/prose/Li.vue +14 -26
  205. package/dist/runtime/prose/Li.vue.d.ts +27 -0
  206. package/dist/runtime/prose/Ol.vue +14 -26
  207. package/dist/runtime/prose/Ol.vue.d.ts +27 -0
  208. package/dist/runtime/prose/P.vue +14 -26
  209. package/dist/runtime/prose/P.vue.d.ts +27 -0
  210. package/dist/runtime/prose/Pre.vue +17 -33
  211. package/dist/runtime/prose/Pre.vue.d.ts +47 -0
  212. package/dist/runtime/prose/Strong.vue +14 -26
  213. package/dist/runtime/prose/Strong.vue.d.ts +27 -0
  214. package/dist/runtime/prose/Table.vue +21 -57
  215. package/dist/runtime/prose/Table.vue.d.ts +74 -0
  216. package/dist/runtime/prose/Tbody.vue +14 -26
  217. package/dist/runtime/prose/Tbody.vue.d.ts +27 -0
  218. package/dist/runtime/prose/Td.vue +14 -26
  219. package/dist/runtime/prose/Td.vue.d.ts +27 -0
  220. package/dist/runtime/prose/Th.vue +14 -26
  221. package/dist/runtime/prose/Th.vue.d.ts +27 -0
  222. package/dist/runtime/prose/Thead.vue +14 -26
  223. package/dist/runtime/prose/Thead.vue.d.ts +27 -0
  224. package/dist/runtime/prose/Tr.vue +14 -26
  225. package/dist/runtime/prose/Tr.vue.d.ts +27 -0
  226. package/dist/runtime/prose/Ul.vue +14 -26
  227. package/dist/runtime/prose/Ul.vue.d.ts +27 -0
  228. package/dist/runtime/types/form.d.ts +1 -0
  229. package/dist/runtime/types/utils.d.ts +42 -3
  230. package/dist/runtime/utils/link.d.ts +3 -3
  231. package/dist/runtime/utils/tv.js +2 -2
  232. package/dist/runtime/vue/components/Link.vue +122 -208
  233. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  234. package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.wBs9vEU5.mjs} +33 -8
  235. package/dist/types.d.mts +3 -5
  236. package/dist/unplugin.mjs +1 -1
  237. package/dist/vite.mjs +1 -1
  238. package/package.json +19 -27
  239. package/dist/meta.cjs +0 -72112
  240. package/dist/meta.d.cts +0 -72110
  241. package/dist/meta.d.ts +0 -72110
  242. package/dist/module.cjs +0 -63
  243. package/dist/module.d.cts +0 -15
  244. package/dist/module.d.ts +0 -15
  245. package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
  246. package/dist/types.d.ts +0 -7
  247. package/dist/unplugin.cjs +0 -236
  248. package/dist/unplugin.d.cts +0 -33
  249. package/dist/unplugin.d.ts +0 -33
  250. package/dist/vite.cjs +0 -21
  251. package/dist/vite.d.cts +0 -14
  252. package/dist/vite.d.ts +0 -14
@@ -1,143 +1,56 @@
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/textarea'
6
- import type { UseComponentIconsProps } from '../composables/useComponentIcons'
7
- import { tv } from '../utils/tv'
8
- import type { AvatarProps } from '../types'
9
- import type { PartialString } from '../types/utils'
10
-
11
- const appConfigTextarea = _appConfig as AppConfig & { b24ui: { textarea: Partial<typeof theme> } }
12
-
13
- const textarea = tv({ extend: tv(theme), ...(appConfigTextarea.b24ui?.textarea || {}) })
14
-
15
- type TextareaVariants = VariantProps<typeof textarea>
16
-
17
- export interface TextareaProps extends UseComponentIconsProps {
18
- /**
19
- * The element or component this component should render as.
20
- * @defaultValue 'div'
21
- */
22
- as?: any
23
- id?: string
24
- name?: string
25
- /**
26
- * The placeholder text when the textarea is empty
27
- */
28
- placeholder?: string
29
- /**
30
- * @defaultValue 'primary'
31
- */
32
- color?: TextareaVariants['color']
33
- /**
34
- * Removes padding from input
35
- * @defaultValue false
36
- */
37
- noPadding?: boolean
38
- /**
39
- * Removes all borders (rings)
40
- * @defaultValue false
41
- */
42
- noBorder?: boolean
43
- /**
44
- * Removes all borders (rings) except the bottom one
45
- * @defaultValue false
46
- */
47
- underline?: boolean
48
- /**
49
- * Rounds the corners of the button
50
- * @defaultValue false
51
- */
52
- rounded?: boolean
53
- /**
54
- * @defaultValue false
55
- */
56
- required?: boolean
57
- /**
58
- * @defaultValue false
59
- */
60
- autofocus?: boolean
61
- /**
62
- * @defaultValue 0
63
- */
64
- autofocusDelay?: number
65
- /**
66
- * @defaultValue false
67
- */
68
- autoresize?: boolean
69
- /**
70
- * @defaultValue 0
71
- */
72
- autoresizeDelay?: number
73
- /**
74
- * @defaultValue false
75
- */
76
- disabled?: boolean
77
- /**
78
- * @defaultValue 3
79
- */
80
- rows?: number
81
- /**
82
- * @defaultValue 5
83
- */
84
- maxrows?: number
85
- tag?: string
86
- /**
87
- * @defaultValue 'primary'
88
- */
89
- tagColor?: TextareaVariants['tagColor']
90
- /**
91
- * Highlight the ring color like a focus state
92
- * @defaultValue false
93
- */
94
- highlight?: boolean
95
- class?: any
96
- b24ui?: PartialString<typeof textarea.slots>
97
- }
98
-
99
- export interface TextareaEmits {
100
- (e: 'update:modelValue', payload: string | number): void
101
- (e: 'blur', event: FocusEvent): void
102
- (e: 'change', event: Event): void
103
- }
104
-
105
- export interface TextareaSlots {
106
- leading(props?: {}): any
107
- default(props?: {}): any
108
- trailing(props?: {}): any
109
- }
1
+ <script>
2
+ import theme from "#build/b24ui/textarea";
110
3
  </script>
111
4
 
112
- <script setup lang="ts">
113
- import { ref, computed, onMounted, nextTick, watch } from 'vue'
114
- import { Primitive } from 'reka-ui'
115
- import { useComponentIcons } from '../composables/useComponentIcons'
116
- import { useFormField } from '../composables/useFormField'
117
- import { looseToNumber } from '../utils'
118
- import B24Avatar from './Avatar.vue'
119
-
120
- defineOptions({ inheritAttrs: false })
121
-
122
- const props = withDefaults(defineProps<TextareaProps>(), {
123
- rows: 3,
124
- maxrows: 5,
125
- autofocusDelay: 0,
126
- autoresizeDelay: 0
127
- })
128
- const slots = defineSlots<TextareaSlots>()
129
- const emits = defineEmits<TextareaEmits>()
130
-
131
- const [modelValue, modelModifiers] = defineModel<string | number | null>()
132
-
133
- const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, color, id, name, highlight, disabled, ariaAttrs } = useFormField<TextareaProps>(props, { deferInputValidation: true })
134
- const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props)
135
-
5
+ <script setup>
6
+ import { ref, computed, onMounted, nextTick, watch } from "vue";
7
+ import { Primitive } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { useComponentIcons } from "../composables/useComponentIcons";
10
+ import { useFormField } from "../composables/useFormField";
11
+ import { looseToNumber } from "../utils";
12
+ import { tv } from "../utils/tv";
13
+ import B24Avatar from "./Avatar.vue";
14
+ defineOptions({ inheritAttrs: false });
15
+ const props = defineProps({
16
+ as: { type: null, required: false },
17
+ id: { type: String, required: false },
18
+ name: { type: String, required: false },
19
+ placeholder: { type: String, required: false },
20
+ color: { type: null, required: false },
21
+ noPadding: { type: Boolean, required: false },
22
+ noBorder: { type: Boolean, required: false },
23
+ underline: { type: Boolean, required: false },
24
+ rounded: { type: Boolean, required: false },
25
+ required: { type: Boolean, required: false },
26
+ autofocus: { type: Boolean, required: false },
27
+ autofocusDelay: { type: Number, required: false, default: 0 },
28
+ autoresize: { type: Boolean, required: false },
29
+ autoresizeDelay: { type: Number, required: false, default: 0 },
30
+ disabled: { type: Boolean, required: false },
31
+ rows: { type: Number, required: false, default: 3 },
32
+ maxrows: { type: Number, required: false, default: 5 },
33
+ tag: { type: String, required: false },
34
+ tagColor: { type: null, required: false },
35
+ highlight: { type: Boolean, required: false },
36
+ class: { type: null, required: false },
37
+ b24ui: { type: null, required: false },
38
+ icon: { type: [Function, Object], required: false },
39
+ avatar: { type: Object, required: false },
40
+ loading: { type: Boolean, required: false },
41
+ trailing: { type: Boolean, required: false },
42
+ trailingIcon: { type: [Function, Object], required: false }
43
+ });
44
+ const slots = defineSlots();
45
+ const emits = defineEmits(["update:modelValue", "blur", "change"]);
46
+ const [modelValue, modelModifiers] = defineModel({ type: [String, Number, null] });
47
+ const appConfig = useAppConfig();
48
+ const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props, { deferInputValidation: true });
49
+ const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
136
50
  const isTag = computed(() => {
137
- return props.tag
138
- })
139
-
140
- const b24ui = computed(() => textarea({
51
+ return props.tag;
52
+ });
53
+ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.textarea || {} })({
141
54
  color: color.value,
142
55
  loading: props.loading,
143
56
  highlight: highlight.value,
@@ -149,102 +62,79 @@ const b24ui = computed(() => textarea({
149
62
  underline: Boolean(props.underline),
150
63
  leading: Boolean(isLeading.value || !!props.avatar || !!slots.leading),
151
64
  trailing: Boolean(isTrailing.value || !!slots.trailing)
152
- }))
153
-
154
- const textareaRef = ref<HTMLTextAreaElement | null>(null)
155
-
156
- // Custom function to handle the v-model properties
157
- function updateInput(value: string | null) {
65
+ }));
66
+ const textareaRef = ref(null);
67
+ function updateInput(value) {
158
68
  if (modelModifiers.trim) {
159
- value = value?.trim() ?? null
69
+ value = value?.trim() ?? null;
160
70
  }
161
-
162
71
  if (modelModifiers.number) {
163
- value = looseToNumber(value)
72
+ value = looseToNumber(value);
164
73
  }
165
-
166
74
  if (modelModifiers.nullify) {
167
- value ||= null
75
+ value ||= null;
168
76
  }
169
-
170
- modelValue.value = value
171
- emitFormInput()
77
+ modelValue.value = value;
78
+ emitFormInput();
172
79
  }
173
-
174
- function onInput(event: Event) {
175
- autoResize()
176
-
80
+ function onInput(event) {
81
+ autoResize();
177
82
  if (!modelModifiers.lazy) {
178
- updateInput((event.target as HTMLInputElement).value)
83
+ updateInput(event.target.value);
179
84
  }
180
85
  }
181
-
182
- function onChange(event: Event) {
183
- const value = (event.target as HTMLInputElement).value
184
-
86
+ function onChange(event) {
87
+ const value = event.target.value;
185
88
  if (modelModifiers.lazy) {
186
- updateInput(value)
89
+ updateInput(value);
187
90
  }
188
-
189
- // Update trimmed textarea so that it has same behavior as native textarea https://github.com/vuejs/core/blob/5ea8a8a4fab4e19a71e123e4d27d051f5e927172/packages/runtime-dom/src/directives/vModel.ts#L63
190
91
  if (modelModifiers.trim) {
191
- (event.target as HTMLInputElement).value = value.trim()
92
+ event.target.value = value.trim();
192
93
  }
193
-
194
- emitFormChange()
195
- emits('change', event)
94
+ emitFormChange();
95
+ emits("change", event);
196
96
  }
197
-
198
- function onBlur(event: FocusEvent) {
199
- emitFormBlur()
200
- emits('blur', event)
97
+ function onBlur(event) {
98
+ emitFormBlur();
99
+ emits("blur", event);
201
100
  }
202
-
203
101
  function autoFocus() {
204
102
  if (props.autofocus) {
205
- textareaRef.value?.focus()
103
+ textareaRef.value?.focus();
206
104
  }
207
105
  }
208
-
209
106
  function autoResize() {
210
107
  if (props.autoresize && textareaRef.value) {
211
- textareaRef.value.rows = props.rows
212
- const overflow = textareaRef.value.style.overflow
213
- textareaRef.value.style.overflow = 'hidden'
214
-
215
- const styles = window.getComputedStyle(textareaRef.value)
216
- const paddingTop = Number.parseInt(styles.paddingTop)
217
- const paddingBottom = Number.parseInt(styles.paddingBottom)
218
- const padding = paddingTop + paddingBottom
219
- const lineHeight = Number.parseInt(styles.lineHeight)
220
- const { scrollHeight } = textareaRef.value
221
- const newRows = (scrollHeight - padding) / lineHeight
222
-
108
+ textareaRef.value.rows = props.rows;
109
+ const overflow = textareaRef.value.style.overflow;
110
+ textareaRef.value.style.overflow = "hidden";
111
+ const styles = window.getComputedStyle(textareaRef.value);
112
+ const paddingTop = Number.parseInt(styles.paddingTop);
113
+ const paddingBottom = Number.parseInt(styles.paddingBottom);
114
+ const padding = paddingTop + paddingBottom;
115
+ const lineHeight = Number.parseInt(styles.lineHeight);
116
+ const { scrollHeight } = textareaRef.value;
117
+ const newRows = (scrollHeight - padding) / lineHeight;
223
118
  if (newRows > props.rows) {
224
- textareaRef.value.rows = props.maxrows ? Math.min(newRows, props.maxrows) : newRows
119
+ textareaRef.value.rows = props.maxrows ? Math.min(newRows, props.maxrows) : newRows;
225
120
  }
226
-
227
- textareaRef.value.style.overflow = overflow
121
+ textareaRef.value.style.overflow = overflow;
228
122
  }
229
123
  }
230
-
231
124
  watch(modelValue, () => {
232
- nextTick(autoResize)
233
- })
234
-
125
+ nextTick(autoResize);
126
+ });
235
127
  onMounted(() => {
236
128
  setTimeout(() => {
237
- autoFocus()
238
- }, props.autofocusDelay)
239
-
129
+ autoFocus();
130
+ }, props.autofocusDelay);
240
131
  setTimeout(() => {
241
- autoResize()
242
- }, props.autoresizeDelay)
243
- })
244
-
132
+ autoResize();
133
+ }, props.autoresizeDelay);
134
+ });
245
135
  defineExpose({
246
136
  textareaRef
247
- })
137
+ });
248
138
  </script>
249
139
 
250
140
  <template>
@@ -281,7 +171,7 @@ defineExpose({
281
171
  />
282
172
  <B24Avatar
283
173
  v-else-if="!!avatar"
284
- :size="((props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()) as AvatarProps['size'])"
174
+ :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
285
175
  v-bind="avatar"
286
176
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
287
177
  />
@@ -0,0 +1,141 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/b24ui/textarea';
3
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
4
+ import type { ComponentConfig } from '../types/utils';
5
+ type Textarea = ComponentConfig<typeof theme, AppConfig, 'textarea'>;
6
+ export interface TextareaProps extends UseComponentIconsProps {
7
+ /**
8
+ * The element or component this component should render as.
9
+ * @defaultValue 'div'
10
+ */
11
+ as?: any;
12
+ id?: string;
13
+ name?: string;
14
+ /**
15
+ * The placeholder text when the textarea is empty
16
+ */
17
+ placeholder?: string;
18
+ /**
19
+ * @defaultValue 'primary'
20
+ */
21
+ color?: Textarea['variants']['color'];
22
+ /**
23
+ * Removes padding from input
24
+ * @defaultValue false
25
+ */
26
+ noPadding?: boolean;
27
+ /**
28
+ * Removes all borders (rings)
29
+ * @defaultValue false
30
+ */
31
+ noBorder?: boolean;
32
+ /**
33
+ * Removes all borders (rings) except the bottom one
34
+ * @defaultValue false
35
+ */
36
+ underline?: boolean;
37
+ /**
38
+ * Rounds the corners of the button
39
+ * @defaultValue false
40
+ */
41
+ rounded?: boolean;
42
+ /**
43
+ * @defaultValue false
44
+ */
45
+ required?: boolean;
46
+ /**
47
+ * @defaultValue false
48
+ */
49
+ autofocus?: boolean;
50
+ /**
51
+ * @defaultValue 0
52
+ */
53
+ autofocusDelay?: number;
54
+ /**
55
+ * @defaultValue false
56
+ */
57
+ autoresize?: boolean;
58
+ /**
59
+ * @defaultValue 0
60
+ */
61
+ autoresizeDelay?: number;
62
+ /**
63
+ * @defaultValue false
64
+ */
65
+ disabled?: boolean;
66
+ /**
67
+ * @defaultValue 3
68
+ */
69
+ rows?: number;
70
+ /**
71
+ * @defaultValue 5
72
+ */
73
+ maxrows?: number;
74
+ tag?: string;
75
+ /**
76
+ * @defaultValue 'primary'
77
+ */
78
+ tagColor?: Textarea['variants']['tagColor'];
79
+ /**
80
+ * Highlight the ring color like a focus state
81
+ * @defaultValue false
82
+ */
83
+ highlight?: boolean;
84
+ class?: any;
85
+ b24ui?: Textarea['slots'];
86
+ }
87
+ export interface TextareaEmits {
88
+ (e: 'update:modelValue', payload: string | number): void;
89
+ (e: 'blur', event: FocusEvent): void;
90
+ (e: 'change', event: Event): void;
91
+ }
92
+ export interface TextareaSlots {
93
+ leading(props?: {}): any;
94
+ default(props?: {}): any;
95
+ trailing(props?: {}): any;
96
+ }
97
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
98
+ modelValue?: string | number | null;
99
+ } & TextareaProps>, {
100
+ rows: number;
101
+ maxrows: number;
102
+ autofocusDelay: number;
103
+ autoresizeDelay: number;
104
+ }>>, {
105
+ textareaRef: import("vue").Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>;
106
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
107
+ modelValue?: string | number | null;
108
+ } & TextareaProps>, {
109
+ rows: number;
110
+ maxrows: number;
111
+ autofocusDelay: number;
112
+ autoresizeDelay: number;
113
+ }>>> & Readonly<{}>, {
114
+ autofocusDelay: number;
115
+ autoresizeDelay: number;
116
+ rows: number;
117
+ maxrows: number;
118
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<TextareaSlots> & TextareaSlots>;
119
+ export default _default;
120
+ type __VLS_WithDefaults<P, D> = {
121
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
122
+ default: D[K];
123
+ }> : P[K];
124
+ };
125
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
126
+ type __VLS_TypePropsToOption<T> = {
127
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
128
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
129
+ } : {
130
+ type: import('vue').PropType<T[K]>;
131
+ required: true;
132
+ };
133
+ };
134
+ type __VLS_WithTemplateSlots<T, S> = T & {
135
+ new (): {
136
+ $slots: S;
137
+ };
138
+ };
139
+ type __VLS_PrettifyLocal<T> = {
140
+ [K in keyof T]: T[K];
141
+ } & {};
@@ -1,117 +1,58 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { ToastRootProps, ToastRootEmits } from 'reka-ui'
4
- import type { AppConfig } from '@nuxt/schema'
5
- import _appConfig from '#build/app.config'
6
- import theme from '#build/b24ui/toast'
7
- import { tv } from '../utils/tv'
8
- import type { AvatarProps, ButtonProps, IconComponent } from '../types'
9
- import type { StringOrVNode } from '../types/utils'
10
-
11
- const appConfigToast = _appConfig as AppConfig & { b24ui: { toast: Partial<typeof theme> } }
12
-
13
- const toast = tv({ extend: tv(theme), ...(appConfigToast.b24ui?.toast || {}) })
14
-
15
- type ToastVariants = VariantProps<typeof toast>
16
-
17
- export interface ToastProps extends Pick<ToastRootProps, 'defaultOpen' | 'open' | 'type' | 'duration'> {
18
- /**
19
- * The element or component this component should render as.
20
- * @defaultValue 'li'
21
- */
22
- as?: any
23
- title?: StringOrVNode
24
- description?: StringOrVNode
25
- /**
26
- * @IconComponent
27
- */
28
- icon?: IconComponent
29
- avatar?: AvatarProps
30
- /**
31
- * @defaultValue 'default'
32
- */
33
- color?: ToastVariants['color']
34
- /**
35
- * The orientation between the content and the actions
36
- * @defaultValue 'vertical'
37
- */
38
- orientation?: ToastVariants['orientation']
39
- /**
40
- * Display a list of actions:
41
- * - under the title and description when orientation is `vertical`
42
- * - next to the close button when orientation is `horizontal`
43
- * `{ size: 'xs' }`{lang="ts"}
44
- */
45
- actions?: ButtonProps[]
46
- /**
47
- * Display a close button to dismiss the toast.
48
- * `{ size: 'md', color: 'neutral', variant: 'link' }`{lang="ts"}
49
- * @defaultValue true
50
- */
51
- close?: boolean | Partial<ButtonProps>
52
- /**
53
- * The icon displayed in the close button.
54
- * @defaultValue icons.close
55
- * @IconComponent
56
- */
57
- closeIcon?: IconComponent
58
- class?: any
59
- b24ui?: Partial<typeof toast.slots>
60
- }
61
-
62
- export interface ToastEmits extends ToastRootEmits {}
63
-
64
- export interface ToastSlots {
65
- leading(props?: {}): any
66
- title(props?: {}): any
67
- description(props?: {}): any
68
- actions(props?: {}): any
69
- close(props: { b24ui: ReturnType<typeof toast> }): any
70
- }
1
+ <script>
2
+ import theme from "#build/b24ui/toast";
71
3
  </script>
72
4
 
73
- <script setup lang="ts">
74
- import { ref, computed, onMounted } from 'vue'
75
- import { ToastRoot, ToastTitle, ToastDescription, ToastAction, ToastClose, useForwardPropsEmits } from 'reka-ui'
76
- import { reactivePick } from '@vueuse/core'
77
- import { useLocale } from '../composables/useLocale'
78
- import icons from '../dictionary/icons'
79
- import B24Avatar from './Avatar.vue'
80
- import B24Button from './Button.vue'
81
-
82
- const props = withDefaults(defineProps<ToastProps>(), {
83
- close: true,
84
- orientation: 'vertical'
85
- })
86
- const emits = defineEmits<ToastEmits>()
87
- const slots = defineSlots<ToastSlots>()
88
-
89
- const { t } = useLocale()
90
-
91
- const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'defaultOpen', 'open', 'duration', 'type'), emits)
92
-
93
- const b24ui = computed(() => toast({
5
+ <script setup>
6
+ import { ref, computed, onMounted } from "vue";
7
+ import { ToastRoot, ToastTitle, ToastDescription, ToastAction, ToastClose, useForwardPropsEmits } from "reka-ui";
8
+ import { reactivePick } from "@vueuse/core";
9
+ import { useAppConfig } from "#imports";
10
+ import { useLocale } from "../composables/useLocale";
11
+ import { tv } from "../utils/tv";
12
+ import icons from "../dictionary/icons";
13
+ import B24Avatar from "./Avatar.vue";
14
+ import B24Button from "./Button.vue";
15
+ const props = defineProps({
16
+ as: { type: null, required: false },
17
+ title: { type: [String, Object, Function], required: false },
18
+ description: { type: [String, Object, Function], required: false },
19
+ icon: { type: [Function, Object], required: false },
20
+ avatar: { type: Object, required: false },
21
+ color: { type: null, required: false },
22
+ orientation: { type: null, required: false, default: "vertical" },
23
+ actions: { type: Array, required: false },
24
+ close: { type: [Boolean, Object], required: false, default: true },
25
+ closeIcon: { type: [Function, Object], required: false },
26
+ class: { type: null, required: false },
27
+ b24ui: { type: null, required: false },
28
+ defaultOpen: { type: Boolean, required: false },
29
+ open: { type: Boolean, required: false },
30
+ type: { type: String, required: false },
31
+ duration: { type: Number, required: false }
32
+ });
33
+ const emits = defineEmits(["escapeKeyDown", "pause", "resume", "swipeStart", "swipeMove", "swipeCancel", "swipeEnd", "update:open"]);
34
+ const slots = defineSlots();
35
+ const { t } = useLocale();
36
+ const appConfig = useAppConfig();
37
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "defaultOpen", "open", "duration", "type"), emits);
38
+ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.toast || {} })({
94
39
  color: props.color,
95
40
  orientation: props.orientation,
96
41
  title: !!props.title || !!slots.title
97
- }))
98
-
99
- const el = ref()
100
- const height = ref(0)
101
-
42
+ }));
43
+ const el = ref();
44
+ const height = ref(0);
102
45
  onMounted(() => {
103
46
  if (!el.value) {
104
- return
47
+ return;
105
48
  }
106
-
107
49
  setTimeout(() => {
108
- height.value = el.value.$el.getBoundingClientRect()?.height
109
- }, 0)
110
- })
111
-
50
+ height.value = el.value.$el.getBoundingClientRect()?.height;
51
+ }, 0);
52
+ });
112
53
  defineExpose({
113
54
  height
114
- })
55
+ });
115
56
  </script>
116
57
 
117
58
  <template>
@@ -129,7 +70,7 @@ defineExpose({
129
70
  v-if="icon"
130
71
  :class="b24ui.icon({ class: props.b24ui?.icon })"
131
72
  />
132
- <B24Avatar v-else-if="avatar" :size="((props.b24ui?.avatarSize || b24ui.avatarSize()) as AvatarProps['size'])" v-bind="avatar" :class="b24ui.avatar({ class: props.b24ui?.avatar })" />
73
+ <B24Avatar v-else-if="avatar" :size="props.b24ui?.avatarSize || b24ui.avatarSize()" v-bind="avatar" :class="b24ui.avatar({ class: props.b24ui?.avatar })" />
133
74
  </slot>
134
75
 
135
76
  <div :class="b24ui.wrapper({ class: props.b24ui?.wrapper })">
@@ -161,7 +102,7 @@ defineExpose({
161
102
  </div>
162
103
  </div>
163
104
 
164
- <div v-if="(orientation === 'horizontal' && actions?.length) || close !== null" :class="b24ui.actions({ class: props.b24ui?.actions, orientation: 'horizontal' })">
105
+ <div v-if="orientation === 'horizontal' && actions?.length || close !== null" :class="b24ui.actions({ class: props.b24ui?.actions, orientation: 'horizontal' })">
165
106
  <template v-if="orientation === 'horizontal' && actions?.length">
166
107
  <slot name="actions">
167
108
  <ToastAction v-for="(action, index) in actions" :key="index" :alt-text="action.label || 'Action'" as-child @click.stop>
@@ -178,7 +119,7 @@ defineExpose({
178
119
  size="xs"
179
120
  color="link"
180
121
  :aria-label="t('toast.close')"
181
- v-bind="(typeof close === 'object' ? close as Partial<ButtonProps> : {})"
122
+ v-bind="typeof close === 'object' ? close : {}"
182
123
  :class="b24ui.close({ class: props.b24ui?.close })"
183
124
  @click.stop
184
125
  />