@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,3 +1,4 @@
1
+ import type { ComponentPublicInstance } from 'vue';
1
2
  import type { PinInputRootEmits, PinInputRootProps } from 'reka-ui';
2
3
  import type { AppConfig } from '@nuxt/schema';
3
4
  import theme from '#build/b24ui/pin-input';
@@ -41,6 +42,8 @@ export interface PinInputProps<T extends PinInputType = 'text'> extends Pick<Pin
41
42
  autofocus?: boolean;
42
43
  autofocusDelay?: number;
43
44
  highlight?: boolean;
45
+ /** Keep the mobile text size on all breakpoints. (Left for backward compatibility.) */
46
+ fixed?: boolean;
44
47
  class?: any;
45
48
  b24ui?: PinInput['slots'];
46
49
  }
@@ -60,7 +63,7 @@ declare const __VLS_export: <T extends PinInputType>(__VLS_props: NonNullable<Aw
60
63
  __VLS_PROPS_FALLBACK: infer P;
61
64
  } ? P : {});
62
65
  expose: (exposed: import("vue").ShallowUnwrapRef<{
63
- inputsRef: import("vue").Ref<any[], any[]>;
66
+ inputsRef: import("vue").Ref<ComponentPublicInstance[], ComponentPublicInstance[]>;
64
67
  }>) => void;
65
68
  attrs: any;
66
69
  slots: {};
@@ -9,6 +9,7 @@ import { useForwardPropsEmits } from "reka-ui";
9
9
  import { Popover, HoverCard } from "reka-ui/namespaced";
10
10
  import { reactivePick } from "@vueuse/core";
11
11
  import { useAppConfig } from "#imports";
12
+ import { useComponentUI } from "../composables/useComponentUI";
12
13
  import { usePortal } from "../composables/usePortal";
13
14
  import { pointerDownOutside } from "../utils/overlay";
14
15
  import { tv } from "../utils/tv";
