bitboss-ui 3.0.0-beta.47 → 3.0.0-beta.49

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 (398) hide show
  1. package/README.md +24 -7
  2. package/bin/bitboss-ui-mcp.mjs +15 -3
  3. package/bin/bitboss-ui.mjs +167 -14
  4. package/dist/ai/BbAccordion.md +1 -1
  5. package/dist/ai/BbAvatar.md +1 -1
  6. package/dist/ai/BbBreadcrumbs.md +65 -65
  7. package/dist/ai/BbButton.md +28 -8
  8. package/dist/ai/BbCheckbox.md +0 -2
  9. package/dist/ai/BbCheckboxGroup.md +13 -20
  10. package/dist/ai/BbCollapsible.md +1 -1
  11. package/dist/ai/BbColorPalette.md +1 -1
  12. package/dist/ai/BbConfirm.md +8 -0
  13. package/dist/ai/BbConfirmPortal.md +1 -1
  14. package/dist/ai/BbDatePickerInput.md +4 -2
  15. package/dist/ai/BbDialog.md +1 -8
  16. package/dist/ai/BbDropdown.md +231 -220
  17. package/dist/ai/BbDropdownButton.md +65 -65
  18. package/dist/ai/BbDropdownGroup.md +2 -2
  19. package/dist/ai/BbDropzone.md +10 -10
  20. package/dist/ai/BbForm.md +43 -52
  21. package/dist/ai/BbHoverCard.md +19 -7
  22. package/dist/ai/BbHoverCardPortal.md +1 -1
  23. package/dist/ai/BbNumberInput.md +88 -21
  24. package/dist/ai/BbPopover.md +47 -40
  25. package/dist/ai/BbPopoverPortal.md +1 -1
  26. package/dist/ai/BbProgress.md +48 -22
  27. package/dist/ai/BbRadioGroup.md +13 -19
  28. package/dist/ai/BbSelect.md +16 -36
  29. package/dist/ai/BbSelectPopover.md +14 -30
  30. package/dist/ai/BbSmoothHeight.md +0 -2
  31. package/dist/ai/BbSwitchGroup.md +13 -20
  32. package/dist/ai/BbTable.md +11 -10
  33. package/dist/ai/BbTabs.md +107 -106
  34. package/dist/ai/BbTabsList.md +2 -2
  35. package/dist/ai/BbTabsPanels.md +1 -1
  36. package/dist/ai/BbTabsRoot.md +3 -3
  37. package/dist/ai/BbTooltip.md +29 -13
  38. package/dist/ai/BbTree.md +14 -11
  39. package/dist/ai/CommonPopover.md +1 -1
  40. package/dist/ai/changelog.json +297 -6
  41. package/dist/ai/components.json +50 -45
  42. package/dist/ai/composables/useBbDropdownContext.md +16 -16
  43. package/dist/ai/composables/useBbFormField.md +5 -1
  44. package/dist/ai/composables/useBbTabsContext.md +14 -14
  45. package/dist/ai/guides/agent-contract.md +27 -27
  46. package/dist/ai/guides/ai-router.md +1 -1
  47. package/dist/ai/guides/component-picker.md +3 -3
  48. package/dist/ai/guides/fetch-items-playbook.md +1 -1
  49. package/dist/ai/guides/icons-policy.md +10 -10
  50. package/dist/ai/guides/inertia-helpers.md +120 -67
  51. package/dist/ai/guides/installation-and-plugin-setup.md +45 -15
  52. package/dist/ai/guides/migration/components/bb-breadcrumbs.md +3 -2
  53. package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -16
  54. package/dist/ai/guides/migration/components/bb-dropdown-button.md +9 -8
  55. package/dist/ai/guides/migration/components/bb-dropdown.md +15 -14
  56. package/dist/ai/guides/migration/components/bb-radio-group.md +2 -1
  57. package/dist/ai/guides/migration/components/bb-select-popover.md +6 -1
  58. package/dist/ai/guides/migration/components/bb-select.md +10 -2
  59. package/dist/ai/guides/migration/components/bb-switch-group.md +2 -1
  60. package/dist/ai/guides/migration/components/bb-tabs.md +9 -8
  61. package/dist/ai/guides/migration/components/bb-tooltip.md +1 -1
  62. package/dist/ai/guides/migration/v2-to-v3.md +143 -28
  63. package/dist/ai/guides/migration/v3-beta-css-classes.md +29 -27
  64. package/dist/ai/guides/migration/v3-beta-tooling.md +11 -0
  65. package/dist/ai/guides/options-items-playbook.md +30 -24
  66. package/dist/ai/guides/passthrough.md +4 -4
  67. package/dist/ai/guides/preset-components.md +18 -3
  68. package/dist/ai/guides/typescript-generic-components.md +1 -1
  69. package/dist/ai/guides/validated-forms.md +11 -22
  70. package/dist/ai/guides/validation-providers.md +4 -3
  71. package/dist/ai/helpers/inertia/manifest.json +636 -0
  72. package/dist/ai/helpers/inertia/types.ts +15 -0
  73. package/dist/ai/helpers/inertia/useAsyncFn.ts +110 -0
  74. package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +102 -0
  75. package/dist/ai/helpers/inertia/useDeleteCmd.ts +30 -0
  76. package/dist/ai/helpers/inertia/useHasChanged.ts +36 -0
  77. package/dist/ai/helpers/inertia/useIndexById.ts +23 -0
  78. package/dist/ai/helpers/inertia/useLazyProp.ts +148 -0
  79. package/dist/ai/helpers/inertia/useLazyPropGetter.ts +50 -0
  80. package/dist/ai/helpers/inertia/useLoading.ts +20 -0
  81. package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +88 -0
  82. package/dist/ai/helpers/inertia/usePromiseForm.ts +62 -0
  83. package/dist/ai/helpers/inertia/useProp.ts +63 -0
  84. package/dist/ai/helpers/inertia/useQuery.ts +19 -0
  85. package/dist/ai/helpers/inertia/useQueryObject.ts +116 -0
  86. package/dist/ai/helpers/inertia/useResourceContext.ts +69 -0
  87. package/dist/ai/helpers/inertia/useRouteQuery.ts +54 -0
  88. package/dist/ai/helpers/inertia/useScreenSizes.ts +23 -0
  89. package/dist/ai/helpers/inertia/useTableContext.ts +34 -0
  90. package/dist/ai/helpers/inertia/useTableSelectionContext.ts +48 -0
  91. package/dist/ai/helpers/inertia/useUntil.ts +33 -0
  92. package/dist/ai/helpers/inertia/utils.ts +24 -0
  93. package/dist/ai/index.md +6 -6
  94. package/dist/ai/manifest/components/BbAccordion.json +1 -1
  95. package/dist/ai/manifest/components/BbBreadcrumbs.json +10 -6
  96. package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
  97. package/dist/ai/manifest/components/BbButton.json +2 -1
  98. package/dist/ai/manifest/components/BbButton.tree.json +1 -1
  99. package/dist/ai/manifest/components/BbCheckboxGroup.json +2 -2
  100. package/dist/ai/manifest/components/BbCollapsible.json +1 -1
  101. package/dist/ai/manifest/components/BbColorPalette.json +1 -1
  102. package/dist/ai/manifest/components/BbConfirmPortal.json +5 -2
  103. package/dist/ai/manifest/components/BbDropdown.json +23 -20
  104. package/dist/ai/manifest/components/BbDropdown.tree.json +2 -2
  105. package/dist/ai/manifest/components/BbDropdownButton.json +22 -19
  106. package/dist/ai/manifest/components/BbDropdownButton.tree.json +1 -1
  107. package/dist/ai/manifest/components/BbDropdownGroup.json +2 -2
  108. package/dist/ai/manifest/components/BbForm.json +1 -0
  109. package/dist/ai/manifest/components/BbHoverCard.json +1 -1
  110. package/dist/ai/manifest/components/BbHoverCardPortal.json +2 -2
  111. package/dist/ai/manifest/components/BbNumberInput.json +6 -1
  112. package/dist/ai/manifest/components/BbNumberInput.tree.json +2 -1
  113. package/dist/ai/manifest/components/BbPopover.json +2 -1
  114. package/dist/ai/manifest/components/BbPopoverPortal.json +2 -2
  115. package/dist/ai/manifest/components/BbProgress.json +6 -6
  116. package/dist/ai/manifest/components/BbProgress.tree.json +1 -0
  117. package/dist/ai/manifest/components/BbRadioGroup.json +2 -2
  118. package/dist/ai/manifest/components/BbSelect.json +2 -2
  119. package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
  120. package/dist/ai/manifest/components/BbSelectPopover.json +2 -2
  121. package/dist/ai/manifest/components/BbSelectPopover.tree.json +1 -1
  122. package/dist/ai/manifest/components/BbSwitchGroup.json +2 -2
  123. package/dist/ai/manifest/components/BbTabs.json +8 -7
  124. package/dist/ai/manifest/components/BbTabsList.json +3 -3
  125. package/dist/ai/manifest/components/BbTabsPanels.json +1 -1
  126. package/dist/ai/manifest/components/BbTabsRoot.json +6 -5
  127. package/dist/ai/manifest/components/BbTag.tree.json +1 -1
  128. package/dist/ai/manifest/components/BbTooltip.json +2 -2
  129. package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
  130. package/dist/ai/manifest/components/CommonPopover.json +1 -1
  131. package/dist/ai/manifest/index.json +2 -2
  132. package/dist/ai/manifest/meta.json +5 -0
  133. package/dist/ai/manifest/types.advanced.json +10 -9
  134. package/dist/ai/manifest/types.api.json +8 -5
  135. package/dist/ai/manifest/types.wrapper.json +1 -0
  136. package/dist/ai/recipes/inertia/approvals-inbox.md +16 -18
  137. package/dist/ai/recipes/inertia/inline-edit-workspace.md +23 -33
  138. package/dist/ai/recipes/inertia/layout-scaffold.md +16 -16
  139. package/dist/ai/recipes/inertia/onboarding.md +6 -10
  140. package/dist/ai/recipes/inertia/ownership-atlas.md +15 -18
  141. package/dist/ai/recipes/inertia/record-form.md +11 -11
  142. package/dist/ai/recipes/inertia/records-workspace.md +38 -41
  143. package/dist/ai/recipes/inertia/settings-workspace.md +26 -38
  144. package/dist/ai/recipes/inertia/upload-center.md +31 -39
  145. package/dist/ai/recipes/inertia/wizard-form.md +10 -19
  146. package/dist/ai/recipes/nuxt/approvals-inbox.md +7 -8
  147. package/dist/ai/recipes/nuxt/inline-edit-workspace.md +14 -24
  148. package/dist/ai/recipes/nuxt/layout-scaffold.md +16 -16
  149. package/dist/ai/recipes/nuxt/onboarding.md +2 -6
  150. package/dist/ai/recipes/nuxt/ownership-atlas.md +7 -9
  151. package/dist/ai/recipes/nuxt/record-form.md +5 -5
  152. package/dist/ai/recipes/nuxt/records-workspace.md +29 -31
  153. package/dist/ai/recipes/nuxt/settings-workspace.md +22 -34
  154. package/dist/ai/recipes/nuxt/upload-center.md +22 -29
  155. package/dist/ai/recipes/nuxt/wizard-form.md +3 -11
  156. package/dist/ai/recipes/vue/approvals-inbox.md +7 -8
  157. package/dist/ai/recipes/vue/inline-edit-workspace.md +14 -24
  158. package/dist/ai/recipes/vue/layout-scaffold.md +16 -16
  159. package/dist/ai/recipes/vue/onboarding.md +2 -6
  160. package/dist/ai/recipes/vue/ownership-atlas.md +7 -9
  161. package/dist/ai/recipes/vue/record-form.md +5 -5
  162. package/dist/ai/recipes/vue/records-workspace.md +29 -31
  163. package/dist/ai/recipes/vue/settings-workspace.md +22 -34
  164. package/dist/ai/recipes/vue/upload-center.md +22 -29
  165. package/dist/ai/recipes/vue/wizard-form.md +3 -11
  166. package/dist/ai/source/BbAccordion.md +1 -1
  167. package/dist/ai/source/BbAlert.md +3 -3
  168. package/dist/ai/source/BbBadge.md +14 -10
  169. package/dist/ai/source/BbBadgeButton.md +17 -12
  170. package/dist/ai/source/BbBaseButton.md +1 -1
  171. package/dist/ai/source/BbBaseRadioIcon.md +1 -0
  172. package/dist/ai/source/BbBaseSwitchIcon.md +1 -0
  173. package/dist/ai/source/BbBreadcrumbs.md +63 -42
  174. package/dist/ai/source/BbButton.md +84 -38
  175. package/dist/ai/source/BbCalendar.md +17 -16
  176. package/dist/ai/source/BbCheckbox.md +3 -2
  177. package/dist/ai/source/BbCheckboxGroup.md +11 -4
  178. package/dist/ai/source/BbCollapsible.md +2 -1
  179. package/dist/ai/source/BbColorInput.md +10 -9
  180. package/dist/ai/source/BbColorPalette.md +2 -1
  181. package/dist/ai/source/BbConfirm.md +18 -1
  182. package/dist/ai/source/BbConfirmPortal.md +20 -6
  183. package/dist/ai/source/BbDatePicker.md +2 -2
  184. package/dist/ai/source/BbDatePickerInput.md +47 -20
  185. package/dist/ai/source/BbDialog.md +5 -5
  186. package/dist/ai/source/BbDropdown.md +231 -158
  187. package/dist/ai/source/BbDropdownButton.md +19 -12
  188. package/dist/ai/source/BbDropdownGroup.md +127 -93
  189. package/dist/ai/source/BbForm.md +25 -1
  190. package/dist/ai/source/BbHoverCard.md +30 -3
  191. package/dist/ai/source/BbHoverCardPortal.md +18 -3
  192. package/dist/ai/source/BbIndicator.md +4 -0
  193. package/dist/ai/source/BbNumberInput.md +855 -19
  194. package/dist/ai/source/BbOffCanvas.md +27 -11
  195. package/dist/ai/source/BbPagination.md +3 -3
  196. package/dist/ai/source/BbPopover.md +185 -12
  197. package/dist/ai/source/BbPopoverPortal.md +30 -3
  198. package/dist/ai/source/BbProgress.md +82 -18
  199. package/dist/ai/source/BbRadioGroup.md +12 -5
  200. package/dist/ai/source/BbRating.md +11 -9
  201. package/dist/ai/source/BbSelect.md +16 -10
  202. package/dist/ai/source/BbSelectPopover.md +29 -23
  203. package/dist/ai/source/BbSlider.md +12 -6
  204. package/dist/ai/source/BbSwitch.md +3 -2
  205. package/dist/ai/source/BbSwitchGroup.md +5 -2
  206. package/dist/ai/source/BbTable.md +102 -18
  207. package/dist/ai/source/BbTabs.md +30 -24
  208. package/dist/ai/source/BbTabsList.md +29 -23
  209. package/dist/ai/source/BbTabsPanels.md +29 -23
  210. package/dist/ai/source/BbTabsRoot.md +28 -22
  211. package/dist/ai/source/BbTag.md +10 -9
  212. package/dist/ai/source/BbTextInput.md +5 -4
  213. package/dist/ai/source/BbTextarea.md +6 -5
  214. package/dist/ai/source/BbTimePicker.md +1 -1
  215. package/dist/ai/source/BbTimePickerInput.md +46 -9
  216. package/dist/ai/source/BbToast.md +10 -7
  217. package/dist/ai/source/BbToastPortal.md +10 -7
  218. package/dist/ai/source/BbTooltip.md +88 -11
  219. package/dist/ai/source/BbTree.md +21 -3
  220. package/dist/ai/source/CommonField.md +6 -4
  221. package/dist/ai/source/CommonFieldInput.md +15 -10
  222. package/dist/ai/source/CommonPopover.md +8 -1
  223. package/dist/ai/source/CommonTimeSelector.md +5 -4
  224. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +10 -8
  225. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +8 -8
  226. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +45 -45
  227. package/dist/components/BbBreadcrumbs/types.d.ts +25 -17
  228. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +88 -70
  229. package/dist/components/BbButton/toggleRoving.d.ts +6 -0
  230. package/dist/components/BbButton/toggleRoving.js +45 -0
  231. package/dist/components/BbButton/types.d.ts +12 -4
  232. package/dist/components/BbButton/types.js +5 -1
  233. package/dist/components/BbCalendar/BbCalendar.vue_vue_type_script_setup_true_lang.js +178 -178
  234. package/dist/components/BbCalendar/CalendarMonthPanel.vue_vue_type_script_setup_true_lang.js +15 -15
  235. package/dist/components/BbCalendar/CalendarYearPanel.vue_vue_type_script_setup_true_lang.js +28 -28
  236. package/dist/components/BbCalendar/useCalendarGrid.js +141 -139
  237. package/dist/components/BbCalendar/useDayjsLocale.d.ts +38 -15
  238. package/dist/components/BbCalendar/useDayjsLocale.js +31 -30
  239. package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +48 -48
  240. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +81 -80
  241. package/dist/components/BbCheckboxGroup/types.d.ts +6 -2
  242. package/dist/components/BbCollapsible/types.d.ts +2 -1
  243. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +69 -69
  244. package/dist/components/BbColorPalette/types.d.ts +2 -1
  245. package/dist/components/BbConfirm/BbConfirmPortal.vue.d.ts +2 -5
  246. package/dist/components/BbConfirm/types.d.ts +15 -0
  247. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +363 -349
  248. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +91 -86
  249. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +298 -289
  250. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +322 -356
  251. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +17 -15
  252. package/dist/components/BbDropdown/DropdownRow.vue.d.ts +40 -0
  253. package/dist/components/BbDropdown/DropdownRow.vue.js +5 -0
  254. package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +60 -0
  255. package/dist/components/BbDropdown/normalizeGroups.d.ts +8 -2
  256. package/dist/components/BbDropdown/normalizeGroups.js +60 -46
  257. package/dist/components/BbDropdown/types.d.ts +120 -88
  258. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +11 -2
  259. package/dist/components/BbDropdownButton/types.d.ts +2 -2
  260. package/dist/components/BbForm/BbForm.vue.d.ts +9 -0
  261. package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +114 -105
  262. package/dist/components/BbForm/BbFormCustomField.js +1 -1
  263. package/dist/components/BbForm/bindFormField.js +2 -1
  264. package/dist/components/BbForm/formFields.d.ts +5 -0
  265. package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +145 -142
  266. package/dist/components/BbHoverCard/BbHoverCardPortal.vue.d.ts +2 -2
  267. package/dist/components/BbHoverCard/types.d.ts +14 -1
  268. package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +0 -1
  269. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +452 -125
  270. package/dist/components/BbNumberInput/numberDisplay.d.ts +256 -0
  271. package/dist/components/BbNumberInput/numberDisplay.js +499 -0
  272. package/dist/components/BbNumberInput/types.d.ts +54 -1
  273. package/dist/components/BbNumberInput/warroom/corpus.d.ts +58 -0
  274. package/dist/components/BbNumberInput/warroom/currency-verify.rows.d.ts +28 -0
  275. package/dist/components/BbNumberInput/warroom/currency.rows.d.ts +2 -0
  276. package/dist/components/BbNumberInput/warroom/harness.d.ts +217 -0
  277. package/dist/components/BbNumberInput/warroom/oracle.d.ts +150 -0
  278. package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +7 -7
  279. package/dist/components/BbPopover/BbPopover.vue.d.ts +1 -0
  280. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +207 -162
  281. package/dist/components/BbPopover/BbPopoverPortal.vue.d.ts +2 -2
  282. package/dist/components/BbPopover/types.d.ts +26 -1
  283. package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +15 -7
  284. package/dist/components/BbProgress/types.d.ts +23 -7
  285. package/dist/components/BbProgress/types.js +1 -1
  286. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +102 -101
  287. package/dist/components/BbRadioGroup/types.d.ts +6 -2
  288. package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +63 -63
  289. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +156 -154
  290. package/dist/components/BbSelect/types.d.ts +6 -2
  291. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +2 -1
  292. package/dist/components/BbSelectPopover/types.d.ts +6 -2
  293. package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +153 -153
  294. package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +62 -62
  295. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +131 -130
  296. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +711 -676
  297. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +1 -1
  298. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +1 -1
  299. package/dist/components/BbTabs/types.d.ts +28 -22
  300. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +76 -76
  301. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +58 -58
  302. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +82 -82
  303. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +246 -236
  304. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +99 -86
  305. package/dist/components/BbTooltip/tooltipWarmup.d.ts +23 -0
  306. package/dist/components/BbTooltip/tooltipWarmup.js +7 -0
  307. package/dist/components/BbTooltip/types.d.ts +10 -3
  308. package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +29 -21
  309. package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +10 -7
  310. package/dist/components/CommonFieldInput/CommonFieldInput.vue_vue_type_script_setup_true_lang.js +37 -36
  311. package/dist/components/CommonPopover/types.d.ts +2 -1
  312. package/dist/components/CommonTimeSelector/CommonTimeSelector.vue_vue_type_script_setup_true_lang.js +9 -9
  313. package/dist/composables/formSubmitLock.d.ts +6 -0
  314. package/dist/composables/formSubmitLock.js +4 -0
  315. package/dist/composables/useBaseOptions.d.ts +7 -1
  316. package/dist/composables/useBaseOptions.js +32 -32
  317. package/dist/composables/useBbDropdownContext.d.ts +8 -8
  318. package/dist/composables/useBbFormField.d.ts +9 -0
  319. package/dist/composables/useBbFormField.js +5 -3
  320. package/dist/composables/useBbTabsContext.d.ts +10 -10
  321. package/dist/composables/useBbTabsContext.js +18 -18
  322. package/dist/composables/useFormBinding.d.ts +11 -0
  323. package/dist/composables/useFormBinding.js +15 -13
  324. package/dist/composables/useItemText.d.ts +5 -1
  325. package/dist/composables/useItemText.js +8 -3
  326. package/dist/composables/useItemValue.d.ts +5 -1
  327. package/dist/composables/useItemValue.js +8 -3
  328. package/dist/composables/useLocale.js +10 -9
  329. package/dist/deprecation/ai-deprecations.json.d.ts +130 -0
  330. package/dist/deprecation/ai-deprecations.json.js +1 -1
  331. package/dist/deprecation/removedProps.js +1 -1
  332. package/dist/directives/bbDropdown.js +1 -1
  333. package/dist/directives/directivePortal.d.ts +13 -7
  334. package/dist/directives/directivePortal.js +1 -4
  335. package/dist/i18n/index.d.ts +7 -12
  336. package/dist/i18n/locales/cs.json +11 -14
  337. package/dist/i18n/locales/da.json +13 -16
  338. package/dist/i18n/locales/de-CH.json +137 -0
  339. package/dist/i18n/locales/de.json +14 -17
  340. package/dist/i18n/locales/el.json +10 -13
  341. package/dist/i18n/locales/en-GB.json +137 -0
  342. package/dist/i18n/locales/en.json +8 -11
  343. package/dist/i18n/locales/es-MX.json +137 -0
  344. package/dist/i18n/locales/es.json +16 -19
  345. package/dist/i18n/locales/fi.json +8 -11
  346. package/dist/i18n/locales/fr.json +23 -26
  347. package/dist/i18n/locales/hu.json +8 -11
  348. package/dist/i18n/locales/it.json +12 -15
  349. package/dist/i18n/locales/ja.json +13 -16
  350. package/dist/i18n/locales/ko.json +10 -13
  351. package/dist/i18n/locales/nb.json +13 -16
  352. package/dist/i18n/locales/nl.json +21 -24
  353. package/dist/i18n/locales/pl.json +10 -13
  354. package/dist/i18n/locales/{pt.json → pt-BR.json} +19 -22
  355. package/dist/i18n/locales/pt-PT.json +137 -0
  356. package/dist/i18n/locales/ro.json +22 -25
  357. package/dist/i18n/locales/ru.json +11 -14
  358. package/dist/i18n/locales/sv.json +16 -19
  359. package/dist/i18n/locales/tr.json +14 -17
  360. package/dist/i18n/locales/uk.json +11 -14
  361. package/dist/i18n/locales/{zh-cn.json → zh-CN.json} +10 -13
  362. package/dist/i18n/locales/zh-HK.json +137 -0
  363. package/dist/i18n/locales/zh-TW.json +137 -0
  364. package/dist/i18n/regionHints.d.ts +16 -0
  365. package/dist/i18n/regionHints.js +49 -0
  366. package/dist/i18n/regions.d.ts +286 -0
  367. package/dist/i18n/regions.js +265 -0
  368. package/dist/index.d.ts +4 -4
  369. package/dist/index.js +4 -4
  370. package/dist/llms-full.txt +1914 -1714
  371. package/dist/llms-medium.txt +76 -46
  372. package/dist/llms.txt +7 -7
  373. package/dist/locale-blueprint.json +16 -13
  374. package/dist/styles.css +2 -2
  375. package/dist/types/passthrough.d.ts +1 -1
  376. package/dist/types/ptComponentMap.d.ts +2 -2
  377. package/dist/utilities/functions/slotKey.d.ts +2 -2
  378. package/dist/utils/versionCheck.js +1 -1
  379. package/dist/vite-plugin.d.ts +22 -19
  380. package/dist/vite.js +309 -297
  381. package/llms.txt +7 -7
  382. package/package.json +5 -3
  383. package/scripts/lib/agent-manifest.mjs +2 -1
  384. package/scripts/lib/eslint-disable.mjs +17 -4
  385. package/scripts/lib/eslint-plugin.d.ts +9 -1
  386. package/scripts/lib/eslint-plugin.mjs +256 -6
  387. package/scripts/lib/helper-canon.mjs +176 -0
  388. package/scripts/lib/helpers-add.mjs +1303 -0
  389. package/scripts/lib/local-components.mjs +33 -4
  390. package/scripts/lib/locale-check.mjs +165 -0
  391. package/scripts/lib/portal-names.mjs +458 -0
  392. package/scripts/lib/redundant-item-accessor.mjs +398 -0
  393. package/scripts/lib/renamed-item-field.mjs +343 -0
  394. package/scripts/lib/slot-key.mjs +2 -2
  395. package/scripts/lib/slot-renames.mjs +1 -1
  396. package/scripts/lib/unimported-components.mjs +5 -2
  397. package/scripts/lib/validate-bb-markup.mjs +123 -56
  398. package/dist/i18n/index.js +0 -27
