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,32 +1,39 @@
1
- import { useId as e } from "../../composables/useId.js";
2
- import { useUntil as t } from "../../composables/useUntil.js";
3
- import { removedPropsFor as n } from "../../deprecation/removedProps.js";
4
- import { warnRemovedAttrs as r } from "../../utilities/functions/warnRemovedAttrs.js";
5
- import { transitions as i } from "../../utilities/misc/transitions.js";
6
- import { overlaySurfaceIsolation as a } from "../../utils/overlaySurfaceIsolation.js";
7
- import { isTopEscapeEntry as ee, pushEscapeEntry as te, removeEscapeEntry as ne } from "../../utils/overlayEscapeStack.js";
8
- import { useMobile as re } from "../../composables/useMobile.js";
9
- import { wait as ie } from "../../utilities/functions/wait.js";
10
- import { parseSize as ae } from "../../utilities/functions/parseSize.js";
11
- import { useLocale as oe } from "../../composables/useLocale.js";
12
- import { viewportHeight as se, viewportWidth as ce } from "../../composables/useViewportWidth.js";
13
- import { useBreakpoint as le } from "../../composables/useBreakpoint.js";
14
- import ue from "../CloseIcon/CloseButton.vue.js";
15
- import { useOffCanvasStack as de } from "./useOffCanvasStack.js";
16
- import { registerTopLayerHost as fe } from "../../composables/useTopLayer.js";
17
- import { config as pe } from "virtual:bitboss-ui/config";
18
- import { Fragment as me, computed as o, createBlock as he, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as ge, defineComponent as u, mergeModels as d, mergeProps as _e, nextTick as ve, onBeforeUnmount as ye, onMounted as be, openBlock as f, ref as p, renderSlot as m, toDisplayString as xe, toHandlers as Se, unref as h, useModel as Ce, useSlots as we, watch as g, withModifiers as Te } from "vue";
1
+ import { useConfig as e } from "../../composables/useConfig.js";
2
+ import { useId as t } from "../../composables/useId.js";
3
+ import { useUntil as n } from "../../composables/useUntil.js";
4
+ import { removedPropsFor as ee } from "../../deprecation/removedProps.js";
5
+ import { useLogger as te } from "../../composables/useLogger.js";
6
+ import { warnRemovedAttrs as ne } from "../../utilities/functions/warnRemovedAttrs.js";
7
+ import { transitions as re } from "../../utilities/misc/transitions.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 { viewportHeight as fe, viewportWidth as pe } from "../../composables/useViewportWidth.js";
15
+ import { useBreakpoint as me } from "../../composables/useBreakpoint.js";
16
+ import he from "../CloseIcon/CloseButton.vue.js";
17
+ import { useOffCanvasStack as ge } from "./useOffCanvasStack.js";
18
+ import { registerTopLayerHost as _e } from "../../composables/useTopLayer.js";
19
+ import { Fragment as ve, computed as r, createBlock as ye, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as be, defineComponent as xe, mergeModels as s, mergeProps as Se, nextTick as Ce, onBeforeUnmount as we, onMounted as Te, openBlock as c, ref as l, renderSlot as u, toDisplayString as Ee, toHandlers as De, unref as d, useModel as Oe, useSlots as ke, watch as f, withModifiers as Ae } from "vue";
20
+ import { useSwipe as je } from "@vueuse/core";
19
21
  //#region src/components/BbOffCanvas/BbOffCanvas.vue?vue&type=script&setup=true&lang.ts
