@bitrix24/b24ui-nuxt 2.3.0 → 2.4.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 (386) hide show
  1. package/cli/package.json +1 -1
  2. package/dist/module.d.mts +2 -1
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +3 -2
  5. package/dist/runtime/air-design-tokens/013_b24_mobile_light.css +1 -0
  6. package/dist/runtime/air-design-tokens/014_b24_mobile_dark.css +1 -0
  7. package/dist/runtime/air-design-tokens/015_b24_mobile_edge-light.css +1 -0
  8. package/dist/runtime/air-design-tokens/016_b24_mobile_edge-dark.css +1 -0
  9. package/dist/runtime/air-design-tokens/023_b24_desktop_light.css +1 -0
  10. package/dist/runtime/air-design-tokens/024_b24_desktop_dark.css +1 -0
  11. package/dist/runtime/air-design-tokens/025_b24_desktop_edge-light.css +1 -0
  12. package/dist/runtime/air-design-tokens/026_b24_desktop_edge-dark.css +1 -0
  13. package/dist/runtime/air-design-tokens/design-tokens/app.json +23812 -0
  14. package/dist/runtime/air-design-tokens/design-tokens/mobileapp.json +7476 -0
  15. package/dist/runtime/air-design-tokens/index.css +1 -1
  16. package/dist/runtime/components/Accordion.vue +11 -9
  17. package/dist/runtime/components/Advice.vue +13 -11
  18. package/dist/runtime/components/Alert.vue +11 -9
  19. package/dist/runtime/components/Avatar.vue +6 -4
  20. package/dist/runtime/components/AvatarGroup.vue +5 -3
  21. package/dist/runtime/components/Badge.vue +9 -7
  22. package/dist/runtime/components/Banner.vue +11 -9
  23. package/dist/runtime/components/Breadcrumb.vue +12 -10
  24. package/dist/runtime/components/Button.vue +14 -12
  25. package/dist/runtime/components/Calendar.vue +14 -12
  26. package/dist/runtime/components/Card.vue +6 -4
  27. package/dist/runtime/components/ChatMessage.vue +10 -8
  28. package/dist/runtime/components/ChatMessages.vue +14 -9
  29. package/dist/runtime/components/ChatPalette.vue +5 -3
  30. package/dist/runtime/components/ChatPrompt.vue +9 -6
  31. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +4 -4
  32. package/dist/runtime/components/ChatPromptSubmit.vue +4 -2
  33. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +4 -4
  34. package/dist/runtime/components/Checkbox.vue +18 -11
  35. package/dist/runtime/components/CheckboxGroup.d.vue.ts +2 -2
  36. package/dist/runtime/components/CheckboxGroup.vue +7 -5
  37. package/dist/runtime/components/CheckboxGroup.vue.d.ts +2 -2
  38. package/dist/runtime/components/Chip.d.vue.ts +1 -1
  39. package/dist/runtime/components/Chip.vue +5 -3
  40. package/dist/runtime/components/Chip.vue.d.ts +1 -1
  41. package/dist/runtime/components/Collapsible.vue +4 -2
  42. package/dist/runtime/components/ColorPicker.vue +9 -7
  43. package/dist/runtime/components/CommandPalette.d.vue.ts +4 -4
  44. package/dist/runtime/components/CommandPalette.vue +33 -31
  45. package/dist/runtime/components/CommandPalette.vue.d.ts +4 -4
  46. package/dist/runtime/components/Container.d.vue.ts +3 -0
  47. package/dist/runtime/components/Container.vue +5 -2
  48. package/dist/runtime/components/Container.vue.d.ts +3 -0
  49. package/dist/runtime/components/ContextMenu.vue +4 -2
  50. package/dist/runtime/components/Countdown.vue +11 -9
  51. package/dist/runtime/components/DashboardGroup.d.vue.ts +7 -2
  52. package/dist/runtime/components/DashboardGroup.vue +15 -11
  53. package/dist/runtime/components/DashboardGroup.vue.d.ts +7 -2
  54. package/dist/runtime/components/DashboardNavbar.d.vue.ts +59 -0
  55. package/dist/runtime/components/DashboardNavbar.vue +79 -0
  56. package/dist/runtime/components/DashboardNavbar.vue.d.ts +59 -0
  57. package/dist/runtime/components/DashboardPanel.d.vue.ts +31 -0
  58. package/dist/runtime/components/DashboardPanel.vue +66 -0
  59. package/dist/runtime/components/DashboardPanel.vue.d.ts +31 -0
  60. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +22 -0
  61. package/dist/runtime/components/DashboardResizeHandle.vue +30 -0
  62. package/dist/runtime/components/DashboardResizeHandle.vue.d.ts +22 -0
  63. package/dist/runtime/components/DashboardSearch.vue +5 -2
  64. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +2 -2
  65. package/dist/runtime/components/DashboardSearchButton.vue +10 -6
  66. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +2 -2
  67. package/dist/runtime/components/DashboardSidebar.d.vue.ts +89 -0
  68. package/dist/runtime/components/DashboardSidebar.vue +169 -0
  69. package/dist/runtime/components/DashboardSidebar.vue.d.ts +89 -0
  70. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +21 -0
  71. package/dist/runtime/components/DashboardSidebarCollapse.vue +64 -0
  72. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +21 -0
  73. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +21 -0
  74. package/dist/runtime/components/DashboardSidebarToggle.vue +65 -0
  75. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +21 -0
  76. package/dist/runtime/components/DashboardToolbar.d.vue.ts +26 -0
  77. package/dist/runtime/components/DashboardToolbar.vue +34 -0
  78. package/dist/runtime/components/DashboardToolbar.vue.d.ts +26 -0
  79. package/dist/runtime/components/DescriptionList.vue +15 -13
  80. package/dist/runtime/components/Drawer.d.vue.ts +100 -0
  81. package/dist/runtime/components/Drawer.vue +133 -0
  82. package/dist/runtime/components/Drawer.vue.d.ts +100 -0
  83. package/dist/runtime/components/DropdownMenu.vue +6 -9
  84. package/dist/runtime/components/DropdownMenuContent.vue +3 -1
  85. package/dist/runtime/components/Editor.d.vue.ts +2 -1
  86. package/dist/runtime/components/Editor.vue +15 -3
  87. package/dist/runtime/components/Editor.vue.d.ts +2 -1
  88. package/dist/runtime/components/EditorDragHandle.d.vue.ts +2 -2
  89. package/dist/runtime/components/EditorDragHandle.vue +5 -3
  90. package/dist/runtime/components/EditorDragHandle.vue.d.ts +2 -2
  91. package/dist/runtime/components/EditorMentionMenu.vue +4 -1
  92. package/dist/runtime/components/EditorToolbar.vue +6 -4
  93. package/dist/runtime/components/Empty.vue +11 -9
  94. package/dist/runtime/components/Error.vue +7 -5
  95. package/dist/runtime/components/FieldGroup.d.vue.ts +3 -1
  96. package/dist/runtime/components/FieldGroup.vue +3 -1
  97. package/dist/runtime/components/FieldGroup.vue.d.ts +3 -1
  98. package/dist/runtime/components/FileUpload.vue +17 -15
  99. package/dist/runtime/components/Footer.d.vue.ts +30 -0
  100. package/dist/runtime/components/Footer.vue +47 -0
  101. package/dist/runtime/components/Footer.vue.d.ts +30 -0
  102. package/dist/runtime/components/FooterColumns.d.vue.ts +69 -0
  103. package/dist/runtime/components/FooterColumns.vue +83 -0
  104. package/dist/runtime/components/FooterColumns.vue.d.ts +69 -0
  105. package/dist/runtime/components/Form.d.vue.ts +3 -0
  106. package/dist/runtime/components/Form.vue +10 -2
  107. package/dist/runtime/components/Form.vue.d.ts +3 -0
  108. package/dist/runtime/components/FormField.vue +12 -10
  109. package/dist/runtime/components/Header.d.vue.ts +81 -0
  110. package/dist/runtime/components/Header.vue +147 -0
  111. package/dist/runtime/components/Header.vue.d.ts +81 -0
  112. package/dist/runtime/components/Input.d.vue.ts +53 -11
  113. package/dist/runtime/components/Input.vue +16 -12
  114. package/dist/runtime/components/Input.vue.d.ts +53 -11
  115. package/dist/runtime/components/InputDate.d.vue.ts +4 -1
  116. package/dist/runtime/components/InputDate.vue +19 -12
  117. package/dist/runtime/components/InputDate.vue.d.ts +4 -1
  118. package/dist/runtime/components/InputMenu.d.vue.ts +154 -26
  119. package/dist/runtime/components/InputMenu.vue +53 -61
  120. package/dist/runtime/components/InputMenu.vue.d.ts +154 -26
  121. package/dist/runtime/components/InputNumber.d.vue.ts +15 -14
  122. package/dist/runtime/components/InputNumber.vue +19 -11
  123. package/dist/runtime/components/InputNumber.vue.d.ts +15 -14
  124. package/dist/runtime/components/InputTags.d.vue.ts +2 -0
  125. package/dist/runtime/components/InputTags.vue +17 -13
  126. package/dist/runtime/components/InputTags.vue.d.ts +2 -0
  127. package/dist/runtime/components/InputTime.d.vue.ts +4 -1
  128. package/dist/runtime/components/InputTime.vue +17 -10
  129. package/dist/runtime/components/InputTime.vue.d.ts +4 -1
  130. package/dist/runtime/components/Kbd.d.vue.ts +1 -0
  131. package/dist/runtime/components/Kbd.vue +5 -2
  132. package/dist/runtime/components/Kbd.vue.d.ts +1 -0
  133. package/dist/runtime/components/Link.d.vue.ts +1 -1
  134. package/dist/runtime/components/Link.vue +7 -7
  135. package/dist/runtime/components/Link.vue.d.ts +1 -1
  136. package/dist/runtime/components/LinkBase.d.vue.ts +1 -1
  137. package/dist/runtime/components/LinkBase.vue.d.ts +1 -1
  138. package/dist/runtime/components/Main.d.vue.ts +24 -0
  139. package/dist/runtime/components/Main.vue +26 -0
  140. package/dist/runtime/components/Main.vue.d.ts +24 -0
  141. package/dist/runtime/components/Modal.d.vue.ts +6 -6
  142. package/dist/runtime/components/Modal.vue +14 -12
  143. package/dist/runtime/components/Modal.vue.d.ts +6 -6
  144. package/dist/runtime/components/Navbar.vue +3 -1
  145. package/dist/runtime/components/NavbarDivider.vue +3 -1
  146. package/dist/runtime/components/NavbarSection.vue +3 -1
  147. package/dist/runtime/components/NavbarSpacer.vue +3 -1
  148. package/dist/runtime/components/NavigationMenu.d.vue.ts +18 -19
  149. package/dist/runtime/components/NavigationMenu.vue +125 -65
  150. package/dist/runtime/components/NavigationMenu.vue.d.ts +18 -19
  151. package/dist/runtime/components/Page.d.vue.ts +26 -0
  152. package/dist/runtime/components/Page.vue +39 -0
  153. package/dist/runtime/components/Page.vue.d.ts +26 -0
  154. package/dist/runtime/components/PageAside.d.vue.ts +28 -0
  155. package/dist/runtime/components/PageAside.vue +38 -0
  156. package/dist/runtime/components/PageAside.vue.d.ts +28 -0
  157. package/dist/runtime/components/PageBody.d.vue.ts +22 -0
  158. package/dist/runtime/components/PageBody.vue +26 -0
  159. package/dist/runtime/components/PageBody.vue.d.ts +22 -0
  160. package/dist/runtime/components/PageCard.vue +12 -10
  161. package/dist/runtime/components/PageColumns.d.vue.ts +3 -0
  162. package/dist/runtime/components/PageColumns.vue +5 -2
  163. package/dist/runtime/components/PageColumns.vue.d.ts +3 -0
  164. package/dist/runtime/components/PageFeature.d.vue.ts +47 -0
  165. package/dist/runtime/components/PageFeature.vue +79 -0
  166. package/dist/runtime/components/PageFeature.vue.d.ts +47 -0
  167. package/dist/runtime/components/PageGrid.d.vue.ts +3 -0
  168. package/dist/runtime/components/PageGrid.vue +5 -2
  169. package/dist/runtime/components/PageGrid.vue.d.ts +3 -0
  170. package/dist/runtime/components/PageHeader.d.vue.ts +37 -0
  171. package/dist/runtime/components/PageHeader.vue +67 -0
  172. package/dist/runtime/components/PageHeader.vue.d.ts +37 -0
  173. package/dist/runtime/components/PageLinks.vue +11 -9
  174. package/dist/runtime/components/PageList.d.vue.ts +3 -0
  175. package/dist/runtime/components/PageList.vue +5 -2
  176. package/dist/runtime/components/PageList.vue.d.ts +3 -0
  177. package/dist/runtime/components/PageSection.d.vue.ts +71 -0
  178. package/dist/runtime/components/PageSection.vue +110 -0
  179. package/dist/runtime/components/PageSection.vue.d.ts +71 -0
  180. package/dist/runtime/components/Pagination.d.vue.ts +2 -2
  181. package/dist/runtime/components/Pagination.vue +10 -8
  182. package/dist/runtime/components/Pagination.vue.d.ts +2 -2
  183. package/dist/runtime/components/PinInput.d.vue.ts +4 -1
  184. package/dist/runtime/components/PinInput.vue +10 -3
  185. package/dist/runtime/components/PinInput.vue.d.ts +4 -1
  186. package/dist/runtime/components/Popover.vue +4 -2
  187. package/dist/runtime/components/Progress.vue +8 -6
  188. package/dist/runtime/components/RadioGroup.d.vue.ts +2 -2
  189. package/dist/runtime/components/RadioGroup.vue +12 -10
  190. package/dist/runtime/components/RadioGroup.vue.d.ts +2 -2
  191. package/dist/runtime/components/Range.vue +7 -5
  192. package/dist/runtime/components/ScrollArea.d.vue.ts +7 -0
  193. package/dist/runtime/components/ScrollArea.vue +34 -10
  194. package/dist/runtime/components/ScrollArea.vue.d.ts +7 -0
  195. package/dist/runtime/components/Select.d.vue.ts +64 -20
  196. package/dist/runtime/components/Select.vue +35 -36
  197. package/dist/runtime/components/Select.vue.d.ts +64 -20
  198. package/dist/runtime/components/SelectMenu.d.vue.ts +116 -31
  199. package/dist/runtime/components/SelectMenu.vue +56 -60
  200. package/dist/runtime/components/SelectMenu.vue.d.ts +116 -31
  201. package/dist/runtime/components/Separator.d.vue.ts +2 -2
  202. package/dist/runtime/components/Separator.vue +9 -7
  203. package/dist/runtime/components/Separator.vue.d.ts +2 -2
  204. package/dist/runtime/components/Sidebar.vue +3 -1
  205. package/dist/runtime/components/SidebarBody.d.vue.ts +0 -3
  206. package/dist/runtime/components/SidebarBody.vue +3 -1
  207. package/dist/runtime/components/SidebarBody.vue.d.ts +0 -3
  208. package/dist/runtime/components/SidebarFooter.d.vue.ts +0 -3
  209. package/dist/runtime/components/SidebarFooter.vue +3 -1
  210. package/dist/runtime/components/SidebarFooter.vue.d.ts +0 -3
  211. package/dist/runtime/components/SidebarHeader.d.vue.ts +0 -3
  212. package/dist/runtime/components/SidebarHeader.vue +3 -1
  213. package/dist/runtime/components/SidebarHeader.vue.d.ts +0 -3
  214. package/dist/runtime/components/SidebarHeading.d.vue.ts +0 -3
  215. package/dist/runtime/components/SidebarHeading.vue +3 -1
  216. package/dist/runtime/components/SidebarHeading.vue.d.ts +0 -3
  217. package/dist/runtime/components/SidebarLayout.d.vue.ts +1 -1
  218. package/dist/runtime/components/SidebarLayout.vue +21 -19
  219. package/dist/runtime/components/SidebarLayout.vue.d.ts +1 -1
  220. package/dist/runtime/components/SidebarSection.d.vue.ts +0 -3
  221. package/dist/runtime/components/SidebarSection.vue +3 -1
  222. package/dist/runtime/components/SidebarSection.vue.d.ts +0 -3
  223. package/dist/runtime/components/SidebarSpacer.d.vue.ts +0 -3
  224. package/dist/runtime/components/SidebarSpacer.vue +3 -1
  225. package/dist/runtime/components/SidebarSpacer.vue.d.ts +0 -3
  226. package/dist/runtime/components/Skeleton.vue +3 -1
  227. package/dist/runtime/components/Slideover.d.vue.ts +3 -3
  228. package/dist/runtime/components/Slideover.vue +19 -17
  229. package/dist/runtime/components/Slideover.vue.d.ts +3 -3
  230. package/dist/runtime/components/Stepper.vue +14 -12
  231. package/dist/runtime/components/Switch.vue +19 -13
  232. package/dist/runtime/components/Table.vue +25 -23
  233. package/dist/runtime/components/TableWrapper.vue +3 -1
  234. package/dist/runtime/components/Tabs.d.vue.ts +2 -1
  235. package/dist/runtime/components/Tabs.vue +17 -12
  236. package/dist/runtime/components/Tabs.vue.d.ts +2 -1
  237. package/dist/runtime/components/Textarea.d.vue.ts +53 -11
  238. package/dist/runtime/components/Textarea.vue +18 -14
  239. package/dist/runtime/components/Textarea.vue.d.ts +53 -11
  240. package/dist/runtime/components/Theme.d.vue.ts +17 -0
  241. package/dist/runtime/components/Theme.vue +17 -0
  242. package/dist/runtime/components/Theme.vue.d.ts +17 -0
  243. package/dist/runtime/components/Timeline.vue +11 -9
  244. package/dist/runtime/components/Toast.vue +15 -15
  245. package/dist/runtime/components/Toaster.d.vue.ts +1 -1
  246. package/dist/runtime/components/Toaster.vue +6 -3
  247. package/dist/runtime/components/Toaster.vue.d.ts +1 -1
  248. package/dist/runtime/components/Tooltip.vue +8 -6
  249. package/dist/runtime/components/User.vue +8 -6
  250. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +1 -1
  251. package/dist/runtime/components/color-mode/ColorModeButton.vue +4 -2
  252. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +1 -1
  253. package/dist/runtime/components/color-mode/ColorModeImage.vue +8 -3
  254. package/dist/runtime/components/color-mode/ColorModeSelect.vue +1 -1
  255. package/dist/runtime/components/content/ContentSearch.vue +5 -2
  256. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +2 -2
  257. package/dist/runtime/components/content/ContentSearchButton.vue +5 -3
  258. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +2 -2
  259. package/dist/runtime/components/content/ContentSurround.vue +8 -6
  260. package/dist/runtime/components/content/ContentToc.vue +15 -13
  261. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -1
  262. package/dist/runtime/components/locale/LocaleSelect.vue +1 -1
  263. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -1
  264. package/dist/runtime/components/prose/A.vue +3 -1
  265. package/dist/runtime/components/prose/Accordion.vue +3 -1
  266. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +3 -0
  267. package/dist/runtime/components/prose/AccordionItem.vue +5 -2
  268. package/dist/runtime/components/prose/AccordionItem.vue.d.ts +3 -0
  269. package/dist/runtime/components/prose/Badge.d.vue.ts +3 -0
  270. package/dist/runtime/components/prose/Badge.vue +5 -2
  271. package/dist/runtime/components/prose/Badge.vue.d.ts +3 -0
  272. package/dist/runtime/components/prose/Blockquote.d.vue.ts +0 -3
  273. package/dist/runtime/components/prose/Blockquote.vue +3 -1
  274. package/dist/runtime/components/prose/Blockquote.vue.d.ts +0 -3
  275. package/dist/runtime/components/prose/Callout.vue +5 -3
  276. package/dist/runtime/components/prose/Card.vue +7 -5
  277. package/dist/runtime/components/prose/CardGroup.d.vue.ts +3 -0
  278. package/dist/runtime/components/prose/CardGroup.vue +5 -2
  279. package/dist/runtime/components/prose/CardGroup.vue.d.ts +3 -0
  280. package/dist/runtime/components/prose/Code.vue +3 -1
  281. package/dist/runtime/components/prose/CodeCollapse.vue +6 -4
  282. package/dist/runtime/components/prose/CodeGroup.vue +8 -6
  283. package/dist/runtime/components/prose/CodePreview.vue +5 -3
  284. package/dist/runtime/components/prose/Collapsible.vue +6 -4
  285. package/dist/runtime/components/prose/Em.d.vue.ts +0 -3
  286. package/dist/runtime/components/prose/Em.vue +3 -1
  287. package/dist/runtime/components/prose/Em.vue.d.ts +0 -3
  288. package/dist/runtime/components/prose/Field.vue +9 -7
  289. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +3 -0
  290. package/dist/runtime/components/prose/FieldGroup.vue +5 -2
  291. package/dist/runtime/components/prose/FieldGroup.vue.d.ts +3 -0
  292. package/dist/runtime/components/prose/H1.vue +4 -2
  293. package/dist/runtime/components/prose/H2.vue +6 -4
  294. package/dist/runtime/components/prose/H3.vue +6 -4
  295. package/dist/runtime/components/prose/H4.vue +6 -4
  296. package/dist/runtime/components/prose/H5.vue +3 -1
  297. package/dist/runtime/components/prose/H6.vue +3 -1
  298. package/dist/runtime/components/prose/Hr.d.vue.ts +0 -6
  299. package/dist/runtime/components/prose/Hr.vue +3 -1
  300. package/dist/runtime/components/prose/Hr.vue.d.ts +0 -6
  301. package/dist/runtime/components/prose/Img.vue +9 -8
  302. package/dist/runtime/components/prose/Kbd.d.vue.ts +3 -0
  303. package/dist/runtime/components/prose/Kbd.vue +5 -2
  304. package/dist/runtime/components/prose/Kbd.vue.d.ts +3 -0
  305. package/dist/runtime/components/prose/Li.d.vue.ts +0 -3
  306. package/dist/runtime/components/prose/Li.vue +3 -1
  307. package/dist/runtime/components/prose/Li.vue.d.ts +0 -3
  308. package/dist/runtime/components/prose/Ol.d.vue.ts +0 -3
  309. package/dist/runtime/components/prose/Ol.vue +3 -1
  310. package/dist/runtime/components/prose/Ol.vue.d.ts +0 -3
  311. package/dist/runtime/components/prose/P.vue +3 -1
  312. package/dist/runtime/components/prose/Pre.vue +8 -6
  313. package/dist/runtime/components/prose/Steps.d.vue.ts +3 -0
  314. package/dist/runtime/components/prose/Steps.vue +5 -2
  315. package/dist/runtime/components/prose/Steps.vue.d.ts +3 -0
  316. package/dist/runtime/components/prose/Strong.d.vue.ts +0 -3
  317. package/dist/runtime/components/prose/Strong.vue +3 -1
  318. package/dist/runtime/components/prose/Strong.vue.d.ts +0 -3
  319. package/dist/runtime/components/prose/Table.vue +4 -2
  320. package/dist/runtime/components/prose/Tabs.vue +3 -1
  321. package/dist/runtime/components/prose/TabsItem.d.vue.ts +3 -0
  322. package/dist/runtime/components/prose/TabsItem.vue +5 -2
  323. package/dist/runtime/components/prose/TabsItem.vue.d.ts +3 -0
  324. package/dist/runtime/components/prose/Tbody.d.vue.ts +0 -3
  325. package/dist/runtime/components/prose/Tbody.vue +3 -1
  326. package/dist/runtime/components/prose/Tbody.vue.d.ts +0 -3
  327. package/dist/runtime/components/prose/Td.vue +3 -1
  328. package/dist/runtime/components/prose/Th.vue +3 -1
  329. package/dist/runtime/components/prose/Thead.d.vue.ts +0 -3
  330. package/dist/runtime/components/prose/Thead.vue +3 -1
  331. package/dist/runtime/components/prose/Thead.vue.d.ts +0 -3
  332. package/dist/runtime/components/prose/Tr.d.vue.ts +0 -3
  333. package/dist/runtime/components/prose/Tr.vue +3 -1
  334. package/dist/runtime/components/prose/Tr.vue.d.ts +0 -3
  335. package/dist/runtime/components/prose/Ul.d.vue.ts +0 -3
  336. package/dist/runtime/components/prose/Ul.vue +3 -1
  337. package/dist/runtime/components/prose/Ul.vue.d.ts +0 -3
  338. package/dist/runtime/composables/color-mode/useColorMode.d.ts +6 -0
  339. package/dist/runtime/composables/color-mode/useColorMode.js +15 -6
  340. package/dist/runtime/composables/defineShortcuts.js +4 -1
  341. package/dist/runtime/composables/internal/useFilter.d.ts +9 -0
  342. package/dist/runtime/composables/internal/useFilter.js +60 -0
  343. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  344. package/dist/runtime/composables/useComponentUI.d.ts +33 -0
  345. package/dist/runtime/composables/useComponentUI.js +13 -0
  346. package/dist/runtime/composables/useEditorMenu.d.ts +11 -0
  347. package/dist/runtime/composables/useEditorMenu.js +144 -166
  348. package/dist/runtime/composables/useFieldGroup.d.ts +1 -1
  349. package/dist/runtime/composables/useFormField.d.ts +1 -1
  350. package/dist/runtime/composables/useLoading.d.ts +3 -0
  351. package/dist/runtime/composables/useResizable.d.ts +1 -1
  352. package/dist/runtime/composables/useResizable.js +1 -1
  353. package/dist/runtime/composables/useToast.d.ts +4 -0
  354. package/dist/runtime/composables/useToast.js +25 -1
  355. package/dist/runtime/dictionary/icons.d.ts +3 -0
  356. package/dist/runtime/dictionary/icons.js +7 -1
  357. package/dist/runtime/index.css +1 -1
  358. package/dist/runtime/keyframes.css +1 -1
  359. package/dist/runtime/plugins/platform.d.ts +34 -0
  360. package/dist/runtime/plugins/platform.js +31 -0
  361. package/dist/runtime/plugins/ui-version.d.ts +1 -1
  362. package/dist/runtime/types/color-mode.d.ts +1 -1
  363. package/dist/runtime/types/index.d.ts +19 -0
  364. package/dist/runtime/types/index.js +19 -0
  365. package/dist/runtime/types/input.d.ts +16 -6
  366. package/dist/runtime/types/utils.d.ts +10 -8
  367. package/dist/runtime/utils/dashboard.d.ts +4 -5
  368. package/dist/runtime/utils/dashboard.js +1 -1
  369. package/dist/runtime/utils/index.d.ts +2 -1
  370. package/dist/runtime/utils/index.js +11 -1
  371. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +1 -1
  372. package/dist/runtime/vue/overrides/inertia/Link.d.vue.ts +1 -1
  373. package/dist/runtime/vue/overrides/inertia/Link.vue.d.ts +1 -1
  374. package/dist/runtime/vue/overrides/inertia/LinkBase.d.vue.ts +1 -1
  375. package/dist/runtime/vue/overrides/inertia/LinkBase.vue.d.ts +1 -1
  376. package/dist/runtime/vue/overrides/none/Link.d.vue.ts +1 -1
  377. package/dist/runtime/vue/overrides/none/Link.vue.d.ts +1 -1
  378. package/dist/runtime/vue/overrides/vue-router/Link.d.vue.ts +1 -1
  379. package/dist/runtime/vue/overrides/vue-router/Link.vue.d.ts +1 -1
  380. package/dist/runtime/vue/stubs/base.d.ts +9 -13
  381. package/dist/runtime/vue/stubs/base.js +11 -33
  382. package/dist/shared/{b24ui-nuxt.DEyBXBFe.mjs → b24ui-nuxt.DstlkmYO.mjs} +653 -51
  383. package/dist/unplugin.d.mts +2 -1
  384. package/dist/unplugin.mjs +2 -1
  385. package/dist/vite.mjs +1 -1
  386. package/package.json +50 -52