@@ -2,26 +2,26 @@ import { withoutClass as e, withoutPt as t } from "../../utils/passthrough.js";
2
2
  import { usePassthrough as n } from "../../composables/usePassthrough.js";
3
3
  import { useConfig as r } from "../../composables/useConfig.js";
4
4
  import { useId as i } from "../../composables/useId.js";
5
- import { isTopEscapeEntry as ee, pushEscapeEntry as te, removeEscapeEntry as ne } from "../../utils/overlayEscapeStack.js";
5
+ import { isTopEscapeEntry as a, pushEscapeEntry as ee, removeEscapeEntry as te, topDeliberateSurface as ne } from "../../utils/overlayEscapeStack.js";
6
6
  import { useUntil as re } from "../../composables/useUntil.js";
7
7
  import { removedPropsFor as ie } from "../../deprecation/removedProps.js";
8
8
  import { warnRemovedAttrs as ae } from "../../utilities/functions/warnRemovedAttrs.js";
9
- import { extractDomContainer as a } from "../../utilities/functions/extractDomContainer.js";
9
+ import { extractDomContainer as oe } from "../../utilities/functions/extractDomContainer.js";
10
10
  import { transitions as o } from "../../utilities/misc/transitions.js";
11
- import oe from "../CommonPopover/CommonPopover.vue.js";
12
- import { useMobile as se } from "../../composables/useMobile.js";
13
- import { useClosingInert as ce } from "../../composables/useClosingInert.js";
14
- import { BB_OFF_CANVAS_PT as le } from "../BbOffCanvas/types.js";
15
- import ue from "../BbOffCanvas/BbOffCanvas.vue.js";
16
- import { parseWidthString as s } from "../../utilities/functions/parseWidthString.js";
17
- import { BB_POPOVER_PT as de } from "./types.js";
18
- import { Fragment as fe, computed as c, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as pe, createSlots as me, defineComponent as f, mergeModels as p, mergeProps as m, nextTick as he, normalizeProps as ge, onBeforeUnmount as _e, onDeactivated as ve, onMounted as ye, openBlock as h, ref as g, renderSlot as _, unref as v, useModel as be, useTemplateRef as xe, watch as y, withCtx as b } from "vue";
19
- import { useElementSize as Se, useIntersectionObserver as Ce } from "@vueuse/core";
11
+ import se from "../CommonPopover/CommonPopover.vue.js";
12
+ import { useMobile as ce } from "../../composables/useMobile.js";
13
+ import { useClosingInert as le } from "../../composables/useClosingInert.js";
14
+ import { BB_OFF_CANVAS_PT as ue } from "../BbOffCanvas/types.js";
15
+ import de from "../BbOffCanvas/BbOffCanvas.vue.js";
16
+ import { parseWidthString as fe } from "../../utilities/functions/parseWidthString.js";
17
+ import { BB_POPOVER_PT as pe } from "./types.js";
18
+ import { Fragment as me, computed as s, createBlock as he, createCommentVNode as c, createElementBlock as l, createElementVNode as ge, createSlots as _e, defineComponent as ve, mergeModels as u, mergeProps as d, nextTick as ye, normalizeProps as be, onBeforeUnmount as xe, onDeactivated as Se, onMounted as Ce, openBlock as f, ref as p, renderSlot as m, unref as h, useModel as we, useTemplateRef as Te, watch as g, withCtx as _ } from "vue";
19
+ import { useElementSize as Ee, useIntersectionObserver as De } from "@vueuse/core";
20
20
  //#region src/components/BbPopover/BbPopover.vue?vue&type=script&setup=true&lang.ts
