bitboss-ui 3.0.0-beta.2 → 3.0.0-beta.21

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 (350) hide show
  1. package/README.md +72 -33
  2. package/dist/ai/BbAccordion.md +3 -3
  3. package/dist/ai/BbAlert.md +9 -5
  4. package/dist/ai/BbAsterisk.md +17 -0
  5. package/dist/ai/BbAvatar.md +12 -3
  6. package/dist/ai/BbBadge.md +15 -10
  7. package/dist/ai/BbBadgeButton.md +16 -16
  8. package/dist/ai/BbBaseButton.md +16 -16
  9. package/dist/ai/BbBaseCheckbox.md +8 -8
  10. package/dist/ai/BbBaseCheckboxGroup.md +13 -13
  11. package/dist/ai/BbBaseCheckboxIcon.md +26 -9
  12. package/dist/ai/BbBaseColorInput.md +11 -11
  13. package/dist/ai/BbBaseDatePicker.md +6 -6
  14. package/dist/ai/BbBaseDatePickerInput.md +15 -15
  15. package/dist/ai/BbBaseInputContainer.md +12 -12
  16. package/dist/ai/BbBaseNumberInput.md +8 -8
  17. package/dist/ai/BbBaseRadio.md +5 -5
  18. package/dist/ai/BbBaseRadioGroup.md +7 -7
  19. package/dist/ai/BbBaseRadioIcon.md +25 -9
  20. package/dist/ai/BbBaseRating.md +5 -5
  21. package/dist/ai/BbBaseSelect.md +22 -21
  22. package/dist/ai/BbBaseSlider.md +9 -9
  23. package/dist/ai/BbBaseSwitch.md +8 -8
  24. package/dist/ai/BbBaseSwitchGroup.md +13 -13
  25. package/dist/ai/BbBaseSwitchIcon.md +28 -10
  26. package/dist/ai/BbBaseTag.md +10 -10
  27. package/dist/ai/BbBaseTextInput.md +9 -9
  28. package/dist/ai/BbBaseTextarea.md +9 -9
  29. package/dist/ai/BbBaseTimePickerInput.md +13 -13
  30. package/dist/ai/BbBreadcrumbs.md +2 -2
  31. package/dist/ai/BbButton.md +15 -15
  32. package/dist/ai/BbCheckbox.md +18 -17
  33. package/dist/ai/BbCheckboxGroup.md +15 -14
  34. package/dist/ai/BbCollapsible.md +11 -9
  35. package/dist/ai/BbColorInput.md +15 -15
  36. package/dist/ai/BbColorPalette.md +12 -6
  37. package/dist/ai/BbConfirm.md +12 -5
  38. package/dist/ai/BbDatePicker.md +13 -13
  39. package/dist/ai/BbDatePickerInput.md +20 -20
  40. package/dist/ai/BbDialog.md +78 -12
  41. package/dist/ai/BbDropdown.md +132 -22
  42. package/dist/ai/BbDropdownButton.md +12 -12
  43. package/dist/ai/BbDropdownGroup.md +1 -1
  44. package/dist/ai/BbDropzone.md +4 -4
  45. package/dist/ai/BbForm.md +49 -14
  46. package/dist/ai/BbIcon.md +6 -0
  47. package/dist/ai/BbIndicator.md +5 -5
  48. package/dist/ai/BbNumberInput.md +11 -11
  49. package/dist/ai/BbOffCanvas.md +90 -20
  50. package/dist/ai/BbPagination.md +3 -3
  51. package/dist/ai/BbPopover.md +32 -17
  52. package/dist/ai/BbProgress.md +7 -4
  53. package/dist/ai/BbRadio.md +16 -15
  54. package/dist/ai/BbRadioGroup.md +20 -17
  55. package/dist/ai/BbRating.md +11 -11
  56. package/dist/ai/BbSelect.md +138 -37
  57. package/dist/ai/BbSelectPopover.md +40 -41
  58. package/dist/ai/BbSlider.md +37 -22
  59. package/dist/ai/BbSmoothHeight.md +1 -1
  60. package/dist/ai/BbSwitch.md +25 -10
  61. package/dist/ai/BbSwitchGroup.md +17 -14
  62. package/dist/ai/BbTable.md +920 -109
  63. package/dist/ai/BbTabs.md +28 -14
  64. package/dist/ai/BbTabsList.md +1 -1
  65. package/dist/ai/BbTabsPanes.md +1 -1
  66. package/dist/ai/BbTabsRoot.md +10 -10
  67. package/dist/ai/BbTag.md +14 -14
  68. package/dist/ai/BbTextInput.md +16 -15
  69. package/dist/ai/BbTextarea.md +13 -13
  70. package/dist/ai/BbTimePicker.md +10 -10
  71. package/dist/ai/BbTimePickerInput.md +17 -17
  72. package/dist/ai/BbToast.md +1 -1
  73. package/dist/ai/BbToastPortal.md +1 -1
  74. package/dist/ai/BbTooltip.md +12 -10
  75. package/dist/ai/BbTree.md +1 -1
  76. package/dist/ai/ChipsBox.md +1 -1
  77. package/dist/ai/CommonInputWrapper.md +10 -10
  78. package/dist/ai/CommonPopover.md +6 -6
  79. package/dist/ai/FlatListBox.md +5 -5
  80. package/dist/ai/GroupedListBox.md +5 -5
  81. package/dist/ai/ListBox.md +4 -4
  82. package/dist/ai/OptionsContainer.md +4 -4
  83. package/dist/ai/changelog.json +128 -2
  84. package/dist/ai/components.json +917 -100
  85. package/dist/ai/composables/useBbConfig.md +72 -11
  86. package/dist/ai/composables/useConfirm.md +5 -3
  87. package/dist/ai/guides/ai-router.md +9 -4
  88. package/dist/ai/guides/component-picker.md +18 -18
  89. package/dist/ai/guides/design-language.md +14 -14
  90. package/dist/ai/guides/design-tokens.md +25 -18
  91. package/dist/ai/guides/fetch-items-playbook.md +1 -1
  92. package/dist/ai/guides/icons-policy.md +11 -5
  93. package/dist/ai/guides/installation-and-plugin-setup.md +85 -23
  94. package/dist/ai/guides/migration/components/bb-checkbox-group.md +30 -0
  95. package/dist/ai/guides/migration/components/bb-checkbox.md +37 -3
  96. package/dist/ai/guides/migration/components/bb-collapsible.md +5 -5
  97. package/dist/ai/guides/migration/components/bb-dialog.md +62 -34
  98. package/dist/ai/guides/migration/components/bb-offcanvas.md +29 -13
  99. package/dist/ai/guides/migration/components/bb-rating.md +8 -2
  100. package/dist/ai/guides/migration/components/bb-select.md +5 -2
  101. package/dist/ai/guides/migration/components/bb-table.md +560 -28
  102. package/dist/ai/guides/migration/components/bb-text-input.md +6 -6
  103. package/dist/ai/guides/migration/v2-to-v3.md +260 -89
  104. package/dist/ai/guides/ssr-prefill.md +120 -0
  105. package/dist/ai/index.md +10 -9
  106. package/dist/ai/recipes/inertia/approvals-inbox.md +0 -1
  107. package/dist/ai/recipes/inertia/inline-edit-workspace.md +0 -1
  108. package/dist/ai/recipes/inertia/layout-scaffold.md +5 -1
  109. package/dist/ai/recipes/inertia/ownership-atlas.md +49 -29
  110. package/dist/ai/recipes/inertia/record-form.md +0 -1
  111. package/dist/ai/recipes/inertia/records-workspace.md +26 -8
  112. package/dist/ai/recipes/inertia/upload-center.md +0 -1
  113. package/dist/ai/recipes/nuxt/approvals-inbox.md +0 -1
  114. package/dist/ai/recipes/nuxt/inline-edit-workspace.md +0 -1
  115. package/dist/ai/recipes/nuxt/layout-scaffold.md +5 -1
  116. package/dist/ai/recipes/nuxt/record-form.md +0 -1
  117. package/dist/ai/recipes/nuxt/records-workspace.md +26 -8
  118. package/dist/ai/recipes/nuxt/upload-center.md +0 -1
  119. package/dist/ai/recipes/vue/approvals-inbox.md +0 -1
  120. package/dist/ai/recipes/vue/inline-edit-workspace.md +0 -1
  121. package/dist/ai/recipes/vue/layout-scaffold.md +5 -1
  122. package/dist/ai/recipes/vue/records-workspace.md +26 -8
  123. package/dist/ai/recipes/vue/upload-center.md +0 -1
  124. package/dist/ai/source/BbAlert.md +60 -2
  125. package/dist/ai/source/BbAvatar.md +3 -3
  126. package/dist/ai/source/BbBadge.md +60 -15
  127. package/dist/ai/source/BbBadgeButton.md +8 -2
  128. package/dist/ai/source/BbBaseButton.md +3 -1
  129. package/dist/ai/source/BbBaseCheckboxGroup.md +6 -2
  130. package/dist/ai/source/BbBaseDatePicker.md +3 -1
  131. package/dist/ai/source/BbBaseDatePickerInput.md +5 -1
  132. package/dist/ai/source/BbBaseInputContainer.md +52 -1
  133. package/dist/ai/source/BbBaseRadioGroup.md +4 -0
  134. package/dist/ai/source/BbBaseRating.md +3 -1
  135. package/dist/ai/source/BbBaseSelect.md +71 -16
  136. package/dist/ai/source/BbBaseSwitchGroup.md +4 -0
  137. package/dist/ai/source/BbBaseTimePickerInput.md +5 -1
  138. package/dist/ai/source/BbBreadcrumbs.md +31 -0
  139. package/dist/ai/source/BbButton.md +51 -24
  140. package/dist/ai/source/BbCheckbox.md +15 -1
  141. package/dist/ai/source/BbCheckboxGroup.md +2 -1
  142. package/dist/ai/source/BbCollapsible.md +7 -1
  143. package/dist/ai/source/BbColorInput.md +3 -4
  144. package/dist/ai/source/BbColorPalette.md +3 -4
  145. package/dist/ai/source/BbDatePicker.md +5 -1
  146. package/dist/ai/source/BbDatePickerInput.md +5 -1
  147. package/dist/ai/source/BbDialog.md +175 -19
  148. package/dist/ai/source/BbDropdown.md +376 -69
  149. package/dist/ai/source/BbDropdownGroup.md +330 -59
  150. package/dist/ai/source/BbForm.md +93 -5
  151. package/dist/ai/source/BbIcon.md +46 -36
  152. package/dist/ai/source/BbNumberInput.md +3 -4
  153. package/dist/ai/source/BbOffCanvas.md +474 -194
  154. package/dist/ai/source/BbPopover.md +24 -17
  155. package/dist/ai/source/BbProgress.md +2 -2
  156. package/dist/ai/source/BbRadio.md +15 -1
  157. package/dist/ai/source/BbRadioGroup.md +3 -1
  158. package/dist/ai/source/BbSelect.md +50 -2
  159. package/dist/ai/source/BbSelectPopover.md +171 -23
  160. package/dist/ai/source/BbSlider.md +3 -4
  161. package/dist/ai/source/BbSwitch.md +15 -1
  162. package/dist/ai/source/BbSwitchGroup.md +8 -5
  163. package/dist/ai/source/BbTable.md +5092 -1446
  164. package/dist/ai/source/BbTabs.md +6 -7
  165. package/dist/ai/source/BbTabsList.md +6 -7
  166. package/dist/ai/source/BbTabsPanes.md +6 -7
  167. package/dist/ai/source/BbTabsRoot.md +6 -7
  168. package/dist/ai/source/BbTag.md +3 -4
  169. package/dist/ai/source/BbTextInput.md +3 -4
  170. package/dist/ai/source/BbTextarea.md +3 -4
  171. package/dist/ai/source/BbTimePicker.md +4 -1
  172. package/dist/ai/source/BbTimePickerInput.md +5 -1
  173. package/dist/ai/source/BbToast.md +3 -1
  174. package/dist/ai/source/BbTooltip.md +5 -1
  175. package/dist/ai/source/CommonInputWrapper.md +4 -0
  176. package/dist/ai/source/CommonPopover.md +6 -0
  177. package/dist/ai/source/FlatListBox.md +11 -5
  178. package/dist/ai/source/GroupedListBox.md +7 -5
  179. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +4 -4
  180. package/dist/components/BbAlert/types.d.ts +10 -1
  181. package/dist/components/BbAvatar/BbAvatar.vue.d.ts +1 -1
  182. package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +33 -33
  183. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +22 -16
  184. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +36 -15
  185. package/dist/components/BbBadge/badgeButtonContext.d.ts +21 -8
  186. package/dist/components/BbBadge/types.d.ts +8 -2
  187. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +47 -47
  188. package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +14 -14
  189. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +30 -28
  190. package/dist/components/BbBaseCheckboxGroup/types.d.ts +2 -2
  191. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +167 -167
  192. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +9 -9
  193. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +78 -78
  194. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +64 -64
  195. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +1 -1
  196. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +138 -138
  197. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +2 -2
  198. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +24 -22
  199. package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +40 -40
  200. package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +74 -65
  201. package/dist/components/BbBaseSelect/types.d.ts +22 -0
  202. package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +5 -5
  203. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +30 -28
  204. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +1 -1
  205. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +104 -104
  206. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +35 -35
  207. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +85 -81
  208. package/dist/components/BbCheckboxGroup/types.d.ts +2 -1
  209. package/dist/components/BbCollapsible/types.d.ts +7 -1
  210. package/dist/components/BbColorInput/BbColorInput.vue.d.ts +1 -1
  211. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +18 -18
  212. package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +2 -2
  213. package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +50 -50
  214. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +17 -17
  215. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
  216. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +100 -100
  217. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +21 -21
  218. package/dist/components/BbDialog/BbDialog.vue.d.ts +1 -1
  219. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +133 -107
  220. package/dist/components/BbDialog/types.d.ts +29 -2
  221. package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +2 -0
  222. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +99 -100
  223. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +2 -2
  224. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +208 -201
  225. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +225 -208
  226. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +21 -21
  227. package/dist/components/BbDropdown/types.d.ts +20 -5
  228. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +5 -5
  229. package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +46 -46
  230. package/dist/components/BbIcon/iconCache.d.ts +33 -0
  231. package/dist/components/BbIcon/iconCache.js +17 -0
  232. package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +1 -1
  233. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +15 -15
  234. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
  235. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +254 -208
  236. package/dist/components/BbOffCanvas/types.d.ts +30 -5
  237. package/dist/components/BbPagination/BbPagination.vue.d.ts +1 -1
  238. package/dist/components/BbPopover/BbPopover.vue.d.ts +2 -2
  239. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +149 -146
  240. package/dist/components/BbPopover/types.d.ts +3 -2
  241. package/dist/components/BbRadioGroup/types.d.ts +3 -1
  242. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +27 -23
  243. package/dist/components/BbSelect/types.d.ts +32 -0
  244. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +221 -213
  245. package/dist/components/BbSlider/BbSlider.vue.d.ts +1 -1
  246. package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +20 -20
  247. package/dist/components/BbTable/BbTable.vue.d.ts +10 -4
  248. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1433 -600
  249. package/dist/components/BbTable/BbTableDataRow.d.ts +162 -0
  250. package/dist/components/BbTable/BbTableDataRow.js +136 -0
  251. package/dist/components/BbTable/BbTableExpandRow.d.ts +73 -0
  252. package/dist/components/BbTable/BbTableExpandRow.js +52 -0
  253. package/dist/components/BbTable/types.d.ts +324 -111
  254. package/dist/components/BbTable/utils.d.ts +92 -4
  255. package/dist/components/BbTable/utils.js +71 -36
  256. package/dist/components/BbTabs/types.d.ts +0 -8
  257. package/dist/components/BbTag/BbTag.vue.d.ts +1 -1
  258. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +18 -18
  259. package/dist/components/BbTextInput/BbTextInput.vue.d.ts +1 -1
  260. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +18 -18
  261. package/dist/components/BbTextarea/BbTextarea.vue.d.ts +1 -1
  262. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +54 -54
  263. package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +1 -1
  264. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +80 -80
  265. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +61 -61
  266. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +17 -17
  267. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +13 -13
  268. package/dist/components/BbTooltip/types.d.ts +5 -1
  269. package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +17 -17
  270. package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +5 -5
  271. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +2 -1
  272. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +83 -83
  273. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +56 -56
  274. package/dist/composables/useBaseOptions.js +30 -20
  275. package/dist/composables/useBbConfig.d.ts +27 -6
  276. package/dist/composables/useBbConfig.js +8 -2
  277. package/dist/composables/useConfig.d.ts +59 -0
  278. package/dist/composables/useConfig.js +9 -0
  279. package/dist/composables/useItemsGetter.d.ts +11 -0
  280. package/dist/composables/useItemsGetter.js +44 -18
  281. package/dist/composables/useLocale.js +10 -7
  282. package/dist/composables/useMobile.js +5 -5
  283. package/dist/composables/usePrefill.d.ts +21 -2
  284. package/dist/composables/usePrefill.js +25 -19
  285. package/dist/composables/useSsrState.d.ts +20 -0
  286. package/dist/composables/useSsrState.js +13 -0
  287. package/dist/composables/useTableWidthContext.d.ts +24 -4
  288. package/dist/composables/useTableWidthContext.js +31 -28
  289. package/dist/composables/useToast.js +5 -5
  290. package/dist/deprecation/ai-deprecations.json.d.ts +121 -11
  291. package/dist/deprecation/ai-deprecations.json.js +1 -1
  292. package/dist/directives/bbDropdown.d.ts +15 -4
  293. package/dist/directives/bbDropdown.js +31 -9
  294. package/dist/directives/createPopoverDirective.d.ts +62 -0
  295. package/dist/directives/createPopoverDirective.js +63 -23
  296. package/dist/i18n/locales/cs.json +4 -1
  297. package/dist/i18n/locales/da.json +4 -1
  298. package/dist/i18n/locales/de.json +4 -1
  299. package/dist/i18n/locales/el.json +4 -1
  300. package/dist/i18n/locales/en.json +4 -1
  301. package/dist/i18n/locales/es.json +4 -1
  302. package/dist/i18n/locales/fi.json +4 -1
  303. package/dist/i18n/locales/fr.json +4 -1
  304. package/dist/i18n/locales/hu.json +4 -1
  305. package/dist/i18n/locales/it.json +4 -1
  306. package/dist/i18n/locales/ja.json +4 -1
  307. package/dist/i18n/locales/ko.json +4 -1
  308. package/dist/i18n/locales/nb.json +4 -1
  309. package/dist/i18n/locales/nl.json +4 -1
  310. package/dist/i18n/locales/pl.json +4 -1
  311. package/dist/i18n/locales/pt.json +4 -1
  312. package/dist/i18n/locales/ro.json +4 -1
  313. package/dist/i18n/locales/ru.json +4 -1
  314. package/dist/i18n/locales/sv.json +4 -1
  315. package/dist/i18n/locales/tr.json +4 -1
  316. package/dist/i18n/locales/uk.json +4 -1
  317. package/dist/i18n/locales/zh-cn.json +4 -1
  318. package/dist/index.d.ts +7 -2
  319. package/dist/index.js +69 -67
  320. package/dist/llms-full.txt +3997 -1458
  321. package/dist/llms-medium.txt +140 -73
  322. package/dist/llms.txt +7 -6
  323. package/dist/locale-blueprint.json +4 -1
  324. package/dist/nuxt-auto-imports.d.ts +100 -0
  325. package/dist/nuxt-auto-imports.js +55 -0
  326. package/dist/nuxt-module.d.ts +22 -1
  327. package/dist/nuxt.js +22 -8
  328. package/dist/plugin.d.ts +10 -1
  329. package/dist/plugin.js +20 -19
  330. package/dist/runtime/nuxt-plugin.js +28 -21
  331. package/dist/styles.css +1 -1
  332. package/dist/utilities/misc/listboxMetrics.d.ts +3 -3
  333. package/dist/utilities/misc/listboxMetrics.js +2 -2
  334. package/dist/utilities/misc/ssrStateInjectionKey.d.ts +42 -0
  335. package/dist/utilities/misc/ssrStateInjectionKey.js +4 -0
  336. package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +45 -27
  337. package/dist/validated/BbSelect.vue.d.ts +2 -0
  338. package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -0
  339. package/dist/validated/useValidatedField.js +25 -23
  340. package/dist/vite.js +7 -3
  341. package/llms.txt +8 -7
  342. package/package.json +2 -2
  343. package/scripts/lib/eslint-plugin.d.ts +19 -1
  344. package/scripts/lib/eslint-plugin.mjs +155 -14
  345. package/scripts/lib/html-attributes.mjs +91 -0
  346. package/scripts/lib/validate-bb-markup.mjs +59 -11
  347. package/dist/assets/svgs/sort.svg_raw.js +0 -4
  348. package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +0 -3
  349. package/dist/components/BbBadge/BadgeAppendIcon.vue.js +0 -5
  350. package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +0 -22