@@ -1,6 +1,6 @@
1
- import { ref, h, computed, unref } from "vue";
1
+ import { ref, h, computed, unref, watch } from "vue";
2
2
  import { defu } from "defu";
3
- import { useFilter } from "reka-ui";
3
+ import { useFilter } from "./internal/useFilter.js";
4
4
  import { computePosition } from "@floating-ui/dom";
5
5
  import { VueRenderer } from "@tiptap/vue-3";
6
6
  import Suggestion from "@tiptap/suggestion";
@@ -11,6 +11,7 @@ export function useEditorMenu(options) {
11
11
  const filteredItems = ref([]);
12
12
  const selectedIndex = ref(0);
13
13
  const menuState = ref("closed");
14
+ const searchTerm = options.searchTerm ?? ref("");
14
15
  let renderer = null;
15
16
  let element = null;
16
17
  let handleMouseDown = null;
@@ -21,7 +22,8 @@ export function useEditorMenu(options) {
21
22
  let triggerClientRect = null;
22
23
  let handleHover = null;
23
24
  let scrollHandler = null;
24
- const { contains, startsWith } = useFilter({ sensitivity: "base" });
25
+ let stopItemsWatch = null;
26
+ const { score } = useFilter();
25
27
  const cleanupMenu = () => {
26
28
  if (menuState.value === "closed") return;
27
29
  menuState.value = "closed";
@@ -53,40 +55,31 @@ export function useEditorMenu(options) {
53
55
  const filterFields = options.filterFields ?? ["label"];
54
56
  const defaultFilter = (items2, query) => {
55
57
  if (!query) return items2;
56
- const matched = [];
58
+ const scored = [];
57
59
  for (const item of items2) {
58
- let bestMatchType = 3;
59
- let bestFieldIndex = filterFields.length;
60
- for (let i = 0; i < filterFields.length; i++) {
61
- const value = get(item, filterFields[i]);
62
- if (value === void 0 || value === null) continue;
60
+ let bestScore = null;
61
+ for (const field of filterFields) {
62
+ const value = get(item, field);
63
+ if (value == null) continue;
63
64
  const values = Array.isArray(value) ? value.map(String) : [String(value)];
64
65
  for (const v of values) {
65
66
  const normalized = v.replace(/[\s_-]/g, "");
66
- let matchType = 3;
67
- if (startsWith(v, query) || startsWith(normalized, query)) {
68
- matchType = v.length === query.length || normalized.length === query.length ? 0 : 1;
69
- } else if (contains(v, query) || contains(normalized, query)) {
70
- matchType = 2;
71
- }
72
- if (matchType < bestMatchType || matchType === bestMatchType && i < bestFieldIndex) {
73
- bestMatchType = matchType;
74
- bestFieldIndex = i;
75
- }
67
+ const s = Math.min(score(v, query) ?? 3, score(normalized, query) ?? 3);
68
+ if (bestScore === null || s < bestScore) bestScore = s;
69
+ if (bestScore === 0) break;
76
70
  }
71
+ if (bestScore === 0) break;
77
72
  }
78
- if (bestMatchType < 3) {
79
- matched.push({ item, fieldIndex: bestFieldIndex, matchType: bestMatchType });
73
+ if (bestScore !== null && bestScore < 3) {
74
+ scored.push({ item, score: bestScore });
80
75
  }
81
76
  }
82
- matched.sort((a, b) => {
83
- if (a.matchType !== b.matchType) return a.matchType - b.matchType;
84
- return a.fieldIndex - b.fieldIndex;
85
- });
86
- return matched.map(({ item }) => item);
77
+ scored.sort((a, b) => a.score - b.score);
78
+ return scored.map(({ item }) => item);
87
79
  };
88
80
  const filter = options.filter || defaultFilter;
89
81
  const limit = options.limit ?? 42;
82
+ const pluginKeyInstance = typeof options.pluginKey === "string" ? new PluginKey(options.pluginKey) : options.pluginKey;
90
83
  const groups = computed(() => {
91
84
  const items2 = unref(options.items);
92
85
  return items2?.length ? isArrayOfArray(items2) ? items2 : [items2] : [];
@@ -94,6 +87,9 @@ export function useEditorMenu(options) {
94
87
  const items = computed(() => groups.value.flatMap((group) => group));
95
88
  const filteredGroups = computed(() => {
96
89
  if (!filteredItems.value.length) return [];
90
+ if (options.ignoreFilter) {
91
+ return [filteredItems.value];
92
+ }
97
93
  return groups.value.map((group) => {
98
94
  const filtered = group.filter((item) => filteredItems.value.includes(item));
99
95
  filtered.sort((a, b) => filteredItems.value.indexOf(a) - filteredItems.value.indexOf(b));
@@ -117,25 +113,124 @@ export function useEditorMenu(options) {
117
113
  inline: false
118
114
  });
119
115
  const middleware = buildFloatingUIMiddleware(floatingUIOptions);
120
- const updatePosition = (element2) => {
116
+ const updatePosition = (el) => {
121
117
  if (!triggerClientRect) return;
122
118
  const rect = triggerClientRect();
123
119
  if (!rect) return;
124
120
  const virtualElement = {
125
121
  getBoundingClientRect: () => rect
126
122
  };
127
- computePosition(virtualElement, element2, {
123
+ computePosition(virtualElement, el, {
128
124
  placement: floatingUIOptions.placement,
129
125
  strategy: floatingUIOptions.strategy,
130
126
  middleware
131
127
  }).then(({ x, y, strategy }) => {
132
- element2.style.width = "max-content";
133
- element2.style.position = strategy;
134
- element2.style.top = "0";
135
- element2.style.left = "0";
136
- element2.style.transform = `translate(${Math.round(x)}px, ${Math.round(y)}px)`;
128
+ el.style.width = "max-content";
129
+ el.style.position = strategy;
130
+ el.style.top = "0";
131
+ el.style.left = "0";
132
+ el.style.transform = `translate(${Math.round(x)}px, ${Math.round(y)}px)`;
133
+ });
134
+ };
135
+ const showMenu = () => {
136
+ menuState.value = "open";
137
+ if (!globalKeyHandler) {
138
+ globalKeyHandler = (e) => {
139
+ if (keyDownHandler) {
140
+ const handled = keyDownHandler({ event: e });
141
+ if (handled) {
142
+ e.preventDefault();
143
+ e.stopPropagation();
144
+ }
145
+ }
146
+ };
147
+ document.addEventListener("keydown", globalKeyHandler, true);
148
+ }
149
+ if (!blurHandler) {
150
+ blurHandler = () => {
151
+ setTimeout(() => {
152
+ if (menuState.value === "open") {
153
+ const tr = options.editor.view.state.tr.setMeta(pluginKeyInstance, { exit: true });
154
+ options.editor.view.dispatch(tr);
155
+ }
156
+ }, 0);
157
+ };
158
+ options.editor.view.dom.addEventListener("blur", blurHandler);
159
+ }
160
+ if (!scrollHandler) {
161
+ scrollHandler = () => {
162
+ if (element) {
163
+ updatePosition(element);
164
+ }
165
+ };
166
+ window.addEventListener("scroll", scrollHandler, true);
167
+ }
168
+ handleHover = (index) => {
169
+ selectedIndex.value = index;
170
+ if (renderer) {
171
+ renderer.updateProps({
172
+ groups: filteredGroups.value,
173
+ selectedIndex: index,
174
+ onSelect: commandFn,
175
+ onHover: handleHover,
176
+ state: menuState.value
177
+ });
178
+ }
179
+ };
180
+ renderer = new VueRenderer(MenuComponent, {
181
+ props: {
182
+ groups: filteredGroups.value,
183
+ selectedIndex: selectedIndex.value,
184
+ onSelect: commandFn,
185
+ onHover: handleHover,
186
+ state: menuState.value
187
+ },
188
+ editor: options.editor
137
189
  });
190
+ element = document.createElement("div");
191
+ element.style.position = floatingUIOptions.strategy;
192
+ element.style.zIndex = "50";
193
+ handleMouseDown = (e) => {
194
+ e.preventDefault();
195
+ };
196
+ element.addEventListener("mousedown", handleMouseDown);
197
+ const appendToElement = typeof options.appendTo === "function" ? options.appendTo() : options.appendTo;
198
+ (appendToElement ?? options.editor.view.dom.parentElement)?.appendChild(element);
199
+ if (renderer.element) {
200
+ element.appendChild(renderer.element);
201
+ }
202
+ updatePosition(element);
138
203
  };
204
+ if (options.ignoreFilter) {
205
+ stopItemsWatch = watch(() => unref(options.items), (newItems) => {
206
+ if (!triggerClientRect) return;
207
+ const normalizedItems = newItems?.length ? isArrayOfArray(newItems) ? newItems.flat() : newItems : [];
208
+ filteredItems.value = normalizedItems.slice(0, limit);
209
+ if (!filteredItems.value.length) {
210
+ cleanupMenu();
211
+ return;
212
+ }
213
+ if (selectedIndex.value >= selectableItems.value.length) {
214
+ selectedIndex.value = Math.max(0, selectableItems.value.length - 1);
215
+ }
216
+ if (menuState.value === "closed" && filteredItems.value.length) {
217
+ showMenu();
218
+ return;
219
+ }
220
+ if (renderer) {
221
+ renderer.updateProps({
222
+ groups: filteredGroups.value,
223
+ selectedIndex: selectedIndex.value,
224
+ onSelect: commandFn,
225
+ onHover: handleHover,
226
+ state: menuState.value
227
+ });
228
+ }
229
+ if (element) {
230
+ updatePosition(element);
231
+ }
232
+ }, { deep: true, flush: "sync" });
233
+ }
139
234
  const MenuComponent = {
140
235
  props: {
141
236
  groups: { type: Array, required: true },
@@ -215,13 +310,16 @@ export function useEditorMenu(options) {
215
310
  };
216
311
  }
217
312
  };
218
- const pluginKeyInstance = typeof options.pluginKey === "string" ? new PluginKey(options.pluginKey) : options.pluginKey;
219
313
  const plugin = Suggestion({
220
314
  pluginKey: pluginKeyInstance,
221
315
  editor: options.editor,
222
316
  char: options.char,
223
- items: ({ query }) => {
224
- const filtered = filter(items.value, query);
317
+ items: ({ query: q }) => {
318
+ searchTerm.value = q;
319
+ if (options.ignoreFilter) {
320
+ return items.value.slice(0, limit);
321
+ }
322
+ const filtered = filter(items.value, q);
225
323
  return filtered.slice(0, limit);
226
324
  },
227
325
  command: ({ editor, range, props }) => {
@@ -270,77 +368,17 @@ export function useEditorMenu(options) {
270
368
  };
271
369
  const handlers = {
272
370
  onStart: (suggestionProps) => {
273
- filteredItems.value = suggestionProps.items;
371
+ filteredItems.value = options.ignoreFilter ? items.value.slice(0, limit) : suggestionProps.items;
274
372
  selectedIndex.value = 0;
275
373
  commandFn = (item) => suggestionProps.command(item);
276
374
  triggerClientRect = suggestionProps.clientRect;
277
375
  if (!filteredItems.value.length) {
278
376
  return;
279
377
  }
280
- menuState.value = "open";
281
- globalKeyHandler = (e) => {
282
- if (keyDownHandler) {
283
- const handled = keyDownHandler({ event: e });
284
- if (handled) {
285
- e.preventDefault();
286
- e.stopPropagation();
287
- }
288
- }
289
- };
290
- document.addEventListener("keydown", globalKeyHandler, true);
291
- blurHandler = () => {
292
- setTimeout(() => {
293
- if (menuState.value === "open") {
294
- const tr = suggestionProps.editor.view.state.tr.setMeta(pluginKeyInstance, { exit: true });
295
- suggestionProps.editor.view.dispatch(tr);
296
- }
297
- }, 0);
298
- };
299
- suggestionProps.editor.view.dom.addEventListener("blur", blurHandler);
300
- scrollHandler = () => {
301
- if (element) {
302
- updatePosition(element);
303
- }
304
- };
305
- window.addEventListener("scroll", scrollHandler, true);
306
- handleHover = (index) => {
307
- selectedIndex.value = index;
308
- if (renderer) {
309
- renderer.updateProps({
310
- groups: filteredGroups.value,
311
- selectedIndex: index,
312
- onSelect: commandFn,
313
- onHover: handleHover,
314
- state: menuState.value
315
- });
316
- }
317
- };
318
- renderer = new VueRenderer(MenuComponent, {
319
- props: {
320
- groups: filteredGroups.value,
321
- selectedIndex: selectedIndex.value,
322
- onSelect: commandFn,
323
- onHover: handleHover,
324
- state: menuState.value
325
- },
326
- editor: suggestionProps.editor
327
- });
328
- element = document.createElement("div");
329
- element.style.position = floatingUIOptions.strategy;
330
- element.style.zIndex = "50";
331
- handleMouseDown = (e) => {
332
- e.preventDefault();
333
- };
334
- element.addEventListener("mousedown", handleMouseDown);
335
- const appendToElement = typeof options.appendTo === "function" ? options.appendTo() : options.appendTo;
336
- (appendToElement ?? suggestionProps.editor.view.dom.parentElement)?.appendChild(element);
337
- if (renderer.element) {
338
- element.appendChild(renderer.element);
339
- }
340
- updatePosition(element);
378
+ showMenu();
341
379
  },
342
380
  onUpdate: (suggestionProps) => {
343
- filteredItems.value = suggestionProps.items;
381
+ filteredItems.value = options.ignoreFilter ? items.value.slice(0, limit) : suggestionProps.items;
344
382
  commandFn = (item) => suggestionProps.command(item);
345
383
  if (selectedIndex.value >= selectableItems.value.length) {
346
384
  selectedIndex.value = Math.max(0, selectableItems.value.length - 1);
@@ -350,72 +388,7 @@ export function useEditorMenu(options) {
350
388
  return;
351
389
  }
352
390
  if (!renderer) {
353
- menuState.value = "open";
354
- if (!globalKeyHandler) {
355
- globalKeyHandler = (e) => {
356
- if (keyDownHandler) {
357
- const handled = keyDownHandler({ event: e });
358
- if (handled) {
359
- e.preventDefault();
360
- e.stopPropagation();
361
- }
362
- }
363
- };
364
- document.addEventListener("keydown", globalKeyHandler, true);
365
- }
366
- if (!blurHandler) {
367
- blurHandler = () => {
368
- setTimeout(() => {
369
- if (menuState.value === "open") {
370
- const tr = suggestionProps.editor.view.state.tr.setMeta(pluginKeyInstance, { exit: true });
371
- suggestionProps.editor.view.dispatch(tr);
372
- }
373
- }, 0);
374
- };
375
- suggestionProps.editor.view.dom.addEventListener("blur", blurHandler);
376
- }
377
- if (!scrollHandler) {
378
- scrollHandler = () => {
379
- if (element) {
380
- updatePosition(element);
381
- }
382
- };
383
- window.addEventListener("scroll", scrollHandler, true);
384
- }
385
- handleHover = (index) => {
386
- selectedIndex.value = index;
387
- if (renderer) {
388
- renderer.updateProps({
389
- groups: filteredGroups.value,
390
- selectedIndex: index,
391
- onSelect: commandFn,
392
- onHover: handleHover,
393
- state: menuState.value
394
- });
395
- }
396
- };
397
- renderer = new VueRenderer(MenuComponent, {
398
- props: {
399
- groups: filteredGroups.value,
400
- selectedIndex: selectedIndex.value,
401
- onSelect: commandFn,
402
- onHover: handleHover,
403
- state: menuState.value
404
- },
405
- editor: suggestionProps.editor
406
- });
407
- element = document.createElement("div");
408
- element.style.position = floatingUIOptions.strategy;
409
- element.style.zIndex = "50";
410
- handleMouseDown = (e) => {
411
- e.preventDefault();
412
- };
413
- element.addEventListener("mousedown", handleMouseDown);
414
- const appendToElement = typeof options.appendTo === "function" ? options.appendTo() : options.appendTo;
415
- (appendToElement ?? suggestionProps.editor.view.dom.parentElement)?.appendChild(element);
416
- if (renderer.element) {
417
- element.appendChild(renderer.element);
418
- }
391
+ showMenu();
419
392
  } else {
420
393
  renderer.updateProps({
421
394
  groups: filteredGroups.value,
@@ -466,10 +439,15 @@ export function useEditorMenu(options) {
466
439
  element.remove();
467
440
  element = null;
468
441
  }
442
+ if (stopItemsWatch) {
443
+ stopItemsWatch();
444
+ stopItemsWatch = null;
445
+ }
469
446
  };
470
447
  return {
471
448
  plugin,
472
449
  destroy,
473
- filteredItems
450
+ filteredItems,
451
+ searchTerm
474
452
  };
475
453
  }
@@ -11,7 +11,7 @@ type Props<T> = {
11
11
  };
12
12
  export declare function useFieldGroup<T>(props: Props<T>): {
13
13
  orientation: ComputedRef<"horizontal" | "vertical" | undefined>;
14
- size: ComputedRef<"md" | "xs" | "sm" | "lg" | "xl" | "xss" | NonNullable<GetObjectField<T, "size">> | undefined>;
14
+ size: ComputedRef<"lg" | "sm" | "md" | "xl" | "xs" | "xss" | NonNullable<GetObjectField<T, "size">> | undefined>;
15
15
  noSplit: ComputedRef<boolean>;
16
16
  };
17
17
  export {};
@@ -28,7 +28,7 @@ export declare function useFormField<T>(props?: Props<T>, opts?: {
28
28
  }): {
29
29
  id: ComputedRef<string | undefined>;
30
30
  name: ComputedRef<string | undefined>;
31
- size: ComputedRef<"md" | "xs" | "sm" | "lg" | NonNullable<GetObjectField<T, "size">> | undefined>;
31
+ size: ComputedRef<"lg" | "sm" | "md" | "xs" | NonNullable<GetObjectField<T, "size">> | undefined>;
32
32
  color: ComputedRef<"air-primary-alert" | GetObjectField<T, "color"> | undefined>;
33
33
  highlight: ComputedRef<boolean | undefined>;
34
34
  disabled: ComputedRef<boolean | undefined>;
@@ -1,4 +1,7 @@
1
1
  import type { Ref } from 'vue';
2
+ /**
3
+ * @deprecated Subject to refactoring
4
+ */
2
5
  export type UseLoadingProps = {
3
6
  /**
4
7
  * The id of the SidebarLayout.
@@ -57,7 +57,7 @@ export type UseResizableProps = {
57
57
  persistent?: boolean;
58
58
  /**
59
59
  * The unit to use for size values.
60
- * @defaultValue '%'
60
+ * @defaultValue 'px'
61
61
  */
62
62
  unit?: '%' | 'rem' | 'px';
63
63
  };
@@ -14,7 +14,7 @@ export const useResizable = (key, options = {}, { collapsed = ref(false) } = {})
14
14
  collapsible: false,
15
15
  collapsedSize: 0,
16
16
  resizable: true,
17
- unit: "%",
17
+ unit: "px",
18
18
  ...isRef(options) ? options.value : options
19
19
  }));
20
20
  const { dir } = useLocale();
@@ -5,6 +5,10 @@ export declare const toastMaxInjectionKey: InjectionKey<Ref<number | undefined>>
5
5
  export interface Toast extends Omit<ToastProps, 'defaultOpen'>, EmitsToProps<ToastEmits> {
6
6
  id: string | number;
7
7
  onClick?: (toast: Toast) => void;
8
+ /** @internal */
9
+ _duplicate?: number;
10
+ /** @internal */
11
+ _updated?: boolean;
8
12
  }
9
13
  export declare function useToast(): {
10
14
  toasts: Ref<Toast[], Toast[]>;
@@ -25,6 +25,15 @@ export function useToast() {
25
25
  open: true,
26
26
  ...toast
27
27
  };
28
+ const existingIndex = toasts.value.findIndex((t) => t.id === body.id);
29
+ if (existingIndex !== -1) {
30
+ toasts.value[existingIndex] = {
31
+ ...toasts.value[existingIndex],
32
+ ...body,
33
+ _duplicate: (toasts.value[existingIndex]._duplicate || 0) + 1
34
+ };
35
+ return body;
36
+ }
28
37
  queue.push(body);
29
38
  processQueue();
30
39
  return body;
@@ -34,12 +43,27 @@ export function useToast() {
34
43
  if (index !== -1) {
35
44
  toasts.value[index] = {
36
45
  ...toasts.value[index],
37
- ...toast
46
+ ...toast,
47
+ duration: toast.duration,
48
+ open: true,
49
+ _updated: true
38
50
  };
51
+ nextTick(() => {
52
+ const i = toasts.value.findIndex((t) => t.id === id);
53
+ if (i !== -1 && toasts.value[i]._updated) {
54
+ toasts.value[i] = {
55
+ ...toasts.value[i],
56
+ _updated: void 0
57
+ };
58
+ }
59
+ });
39
60
  }
40
61
  }
41
62
  function remove(id) {
42
63
  const index = toasts.value.findIndex((t) => t.id === id);
64
+ if (index !== -1 && toasts.value[index]._updated) {
65
+ return;
66
+ }
43
67
  if (index !== -1) {
44
68
  toasts.value[index] = {
45
69
  ...toasts.value[index],
@@ -41,5 +41,8 @@ declare const _default: {
41
41
  stop: import("vue").FunctionalComponent<import("vue").HTMLAttributes & import("vue").VNodeProps, {}, any, {}>;
42
42
  reload: import("vue").FunctionalComponent<import("vue").HTMLAttributes & import("vue").VNodeProps, {}, any, {}>;
43
43
  drag: import("vue").FunctionalComponent<import("vue").HTMLAttributes & import("vue").VNodeProps, {}, any, {}>;
44
+ menu: import("vue").FunctionalComponent<import("vue").HTMLAttributes & import("vue").VNodeProps, {}, any, {}>;
45
+ panelClose: import("vue").FunctionalComponent<import("vue").HTMLAttributes & import("vue").VNodeProps, {}, any, {}>;
46
+ panelOpen: import("vue").FunctionalComponent<import("vue").HTMLAttributes & import("vue").VNodeProps, {}, any, {}>;
44
47
  };
45
48
  export default _default;
@@ -33,6 +33,9 @@ import RefreshIcon from "@bitrix24/b24icons-vue/outline/RefreshIcon";
33
33
  import SendIcon from "@bitrix24/b24icons-vue/main/SendIcon";
34
34
  import DragLIcon from "@bitrix24/b24icons-vue/outline/DragLIcon";
35
35
  import GoToLIcon from "@bitrix24/b24icons-vue/outline/GoToLIcon";
36
+ import HamburgerMenuIcon from "@bitrix24/b24icons-vue/outline/HamburgerMenuIcon";
37
+ import CloseChatIcon from "@bitrix24/b24icons-vue/outline/CloseChatIcon";
38
+ import OpenChatIcon from "@bitrix24/b24icons-vue/outline/OpenChatIcon";
36
39
  export default {
37
40
  arrowLeft: ArrowToTheLeftIcon,
38
41
  arrowRight: ArrowToTheRightIcon,
@@ -69,5 +72,8 @@ export default {
69
72
  arrowUp: ArrowTopLIcon,
70
73
  stop: StopLIcon,
71
74
  reload: RefreshIcon,
72
- drag: DragLIcon
75
+ drag: DragLIcon,
76
+ menu: HamburgerMenuIcon,
77
+ panelClose: CloseChatIcon,
78
+ panelOpen: OpenChatIcon
73
79
  };
@@ -1 +1 @@
1
- @import "#build/b24ui.css";@import "./keyframes.css";@import "./air-design-tokens/tw-style/index.css";@import "./air-design-tokens/index.css";@variant light (&:where(.light, .light *));@variant edge-dark (&:where(.edge-dark, .edge-dark *));@variant edge-light (&:where(.edge-light, .edge-light *));@variant dark (&:where(.dark, .dark *));@layer base{.sidebar-layout.--inner,body{--air-theme-background:var(--air-theme-bg-image,none) var(--air-theme-bg-position,0 0) /var(--air-theme-bg-size,auto) var(--air-theme-bg-repeat,repeat) var(--air-theme-bg-attachment,scroll) var(--air-theme-bg-color,transparent);--air-theme-background-blurred:var(--air-theme-bg-image-blurred,none) var(--air-theme-bg-position,0 0) /var(--air-theme-bg-size,auto) var(--air-theme-bg-repeat,repeat) var(--air-theme-bg-attachment,scroll)}}@theme default inline{--text-color-dimmed:var(--ui-color-base-6);--text-color-muted:var(--ui-color-design-plain-na-content-secondary);--text-color-description:var(--b24ui-typography-description-color);--text-color-legend:var(--b24ui-typography-legend-color);--text-color-label:var(--b24ui-typography-label-color)}
1
+ @import "#build/b24ui.css";@import "./keyframes.css";@import "./air-design-tokens/tw-style/index.css";@import "./air-design-tokens/index.css";@variant light (&:where(.light, .light *));@variant edge-dark (&:where(.edge-dark, .edge-dark *));@variant edge-light (&:where(.edge-light, .edge-light *));@variant dark (&:where(.dark, .dark *));@variant bitrix-mobile (&:where(html[data-platform="bitrix-mobile"] *));@variant bitrix-desktop (&:where(html[data-platform="bitrix-desktop"] *));@layer base{.sidebar-layout.--inner,body{--air-theme-background:var(--air-theme-bg-image,none) var(--air-theme-bg-position,0 0) /var(--air-theme-bg-size,auto) var(--air-theme-bg-repeat,repeat) var(--air-theme-bg-attachment,scroll) var(--air-theme-bg-color,transparent);--air-theme-background-blurred:var(--air-theme-bg-image-blurred,none) var(--air-theme-bg-position,0 0) /var(--air-theme-bg-size,auto) var(--air-theme-bg-repeat,repeat) var(--air-theme-bg-attachment,scroll)}}@layer theme{:host,:root{--b24ui-header-height:--spacing(14.5)}}@theme default inline{--text-color-dimmed:var(--ui-color-base-6);--text-color-muted:var(--ui-color-design-plain-na-content-secondary);--text-color-description:var(--b24ui-typography-description-color);--text-color-legend:var(--b24ui-typography-legend-color);--text-color-label:var(--b24ui-typography-label-color)}
@@ -1 +1 @@
1
- @keyframes accordion-up{0%{height:var(--reka-accordion-content-height)}to{height:0}}@keyframes accordion-down{0%{height:0}to{height:var(--reka-accordion-content-height)}}@keyframes collapsible-up{0%{height:var(--reka-collapsible-content-height)}to{height:0}}@keyframes collapsible-down{0%{height:0}to{height:var(--reka-collapsible-content-height)}}@keyframes toast-collapsed-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--before) - var(--height))*var(--gap))) scale(var(--scale))}}@keyframes toast-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--offset) - var(--height))*var(--translate-factor)))}}@keyframes toast-slide-left{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(-100%) translateY(var(--translate))}}@keyframes toast-slide-right{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(100%) translateY(var(--translate))}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slide-out-to-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slide-in-from-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slide-in-from-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-in-from-top-and-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-top-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes slide-in-from-right-and-fade{0%{opacity:0;transform:translateX(4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-right-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(4px)}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes slide-in-from-left-and-fade{0%{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-left-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-4px)}}@keyframes enter-from-right{0%{opacity:0;transform:translateX(200px)}to{opacity:1;transform:translateX(0)}}@keyframes enter-from-left{0%{opacity:0;transform:translateX(-200px)}to{opacity:1;transform:translateX(0)}}@keyframes exit-to-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(200px)}}@keyframes exit-to-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-200px)}}@keyframes carousel{0%,to{width:30%}0%{transform:translateX(-100%)}to{transform:translateX(370%)}}@keyframes carousel-rtl{0%,to{width:30%}0%{transform:translateX(100%)}to{transform:translateX(-370%)}}@keyframes carousel-vertical{0%,to{height:30%}0%{transform:translateY(-100%)}to{transform:translateY(370%)}}@keyframes carousel-inverse{0%,to{width:30%}0%{transform:translateX(370%)}to{transform:translateX(-100%)}}@keyframes carousel-inverse-rtl{0%,to{width:30%}0%{transform:translateX(-370%)}to{transform:translateX(100%)}}@keyframes carousel-inverse-vertical{0%,to{height:30%}0%{transform:translateY(370%)}to{transform:translateY(-100%)}}@keyframes swing{0%,to{width:30%}0%,to{transform:translateX(-25%)}50%{transform:translateX(275%)}}@keyframes swing-vertical{0%,to{height:30%}0%,to{transform:translateY(-25%)}50%{transform:translateY(275%)}}@keyframes elastic{0%,to{margin-left:25%;width:50%}50%{margin-left:5%;width:90%}}@keyframes elastic-vertical{0%,to{height:50%;margin-top:25%}50%{height:90%;margin-top:5%}}@keyframes progressbar-loading{0%,to{width:30%}0%{transform:translateX(-200%)}50%{transform:translateX(350%)}to{transform:translateX(-200%)}}@keyframes progressbar-loading-vertical{0%,to{height:30%}0%{transform:translateY(-200%)}50%{transform:translateY(350%)}to{transform:translateY(-200%)}}
1
+ @keyframes accordion-up{0%{height:var(--reka-accordion-content-height)}to{height:0}}@keyframes accordion-down{0%{height:0}to{height:var(--reka-accordion-content-height)}}@keyframes collapsible-up{0%{height:var(--reka-collapsible-content-height)}to{height:0}}@keyframes collapsible-down{0%{height:0}to{height:var(--reka-collapsible-content-height)}}@keyframes toast-slide-in-from-top{0%{transform:translateY(-100%)}to{transform:var(--transform)}}@keyframes toast-slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:var(--transform)}}@keyframes toast-slide-up{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) - 100%))}}@keyframes toast-slide-down{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) + 100%))}}@keyframes toast-pulse-a{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-pulse-b{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-collapsed-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--before) - var(--height))*var(--gap))) scale(var(--scale))}}@keyframes toast-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--offset) - var(--height))*var(--translate-factor)))}}@keyframes toast-slide-left{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(-100%) translateY(var(--translate))}}@keyframes toast-slide-right{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(100%) translateY(var(--translate))}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slide-out-to-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slide-in-from-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slide-in-from-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-in-from-top-and-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-top-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes slide-in-from-right-and-fade{0%{opacity:0;transform:translateX(4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-right-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(4px)}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes slide-in-from-left-and-fade{0%{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-left-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-4px)}}@keyframes enter-from-right{0%{opacity:0;transform:translateX(200px)}to{opacity:1;transform:translateX(0)}}@keyframes enter-from-left{0%{opacity:0;transform:translateX(-200px)}to{opacity:1;transform:translateX(0)}}@keyframes exit-to-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(200px)}}@keyframes exit-to-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-200px)}}@keyframes carousel{0%,to{width:30%}0%{transform:translateX(-100%)}to{transform:translateX(370%)}}@keyframes carousel-rtl{0%,to{width:30%}0%{transform:translateX(100%)}to{transform:translateX(-370%)}}@keyframes carousel-vertical{0%,to{height:30%}0%{transform:translateY(-100%)}to{transform:translateY(370%)}}@keyframes carousel-inverse{0%,to{width:30%}0%{transform:translateX(370%)}to{transform:translateX(-100%)}}@keyframes carousel-inverse-rtl{0%,to{width:30%}0%{transform:translateX(-370%)}to{transform:translateX(100%)}}@keyframes carousel-inverse-vertical{0%,to{height:30%}0%{transform:translateY(370%)}to{transform:translateY(-100%)}}@keyframes swing{0%,to{width:30%}0%,to{transform:translateX(-25%)}50%{transform:translateX(275%)}}@keyframes swing-vertical{0%,to{height:30%}0%,to{transform:translateY(-25%)}50%{transform:translateY(275%)}}@keyframes elastic{0%,to{margin-left:25%;width:50%}50%{margin-left:5%;width:90%}}@keyframes elastic-vertical{0%,to{height:50%;margin-top:25%}50%{height:90%;margin-top:5%}}@keyframes progressbar-loading{0%,to{width:30%}0%{transform:translateX(-200%)}50%{transform:translateX(350%)}to{transform:translateX(-200%)}}@keyframes progressbar-loading-vertical{0%,to{height:30%}0%{transform:translateY(-200%)}50%{transform:translateY(350%)}to{transform:translateY(-200%)}}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Plugin to detect the Bitrix24 mobile application environment.
3
+ *
4
+ * @description
5
+ * 1. Analyzes the User-Agent on the server-side (SSR) or client-side.
6
+ * 2. Establishes a reactive `platform` state using `useState`.
7
+ * 3. Injects attributes into the `<html>` tag for styling:
8
+ * - `data-platform="bitrix-mobile" | "bitrix-desktop" | "web"`
9
+ * - `data-version="XX" | "XX.X.XX.XX" | "air"`
10
+ *
11
+ * @example
12
+ * // In CSS:
13
+ * html[data-platform="bitrix-mobile"] .my-component { ... }
14
+ * html[data-platform="bitrix-desktop"] .my-component { ... }
15
+ *
16
+ * @example
17
+ * <!-- Template usage (Tailwind) -->
18
+ * <div class="hidden bitrix-mobile:block bitrix-mobile:bg-blue-600">
19
+ * Content visible only inside the Bitrix Mobile
20
+ * </div>
21
+ * <div class="hidden bitrix-desktop:block bitrix-desktop:bg-blue-600">
22
+ * Content visible only inside the Bitrix Desktop
23
+ * </div>
24
+ *
25
+ * @example
26
+ * // Inside a Vue component:
27
+ * const platform = useState('platform')
28
+ * if (platform.value.name === 'bitrix-mobile') { ... }
29
+ * if (platform.value.name === 'bitrix-desktop') { ... }
30
+ *
31
+ * @todo add docs
32
+ */
33
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
34
+ export default _default;
@@ -0,0 +1,31 @@
1
+ import { defineNuxtPlugin, useState, useRequestHeader, useHead } from "#imports";
2
+ export default defineNuxtPlugin(() => {
3
+ const platform = useState("platform", () => ({}));
4
+ if (!platform.value?.name) {
5
+ const ua = import.meta.server ? useRequestHeader("user-agent") : navigator.userAgent;
6
+ const matchBitrixMobile = ua?.match(/BitrixMobile\/Version=(\d+)/);
7
+ const matchBitrixDesktop = ua?.match(/BitrixDesktop\/([\d.]+)/);
8
+ if (matchBitrixMobile) {
9
+ platform.value = {
10
+ name: "bitrix-mobile",
11
+ version: matchBitrixMobile[1]
12
+ };
13
+ } else if (matchBitrixDesktop) {
14
+ platform.value = {
15
+ name: "bitrix-desktop",
16
+ version: matchBitrixDesktop[1]
17
+ };
18
+ } else {
19
+ platform.value = {
20
+ name: "web",
21
+ version: "air"
22
+ };
23
+ }
24
+ }
25
+ useHead({
26
+ htmlAttrs: {
27
+ "data-platform": () => platform.value.name,
28
+ "data-version": () => platform.value.version
29
+ }
30
+ });
31
+ });
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @memo Add b24ui version
2
+ * Add b24ui version
3
3
  */
4
4
  declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
5
5
  export default _default;
@@ -1,2 +1,2 @@
1
1
  export type ColorModeTypeLight = 'light' | 'edge-dark' | 'edge-light';
2
- export type ColorModeType = 'system' | 'dark' & ColorModeTypeLight;
2
+ export type ColorModeType = 'auto' | 'dark' | ColorModeTypeLight;