@@ -30,6 +31,7 @@ const props = defineProps({
30
31
  const emits = defineEmits(["close:prevent", "update:open"]);
31
32
  const slots = defineSlots();
32
33
  const appConfig = useAppConfig();
34
+ const uiProp = useComponentUI("popover", props);
33
35
  const pick = props.mode === "hover" ? reactivePick(props, "defaultOpen", "open", "openDelay", "closeDelay") : reactivePick(props, "defaultOpen", "open", "modal");
34
36
  const rootProps = useForwardPropsEmits(pick, emits);
35
37
  const portalProps = usePortal(toRef(() => props.portal));
@@ -72,10 +74,10 @@ const Component = computed(() => props.mode === "hover" ? HoverCard : Popover);
72
74
  </Component.Anchor>
73
75
 
74
76
  <Component.Portal v-bind="portalProps">
75
- <Component.Content v-bind="contentProps" data-slot="content" :class="b24ui.content({ class: [!slots.default && props.class, props.b24ui?.content] })" v-on="contentEvents">
77
+ <Component.Content v-bind="contentProps" data-slot="content" :class="b24ui.content({ class: [!slots.default && props.class, uiProp?.content] })" v-on="contentEvents">
76
78
  <slot name="content" v-bind="close ? { close } : {}" />
77
79
 
78
- <Component.Arrow v-if="!!arrow" v-bind="arrowProps" data-slot="arrow" :class="b24ui.arrow({ class: props.b24ui?.arrow })" />
80
+ <Component.Arrow v-if="!!arrow" v-bind="arrowProps" data-slot="arrow" :class="b24ui.arrow({ class: uiProp?.arrow })" />
79
81
  </Component.Content>
80
82
  </Component.Portal>
81
83
  </Component.Root>
@@ -7,6 +7,7 @@ import { computed } from "vue";
7
7
  import { Primitive, ProgressRoot, ProgressIndicator, useForwardPropsEmits } from "reka-ui";
8
8
  import { reactivePick } from "@vueuse/core";
9
9
  import { useAppConfig } from "#imports";
10
+ import { useComponentUI } from "../composables/useComponentUI";
10
11
  import { useLocale } from "../composables/useLocale";
11
12
  import { tv } from "../utils/tv";
12
13
  const props = defineProps({
@@ -28,6 +29,7 @@ const emits = defineEmits(["update:modelValue", "update:max"]);
28
29
  const slots = defineSlots();
29
30
  const { dir } = useLocale();
30
31
  const appConfig = useAppConfig();
32
+ const uiProp = useComponentUI("progress", props);
31
33
  const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "getValueText", "modelValue"), emits);
32
34
  const isIndeterminate = computed(() => rootProps.value.modelValue === null);
33
35
  const hasSteps = computed(() => Array.isArray(props.max));
@@ -110,19 +112,19 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.progres
110
112
  </script>
111
113
 
112
114
  <template>
113
- <Primitive :as="as" :data-orientation="orientation" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
114
- <div v-if="!isIndeterminate && (status || !!slots.status)" data-slot="status" :class="b24ui.status({ class: props.b24ui?.status })" :style="statusStyle">
115
+ <Primitive :as="as" :data-orientation="orientation" data-slot="root" :class="b24ui.root({ class: [uiProp?.root, props.class] })">
116
+ <div v-if="!isIndeterminate && (status || !!slots.status)" data-slot="status" :class="b24ui.status({ class: uiProp?.status })" :style="statusStyle">
115
117
  <slot name="status" :percent="percent">
116
118
  {{ percent }}%
117
119
  </slot>
118
120
  </div>
119
121
 
120
- <ProgressRoot v-bind="rootProps" :max="realMax" data-slot="base" :class="b24ui.base({ class: props.b24ui?.base })" style="transform: translateZ(0)">
121
- <ProgressIndicator data-slot="indicator" :class="b24ui.indicator({ class: props.b24ui?.indicator })" :style="indicatorStyle" />
122
+ <ProgressRoot v-bind="rootProps" :max="realMax" data-slot="base" :class="b24ui.base({ class: uiProp?.base })" style="transform: translateZ(0)">
123
+ <ProgressIndicator data-slot="indicator" :class="b24ui.indicator({ class: uiProp?.indicator })" :style="indicatorStyle" />
122
124
  </ProgressRoot>
123
125
 
124
- <div v-if="hasSteps" data-slot="steps" :class="b24ui.steps({ class: props.b24ui?.steps })">
125
- <div v-for="(step, index) in max" :key="index" data-slot="step" :class="b24ui.step({ class: props.b24ui?.step, step: stepVariant(index) })">
126
+ <div v-if="hasSteps" data-slot="steps" :class="b24ui.steps({ class: uiProp?.steps })">
127
+ <div v-for="(step, index) in max" :key="index" data-slot="step" :class="b24ui.step({ class: uiProp?.step, step: stepVariant(index) })">
126
128
  <slot :name="`step-${index}`" :step="step">
127
129
  {{ step }}
128
130
  </slot>
@@ -86,14 +86,14 @@ export default _default;
86
86
  declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
87
87
  props: import("vue").PublicProps & __VLS_PrettifyLocal<RadioGroupProps<T, VK> & {
88
88
  onChange?: ((event: Event) => any) | undefined;
89
- "onUpdate:modelValue"?: ((value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => any) | undefined;
89
+ "onUpdate:modelValue"?: ((value: import("../types").GetItemValue<T, VK, undefined, import("../types").NestedItem<T>>) => any) | undefined;
90
90
  }> & (typeof globalThis extends {
91
91
  __VLS_PROPS_FALLBACK: infer P;
92
92
  } ? P : {});
93
93
  expose: (exposed: {}) => void;
94
94
  attrs: any;
95
95
  slots: RadioGroupSlots<T>;
96
- emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => void);
96
+ emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, undefined, import("../types").NestedItem<T>>) => void);
97
97
  }>) => import("vue").VNode & {
98
98
  __ctx?: Awaited<typeof __VLS_setup>;
99
99
  };