@@ -1,28 +1,34 @@
1
- import { useId as e } from "../../composables/useId.js";
2
- import { useUntil as t } from "../../composables/useUntil.js";
3
- import { removedPropsFor as ee } from "../../deprecation/removedProps.js";
4
- import { warnRemovedAttrs as te } from "../../utilities/functions/warnRemovedAttrs.js";
1
+ import { useConfig as e } from "../../composables/useConfig.js";
2
+ import { useId as t } from "../../composables/useId.js";
3
+ import { useUntil as ee } from "../../composables/useUntil.js";
4
+ import { removedPropsFor as te } from "../../deprecation/removedProps.js";
5
+ import { useLogger as ne } from "../../composables/useLogger.js";
6
+ import { warnRemovedAttrs as re } from "../../utilities/functions/warnRemovedAttrs.js";
5
7
  import { transitions as n } from "../../utilities/misc/transitions.js";
6
- import { overlaySurfaceIsolation as ne } from "../../utils/overlaySurfaceIsolation.js";
7
- import { isTopEscapeEntry as re, pushEscapeEntry as ie, removeEscapeEntry as ae } from "../../utils/overlayEscapeStack.js";
8
- import { useMobile as oe } from "../../composables/useMobile.js";
9
- import { wait as se } from "../../utilities/functions/wait.js";
10
- import { parseSize as ce } from "../../utilities/functions/parseSize.js";
11
- import { useLocale as le } from "../../composables/useLocale.js";
12
- import { useBreakpoint as ue } from "../../composables/useBreakpoint.js";
8
+ import { overlaySurfaceIsolation as ie } from "../../utils/overlaySurfaceIsolation.js";
9
+ import { isTopEscapeEntry as ae, pushEscapeEntry as oe, removeEscapeEntry as se } from "../../utils/overlayEscapeStack.js";
10
+ import { useMobile as ce } from "../../composables/useMobile.js";
11
+ import { wait as le } from "../../utilities/functions/wait.js";
12
+ import { useLocale as ue } from "../../composables/useLocale.js";
13
+ import { parseSize as de } from "../../utilities/functions/parseSize.js";
14
+ import { useBreakpoint as fe } from "../../composables/useBreakpoint.js";
13
15
  import r from "../CloseIcon/CloseButton.vue.js";