20
- var Ee = ["aria-labelledby", "inert"], De = {
22
+ var Me = [
23
+ "aria-describedby",
24
+ "aria-labelledby",
25
+ "inert"
26
+ ], Ne = {
21
27
  key: 0,
22
28
  "aria-hidden": "true",
23
29
  class: "bb-offcanvas__handle"
24
- }, Oe = {
30
+ }, Pe = {
25
31
  key: 1,
26
32
  class: "bb-offcanvas__header"
27
- }, ke = { class: "bb-offcanvas__body-content" }, Ae = { class: "bb-offcanvas__footer" }, _ = 4, je = 2, v = 6, Me = .25, Ne = .5, y = /*@__PURE__*/ u({
33
+ }, Fe = { class: "bb-offcanvas__body-content" }, Ie = { class: "bb-offcanvas__footer" }, Le = 4, Re = 2, ze = 50, Be = 8, p = 500, Ve = "cubic-bezier(0.32, 0.72, 0, 1)", m = /*@__PURE__*/ xe({
28
34
  __name: "BbOffCanvas",
29
- props: /*@__PURE__*/ d({
35
+ props: /*@__PURE__*/ s({
36
+ description: {},
30
37
  disabled: { type: Boolean },
31
38
  eager: { type: Boolean },
32
39
  focusTarget: {},
@@ -41,7 +48,7 @@ var Ee = ["aria-labelledby", "inert"], De = {
41
48
  hideClose: { type: Boolean },
42
49
  size: { default: "sm" },
43
50
  title: {},
44
- transitionDuration: { default: i.medium },
51
+ transitionDuration: { default: re.medium },
45
52
  side: { default: "left" }
46
53
  }, {
47
54
  modelValue: {
@@ -50,233 +57,272 @@ var Ee = ["aria-labelledby", "inert"], De = {
50
57
  },
51
58
  modelModifiers: {}
52
59
  }),
53
- emits: /*@__PURE__*/ d([
60
+ emits: /*@__PURE__*/ s([
54
61
  "show",
55
62
  "hide",
56
63
  "shown",
57
64
  "hidden"
58
65
  ], ["update:modelValue"]),
59
- setup(i, { emit: u }) {
60
- let d = Ce(i, "modelValue"), y = i, b = u, Pe = we();
61
- process.env.NODE_ENV !== "production" && r("BbOffCanvas", n("BbOffCanvas"));
62
- let { t: Fe } = oe(), x = () => !!y.title || !!Pe.header, S = o(() => !!(y.disabled || y.persistent)), C = () => typeof document < "u", w = p(null), Ie = t(() => d.value || y.eager, { initialValue: d.value || y.eager }), T = `title_${e().id.value}`, E = p(0), D = p(!1), O = p(null), Le = () => {
63
- O.value = null;
64
- }, Re = (e) => {
65
- O.value = {
66
+ setup(re, { emit: xe }) {
67
+ let s = Oe(re, "modelValue"), m = re, h = xe, g = ke(), He = e();
68
+ process.env.NODE_ENV !== "production" && ne("BbOffCanvas", ee("BbOffCanvas"));
69
+ let { t: Ue } = ue(), _ = () => !!m.title || !!g.title, v = () => _() || !!g.header || w(), y = r(() => !!(m.disabled || m.persistent)), b = () => typeof document < "u", x = l(null), S = n(() => s.value || m.eager, { initialValue: s.value || m.eager }), C = `title_${t().id.value}`, We = `desc_${t().id.value}`, w = () => !!m.description || !!g.description, T = l(0), E = l(!1), D = l(null), Ge = () => {
70
+ D.value = null;
71
+ }, Ke = (e) => {
72
+ D.value = {
66
73
  startX: e.clientX,
67
74
  startY: e.clientY,
68
75
  startedOnBackdrop: e.target === e.currentTarget
69
76
  };
70
- }, ze = (e) => {
71
- let t = O.value;
72
- Le(), !(t && !t.startedOnBackdrop) && (t && (Math.abs(e.clientX - t.startX) > _ || Math.abs(e.clientY - t.startY) > _) || We(e));
73
- }, k, A = (e) => {
74
- clearTimeout(k), I.value = !0, k = setTimeout(() => {
75
- I.value = !1;
77
+ }, qe = (e) => {
78
+ let t = D.value;
79
+ Ge(), !(t && !t.startedOnBackdrop) && (t && (Math.abs(e.clientX - t.startX) > Le || Math.abs(e.clientY - t.startY) > Le) || tt(e));
80
+ }, O, k = (e) => {
81
+ clearTimeout(O), N.value = !0, O = setTimeout(() => {
82
+ N.value = !1;
76
83
  }, e);
77
- }, j = Symbol("bb-off-canvas-escape"), Be = () => {
78
- te(j), C() && document.addEventListener("keydown", N, { capture: !0 });
79
- }, M = () => {
80
- ne(j), C() && document.removeEventListener("keydown", N, { capture: !0 });
81
- }, Ve = () => {
82
- if (!y.focusTarget) return;
83
- let e = w.value?.querySelector(y.focusTarget);
84
+ }, A = Symbol("bb-off-canvas-escape"), Je = () => {
85
+ oe(A), b() && document.addEventListener("keydown", Ze, { capture: !0 });
86
+ }, Ye = () => {
87
+ se(A), b() && document.removeEventListener("keydown", Ze, { capture: !0 });
88
+ }, Xe = () => {
89
+ if (!m.focusTarget) return;
90
+ let e = x.value?.querySelector(m.focusTarget);
84
91
  e instanceof HTMLElement && e.focus();
85
- }, N = (e) => {
86
- if (e.key === "Escape" && !q.value && ee(j) && (e.stopImmediatePropagation(), S.value)) return e.preventDefault(), A(200), !1;
87
- }, P = null, He = async (e) => {
88
- if (e) b("show"), E.value++, C() && !document.documentElement.style.getPropertyValue("--scrollbar-width") && document.documentElement.style.setProperty("--scrollbar-width", `${Ke()}px`), Be(), await ve(), D.value = !0, w.value && !w.value.open && w.value.showModal(), it(), w.value && (P = fe(w.value)), Ve(), b("shown");
92
+ }, Ze = (e) => {
93
+ if (e.key === "Escape" && !H.value && ae(A) && (e.stopImmediatePropagation(), y.value)) return e.preventDefault(), k(200), !1;
94
+ }, j = null, Qe = async (e) => {
95
+ if (e) h("show"), T.value++, b() && !document.documentElement.style.getPropertyValue("--scrollbar-width") && document.documentElement.style.setProperty("--scrollbar-width", `${rt()}px`), Je(), await Ce(), E.value = !0, x.value && !x.value.open && x.value.showModal(), _t(), x.value && (j = _e(x.value)), Xe(), h("shown");
89
96
  else {
90
- b("hide");
91
- let e = E.value;
92
- if (await ie(y.transitionDuration), e !== E.value) return;
93
- M(), at(), w.value?.close(), P?.(), P = null, D.value = !1, mt(), b("hidden");
97
+ h("hide");
98
+ let e = T.value;
99
+ if (await le(m.transitionDuration), e !== T.value) return;
100
+ Ye(), vt(), x.value?.close(), j?.(), j = null, E.value = !1, q = !1, K.value = !1, kt(), h("hidden");
94
101
  }
102
+ }, $e = () => {
103
+ process.env.NODE_ENV !== "production" && (!g.header || m.title || Ce(() => {
104
+ !x.value || document.getElementById(C) || te().warn(`BbOffCanvas: the #header slot does not contain an element with id="${C}", so aria-labelledby points at nothing and the panel announces as unnamed. Bind the slot's \`titleId\` to your heading: <template #header="{ titleId }"><h2 :id="titleId">…</h2></template>.`);
105
+ }));
95
106
  };
96
- g(d, He), be(() => {
97
- d.value && He(!0);
98
- }), ye(() => {
99
- clearTimeout(k), M(), $(), at(), P?.(), P = null;
107
+ f(s, Qe), Te(() => {
108
+ s.value && Qe(!0), $e();
109
+ }), we(() => {
110
+ clearTimeout(O), Ye(), W.value?.removeEventListener("scroll", Ct), J?.disconnect(), J = null, vt(), j?.(), j = null;
100
111
  });
101
- let Ue = o(() => {
102
- if (R.value) return "100%";
103
- let e = qe(y.size);
104
- return e === "auto" ? "fit-content" : ae(e, pe.offCanvasDefaultSizes);
105
- }), We = (e) => {
106
- if (e.preventDefault(), S.value) return A(300), !1;
107
- F();
108
- }, F = () => {
109
- d.value = !1;
110
- }, Ge = () => {
111
- if (y.disabled) {
112
- A(300);
112
+ let et = r(() => {
113
+ if (ot.value) return "100%";
114
+ let e = at(m.size);
115
+ return e === "auto" ? "fit-content" : de(e, He.offCanvasDefaultSizes);
116
+ }), tt = (e) => {
117
+ if (e.preventDefault(), y.value) return k(300), !1;
118
+ M();
119
+ }, M = () => {
120
+ s.value = !1;
121
+ }, nt = () => {
122
+ if (m.disabled) {
123
+ k(300);
113
124
  return;
114
125
  }
115
- F();
116
- }, I = p(!1), Ke = () => C() ? window.innerWidth - document.documentElement.clientWidth : 0, { isMobile: L } = re(), { resolve: qe } = le(), R = o(() => y.fullscreen === !0 || y.fullscreen === "mobile" && L.value), z = Symbol("bb-offcanvas"), { stacks: B, push: Je, setSize: Ye, remove: Xe, offset: Ze, openOrder: Qe, registerOpen: $e, deregisterOpen: et } = de(), V = o(() => y.side === "left" || y.side === "right" ? "x" : "y"), H = o(() => y.side === "right" || y.side === "bottom" ? 1 : -1), tt = `bb-offcanvas-${e().id.value}`, U = o(() => y.stack || tt), W = null, G = () => {
117
- let e = w.value?.getBoundingClientRect();
118
- return e ? V.value === "x" ? e.width : e.height : 0;
119
- }, K = null, nt = () => {
120
- typeof ResizeObserver > "u" || !w.value || (K = new ResizeObserver(() => {
121
- W !== null && Ye(W, z, G());
122
- }), K.observe(w.value));
123
- }, rt = () => {
124
- K?.disconnect(), K = null;
125
- }, it = () => {
126
- W = U.value, Je(W, z, y.side, G(), y.stackGap), $e(z), nt();
127
- }, at = () => {
128
- rt(), et(z), W !== null && (Xe(W, z), W = null);
129
- }, q = o(() => {
130
- let e = Qe.value.indexOf(z);
131
- return D.value && e !== -1 && e < Qe.value.length - je;
126
+ M();
127
+ }, N = l(!1), rt = () => b() ? window.innerWidth - document.documentElement.clientWidth : 0, { isMobile: it } = ce(), { resolve: at } = me(), ot = r(() => m.fullscreen === !0 || m.fullscreen === "mobile" && it.value), P = Symbol("bb-offcanvas"), { stacks: F, push: st, setSize: ct, remove: lt, offset: ut, openOrder: dt, registerOpen: ft, deregisterOpen: pt } = ge(), I = r(() => m.side === "left" || m.side === "right" ? "x" : "y"), L = r(() => m.side === "right" || m.side === "bottom" ? 1 : -1), mt = `bb-offcanvas-${t().id.value}`, R = r(() => m.stack || mt), z = null, B = () => {
128
+ let e = x.value?.getBoundingClientRect();
129
+ return e ? I.value === "x" ? e.width : e.height : 0;
130
+ }, V = null, ht = () => {
131
+ typeof ResizeObserver > "u" || !x.value || (V = new ResizeObserver(() => {
132
+ z !== null && ct(z, P, B());
133
+ }), V.observe(x.value));
134
+ }, gt = () => {
135
+ V?.disconnect(), V = null;
136
+ }, _t = () => {
137
+ z = R.value, st(z, P, m.side, B(), m.stackGap), ft(P), ht();
138
+ }, vt = () => {
139
+ gt(), pt(P), z !== null && (lt(z, P), z = null);
140
+ }, H = r(() => {
141
+ let e = dt.value.indexOf(P);
142
+ return E.value && e !== -1 && e < dt.value.length - Re;
132
143
  });
133
- g([
134
- U,
135
- () => y.side,
136
- () => y.stackGap
144
+ f([
145
+ R,
146
+ () => m.side,
147
+ () => m.stackGap
137
148
  ], ([e]) => {
138
- W !== null && (Xe(W, z), W = e, Je(e, z, y.side, G(), y.stackGap));
149
+ z !== null && (lt(z, P), z = e, st(e, P, m.side, B(), m.stackGap));
139
150
  });
140
- let ot = o(() => L.value ? 14 : 20), st = o(() => {
141
- B.value;
142
- let e = V.value === "x" ? ce.value : se.value, t = Ze(U.value, z, e, ot.value);
151
+ let yt = r(() => it.value ? 14 : 20), bt = r(() => {
152
+ F.value;
153
+ let e = I.value === "x" ? pe.value : fe.value, t = ut(R.value, P, e, yt.value);
143
154
  return {
144
- [V.value === "x" ? "--stack-x" : "--stack-y"]: `${-H.value * t}px`,
155
+ [I.value === "x" ? "--stack-x" : "--stack-y"]: `${-L.value * t}px`,
145
156
  "--stack-fill": `${t}px`
146
157
  };
147
- }), J = p(!1), ct = 0, lt = () => {
148
- let e = B.value[U.value];
158
+ }), U = l(!1), xt = 0, St = () => {
159
+ let e = F.value[R.value];
149
160
  if (!e) return !1;
150
- let t = e.filter((e) => e.direction === y.side), n = t.findIndex((e) => e.id === z);
161
+ let t = e.filter((e) => e.direction === m.side), n = t.findIndex((e) => e.id === P);
151
162
  return n !== -1 && n !== t.length - 1;
152
163
  };
153
- g(() => B.value[U.value], (e) => {
154
- let t = e?.length ?? 0, n = t > 0 && t === ct;
155
- ct = t, J.value = n && lt(), J.value && ve(() => J.value = !1);
164
+ f(() => F.value[R.value], (e) => {
165
+ let t = e?.length ?? 0, n = t > 0 && t === xt;
166
+ xt = t, U.value = n && St(), U.value && Ce(() => U.value = !1);
156
167
  });
157
- let Y = p(null), X = p(!1), Z = null, ut = (e, t) => V.value === "x" ? e.clientX - t.startX : e.clientY - t.startY, dt = (e) => V.value === "x" ? e.clientX : e.clientY, ft = () => {
158
- w.value && (w.value.style.transition = "none");
159
- }, pt = (e) => {
160
- let t = w.value;
168
+ let W = l(null), G = l(!1), K = l(!1), q = !1, J = null, Y = !1, X = !1, Z = !1, Q = !1, $ = () => {
169
+ W.value?.style.removeProperty("touch-action");
170
+ }, Ct = () => $();
171
+ f(W, (e, t) => {
172
+ t?.removeEventListener("scroll", Ct), J?.disconnect(), J = null, e && (e.addEventListener("scroll", Ct, { passive: !0 }), typeof ResizeObserver < "u" && (J = new ResizeObserver(() => $()), J.observe(e)), $());
173
+ }, { flush: "post" }), f([
174
+ () => m.draggable,
175
+ () => m.side,
176
+ E
177
+ ], () => $());
178
+ let wt = () => I.value === "y" ? L.value === 1 ? -It.value : It.value : L.value === 1 ? -Ft.value : Ft.value, Tt = () => {
179
+ x.value && (x.value.style.transition = "none"), W.value && I.value === "y" && (W.value.style.touchAction = "none");
180
+ }, Et = (e) => {
181
+ let t = x.value;
161
182
  if (!t) return;
162
- let n = e > 0 ? e * H.value : 0;
163
- t.style.transform = V.value === "x" ? `translate3d(${n}px, 0, 0)` : `translate3d(0, ${n}px, 0)`;
164
- }, Q = (e) => {
165
- let t = w.value;
166
- t && (t.style.transition = "", e && (t.style.transform = ""));
167
- }, mt = () => {
168
- let e = w.value;
169
- e && (e.style.removeProperty("transition"), e.style.removeProperty("transform"));
170
- }, ht = (e) => V.value !== "y" || !Y.value ? !1 : e <= 0 ? !0 : H.value === 1 ? Y.value.scrollTop > 0 : Y.value.scrollTop + Y.value.clientHeight < Y.value.scrollHeight - 1, $ = () => {
171
- window.removeEventListener("pointermove", vt), window.removeEventListener("pointerup", bt), window.removeEventListener("pointercancel", xt);
172
- }, gt = () => {
173
- $(), Z = null;
174
- }, _t = (e) => {
175
- if (Re(e), !y.draggable || e.target === e.currentTarget || e.button !== 0 || !w.value) return;
176
- Z && gt();
177
- let t = w.value.getBoundingClientRect();
178
- Z = {
179
- pointerId: e.pointerId,
180
- startX: e.clientX,
181
- startY: e.clientY,
182
- size: V.value === "x" ? t.width : t.height,
183
- startedInBody: !!e.target.closest?.(".bb-offcanvas__body"),
184
- decided: !1,
185
- active: !1,
186
- samples: [{
187
- t: performance.now(),
188
- pos: dt(e)
189
- }]
190
- }, window.addEventListener("pointermove", vt, { passive: !1 }), window.addEventListener("pointerup", bt), window.addEventListener("pointercancel", xt);
191
- }, vt = (e) => {
192
- if (!Z || e.pointerId !== Z.pointerId) return;
193
- let t = ut(e, Z), n = V.value === "x" ? e.clientY - Z.startY : e.clientX - Z.startX;
194
- if (!Z.decided) {
195
- if (Math.abs(t) < v && Math.abs(n) < v) return;
196
- Z.decided = !0;
197
- let e = t * H.value;
198
- if (!(Math.abs(t) >= Math.abs(n)) || Z.startedInBody && ht(e)) {
199
- gt();
183
+ let n = e > 0 ? e * L.value : 0;
184
+ t.style.transform = I.value === "x" ? `translate3d(${n}px, 0, 0)` : `translate3d(0, ${n}px, 0)`;
185
+ }, Dt = () => {
186
+ let e = x.value;
187
+ e && (e.style.transform = m.side === "bottom" ? "translate3d(0, 100%, 0)" : m.side === "top" ? "translate3d(0, -100%, 0)" : m.side === "left" ? "translate3d(-100%, 0, 0)" : "translate3d(100%, 0, 0)");
188
+ }, Ot = (e) => {
189
+ let t = x.value;
190
+ if (t) {
191
+ if (e) {
192
+ t.style.transition = `transform ${p}ms ${Ve}`, t.style.transform = "translate3d(0, 0, 0)", window.setTimeout(() => {
193
+ !t.isConnected || q || (t.style.removeProperty("transform"), t.style.removeProperty("transition"), $());
194
+ }, p);
200
195
  return;
201
196
  }
202
- Z.active = !0, X.value = !0, ft();
197
+ t.style.transition = "", $();
203
198
  }
204
- Z.active && (e.preventDefault(), Z.samples.push({
205
- t: performance.now(),
206
- pos: dt(e)
207
- }), Z.samples.length > 6 && Z.samples.shift(), pt(t * H.value));
208
- }, yt = (e) => {
209
- if (e.length < 2) return 0;
210
- let t = e[e.length - 1], n = e[0];
211
- for (let r = e.length - 2; r >= 0 && (n = e[r], !(t.t - e[r].t >= 50)); r--);
212
- let r = t.t - n.t;
213
- return r > 0 ? (t.pos - n.pos) / r * H.value : 0;
214
- }, bt = (e) => {
215
- if (!Z || e.pointerId !== Z.pointerId) return;
216
- let { active: t, size: n, samples: r } = Z, i = ut(e, Z) * H.value;
217
- if ($(), Z = null, !t) return;
218
- X.value = !1;
219
- let a = i > n * Me || yt(r) > Ne && i > v;
220
- if (a && !S.value) {
221
- Q(!1), F();
199
+ }, kt = () => {
200
+ let e = x.value;
201
+ e && (q || (e.style.removeProperty("transition"), e.style.removeProperty("transform")));
202
+ }, At = async () => {
203
+ let e = x.value;
204
+ if (!e) {
205
+ M();
222
206
  return;
223
207
  }
224
- Q(!0), a && A(300);
225
- }, xt = (e) => {
226
- if (!Z || e.pointerId !== Z.pointerId) return;
227
- let t = Z.active;
228
- $(), Z = null, t && (X.value = !1, Q(!0));
229
- };
230
- return (e, t) => (f(), c("dialog", _e({
208
+ if (q = !0, K.value = !0, e.style.transition = `transform ${p}ms ${Ve}`, Dt(), await le(p), !s.value) {
209
+ q = !1, K.value = !1, e.style.removeProperty("transform"), e.style.removeProperty("transition"), $();
210
+ return;
211
+ }
212
+ e.style.transition = "none", Dt(), M();
213
+ }, jt = (e) => {
214
+ let { overflowY: t } = getComputedStyle(e);
215
+ return t !== "auto" && t !== "scroll" ? !1 : e.scrollHeight > e.clientHeight + 1;
216
+ }, Mt = (e) => L.value === 1 ? e.scrollTop <= 1 : e.scrollTop + e.clientHeight >= e.scrollHeight - 1, Nt = (e) => {
217
+ let t = x.value;
218
+ if (!t) return !1;
219
+ let n = e;
220
+ for (; n && n !== t;) {
221
+ if (n instanceof HTMLElement && jt(n) && !Mt(n)) return !0;
222
+ n = n.parentElement;
223
+ }
224
+ return !1;
225
+ }, Pt = () => {
226
+ Y = !1, X = !1, Z = !1, Q = !1, G.value = !1;
227
+ }, { lengthX: Ft, lengthY: It } = je(x, {
228
+ threshold: Be,
229
+ passive: !1,
230
+ onSwipeStart: (e) => {
231
+ if (Pt(), !m.draggable || !E.value || e.target === x.value) return;
232
+ let t = e.target;
233
+ t instanceof Element && (Y = !0, X = !!t.closest(".bb-offcanvas__body"), Q = X && Nt(t));
234
+ },
235
+ onSwipe: (e) => {
236
+ if (!Y || !m.draggable || Q) return;
237
+ let t = wt();
238
+ if (!Z) {
239
+ if (X && t < -8) {
240
+ Q = !0;
241
+ return;
242
+ }
243
+ if (t < Be) return;
244
+ Z = !0, G.value = !0, Tt();
245
+ }
246
+ e.preventDefault(), Et(t);
247
+ },
248
+ onSwipeEnd: () => {
249
+ if (!Z) {
250
+ Pt();
251
+ return;
252
+ }
253
+ let e = wt();
254
+ if (Pt(), e >= ze && !y.value) {
255
+ At();
256
+ return;
257
+ }
258
+ Ot(!0), e >= ze && k(300);
259
+ }
260
+ });
261
+ return (e, t) => (c(), a("dialog", Se({
231
262
  ref_key: "dialog",
232
- ref: w,
233
- "aria-labelledby": h(Ie) && x() ? T : void 0,
263
+ ref: x,
264
+ "aria-describedby": d(S) && w() ? We : void 0,
265
+ "aria-labelledby": d(S) && (_() || e.$slots.header) ? C : void 0,
234
266
  class: ["bb-offcanvas", [{
235
- "bb-offcanvas--open": d.value,
236
- "bb-offcanvas--visible": D.value,
237
- "bb-offcanvas--fullscreen": R.value,
238
- "bb-offcanvas--deny-close": I.value,
239
- "bb-offcanvas--dragging": X.value,
240
- "bb-offcanvas--instant-stack": J.value,
241
- "bb-offcanvas--covered": q.value,
267
+ "bb-offcanvas--open": s.value,
268
+ "bb-offcanvas--visible": E.value,
269
+ "bb-offcanvas--fullscreen": ot.value,
270
+ "bb-offcanvas--deny-close": N.value,
271
+ "bb-offcanvas--dragging": G.value,
272
+ "bb-offcanvas--swipe-exit": K.value,
273
+ "bb-offcanvas--instant-stack": U.value,
274
+ "bb-offcanvas--covered": H.value,
242
275
  "bb-offcanvas--has-handle": e.draggable,
243
- "bb-offcanvas--no-header": !x(),
244
- [`bb-offcanvas--${y.side}`]: !0
276
+ "bb-offcanvas--no-header": !v(),
277
+ [`bb-offcanvas--${m.side}`]: !0
245
278
  }].flat()],
246
- inert: !d.value && !D.value || q.value,
279
+ inert: !s.value && !E.value || H.value,
247
280
  style: {
248
- "--max-size": Ue.value,
249
- "--transition-duration": `${y.transitionDuration}ms`,
250
- "--stack-gap": `${y.stackGap}px`,
251
- ...st.value
281
+ "--max-size": et.value,
282
+ "--transition-duration": `${m.transitionDuration}ms`,
283
+ "--stack-gap": `${m.stackGap}px`,
284
+ ...bt.value
252
285
  }
253
- }, Se(h(a), !0), {
254
- onCancel: We,
255
- onClick: Te(ze, ["self"]),
256
- onPointercancel: Le,
257
- onPointerdown: _t
258
- }), [h(Ie) ? (f(), c(me, { key: 0 }, [
259
- e.draggable ? (f(), c("div", De)) : s("", !0),
260
- x() ? (f(), c("div", Oe, [m(e.$slots, "header", {
261
- close: F,
286
+ }, De(d(ie), !0), {
287
+ onCancel: tt,
288
+ onClick: Ae(qe, ["self"]),
289
+ onPointercancel: Ge,
290
+ onPointerdown: Ke
291
+ }), [d(S) ? (c(), a(ve, { key: 0 }, [
292
+ e.draggable ? (c(), a("div", Ne)) : i("", !0),
293
+ v() ? (c(), a("div", Pe, [u(e.$slots, "header", {
294
+ close: M,
262
295
  title: e.title,
263
- titleId: T
264
- }, () => [l("span", {
265
- id: T,
266
- class: "bb-offcanvas__title"
267
- }, [m(e.$slots, "title", { text: e.title }, () => [ge(xe(e.title), 1)])]), e.hideClose ? s("", !0) : (f(), he(ue, {
268
- key: 0,
269
- "aria-label": h(Fe)("offCanvas.closeLabel").value,
270
- onClick: Ge
271
- }, null, 8, ["aria-label"]))])])) : s("", !0),
272
- l("div", {
296
+ titleId: C
297
+ }, () => [
298
+ _() ? (c(), a("span", {
299
+ key: 0,
300
+ id: C,
301
+ class: "bb-offcanvas__title"
302
+ }, [u(e.$slots, "title", { text: e.title }, () => [be(Ee(e.title), 1)])])) : i("", !0),
303
+ w() ? (c(), a("p", {
304
+ key: 1,
305
+ id: We,
306
+ class: "bb-offcanvas__description"
307
+ }, [u(e.$slots, "description", { text: e.description }, () => [be(Ee(e.description), 1)])])) : i("", !0),
308
+ e.hideClose ? i("", !0) : (c(), ye(he, {
309
+ key: 2,
310
+ "aria-label": d(Ue)("offCanvas.closeLabel").value,
311
+ onClick: nt
312
+ }, null, 8, ["aria-label"]))
313
+ ])])) : i("", !0),
314
+ o("div", {
273
315
  ref_key: "body",
274
- ref: Y,
316
+ ref: W,
275
317
  class: "bb-offcanvas__body scrollbar-border"
276
- }, [l("div", ke, [m(e.$slots, "default", { close: F })])], 512),
277
- l("div", Ae, [m(e.$slots, "footer")])
278
- ], 64)) : s("", !0)], 16, Ee));
318
+ }, [o("div", Fe, [u(e.$slots, "default", { close: M }), !v() && !e.hideClose ? (c(), ye(he, {
319
+ key: 0,
320
+ "aria-label": d(Ue)("offCanvas.closeLabel").value,
321
+ onClick: nt
322
+ }, null, 8, ["aria-label"])) : i("", !0)])], 512),
323
+ o("div", Ie, [u(e.$slots, "footer")])
324
+ ], 64)) : i("", !0)], 16, Me));
279
325
  }
280
326
  });
281
327
  //#endregion
282
- export { y as default };
328
+ export { m as default };
@@ -4,6 +4,18 @@ import { Responsive } from '../../types/ResponsiveSize';
4
4
  export type { Sizes };
5
5
  type OffCanvasSize = NonNullable<Size<Sizes>['size']> | 'auto';
6
6
  export type BbOffCanvasProps = {
7
+ /**
8
+ * One short line under the title, in the header — the shadcn
9
+ * `DialogDescription` shape: same block as the title, lower hierarchy,
10
+ * muted.
11
+ *
12
+ * It is also what `aria-describedby` points at. That wiring was dropped in
13
+ * v3 along with the old `description` prop, on the reasoning that pointing
14
+ * it at arbitrary body content would read whole forms aloud — true, and the
15
+ * reason it aims at THIS element only. Keep it to a sentence; anything
16
+ * longer belongs in the body.
17
+ */
18
+ description?: string;
7
19
  /**
8
20
  * Disable EVERY user-initiated dismissal: backdrop click, Escape,
9
21
  * drag-to-dismiss AND the header close (×) button (denied attempts play the
@@ -26,10 +38,10 @@ export type BbOffCanvasProps = {
26
38
  */
27
39
  fullscreen?: boolean | 'mobile';
28
40
  /**
29
- * Enable drag-to-dismiss. The panel can be dragged from anywhere toward its
30
- * edge to close, and a grab handle is shown on the inner edge as the
31
- * affordance. When `false`, the panel is static (dismiss via the close button,
32
- * backdrop, or Escape only).
41
+ * Enable drag-to-dismiss via VueUse `useSwipe` (fixed ~50px threshold toward
42
+ * the exit edge, including from the scrollable body once it is at its scroll
43
+ * edge). A grab handle on the inner edge is the visual cue. When `false`, the
44
+ * panel is static (dismiss via the close button, backdrop, or Escape only).
33
45
  * @defaultValue `false`
34
46
  */
35
47
  draggable?: boolean;
@@ -103,17 +115,30 @@ export type BbOffCanvasHeaderSlotProps = {
103
115
  title: BbOffCanvasProps['title'];
104
116
  };
105
117
  /** Props exposed by the `title` slot. */
118
+ /** Props exposed by the `description` slot. */
119
+ export type BbOffCanvasDescriptionSlotProps = {
120
+ /** The `description` prop value. */
121
+ text: BbOffCanvasProps['description'];
122
+ };
106
123
  export type BbOffCanvasTitleSlotProps = {
107
124
  /** The `title` prop value. */
108
125
  text: BbOffCanvasProps['title'];
109
126
  };
110
127
  export type BbOffCanvasSlots = {
128
+ /**
129
+ * Replaces the description text under the title. Renders the header even
130
+ * when `title` and `description` are unset — a slotted description is a
131
+ * description, the same rule `#title` follows.
132
+ */
133
+ description?: (props: BbOffCanvasDescriptionSlotProps) => any;
111
134
  /**
112
135
  * Replaces the entire off-canvas header section (title + close button). Maintains accessibility wiring via the provided props.
113
136
  */
114
137
  header?: (props: BbOffCanvasHeaderSlotProps) => any;
115
138
  /**
116
- * Replaces the default title text inside the header. Remains linked to the panel through `aria-labelledby`.
139
+ * Replaces the default title text inside the header. Remains linked to the
140
+ * panel through `aria-labelledby`. Providing this slot renders the header even
141
+ * when `title` is unset — a slotted title is a title.
117
142
  */
118
143
  title?: (props: BbOffCanvasTitleSlotProps) => any;
119
144
  /**
@@ -18,9 +18,9 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {
18
18
  "onUpdate:modelValue"?: ((value: number) => any) | undefined;
19
19
  }>, {
20
20
  queryKey: string;
21
- align: "left" | "right" | "center";
22
21
  ellipsis: string;
23
22
  maxSize: number | string;
23
+ align: "left" | "right" | "center";
24
24
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
25
25
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
26
  declare const _default: typeof __VLS_export;