@@ -7,6 +7,7 @@ import { computed, useId } from "vue";
7
7
  import { RadioGroupRoot, RadioGroupItem as RRadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from "reka-ui";
8
8
  import { reactivePick } from "@vueuse/core";
9
9
  import { useAppConfig } from "#imports";
10
+ import { useComponentUI } from "../composables/useComponentUI";
10
11
  import { useFormField } from "../composables/useFormField";
11
12
  import { get } from "../utils";
12
13
  import { tv } from "../utils/tv";
@@ -34,6 +35,7 @@ const props = defineProps({
34
35
  const emits = defineEmits(["change", "update:modelValue"]);
35
36
  const slots = defineSlots();
36
37
  const appConfig = useAppConfig();
38
+ const uiProp = useComponentUI("radioGroup", props);
37
39
  const rootProps = useForwardPropsEmits(reactivePick(props, "as", "loop", "required"), emits);
38
40
  const { emitFormChange, emitFormInput, color, name, size, id: _id, disabled, ariaAttrs } = useFormField(props, { bind: false });
39
41
  const id = _id.value ?? useId();
@@ -96,11 +98,11 @@ function onUpdate(value) {
96
98
  :name="name"
97
99
  :disabled="disabled"
98
100
  data-slot="root"
99
- :class="b24ui.root({ class: [props.b24ui?.root, props.class] })"
101
+ :class="b24ui.root({ class: [uiProp?.root, props.class] })"
100
102
  @update:model-value="onUpdate"
101
103
  >
102
- <fieldset data-slot="fieldset" :class="b24ui.fieldset({ class: props.b24ui?.fieldset })" v-bind="ariaAttrs">
103
- <legend v-if="legend || !!slots.legend" data-slot="legend" :class="b24ui.legend({ class: props.b24ui?.legend })">
104
+ <fieldset data-slot="fieldset" :class="b24ui.fieldset({ class: uiProp?.fieldset })" v-bind="ariaAttrs">
105
+ <legend v-if="legend || !!slots.legend" data-slot="legend" :class="b24ui.legend({ class: uiProp?.legend })">
104
106
  <slot name="legend">
105
107
  {{ legend }}
106
108
  </slot>
@@ -111,31 +113,31 @@ function onUpdate(value) {
111
113
  v-for="item in normalizedItems"
112
114
  :key="item.value"
113
115
  data-slot="item"
114
- :class="b24ui.item({ class: [props.b24ui?.item, item.b24ui?.item, item.class], disabled: item.disabled || disabled })"
116
+ :class="b24ui.item({ class: [uiProp?.item, item.b24ui?.item, item.class], disabled: item.disabled || disabled })"
115
117
  >
116
- <div data-slot="container" :class="b24ui.container({ class: [props.b24ui?.container, item.b24ui?.container] })">
118
+ <div data-slot="container" :class="b24ui.container({ class: [uiProp?.container, item.b24ui?.container] })">
117
119
  <RRadioGroupItem
118
120
  :id="item.id"
119
121
  :value="item.value"
120
122
  :disabled="item.disabled || disabled"
121
123
  data-slot="base"
122
- :class="b24ui.base({ class: [props.b24ui?.base, item.b24ui?.base], disabled: item.disabled || disabled })"
124
+ :class="b24ui.base({ class: [uiProp?.base, item.b24ui?.base], disabled: item.disabled || disabled })"
123
125
  >
124
- <RadioGroupIndicator data-slot="indicator" :class="b24ui.indicator({ class: [props.b24ui?.indicator, item.b24ui?.indicator] })" />
126
+ <RadioGroupIndicator data-slot="indicator" :class="b24ui.indicator({ class: [uiProp?.indicator, item.b24ui?.indicator] })" />
125
127
  </RRadioGroupItem>
126
128
  </div>
127
129
 
128
130
  <div
129
131
  v-if="item.label || !!slots.label || (item.description || !!slots.description)"
130
132
  data-slot="wrapper"
131
- :class="b24ui.wrapper({ class: [props.b24ui?.wrapper, item.b24ui?.wrapper] })"
133
+ :class="b24ui.wrapper({ class: [uiProp?.wrapper, item.b24ui?.wrapper] })"
132
134
  >
133
135
  <component
134
136
  :is="!variant || variant === 'list' ? Label : 'p'"
135
137
  v-if="item.label || !!slots.label"
136
138
  :for="item.id"
137
139
  data-slot="label"
138
- :class="b24ui.label({ class: [props.b24ui?.label, item.b24ui?.label], disabled: item.disabled || disabled })"
140
+ :class="b24ui.label({ class: [uiProp?.label, item.b24ui?.label], disabled: item.disabled || disabled })"
139
141
  >
140
142
  <slot name="label" :item="item" :model-value="modelValue">
141
143
  {{ item.label }}
@@ -144,7 +146,7 @@ function onUpdate(value) {
144
146
  <p
145
147
  v-if="item.description || !!slots.description"
146
148
  data-slot="description"
147
- :class="b24ui.description({ class: [props.b24ui?.description, item.b24ui?.description], disabled: item.disabled || disabled })"
149
+ :class="b24ui.description({ class: [uiProp?.description, item.b24ui?.description], disabled: item.disabled || disabled })"
148
150
  >
149
151
  <slot name="description" :item="item" :model-value="modelValue">
150
152
  {{ item.description }}
@@ -86,14 +86,14 @@ export default _default;
86
86
  declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
87
87
  props: import("vue").PublicProps & __VLS_PrettifyLocal<RadioGroupProps<T, VK> & {
88
88
  onChange?: ((event: Event) => any) | undefined;
89
- "onUpdate:modelValue"?: ((value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => any) | undefined;
89
+ "onUpdate:modelValue"?: ((value: import("../types").GetItemValue<T, VK, undefined, import("../types").NestedItem<T>>) => any) | undefined;
90
90
  }> & (typeof globalThis extends {
91
91
  __VLS_PROPS_FALLBACK: infer P;
92
92
  } ? P : {});
93
93
  expose: (exposed: {}) => void;
94
94
  attrs: any;
95
95
  slots: RadioGroupSlots<T>;
96
- emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => void);
96
+ emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, undefined, import("../types").NestedItem<T>>) => void);
97
97
  }>) => import("vue").VNode & {
98
98
  __ctx?: Awaited<typeof __VLS_setup>;
99
99
  };
@@ -7,6 +7,7 @@ import { computed } from "vue";
7
7
  import { SliderRoot, SliderRange, SliderTrack, SliderThumb, useForwardPropsEmits } from "reka-ui";
8
8
  import { reactivePick } from "@vueuse/core";
9
9
  import { useAppConfig } from "#imports";
10
+ import { useComponentUI } from "../composables/useComponentUI";
10
11
  import { useFormField } from "../composables/useFormField";
11
12
  import { tv } from "../utils/tv";
12
13
  import B24Tooltip from "./Tooltip.vue";
@@ -30,6 +31,7 @@ const props = defineProps({
30
31
  const emits = defineEmits(["change"]);
31
32
  const modelValue = defineModel({ type: null });
32
33
  const appConfig = useAppConfig();
34
+ const uiProp = useComponentUI("range", props);
33
35
  const rootProps = useForwardPropsEmits(reactivePick(props, "as", "orientation", "min", "max", "step", "minStepsBetweenThumbs", "inverted"), emits);
34
36
  const { id, emitFormChange, emitFormInput, size, color, name, disabled, ariaAttrs } = useFormField(props);
35
37
  const defaultRangeValue = computed(() => {
@@ -71,13 +73,13 @@ function onChange(value) {
71
73
  :name="name"
72
74
  :disabled="disabled"
73
75
  data-slot="root"
74
- :class="b24ui.root({ class: [props.b24ui?.root, props.class] })"
76
+ :class="b24ui.root({ class: [uiProp?.root, props.class] })"
75
77
  :default-value="defaultRangeValue"
76
78
  @update:model-value="emitFormInput()"
77
79
  @value-commit="onChange"
78
80
  >
79
- <SliderTrack data-slot="track" :class="b24ui.track({ class: props.b24ui?.track })">
80
- <SliderRange data-slot="range" :class="b24ui.range({ class: props.b24ui?.range })" />
81
+ <SliderTrack data-slot="track" :class="b24ui.track({ class: uiProp?.track })">
82
+ <SliderRange data-slot="range" :class="b24ui.range({ class: uiProp?.range })" />
81
83
  </SliderTrack>
82
84
 
83
85
  <template v-for="thumb in thumbs" :key="thumb">
@@ -87,9 +89,9 @@ function onChange(value) {
87
89
  disable-closing-trigger
88
90
  v-bind="typeof tooltip === 'object' ? tooltip : {}"
89
91
  >
90
- <SliderThumb data-slot="thumb" :class="b24ui.thumb({ class: props.b24ui?.thumb })" :aria-label="thumbs === 1 ? 'Thumb' : `Thumb ${thumb} of ${thumbs}`" />
92
+ <SliderThumb data-slot="thumb" :class="b24ui.thumb({ class: uiProp?.thumb })" :aria-label="thumbs === 1 ? 'Thumb' : `Thumb ${thumb} of ${thumbs}`" />
91
93
  </B24Tooltip>
92
- <SliderThumb v-else data-slot="thumb" :class="b24ui.thumb({ class: props.b24ui?.thumb })" :aria-label="thumbs === 1 ? 'Thumb' : `Thumb ${thumb} of ${thumbs}`" />
94
+ <SliderThumb v-else data-slot="thumb" :class="b24ui.thumb({ class: uiProp?.thumb })" :aria-label="thumbs === 1 ? 'Thumb' : `Thumb ${thumb} of ${thumbs}`" />
93
95
  </template>
94
96
  </SliderRoot>
95
97
  </template>
@@ -20,6 +20,13 @@ export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOpt
20
20
  * @defaultValue undefined
21
21
  */
22
22
  lanes?: number;
23
+ /**
24
+ * Skip per-item DOM measurement for uniform-height items.
25
+ * When `true`, uses `estimateSize` only — significantly improving performance for uniform items.
26
+ * When `false` (default), measures each item for variable-height layouts (e.g., masonry).
27
+ * @defaultValue false
28
+ */
29
+ skipMeasurement?: boolean;
23
30
  }
24
31
  export type ScrollAreaItem = any;
25
32
  export interface ScrollAreaProps<T extends ScrollAreaItem = ScrollAreaItem> {
@@ -3,11 +3,12 @@ import theme from "#build/b24ui/scroll-area";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, toRef, useTemplateRef, watch } from "vue";
6
+ import { computed, onMounted, onUnmounted, toRef, useTemplateRef, watch } from "vue";
7
7
  import { Primitive } from "reka-ui";
8
8
  import { defu } from "defu";
9
9
  import { useVirtualizer } from "@tanstack/vue-virtual";
10
10
  import { useAppConfig } from "#imports";
11
+ import { useComponentUI } from "../composables/useComponentUI";
11
12
  import { tv } from "../utils/tv";
12
13
  import { useLocale } from "../composables/useLocale";
13
14
  const props = defineProps({
@@ -22,6 +23,7 @@ defineSlots();
22
23
  const emits = defineEmits(["scroll"]);
23
24
  const { dir } = useLocale();
24
25
  const appConfig = useAppConfig();
26
+ const uiProp = useComponentUI("scrollArea", props);
25
27
  const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.scrollArea || {} })({
26
28
  orientation: props.orientation
27
29
  }));
@@ -44,6 +46,9 @@ const lanes = computed(() => {
44
46
  const value = virtualizerProps.value.lanes;
45
47
  return typeof value === "number" ? value : void 0;
46
48
  });
49
+ const skipMeasurement = computed(() => {
50
+ return typeof props.virtualize === "object" && props.virtualize.skipMeasurement === true;
51
+ });
47
52
  const virtualizer = !!props.virtualize && useVirtualizer({
48
53
  ...virtualizerProps.value,
49
54
  get overscan() {
@@ -101,13 +106,32 @@ function getVirtualItemStyle(virtualItem) {
101
106
  transform: isHorizontal.value ? `translateX(${isRtl.value ? -virtualItem.start : virtualItem.start}px)` : `translateY(${virtualItem.start}px)`
102
107
  };
103
108
  }
104
- watch(lanes, () => {
109
+ let resizeObserver = null;
110
+ let rafId = null;
111
+ onMounted(() => {
105
112
  if (virtualizer) {
106
- virtualizer.value.measure();
113
+ const el = rootRef.value?.$el;
114
+ if (el) {
115
+ resizeObserver = new ResizeObserver(() => {
116
+ if (rafId !== null) return;
117
+ rafId = requestAnimationFrame(() => {
118
+ rafId = null;
119
+ virtualizer.value.measure();
120
+ });
121
+ });
122
+ resizeObserver.observe(el);
123
+ }
124
+ }
125
+ });
126
+ onUnmounted(() => {
127
+ if (rafId !== null) {
128
+ cancelAnimationFrame(rafId);
129
+ rafId = null;
107
130
  }
108
- }, { flush: "sync" });
131
+ resizeObserver?.disconnect();
132
+ });
109
133
  function measureElement(el) {
110
- if (el && virtualizer) {
134
+ if (el && virtualizer && !skipMeasurement.value) {
111
135
  const element = el instanceof Element ? el : el.$el;
112
136
  virtualizer.value.measureElement(element);
113
137
  }
@@ -139,12 +163,12 @@ defineExpose({
139
163
  :as="as"
140
164
  data-slot="root"
141
165
  :data-orientation="orientation"
142
- :class="b24ui.root({ class: [props.b24ui?.root, props.class] })"
166
+ :class="b24ui.root({ class: [uiProp?.root, props.class] })"
143
167
  >
144
168
  <template v-if="virtualizer">
145
169
  <div
146
170
  data-slot="viewport"
147
- :class="b24ui.viewport({ class: props.b24ui?.viewport })"
171
+ :class="b24ui.viewport({ class: uiProp?.viewport })"
148
172
  :style="virtualViewportStyle"
149
173
  >
150
174
  <div
@@ -153,7 +177,7 @@ defineExpose({
153
177
  :ref="measureElement"
154
178
  :data-index="virtualItem.index"
155
179
  data-slot="item"
156
- :class="b24ui.item({ class: props.b24ui?.item })"
180
+ :class="b24ui.item({ class: uiProp?.item })"
157
181
  :style="getVirtualItemStyle(virtualItem)"
158
182
  >
159
183
  <slot
@@ -166,13 +190,13 @@ defineExpose({
166
190
  </template>
167
191
 
168
192
  <template v-else>
169
- <div data-slot="viewport" :class="b24ui.viewport({ class: props.b24ui?.viewport })">
193
+ <div data-slot="viewport" :class="b24ui.viewport({ class: uiProp?.viewport })">
170
194
  <template v-if="items?.length">
171
195
  <div
172
196
  v-for="(item, index) in items"
173
197
  :key="getItemKey(item, index)"
174
198
  data-slot="item"
175
- :class="b24ui.item({ class: props.b24ui?.item })"
199
+ :class="b24ui.item({ class: uiProp?.item })"
176
200
  >
177
201
  <slot :item="item" :index="index" />
178
202
  </div>
@@ -20,6 +20,13 @@ export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOpt
20
20
  * @defaultValue undefined
21
21
  */
22
22
  lanes?: number;
23
+ /**
24
+ * Skip per-item DOM measurement for uniform-height items.
25
+ * When `true`, uses `estimateSize` only — significantly improving performance for uniform items.
26
+ * When `false` (default), measures each item for variable-height layouts (e.g., masonry).
27
+ * @defaultValue false
28
+ */
29
+ skipMeasurement?: boolean;
23
30
  }
24
31
  export type ScrollAreaItem = any;
25
32
  export interface ScrollAreaProps<T extends ScrollAreaItem = ScrollAreaItem> {
@@ -3,9 +3,9 @@ import type { AppConfig } from '@nuxt/schema';
3
3
  import theme from '#build/b24ui/select';
4
4
  import type { UseComponentIconsProps } from '../composables/useComponentIcons';
5
5
  import type { AvatarProps, ChipProps, BadgeProps, IconComponent } from '../types';
6
- import type { ModelModifiers } from '../types/input';
6
+ import type { ModelModifiers, ApplyModifiers } from '../types/input';
7
7
  import type { ButtonHTMLAttributes } from '../types/html';
8
- import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
8
+ import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, NestedItem, EmitsToProps } from '../types/utils';
9
9
  import type { ComponentConfig } from '../types/tv';
10
10
  type Select = ComponentConfig<typeof theme, AppConfig, 'select'>;
11
11
  export type SelectValue = AcceptableValue;
@@ -32,7 +32,10 @@ export type SelectItem = SelectValue | {
32
32
  b24ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
33
33
  [key: string]: any;
34
34
  };
35
- export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled' | 'name'> {
35
+ type ExcludeItem = {
36
+ type: 'label' | 'separator';
37
+ };
38
+ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false, Mod extends Omit<ModelModifiers, 'lazy'> = Omit<ModelModifiers, 'lazy'>> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled' | 'name'> {
36
39
  id?: string;
37
40
  /** The placeholder text when the select is empty. */
38
41
  placeholder?: string;
@@ -113,10 +116,10 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
113
116
  descriptionKey?: GetItemKeys<T>;
114
117
  items?: T;
115
118
  /** The value of the Select when initially rendered. Use when you do not need to control the state of the Select. */
116
- defaultValue?: GetModelValue<T, VK, M>;
119
+ defaultValue?: ApplyModifiers<GetModelValue<T, VK, M, ExcludeItem>, Mod>;
117
120
  /** The controlled value of the Select. Can be bind as `v-model`. */
118
- modelValue?: GetModelValue<T, VK, M>;
119
- modelModifiers?: Omit<ModelModifiers<GetModelValue<T, VK, M>>, 'lazy'>;
121
+ modelValue?: ApplyModifiers<GetModelValue<T, VK, M, ExcludeItem>, Mod>;
122
+ modelModifiers?: Mod;
120
123
  /** Whether multiple options can be selected or not. */
121
124
  multiple?: M & boolean;
122
125
  /** Highlight the ring color like a focus state. */
@@ -126,29 +129,30 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
126
129
  class?: any;
127
130
  b24ui?: Select['slots'];
128
131
  }
129
- export type SelectEmits<A extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined, M extends boolean> = Omit<SelectRootEmits, 'update:modelValue'> & {
130
- change: [event: Event];
131
- blur: [event: FocusEvent];
132
- focus: [event: FocusEvent];
133
- } & GetModelValueEmits<A, VK, M>;
132
+ export interface SelectEmits<A extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined, M extends boolean, Mod extends Omit<ModelModifiers, 'lazy'> = Omit<ModelModifiers, 'lazy'>> extends Omit<SelectRootEmits, 'update:modelValue'> {
133
+ 'change': [event: Event];
134
+ 'blur': [event: FocusEvent];
135
+ 'focus': [event: FocusEvent];
136
+ 'update:modelValue': [value: ApplyModifiers<GetModelValue<A, VK, M, ExcludeItem>, Mod>];
137
+ }
134
138
  type SlotProps<T extends SelectItem> = (props: {
135
139
  item: T;
136
140
  index: number;
137
141
  b24ui: Select['b24ui'];
138
142
  }) => any;
139
- export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
143
+ export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, Mod extends Omit<ModelModifiers, 'lazy'> = Omit<ModelModifiers, 'lazy'>, T extends NestedItem<A> = NestedItem<A>> {
140
144
  'leading'(props: {
141
- modelValue?: GetModelValue<A, VK, M>;
145
+ modelValue?: ApplyModifiers<GetModelValue<A, VK, M, ExcludeItem>, Mod>;
142
146
  open: boolean;
143
147
  b24ui: Select['b24ui'];
144
148
  }): any;
145
149
  'default'(props: {
146
- modelValue?: GetModelValue<A, VK, M>;
150
+ modelValue?: ApplyModifiers<GetModelValue<A, VK, M, ExcludeItem>, Mod>;
147
151
  open: boolean;
148
152
  b24ui: Select['b24ui'];
149
153
  }): any;
150
154
  'trailing'(props: {
151
- modelValue?: GetModelValue<A, VK, M>;
155
+ modelValue?: ApplyModifiers<GetModelValue<A, VK, M, ExcludeItem>, Mod>;
152
156
  open: boolean;
153
157
  b24ui: Select['b24ui'];
154
158
  }): any;
@@ -168,13 +172,33 @@ export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested
168
172
  }
169
173
  declare const _default: typeof __VLS_export;
170
174
  export default _default;
171
- declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = "value", M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
172
- props: import("vue").PublicProps & __VLS_PrettifyLocal<SelectProps<T, VK, M> & {
175
+ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = "value", M extends boolean = false, Mod extends Omit<ModelModifiers, "lazy"> = Omit<ModelModifiers, "lazy">>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
176
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<SelectProps<T, VK, M, Mod> & {
173
177
  onBlur?: ((event: FocusEvent) => any) | undefined;
174
178
  onChange?: ((event: Event) => any) | undefined;
175
179
  onFocus?: ((event: FocusEvent) => any) | undefined;
176
180
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
177
- "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
181
+ "onUpdate:modelValue"?: ((value: Mod extends {
182
+ number: true;
183
+ } ? (Mod extends {
184
+ optional: true;
185
+ } ? (Mod extends {
186
+ nullable: true;
187
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
188
+ nullable: true;
189
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) extends infer T_1 ? T_1 extends (Mod extends {
190
+ optional: true;
191
+ } ? (Mod extends {
192
+ nullable: true;
193
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
194
+ nullable: true;
195
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) ? T_1 extends string ? number | T_1 : T_1 : never : never : Mod extends {
196
+ optional: true;
197
+ } ? (Mod extends {
198
+ nullable: true;
199
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
200
+ nullable: true;
201
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) => any) | undefined;
178
202
  }> & (typeof globalThis extends {
179
203
  __VLS_PROPS_FALLBACK: infer P;
180
204
  } ? P : {});
@@ -183,8 +207,28 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends Get
183
207
  viewportRef: Readonly<import("vue").Ref<HTMLDivElement | null, HTMLDivElement | null>>;
184
208
  }>) => void;
185
209
  attrs: any;
186
- slots: SelectSlots<T, VK, M, NestedItem<T>>;
187
- emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void);
210
+ slots: SelectSlots<T, VK, M, Mod, NestedItem<T>>;
211
+ emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: Mod extends {
212
+ number: true;
213
+ } ? (Mod extends {
214
+ optional: true;
215
+ } ? (Mod extends {
216
+ nullable: true;
217
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
218
+ nullable: true;
219
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) extends infer T_1 ? T_1 extends (Mod extends {
220
+ optional: true;
221
+ } ? (Mod extends {
222
+ nullable: true;
223
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
224
+ nullable: true;
225
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) ? T_1 extends string ? number | T_1 : T_1 : never : never : Mod extends {
226
+ optional: true;
227
+ } ? (Mod extends {
228
+ nullable: true;
229
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
230
+ nullable: true;
231
+ } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) => void);
188
232
  }>) => import("vue").VNode & {
189
233
  __ctx?: Awaited<typeof __VLS_setup>;
190
234
  };