14
- import { registerTopLayerHost as de } from "../../composables/useTopLayer.js";
15
- import fe from "../BbOffCanvas/BbOffCanvas.vue.js";
16
- import { useDialogStack as pe } from "./useDialogStack.js";
17
- import { config as i } from "virtual:bitboss-ui/config";
18
- import { Fragment as me, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createSlots as he, createTextVNode as ge, defineComponent as u, guardReactiveProps as d, mergeModels as f, mergeProps as p, nextTick as _e, normalizeProps as m, onBeforeUnmount as ve, onMounted as ye, openBlock as h, ref as g, renderSlot as _, toDisplayString as be, toHandlers as xe, unref as v, useModel as Se, watch as y, withCtx as b, withModifiers as Ce } from "vue";
16
+ import { registerTopLayerHost as pe } from "../../composables/useTopLayer.js";
17
+ import me from "../BbOffCanvas/BbOffCanvas.vue.js";
18
+ import { useDialogStack as he } from "./useDialogStack.js";
19
+ import { Fragment as ge, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as _e, createTextVNode as l, defineComponent as u, guardReactiveProps as d, mergeModels as f, mergeProps as p, nextTick as m, normalizeProps as h, onBeforeUnmount as ve, onMounted as ye, openBlock as g, ref as _, renderSlot as v, toDisplayString as be, toHandlers as xe, unref as y, useModel as Se, useSlots as Ce, watch as b, withCtx as x, withModifiers as we } from "vue";
19
20
  //#region src/components/BbDialog/BbDialog.vue?vue&type=script&setup=true&lang.ts