21
- var we = 500, Te = 10, x = /*@__PURE__*/ f({
21
+ var Oe = 500, ke = 10, v = /*@__PURE__*/ ve({
22
22
  inheritAttrs: !1,
23
23
  __name: "BbPopover",
24
- props: /*@__PURE__*/ p({
24
+ props: /*@__PURE__*/ u({
25
25
  "pt:root": {},
26
26
  "pt:panel": {},
27
27
  "pt:sheet": {},
@@ -45,6 +45,10 @@ var we = 500, Te = 10, x = /*@__PURE__*/ f({
45
45
  eager: { type: Boolean },
46
46
  focusTarget: {},
47
47
  id: {},
48
+ modal: {
49
+ type: Boolean,
50
+ default: !1
51
+ },
48
52
  offset: { default: 4 },
49
53
  offCanvasProps: {},
50
54
  padding: { default: 10 },
@@ -63,45 +67,45 @@ var we = 500, Te = 10, x = /*@__PURE__*/ f({
63
67
  },
64
68
  modelModifiers: {}
65
69
  }),
66
- emits: /*@__PURE__*/ p([
70
+ emits: /*@__PURE__*/ u([
67
71
  "show",
68
72
  "hide",
69
73
  "shown",
70
74
  "hidden"
71
75
  ], ["update:modelValue"]),
72
- setup(o, { emit: f }) {
73
- let p = be(o, "modelValue"), x = o, S = f, Ee = r();
76
+ setup(o, { emit: ve }) {
77
+ let u = we(o, "modelValue"), v = o, y = ve, Ae = r();
74
78
  process.env.NODE_ENV !== "production" && ae("BbPopover", ie("BbPopover"));
75
- let { id: De } = i(), C = x.id ?? De.value, w = `bbp_${C}`, T = g(), Oe = xe("popover-ref"), E = c(() => a(Oe.value)), D = re(p), O = c(() => x.activator != null), { isMobile: k } = se(), A = () => (x.adaptive ?? Ee.adaptive) && k.value ? "canvas" : "popover", j = g(A()), M = c(() => j.value === "canvas");
76
- y([
77
- () => x.adaptive,
78
- k,
79
- p
79
+ let { id: je } = i(), b = v.id ?? je.value, x = `bbp_${b}`, S = p(), Me = s(() => T.value && S.value?.id || b), Ne = Te("popover-ref"), C = s(() => oe(Ne.value)), w = re(u), T = s(() => v.activator != null), { isMobile: Pe } = ce(), E = () => (v.adaptive ?? Ae.adaptive) && Pe.value ? "canvas" : "popover", D = p(E()), O = s(() => D.value === "canvas");
80
+ g([
81
+ () => v.adaptive,
82
+ Pe,
83
+ u
80
84
  ], () => {
81
- p.value || (j.value = A());
85
+ u.value || (D.value = E());
82
86
  });
83
- let N = n({
87
+ let k = n({
84
88
  component: "BbPopover",
85
- props: x,
86
- parts: de.parts,
87
- states: de.states,
88
- active: { open: () => p.value }
89
- }), ke = c(() => ({
89
+ props: v,
90
+ parts: pe.parts,
91
+ states: pe.states,
92
+ active: { open: () => u.value }
93
+ }), Fe = s(() => ({
90
94
  side: "bottom",
91
95
  size: "auto",
92
96
  draggable: !0,
93
- eager: x.eager,
94
- disabled: x.disabled,
95
- focusTarget: x.focusTarget,
96
- transitionDuration: x.transitionDuration,
97
- ...t(x.offCanvasProps),
98
- ...D.value && !x.offCanvasProps?.title ? { "aria-labelledby": C } : {}
99
- })), Ae = () => {
100
- T.value?.focus(), S("hidden");
101
- }, P = c(() => {
102
- let e = x.trigger;
97
+ eager: v.eager,
98
+ disabled: v.disabled,
99
+ focusTarget: v.focusTarget,
100
+ transitionDuration: v.transitionDuration,
101
+ ...t(v.offCanvasProps),
102
+ ...w.value && !v.offCanvasProps?.title ? { "aria-labelledby": Me.value } : {}
103
+ })), Ie = () => {
104
+ S.value?.focus(), y("hidden");
105
+ }, A = s(() => {
106
+ let e = v.trigger;
103
107
  return new Set(Array.isArray(e) ? e : [e]);
104
- }), F = (e, t) => ({ getBoundingClientRect: () => ({
108
+ }), j = (e, t) => ({ getBoundingClientRect: () => ({
105
109
  x: e,
106
110
  y: t,
107
111
  width: 0,
@@ -113,19 +117,19 @@ var we = 500, Te = 10, x = /*@__PURE__*/ f({
113
117
  toJSON() {
114
118
  return this;
115
119
  }
116
- }) }), I = g(null), je = c(() => x.placement === "cursor" && I.value ? I.value : T.value), L, R = null, z = !1, B = () => {
117
- clearTimeout(L), R = null;
118
- }, V = (e) => {
119
- T.value = a(e) ?? void 0;
120
- }, Me = c(() => {
121
- let e = P.value;
120
+ }) }), M = p(null), Le = s(() => v.placement === "cursor" && M.value ? M.value : S.value), Re, N = null, P = !1, F = () => {
121
+ clearTimeout(Re), N = null;
122
+ }, ze = (e) => {
123
+ S.value = oe(e) ?? void 0;
124
+ }, Be = s(() => {
125
+ let e = A.value;
122
126
  return {
123
- "aria-expanded": D.value ? p.value : void 0,
124
- "aria-controls": D.value ? w : void 0,
127
+ "aria-expanded": w.value ? u.value : void 0,
128
+ "aria-controls": w.value ? x : void 0,
125
129
  "aria-haspopup": "dialog",
126
- id: C,
127
- disabled: !!x.disabled,
128
- ref: V,
130
+ id: b,
131
+ disabled: !!v.disabled,
132
+ ref: ze,
129
133
  ...e.has("click") ? { onClick: J } : {},
130
134
  ...e.has("contextMenu") ? {
131
135
  onContextmenu: Y,
@@ -136,207 +140,247 @@ var we = 500, Te = 10, x = /*@__PURE__*/ f({
136
140
  } : {}
137
141
  };
138
142
  });
139
- y(() => x.activator, (e) => {
140
- e && V(e);
141
- }, { immediate: !0 }), y([T, P], ([e, t], n, r) => {
142
- if (!e || !O.value) return;
143
+ g(() => v.activator, (e) => {
144
+ e && ze(e);
145
+ }, { immediate: !0 }), g([S, A], ([e, t], n, r) => {
146
+ if (!e || !T.value) return;
143
147
  let i = [];
144
148
  t.has("click") && (e.addEventListener("click", J), i.push(() => e.removeEventListener("click", J))), t.has("contextMenu") && (e.addEventListener("contextmenu", Y), e.addEventListener("pointerdown", X), e.addEventListener("pointermove", Z), e.addEventListener("pointerup", Q), e.addEventListener("pointercancel", Q), i.push(() => {
145
- e.removeEventListener("contextmenu", Y), e.removeEventListener("pointerdown", X), e.removeEventListener("pointermove", Z), e.removeEventListener("pointerup", Q), e.removeEventListener("pointercancel", Q), B();
146
- })), e.setAttribute("aria-haspopup", "dialog"), r(() => {
147
- i.forEach((e) => e()), e.removeAttribute("aria-expanded"), e.removeAttribute("aria-controls"), e.removeAttribute("aria-haspopup");
149
+ e.removeEventListener("contextmenu", Y), e.removeEventListener("pointerdown", X), e.removeEventListener("pointermove", Z), e.removeEventListener("pointerup", Q), e.removeEventListener("pointercancel", Q), F();
150
+ })), e.setAttribute("aria-haspopup", "dialog");
151
+ let a = !e.id;
152
+ a && e.setAttribute("id", b), r(() => {
153
+ i.forEach((e) => e()), e.removeAttribute("aria-expanded"), e.removeAttribute("aria-controls"), e.removeAttribute("aria-haspopup"), a && e.id === b && e.removeAttribute("id");
148
154
  });
149
- }, { immediate: !0 }), y([
150
- T,
151
- p,
152
- D
155
+ }, { immediate: !0 }), g([
156
+ S,
157
+ u,
158
+ w
153
159
  ], ([e, t, n]) => {
154
- !e || !O.value || !n || (e.setAttribute("id", C), e.setAttribute("aria-expanded", String(t)), e.setAttribute("aria-controls", w));
155
- }, { immediate: !0 }), Ce(T, ([{ intersectionRatio: e }]) => {
156
- !(e >= .99) && p.value && !M.value && $();
160
+ !e || !T.value || !n || (e.setAttribute("aria-expanded", String(t)), e.setAttribute("aria-controls", x));
161
+ }, { immediate: !0 }), De(S, ([{ intersectionRatio: e }]) => {
162
+ !(e >= .99) && u.value && !O.value && $();
157
163
  }, { threshold: [0, 1] });
158
- let H = 0, U = (e) => {
159
- if (e.timeStamp <= H) return;
164
+ let I = 0, L = (e) => {
165
+ if (e.timeStamp <= I) return;
160
166
  let t = e.target;
161
167
  if (!(t instanceof Node)) return;
162
- let n = E.value?.contains(t), r = T.value?.contains(t);
168
+ let n = C.value?.contains(t), r = S.value?.contains(t);
163
169
  !n && !r && $();
164
- }, W = Symbol("bb-popover"), Ne = (e) => {
165
- e.key === "Escape" && ee(W) && (e.preventDefault(), e.stopImmediatePropagation(), $());
166
- }, Pe = () => {
167
- te(W, { element: () => E.value }), H = performance.now(), document.addEventListener("click", U, { passive: !0 }), document.addEventListener("contextmenu", U, { passive: !0 }), document.addEventListener("keydown", Ne, { capture: !0 });
168
- }, Fe = () => {
169
- ne(W), document.removeEventListener("click", U), document.removeEventListener("contextmenu", U), document.removeEventListener("keydown", Ne, { capture: !0 });
170
- }, G = !1, Ie = async () => {
171
- if (M.value) return;
172
- G = !0, K = !1, S("show"), Pe(), await he();
173
- let e = x.focusTarget ?? "[tabindex]:not([tabindex=\"-1\"]), button, a, input, select, textarea", t = E.value?.querySelector(e);
170
+ }, Ve = s(() => v.modal ? {} : { role: "dialog" }), R = !1, z = !1, B = (e) => {
171
+ if (a(W)) return !1;
172
+ let t = ne();
173
+ return t ? !t.element || t.element.contains(e) : !1;
174
+ }, V = /* @__PURE__ */ new Set(), He = () => {
175
+ V = /* @__PURE__ */ new Set();
176
+ let e = S.value?.closest("dialog");
177
+ for (; e;) e.open && V.add(e), e = e.parentElement?.closest("dialog");
178
+ }, H = () => {
179
+ R = !0, $();
180
+ }, Ue = (e) => {
181
+ if (e.timeStamp <= I) return;
182
+ let t = e.target;
183
+ if (t instanceof Node) {
184
+ if (S.value?.contains(t)) {
185
+ z = !0, setTimeout(() => z = !1, 0);
186
+ return;
187
+ }
188
+ C.value?.contains(t) || B(t) || H();
189
+ }
190
+ }, U = (e) => {
191
+ if (!u.value || e.timeStamp <= I) return;
192
+ let t = e.target;
193
+ t instanceof Node && (S.value?.contains(t) || C.value?.contains(t) || B(t) || H());
194
+ }, We = (e) => {
195
+ let t = e.target;
196
+ if (!(t instanceof Node)) return;
197
+ let n = C.value;
198
+ if (n?.contains(t) || z && S.value?.contains(t) || t instanceof Element && n && t.contains(n)) return;
199
+ let r = t instanceof Element ? t.closest("dialog") : null;
200
+ if (r && n && r.contains(n) && !V.has(r)) {
201
+ V.add(r);
202
+ return;
203
+ }
204
+ B(t) || H();
205
+ }, W = Symbol("bb-popover"), Ge = (e) => {
206
+ e.key === "Escape" && a(W) && (e.preventDefault(), e.stopImmediatePropagation(), $());
207
+ }, Ke = () => {
208
+ ee(W, { element: () => C.value }), I = performance.now(), v.modal ? (document.addEventListener("click", L, { passive: !0 }), document.addEventListener("contextmenu", L, { passive: !0 })) : (R = !1, He(), document.addEventListener("pointerdown", Ue, {
209
+ passive: !0,
210
+ capture: !0
211
+ }), document.addEventListener("focusin", We, { passive: !0 }), document.addEventListener("click", U, { passive: !0 }), document.addEventListener("contextmenu", U, { passive: !0 })), document.addEventListener("keydown", Ge, { capture: !0 });
212
+ }, qe = () => {
213
+ te(W), document.removeEventListener("click", L), document.removeEventListener("contextmenu", L), document.removeEventListener("pointerdown", Ue, { capture: !0 }), document.removeEventListener("focusin", We), document.removeEventListener("click", U), document.removeEventListener("contextmenu", U), document.removeEventListener("keydown", Ge, { capture: !0 });
214
+ }, G = !1, Je = async () => {
215
+ if (O.value) return;
216
+ G = !0, K = !1, y("show"), Ke(), await ye();
217
+ let e = v.focusTarget ?? "[tabindex]:not([tabindex=\"-1\"]), button, a, input, select, textarea", t = C.value?.querySelector(e);
174
218
  t instanceof HTMLElement && t.focus();
175
- }, Le = () => {
176
- G && (G = !1, K = !0, S("hide"), Fe(), T.value && T.value.focus());
177
- }, K = !1, Re = () => {
178
- K && (K = !1, S("hidden"));
219
+ }, Ye = () => {
220
+ G && (G = !1, K = !0, y("hide"), qe(), R ? R = !1 : S.value && S.value.focus());
221
+ }, K = !1, Xe = () => {
222
+ K && (K = !1, y("hidden"));
179
223
  };
180
- y(M, (e) => {
181
- e && Re();
224
+ g(O, (e) => {
225
+ e && Xe();
182
226
  });
183
- let ze = ce(p, () => x.transitionDuration), Be = ({ availableHeight: e }) => m({
184
- class: ["bb-popover__panel", { "bb-popover__panel--scrollable": x.scrollable }],
185
- inert: ze.value,
186
- style: { "--max-h": x.scrollable && e != null ? `${e}px` : void 0 }
187
- }, N.panel);
188
- y(p, (e) => {
189
- e ? (j.value = A(), Ie()) : Le();
190
- }), ye(() => {
191
- p.value && Ie();
192
- }), _e(() => {
193
- B(), Fe();
227
+ let Ze = le(u, () => v.transitionDuration), Qe = ({ availableHeight: e }) => d({
228
+ class: ["bb-popover__panel", { "bb-popover__panel--scrollable": v.scrollable }],
229
+ inert: Ze.value,
230
+ style: { "--max-h": v.scrollable && e != null ? `${e}px` : void 0 }
231
+ }, k.panel);
232
+ g(u, (e) => {
233
+ e ? (D.value = E(), Je()) : Ye();
234
+ }), Ce(() => {
235
+ u.value && Je();
236
+ }), xe(() => {
237
+ F(), qe();
194
238
  });
195
239
  function q() {
196
- x.disabled || (p.value = !0);
240
+ v.disabled || (u.value = !0);
197
241
  }
198
242
  function J(e) {
199
- if (p.value) {
243
+ if (u.value) {
200
244
  $();
201
245
  return;
202
246
  }
203
- if (z) {
204
- z = !1, e.preventDefault(), e.stopPropagation();
247
+ if (P) {
248
+ P = !1, e.preventDefault(), e.stopPropagation();
205
249
  return;
206
250
  }
207
- e.stopImmediatePropagation(), x.placement === "cursor" && (I.value = F(e.clientX, e.clientY)), q();
251
+ e.stopImmediatePropagation(), v.placement === "cursor" && (M.value = j(e.clientX, e.clientY)), q();
208
252
  }
209
253
  function Y(e) {
210
- x.disabled || (e.preventDefault(), e.stopPropagation(), !(x.placement === "cursor" && (I.value = F(e.clientX, e.clientY), p.value)) && (p.value ? $() : q()));
254
+ v.disabled || (e.preventDefault(), e.stopPropagation(), !(v.placement === "cursor" && (M.value = j(e.clientX, e.clientY), u.value)) && (u.value ? $() : q()));
211
255
  }
212
256
  function X(e) {
213
- x.disabled || e.pointerType === "mouse" || (z = !1, R = {
257
+ v.disabled || e.pointerType === "mouse" || (P = !1, N = {
214
258
  x: e.clientX,
215
259
  y: e.clientY
216
- }, L = setTimeout(() => {
217
- z = !0, x.placement === "cursor" && R && (I.value = F(R.x, R.y)), R = null, q();
218
- }, we));
260
+ }, Re = setTimeout(() => {
261
+ P = !0, v.placement === "cursor" && N && (M.value = j(N.x, N.y)), N = null, q();
262
+ }, Oe));
219
263
  }
220
264
  function Z(e) {
221
- if (!R) return;
222
- let t = e.clientX - R.x, n = e.clientY - R.y;
223
- Math.sqrt(t * t + n * n) > Te && B();
265
+ if (!N) return;
266
+ let t = e.clientX - N.x, n = e.clientY - N.y;
267
+ Math.sqrt(t * t + n * n) > ke && F();
224
268
  }
225
269
  function Q() {
226
- B();
270
+ F();
227
271
  }
228
272
  function $() {
229
- p.value = !1;
273
+ u.value = !1;
230
274
  }
231
- let Ve = c(() => {
232
- if (!x.width) return !1;
233
- let { unit: e } = s(x.width);
275
+ let $e = s(() => {
276
+ if (!v.width) return !1;
277
+ let { unit: e } = fe(v.width);
234
278
  return e === "%";
235
- }), { width: He } = Se(c(() => Ve.value ? T.value : void 0), {
279
+ }), { width: et } = Ee(s(() => $e.value ? S.value : void 0), {
236
280
  width: 0,
237
281
  height: 0
238
- }, { box: "border-box" }), Ue = c(() => {
239
- if (!x.width) return;
240
- let { value: e, unit: t } = s(x.width);
241
- return t === "%" && T.value ? `${He.value * (e / 100)}px` : `${e}px`;
282
+ }, { box: "border-box" }), tt = s(() => {
283
+ if (!v.width) return;
284
+ let { value: e, unit: t } = fe(v.width);
285
+ return t === "%" && S.value ? `${et.value * (e / 100)}px` : `${e}px`;
242
286
  });
243
- return ve($), (t, n) => (h(), d(fe, null, [O.value ? u("", !0) : _(t.$slots, "activator", ge(m({ key: 0 }, {
244
- props: Me.value,
287
+ return Se($), (t, n) => (f(), l(me, null, [T.value ? c("", !0) : m(t.$slots, "activator", be(d({ key: 0 }, {
288
+ props: Be.value,
245
289
  disabled: !!t.disabled,
246
- open: p.value,
290
+ open: u.value,
247
291
  placement: t.placement
248
- }))), M.value ? (h(), l(ue, m({
292
+ }))), O.value ? (f(), he(de, d({
249
293
  key: 1,
250
- id: w,
251
- modelValue: p.value,
252
- "onUpdate:modelValue": n[0] ||= (e) => p.value = e,
294
+ id: x,
295
+ modelValue: u.value,
296
+ "onUpdate:modelValue": n[0] ||= (e) => u.value = e,
253
297
  class: "bb-popover__sheet",
254
- pt: v(N).forward({
298
+ pt: h(k).forward({
255
299
  header: "header",
256
300
  content: "content",
257
301
  footer: "footer",
258
302
  panel: "root",
259
303
  sheet: "root"
260
- }, v(le).states, () => t.offCanvasProps?.pt)
261
- }, m(ke.value, {
262
- onHidden: Ae,
263
- onHide: () => S("hide"),
264
- onShow: () => S("show"),
265
- onShown: () => S("shown")
266
- }, v(e)(t.$attrs))), me({
267
- default: b(() => [_(t.$slots, "default", {
304
+ }, h(ue).states, () => t.offCanvasProps?.pt)
305
+ }, d(Fe.value, {
306
+ onHidden: Ie,
307
+ onHide: () => y("hide"),
308
+ onShow: () => y("show"),
309
+ onShown: () => y("shown")
310
+ }, h(e)(t.$attrs))), _e({
311
+ default: _(() => [m(t.$slots, "default", {
268
312
  close: $,
269
313
  disabled: !!t.disabled,
270
- open: p.value,
314
+ open: u.value,
271
315
  placement: t.placement
272
316
  })]),
273
317
  _: 2
274
318
  }, [t.$slots.header ? {
275
319
  name: "header",
276
- fn: b(() => [_(t.$slots, "header", {
320
+ fn: _(() => [m(t.$slots, "header", {
277
321
  close: $,
278
322
  disabled: !!t.disabled,
279
- open: p.value,
323
+ open: u.value,
280
324
  placement: t.placement
281
325
  })]),
282
326
  key: "0"
283
327
  } : void 0, t.$slots.footer ? {
284
328
  name: "footer",
285
- fn: b(() => [_(t.$slots, "footer", {
329
+ fn: _(() => [m(t.$slots, "footer", {
286
330
  close: $,
287
331
  disabled: !!t.disabled,
288
- open: p.value,
332
+ open: u.value,
289
333
  placement: t.placement
290
334
  })]),
291
335
  key: "1"
292
- } : void 0]), 1040, ["modelValue", "pt"])) : (h(), l(oe, m({
336
+ } : void 0]), 1040, ["modelValue", "pt"])) : (f(), he(se, d({
293
337
  key: 2,
294
- id: w,
338
+ id: x,
295
339
  ref: "popover-ref",
296
- modelValue: p.value,
297
- "onUpdate:modelValue": n[1] ||= (e) => p.value = e,
298
- anchor: je.value,
299
- "aria-labelledby": v(D) ? v(C) : void 0,
340
+ modelValue: u.value,
341
+ "onUpdate:modelValue": n[1] ||= (e) => u.value = e,
342
+ anchor: Le.value,
343
+ "aria-labelledby": h(w) ? Me.value : void 0,
300
344
  boundary: t.boundary,
301
- "bubble-attrs": Be,
345
+ "bubble-attrs": Qe,
302
346
  class: "bb-popover",
303
- dialog: "",
347
+ dialog: t.modal,
304
348
  eager: t.eager,
305
349
  "hide-arrow": "",
306
350
  offset: t.offset,
307
351
  padding: t.padding,
308
352
  placement: t.placement === "cursor" ? "bottom-start" : t.placement,
309
- style: { width: Ue.value },
353
+ style: { width: tt.value },
310
354
  "transition-duration": t.transitionDuration
311
- }, m(t.$attrs, v(N).root), {
312
- onHidden: Re,
313
- onShown: n[2] ||= (e) => S("shown")
355
+ }, d(Ve.value, t.$attrs, h(k).root), {
356
+ onHidden: Xe,
357
+ onShown: n[2] ||= (e) => y("shown")
314
358
  }), {
315
- default: b(() => [
316
- t.$slots.header ? (h(), d("div", m({
359
+ default: _(() => [
360
+ t.$slots.header ? (f(), l("div", d({
317
361
  key: 0,
318
362
  class: "bb-popover__header"
319
- }, v(N).header), [_(t.$slots, "header", {
363
+ }, h(k).header), [m(t.$slots, "header", {
320
364
  close: $,
321
365
  disabled: !!t.disabled,
322
- open: p.value,
366
+ open: u.value,
323
367
  placement: t.placement
324
- })], 16)) : u("", !0),
325
- pe("div", m({ class: "bb-popover__content scrollbar-border" }, v(N).content), [_(t.$slots, "default", {
368
+ })], 16)) : c("", !0),
369
+ ge("div", d({ class: "bb-popover__content scrollbar-border" }, h(k).content), [m(t.$slots, "default", {
326
370
  close: $,
327
371
  disabled: !!t.disabled,
328
- open: p.value,
372
+ open: u.value,
329
373
  placement: t.placement
330
374
  })], 16),
331
- t.$slots.footer ? (h(), d("div", m({
375
+ t.$slots.footer ? (f(), l("div", d({
332
376
  key: 1,
333
377
  class: "bb-popover__footer"
334
- }, v(N).footer), [_(t.$slots, "footer", {
378
+ }, h(k).footer), [m(t.$slots, "footer", {
335
379
  close: $,
336
380
  disabled: !!t.disabled,
337
- open: p.value,
381
+ open: u.value,
338
382
  placement: t.placement
339
- })], 16)) : u("", !0)
383
+ })], 16)) : c("", !0)
340
384
  ]),
341
385
  _: 3
342
386
  }, 16, [
@@ -344,6 +388,7 @@ var we = 500, Te = 10, x = /*@__PURE__*/ f({
344
388
  "anchor",
345
389
  "aria-labelledby",
346
390
  "boundary",
391
+ "dialog",
347
392
  "eager",
348
393
  "offset",
349
394
  "padding",
@@ -354,4 +399,4 @@ var we = 500, Te = 10, x = /*@__PURE__*/ f({
354
399
  }
355
400
  });
356
401
  //#endregion
357
- export { x as default };
402
+ export { v as default };
@@ -1,4 +1,4 @@
1
- import { DirectivePortalSlotProps } from '../../directives/directivePortal';
1
+ import { BbPopoverPortalSlotProps } from './types';
2
2
  /**
3
3
  * Content for `v-bb-popover="'<name>'"` (or `{ portal: '<name>' }`),
4
4
  * declared once in a template. Renders nothing in place: the popover renders the
@@ -10,7 +10,7 @@ type __VLS_Props = {
10
10
  };
11
11
  type __VLS_Slots = {
12
12
  /** The popover body. `props` is the directive's `portalProps`; `close` closes the popover. */
13
- default?: (props: DirectivePortalSlotProps) => any;
13
+ default?: (props: BbPopoverPortalSlotProps) => any;
14
14
  };
15
15
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
16
16
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -68,7 +68,8 @@ export type BbPopoverProps = {
68
68
  */
69
69
  disabled?: boolean;
70
70
  /**
71
- * Prevents rendering content before it's made visible.
71
+ * Renders the panel's content at mount instead of on the first open
72
+ * (the phone sheet's too).
72
73
  */
73
74
  eager?: boolean;
74
75
  /**
@@ -81,6 +82,17 @@ export type BbPopoverProps = {
81
82
  * Generated when omitted.
82
83
  */
83
84
  id?: HTMLAttributes['id'];
85
+ /**
86
+ * Makes the floating panel modal: the page behind it goes inert and
87
+ * cannot scroll, and Tab stays inside the panel until it closes. Off by
88
+ * default, the panel is a non-modal dialog: the page stays usable, a
89
+ * click outside closes it and still reaches what was clicked, and Tab
90
+ * past its last control (or Shift+Tab before its first) leaves it and
91
+ * closes it. The phone sheet is modal either way.
92
+ *
93
+ * @defaultValue `false`
94
+ */
95
+ modal?: boolean;
84
96
  /**
85
97
  * Space the floating container will maintain from the activator.
86
98
  *
@@ -208,3 +220,16 @@ export type BbPopoverSlots = {
208
220
  */
209
221
  footer?: (props: BbPopoverDefaultSlotProps) => any;
210
222
  };
223
+ /**
224
+ * The default slot scope of `<BbPopoverPortal>`: the ONE place this family's
225
+ * portal slot is typed (Q63.8), so tooling that infers `props` from the call
226
+ * sites hooks a single type: `P`, the type of `props`, is the seam it will
227
+ * feed (through a type-only prop on the portal component). Until then `P` is
228
+ * `any`, so `props.person.name` type-checks with no cast.
229
+ */
230
+ export type BbPopoverPortalSlotProps<P = any> = {
231
+ /** The `portalProps` the `v-bb-popover` passed. */
232
+ props: P;
233
+ /** Closes the popover. */
234
+ close: () => void;
235
+ };
@@ -16,7 +16,10 @@ var p = [
16
16
  props: {
17
17
  "pt:root": {},
18
18
  "pt:bar": {},
19
+ "pt:root:indeterminate": {},
20
+ "pt:bar:indeterminate": {},
19
21
  pt: {},
22
+ indeterminate: { type: Boolean },
20
23
  modelValue: { default: 0 },
21
24
  label: {},
22
25
  min: { default: 0 },
@@ -29,19 +32,24 @@ var p = [
29
32
  props: m,
30
33
  parts: i.parts,
31
34
  states: i.states,
32
- active: {}
33
- }), g = a(() => m.modelValue == null || Number.isNaN(m.modelValue) ? m.min : m.modelValue), _ = a(() => n(g.value, m.min, Math.max(m.min, m.max))), v = a(() => ({ "--transition-duration": `${t.medium}ms` })), y = a(() => m.max <= m.min ? 0 : n(r(g.value, m.min, m.max), 0, 100)), b = a(() => ({ transform: `translateX(${y.value - 100}%)` }));
35
+ active: { indeterminate: () => !!m.indeterminate }
36
+ }), g = a(() => {
37
+ let e = h.rootAttrs;
38
+ if (!m.indeterminate || !("aria-valuetext" in e)) return e;
39
+ let { "aria-valuetext": t, ...n } = e;
40
+ return n;
41
+ }), _ = a(() => m.modelValue == null || Number.isNaN(m.modelValue) ? m.min : m.modelValue), v = a(() => n(_.value, m.min, Math.max(m.min, m.max))), y = a(() => ({ "--transition-duration": `${t.medium}ms` })), b = a(() => m.max <= m.min ? 0 : n(r(_.value, m.min, m.max), 0, 100)), x = a(() => ({ transform: `translateX(${b.value - 100}%)` }));
34
42
  return (e, t) => (u(), o("div", l({
35
43
  "aria-label": e.label || void 0,
36
44
  "aria-valuemax": e.max,
37
45
  "aria-valuemin": e.min,
38
- "aria-valuenow": _.value,
39
- class: "bb-progress",
46
+ "aria-valuenow": e.indeterminate ? void 0 : v.value,
47
+ class: ["bb-progress", { "bb-progress--indeterminate": e.indeterminate }],
40
48
  role: "progressbar",
41
- style: v.value
42
- }, d(h).rootAttrs), [s("div", l({
49
+ style: y.value
50
+ }, g.value), [s("div", l({
43
51
  class: "bb-progress__bar",
44
- style: b.value
52
+ style: e.indeterminate ? void 0 : x.value
45
53
  }, d(h).bar), null, 16)], 16, p));
46
54
  }
47
55
  });