20
- var we = ["aria-labelledby", "inert"], Te = {
21
+ var Te = [
22
+ "aria-describedby",
23
+ "aria-labelledby",
24
+ "inert"
25
+ ], Ee = {
21
26
  key: 0,
22
27
  class: "bb-dialog__header"
23
- }, Ee = { class: "bb-dialog__body scrollbar-border" }, De = { class: "bb-dialog__body-content" }, Oe = { class: "bb-dialog__footer" }, x = 4, S = /*@__PURE__*/ u({
28
+ }, De = { class: "bb-dialog__body scrollbar-border" }, Oe = { class: "bb-dialog__body-content" }, ke = { class: "bb-dialog__footer" }, Ae = 4, S = /*@__PURE__*/ u({
24
29
  __name: "BbDialog",
25
30
  props: /*@__PURE__*/ f({
31
+ description: {},
26
32
  disabled: { type: Boolean },
27
33
  eager: { type: Boolean },
28
34
  focusTarget: {},
@@ -52,13 +58,14 @@ var we = ["aria-labelledby", "inert"], Te = {
52
58
  "hidden"
53
59
  ], ["update:modelValue"]),
54
60
  setup(n, { emit: u }) {
55
- let f = Se(n, "modelValue"), S = n, C = u;
56
- process.env.NODE_ENV !== "production" && te("BbDialog", ee("BbDialog"));
57
- let { t: w } = le(), { isMobile: T } = oe(), { resolve: ke } = ue(), E = () => (S.adaptive ?? i.adaptive) && T.value ? "canvas" : "dialog", D = g(E());
58
- y([() => S.adaptive, T], () => {
59
- f.value || (D.value = E());
61
+ let f = Se(n, "modelValue"), S = n, C = u, w = Ce(), T = e();
62
+ process.env.NODE_ENV !== "production" && re("BbDialog", te("BbDialog"));
63
+ let { t: E } = ue(), { isMobile: D } = ce(), { resolve: je } = fe(), O = () => (S.adaptive ?? T.adaptive) && D.value ? "canvas" : "dialog", k = _(O());
64
+ b([() => S.adaptive, D], () => {
65
+ f.value || (k.value = O());
60
66
  });
61
- let Ae = a(() => ({
67
+ let Me = i(() => ({
68
+ description: S.description,
62
69
  disabled: S.disabled,
63
70
  eager: S.eager,
64
71
  focusTarget: S.focusTarget,
@@ -72,140 +79,159 @@ var we = ["aria-labelledby", "inert"], Te = {
72
79
  draggable: !0,
73
80
  size: "auto",
74
81
  ...S.offCanvasProps
75
- })), O = g(null), k = `title_${e().id.value}`, A = a(() => !!S.title), j = t(() => f.value || S.eager, { initialValue: f.value || S.eager }), M = a(() => S.fullscreen === !0 || S.fullscreen === "mobile" && T.value), N = () => typeof document < "u", P = a(() => !!(S.disabled || S.persistent)), F = g(!1), I = g(null), L = () => {
76
- I.value = null;
77
- }, je = (e) => {
78
- I.value = {
82
+ })), A = _(null), j = `title_${t().id.value}`, M = `desc_${t().id.value}`, N = () => !!S.description || !!w.description, P = () => !!S.title || !!w.title, F = () => P() || N(), I = ee(() => f.value || S.eager, { initialValue: f.value || S.eager }), L = i(() => S.fullscreen === !0 || S.fullscreen === "mobile" && D.value), R = () => typeof document < "u", Ne = i(() => !!(S.disabled || S.persistent)), z = _(!1), B = _(null), V = () => {
83
+ B.value = null;
84
+ }, Pe = (e) => {
85
+ B.value = {
79
86
  startX: e.clientX,
80
87
  startY: e.clientY,
81
88
  startedOnBackdrop: e.target === e.currentTarget
82
89
  };
83
- }, Me = (e) => {
84
- let t = I.value;
85
- L(), !(t && !t.startedOnBackdrop) && (t && (Math.abs(e.clientX - t.startX) > x || Math.abs(e.clientY - t.startY) > x) || Z(e));
86
- }, R, z = (e) => {
87
- clearTimeout(R), F.value = !0, R = setTimeout(() => {
88
- F.value = !1;
90
+ }, Fe = (e) => {
91
+ let t = B.value;
92
+ V(), !(t && !t.startedOnBackdrop) && (t && (Math.abs(e.clientX - t.startX) > Ae || Math.abs(e.clientY - t.startY) > Ae) || Ge(e));
93
+ }, H, U = (e) => {
94
+ clearTimeout(H), z.value = !0, H = setTimeout(() => {
95
+ z.value = !1;
89
96
  }, e);
90
- }, B = Symbol("bb-dialog-escape"), Ne = () => {
91
- ie(B), N() && document.addEventListener("keydown", H, { capture: !0 });
92
- }, V = () => {
93
- ae(B), N() && document.removeEventListener("keydown", H, { capture: !0 });
94
- }, Pe = () => {
97
+ }, W = Symbol("bb-dialog-escape"), Ie = () => {
98
+ oe(W), R() && document.addEventListener("keydown", K, { capture: !0 });
99
+ }, G = () => {
100
+ se(W), R() && document.removeEventListener("keydown", K, { capture: !0 });
101
+ }, Le = () => {
95
102
  if (!S.focusTarget) return;
96
- let e = O.value?.querySelector(S.focusTarget);
103
+ let e = A.value?.querySelector(S.focusTarget);
97
104
  e instanceof HTMLElement && e.focus();
98
- }, H = (e) => {
99
- if (e.key === "Escape" && !J.value && re(B) && (e.stopImmediatePropagation(), P.value)) return e.preventDefault(), z(200), !1;
100
- }, U = g(0), W = g(!1), G = Symbol("bb-dialog"), { stacks: Fe, enter: Ie, leave: Le } = pe(), K = () => {
101
- S.stack && Ie(S.stack, G);
102
- }, q = () => {
103
- S.stack && Le(S.stack, G);
104
- }, J = a(() => {
105
+ }, K = (e) => {
106
+ if (e.key === "Escape" && !Z.value && ae(W) && (e.stopImmediatePropagation(), Ne.value)) return e.preventDefault(), U(200), !1;
107
+ }, q = _(0), J = _(!1), Y = Symbol("bb-dialog"), { stacks: Re, enter: ze, leave: Be } = he(), Ve = () => {
108
+ S.stack && ze(S.stack, Y);
109
+ }, X = () => {
110
+ S.stack && Be(S.stack, Y);
111
+ }, Z = i(() => {
105
112
  if (!S.stack) return !1;
106
- let e = Fe.value[S.stack];
107
- return !e || !e.includes(G) ? !1 : e[e.length - 1] !== G;
108
- }), Y = null, X = async (e) => {
109
- if (e) C("show"), U.value++, N() && !document.documentElement.style.getPropertyValue("--scrollbar-width") && document.documentElement.style.setProperty("--scrollbar-width", `${ze()}px`), Ne(), await _e(), W.value = !0, O.value && !O.value.open && O.value.showModal(), K(), O.value && (Y = de(O.value)), Pe(), C("shown");
113
+ let e = Re.value[S.stack];
114
+ return !e || !e.includes(Y) ? !1 : e[e.length - 1] !== Y;
115
+ }), Q = null, He = async (e) => {
116
+ if (e) C("show"), q.value++, R() && !document.documentElement.style.getPropertyValue("--scrollbar-width") && document.documentElement.style.setProperty("--scrollbar-width", `${qe()}px`), Ie(), await m(), J.value = !0, A.value && !A.value.open && A.value.showModal(), Ve(), A.value && (Q = pe(A.value)), Le(), C("shown");
110
117
  else {
111
118
  C("hide");
112
- let e = U.value;
113
- if (await se(S.transitionDuration), e !== U.value) return;
114
- V(), q(), O.value?.close(), Y?.(), Y = null, W.value = !1, C("hidden");
119
+ let e = q.value;
120
+ if (await le(S.transitionDuration), e !== q.value) return;
121
+ G(), X(), A.value?.close(), Q?.(), Q = null, J.value = !1, C("hidden");
115
122
  }
123
+ }, Ue = () => {
124
+ process.env.NODE_ENV !== "production" && (!w.header || S.title || m(() => {
125
+ !A.value || document.getElementById(j) || ne().warn(`BbDialog: the #header slot does not contain an element with id="${j}", so aria-labelledby points at nothing and the dialog announces as unnamed. Bind the slot's \`titleId\` to your heading: <template #header="{ titleId }"><h2 :id="titleId">…</h2></template>.`);
126
+ }));
116
127
  };
117
- y(f, (e) => {
118
- e && (D.value = E()), D.value === "dialog" && X(e);
128
+ b(f, (e) => {
129
+ e && (k.value = O()), k.value === "dialog" && He(e);
119
130
  }), ye(() => {
120
- f.value && D.value === "dialog" && X(!0);
131
+ f.value && k.value === "dialog" && He(!0), Ue();
121
132
  }), ve(() => {
122
- clearTimeout(R), V(), q(), Y?.(), Y = null;
133
+ clearTimeout(H), G(), X(), Q?.(), Q = null;
123
134
  });
124
- let Re = a(() => M.value ? "100%" : ce(ke(S.size), i.dialogDefaultSizes)), Z = (e) => {
125
- if (e.preventDefault(), P.value) return z(300), !1;
126
- Q();
127
- }, Q = () => {
128
- f.value = !1;
135
+ let We = i(() => L.value ? "100%" : de(je(S.size), T.dialogDefaultSizes)), Ge = (e) => {
136
+ if (e.preventDefault(), Ne.value) return U(300), !1;
137
+ $();
129
138
  }, $ = () => {
139
+ f.value = !1;
140
+ }, Ke = () => {
130
141
  if (S.disabled) {
131
- z(300);
142
+ U(300);
132
143
  return;
133
144
  }
134
- Q();
135
- }, ze = () => N() ? window.innerWidth - document.documentElement.clientWidth : 0;
136
- return (e, t) => D.value === "canvas" ? (h(), o(fe, p({
145
+ $();
146
+ }, qe = () => R() ? window.innerWidth - document.documentElement.clientWidth : 0;
147
+ return (e, t) => k.value === "canvas" ? (g(), a(me, p({
137
148
  key: 0,
138
149
  modelValue: f.value,
139
150
  "onUpdate:modelValue": t[0] ||= (e) => f.value = e
140
- }, Ae.value, {
151
+ }, Me.value, {
141
152
  onHidden: t[1] ||= (e) => C("hidden"),
142
153
  onHide: t[2] ||= (e) => C("hide"),
143
154
  onShow: t[3] ||= (e) => C("show"),
144
155
  onShown: t[4] ||= (e) => C("shown")
145
- }), he({ _: 2 }, [
156
+ }), _e({ _: 2 }, [
146
157
  e.$slots.default ? {
147
158
  name: "default",
148
- fn: b((t) => [_(e.$slots, "default", m(d(t)))]),
159
+ fn: x((t) => [v(e.$slots, "default", h(d(t)))]),
149
160
  key: "0"
150
161
  } : void 0,
151
162
  e.$slots.header ? {
152
163
  name: "header",
153
- fn: b((t) => [_(e.$slots, "header", m(d(t)))]),
164
+ fn: x((t) => [v(e.$slots, "header", h(d(t)))]),
154
165
  key: "1"
155
166
  } : void 0,
156
167
  e.$slots.title ? {
157
168
  name: "title",
158
- fn: b((t) => [_(e.$slots, "title", m(d(t)))]),
169
+ fn: x((t) => [v(e.$slots, "title", h(d(t)))]),
159
170
  key: "2"
160
171
  } : void 0,
172
+ e.$slots.description ? {
173
+ name: "description",
174
+ fn: x((t) => [v(e.$slots, "description", h(d(t)))]),
175
+ key: "3"
176
+ } : void 0,
161
177
  e.$slots.footer ? {
162
178
  name: "footer",
163
- fn: b(() => [_(e.$slots, "footer")]),
164
- key: "3"
179
+ fn: x(() => [v(e.$slots, "footer")]),
180
+ key: "4"
165
181
  } : void 0
166
- ]), 1040, ["modelValue"])) : (h(), c("dialog", p({
182
+ ]), 1040, ["modelValue"])) : (g(), s("dialog", p({
167
183
  key: 1,
168
184
  ref_key: "dialog",
169
- ref: O,
170
- "aria-labelledby": v(j) && (A.value || e.$slots.header) ? k : void 0,
185
+ ref: A,
186
+ "aria-describedby": y(I) && N() ? M : void 0,
187
+ "aria-labelledby": y(I) && (P() || e.$slots.header) ? j : void 0,
171
188
  class: ["bb-dialog", {
172
189
  "bb-dialog--open": f.value,
173
- "bb-dialog--visible": W.value,
174
- "bb-dialog--fullscreen": M.value,
175
- "bb-dialog--mobile": v(T),
176
- "bb-dialog--deny-close": F.value,
177
- "bb-dialog--covered": J.value
190
+ "bb-dialog--visible": J.value,
191
+ "bb-dialog--fullscreen": L.value,
192
+ "bb-dialog--mobile": y(D),
193
+ "bb-dialog--deny-close": z.value,
194
+ "bb-dialog--covered": Z.value
178
195
  }],
179
- inert: !f.value && !W.value || J.value,
196
+ inert: !f.value && !J.value || Z.value,
180
197
  style: {
181
- "--max-width": Re.value,
198
+ "--max-width": We.value,
182
199
  "--transition-duration": `${S.transitionDuration}ms`
183
200
  }
184
- }, xe(v(ne), !0), {
185
- onCancel: Z,
186
- onClick: Ce(Me, ["self"]),
187
- onPointercancel: L,
188
- onPointerdown: je
189
- }), [v(j) ? (h(), c(me, { key: 0 }, [
190
- A.value || e.$slots.header ? (h(), c("div", Te, [_(e.$slots, "header", {
191
- close: Q,
201
+ }, xe(y(ie), !0), {
202
+ onCancel: Ge,
203
+ onClick: we(Fe, ["self"]),
204
+ onPointercancel: V,
205
+ onPointerdown: Pe
206
+ }), [y(I) ? (g(), s(ge, { key: 0 }, [
207
+ F() || e.$slots.header ? (g(), s("div", Ee, [v(e.$slots, "header", {
208
+ close: $,
192
209
  title: e.title,
193
- titleId: k
194
- }, () => [l("span", {
195
- id: k,
196
- class: "bb-dialog__title"
197
- }, [_(e.$slots, "title", { text: e.title }, () => [ge(be(e.title), 1)])]), e.hideClose ? s("", !0) : (h(), o(r, {
198
- key: 0,
199
- "aria-label": v(w)("dialog.closeLabel").value,
200
- onClick: $
201
- }, null, 8, ["aria-label"]))])])) : s("", !0),
202
- l("div", Ee, [l("div", De, [!A.value && !e.$slots.header && !e.hideClose ? (h(), o(r, {
210
+ titleId: j
211
+ }, () => [
212
+ P() ? (g(), s("span", {
213
+ key: 0,
214
+ id: j,
215
+ class: "bb-dialog__title"
216
+ }, [v(e.$slots, "title", { text: e.title }, () => [l(be(e.title), 1)])])) : o("", !0),
217
+ N() ? (g(), s("p", {
218
+ key: 1,
219
+ id: M,
220
+ class: "bb-dialog__description"
221
+ }, [v(e.$slots, "description", { text: e.description }, () => [l(be(e.description), 1)])])) : o("", !0),
222
+ e.hideClose ? o("", !0) : (g(), a(r, {
223
+ key: 2,
224
+ "aria-label": y(E)("dialog.closeLabel").value,
225
+ onClick: Ke
226
+ }, null, 8, ["aria-label"]))
227
+ ])])) : o("", !0),
228
+ c("div", De, [c("div", Oe, [!F() && !e.$slots.header && !e.hideClose ? (g(), a(r, {
203
229
  key: 0,
204
- "aria-label": v(w)("dialog.closeLabel").value,
205
- onClick: $
206
- }, null, 8, ["aria-label"])) : s("", !0), _(e.$slots, "default", { close: Q })])]),
207
- l("div", Oe, [_(e.$slots, "footer")])
208
- ], 64)) : s("", !0)], 16, we));
230
+ "aria-label": y(E)("dialog.closeLabel").value,
231
+ onClick: Ke
232
+ }, null, 8, ["aria-label"])) : o("", !0), v(e.$slots, "default", { close: $ })])]),
233
+ c("div", ke, [v(e.$slots, "footer")])
234
+ ], 64)) : o("", !0)], 16, Te));
209
235
  }
210
236
  });
211
237
  //#endregion
@@ -7,6 +7,18 @@ export type { Sizes };
7
7
  * Props controlling the BbDialog appearance, accessibility, and closing behaviour.
8
8
  */
9
9
  export type BbDialogProps = {
10
+ /**
11
+ * One short line under the title, in the header — the shadcn
12
+ * `DialogDescription` shape: same block as the title, lower hierarchy,
13
+ * muted.
14
+ *
15
+ * It is also what `aria-describedby` points at. That wiring was dropped in
16
+ * v3 along with the old `description` prop, on the reasoning that pointing
17
+ * it at arbitrary body content would read whole forms aloud — true, and the
18
+ * reason it aims at THIS element only. Keep it to a sentence; anything
19
+ * longer belongs in the body.
20
+ */
21
+ description?: string;
10
22
  /**
11
23
  * Disable EVERY user-initiated dismissal: backdrop click, Escape AND the
12
24
  * header close (×) button (denied attempts play the deny nudge). Use it
@@ -40,7 +52,7 @@ export type BbDialogProps = {
40
52
  /**
41
53
  * Overrides merged over the offcanvas (mobile) surface's props. The drawer
42
54
  * defaults to a bottom, draggable, content-sized sheet
43
- * (`direction: 'bottom'`, `draggable: true`, `size: 'auto'`); use this to
55
+ * (`side: 'bottom'`, `draggable: true`, `size: 'auto'`); use this to
44
56
  * override those, set other drawer-only options (`stackGap`), or override
45
57
  * shared props whose meaning differs on the drawer (`stack`). Ignored on the
46
58
  * desktop dialog surface.
@@ -111,11 +123,22 @@ export type BbDialogHeaderSlotProps = {
111
123
  title: BbDialogProps['title'];
112
124
  };
113
125
  /** Props exposed by the `title` slot. */
126
+ /** Props exposed by the `description` slot. */
127
+ export type BbDialogDescriptionSlotProps = {
128
+ /** The `description` prop value. */
129
+ text: BbDialogProps['description'];
130
+ };
114
131
  export type BbDialogTitleSlotProps = {
115
132
  /** The `title` prop value. */
116
133
  text: BbDialogProps['title'];
117
134
  };
118
135
  export type BbDialogSlots = {
136
+ /**
137
+ * Replaces the description text under the title. Renders the header even
138
+ * when `title` and `description` are unset — a slotted description is a
139
+ * description, the same rule `#title` follows.
140
+ */
141
+ description?: (props: BbDialogDescriptionSlotProps) => any;
119
142
  /** Primary body content of the dialog, rendered in the scrollable body area. */
120
143
  default?: (props: BbDialogDefaultSlotProps) => any;
121
144
  /** Content rendered in the dialog footer, below the body area. Typically used for action buttons. */
@@ -135,7 +158,11 @@ export type BbDialogSlots = {
135
158
  * width, or it renders squeezed against the left edge.
136
159
  */
137
160
  header?: (props: BbDialogHeaderSlotProps) => any;
138
- /** Replaces the default title text inside the header. Remains linked to the dialog through `aria-labelledby`. */
161
+ /**
162
+ * Replaces the default title text inside the header. Remains linked to the
163
+ * dialog through `aria-labelledby`. Providing this slot renders the header
164
+ * even when `title` is unset — a slotted title is a title.
165
+ */
139
166
  title?: (props: BbDialogTitleSlotProps) => any;
140
167
  };
141
168
  /** @deprecated Use `BbDialogProps` instead. */
@@ -4,6 +4,8 @@ type __VLS_Props = {
4
4
  rootGroups: NormalizedGroup[];
5
5
  /** Bindings forwarded to `BbOffCanvas` (direction, size, draggable, …). */
6
6
  offCanvasProps?: Record<string, unknown>;
7
+ /** The dropdown's density, forwarded so the sheet reads the same ladder. */
8
+ compact?: boolean;
7
9
  };
8
10
  type __VLS_ModelProps = {
9
11
  /**