bitboss-ui 3.0.0-beta.63 → 3.0.0-beta.65

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 (396) hide show
  1. package/README.md +25 -20
  2. package/bin/bitboss-ui.mjs +73 -7
  3. package/dist/ai/BbAlert.md +10 -1
  4. package/dist/ai/BbBadge.md +35 -3
  5. package/dist/ai/BbBadgeButton.md +4 -2
  6. package/dist/ai/BbBaseButton.md +9 -3
  7. package/dist/ai/BbBreadcrumbs.md +2 -2
  8. package/dist/ai/BbButton.md +113 -8
  9. package/dist/ai/BbCheckbox.md +1 -1
  10. package/dist/ai/BbCheckboxGroup.md +94 -6
  11. package/dist/ai/BbColorInput.md +4 -1
  12. package/dist/ai/BbColorPalette.md +2 -1
  13. package/dist/ai/BbConfirm.md +7 -3
  14. package/dist/ai/BbDatePicker.md +2 -1
  15. package/dist/ai/BbDatePickerInput.md +4 -1
  16. package/dist/ai/BbDialog.md +12 -11
  17. package/dist/ai/BbDropdown.md +189 -38
  18. package/dist/ai/BbDropdownButton.md +27 -7
  19. package/dist/ai/BbForm.md +55 -22
  20. package/dist/ai/BbHost.md +2 -2
  21. package/dist/ai/BbHoverCard.md +7 -3
  22. package/dist/ai/BbIcon.md +12 -6
  23. package/dist/ai/BbIndicator.md +11 -1
  24. package/dist/ai/BbNumberInput.md +4 -1
  25. package/dist/ai/BbOffCanvas.md +37 -3
  26. package/dist/ai/BbPopover.md +2 -1
  27. package/dist/ai/BbRadio.md +1 -1
  28. package/dist/ai/BbRadioGroup.md +102 -10
  29. package/dist/ai/BbSelect.md +52 -17
  30. package/dist/ai/BbSelectPopover.md +93 -26
  31. package/dist/ai/BbSwitch.md +1 -1
  32. package/dist/ai/BbSwitchGroup.md +30 -3
  33. package/dist/ai/BbTable.md +17 -10
  34. package/dist/ai/BbTabs.md +8 -3
  35. package/dist/ai/BbTabsList.md +4 -1
  36. package/dist/ai/BbTag.md +5 -2
  37. package/dist/ai/BbTextInput.md +4 -1
  38. package/dist/ai/BbTextarea.md +4 -1
  39. package/dist/ai/BbTimePicker.md +2 -1
  40. package/dist/ai/BbTimePickerInput.md +4 -1
  41. package/dist/ai/BbToast.md +9 -3
  42. package/dist/ai/BbTooltip.md +71 -9
  43. package/dist/ai/ChipsBox.md +1 -1
  44. package/dist/ai/CommonField.md +1 -1
  45. package/dist/ai/OptionsContainer.md +42 -0
  46. package/dist/ai/changelog.json +494 -6
  47. package/dist/ai/components.json +50 -48
  48. package/dist/ai/composables/useBbConfig.md +8 -1
  49. package/dist/ai/composables/useConfirm.md +39 -1
  50. package/dist/ai/design-tokens.json +6 -6
  51. package/dist/ai/guides/agent-contract.md +2 -2
  52. package/dist/ai/guides/ai-router.md +24 -23
  53. package/dist/ai/guides/app-layout.md +5 -0
  54. package/dist/ai/guides/component-picker.md +9 -2
  55. package/dist/ai/guides/design-language.md +24 -24
  56. package/dist/ai/guides/design-tokens.md +15 -8
  57. package/dist/ai/guides/icons-policy.md +9 -2
  58. package/dist/ai/guides/inertia-helpers.md +1183 -301
  59. package/dist/ai/guides/installation-and-plugin-setup.md +12 -2
  60. package/dist/ai/guides/migration/adoption-checklist.md +235 -0
  61. package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -15
  62. package/dist/ai/guides/migration/components/bb-dialog.md +9 -9
  63. package/dist/ai/guides/migration/components/bb-dropdown.md +7 -2
  64. package/dist/ai/guides/migration/components/bb-popover.md +4 -2
  65. package/dist/ai/guides/migration/components/bb-select.md +19 -0
  66. package/dist/ai/guides/migration/components/bb-table.md +1 -0
  67. package/dist/ai/guides/migration/components/bb-toast.md +4 -0
  68. package/dist/ai/guides/migration/components/bb-tooltip.md +15 -12
  69. package/dist/ai/guides/migration/components/use-confirm.md +25 -2
  70. package/dist/ai/guides/migration/v2-to-v3.md +211 -9
  71. package/dist/ai/guides/migration/v3-beta-css-classes.md +7 -3
  72. package/dist/ai/guides/options-items-playbook.md +2 -1
  73. package/dist/ai/guides/passthrough.md +149 -85
  74. package/dist/ai/guides/preset-components.md +140 -15
  75. package/dist/ai/helpers/definePreset.json +7 -0
  76. package/dist/ai/helpers/definePreset.ts +123 -11
  77. package/dist/ai/helpers/inertia/manifest.json +151 -62
  78. package/dist/ai/helpers/inertia/messages.ts +33 -0
  79. package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +120 -20
  80. package/dist/ai/helpers/inertia/useHasChanged.ts +34 -16
  81. package/dist/ai/helpers/inertia/useLazyProp.ts +102 -36
  82. package/dist/ai/helpers/inertia/useLazyPropGetter.ts +3 -1
  83. package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +154 -34
  84. package/dist/ai/helpers/inertia/usePromiseForm.ts +121 -14
  85. package/dist/ai/helpers/inertia/useQuery.ts +133 -11
  86. package/dist/ai/helpers/inertia/useQueryObject.ts +74 -67
  87. package/dist/ai/helpers/inertia/useResourceContext.ts +60 -14
  88. package/dist/ai/helpers/inertia/useRouteQuery.ts +38 -27
  89. package/dist/ai/helpers/inertia/useScreenSizes.ts +9 -7
  90. package/dist/ai/helpers/inertia/useTableContext.ts +5 -2
  91. package/dist/ai/helpers/inertia/utils.ts +14 -0
  92. package/dist/ai/index.md +1 -0
  93. package/dist/ai/manifest/common.json +0 -1
  94. package/dist/ai/manifest/components/BbAlert.json +7 -2
  95. package/dist/ai/manifest/components/BbBadge.json +13 -4
  96. package/dist/ai/manifest/components/BbBadge.tree.json +2 -0
  97. package/dist/ai/manifest/components/BbBadgeButton.json +4 -2
  98. package/dist/ai/manifest/components/BbBaseButton.json +4 -2
  99. package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
  100. package/dist/ai/manifest/components/BbButton.json +14 -3
  101. package/dist/ai/manifest/components/BbButton.tree.json +5 -1
  102. package/dist/ai/manifest/components/BbCheckboxGroup.json +13 -8
  103. package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +11 -1
  104. package/dist/ai/manifest/components/BbColorInput.json +18 -15
  105. package/dist/ai/manifest/components/BbColorPalette.json +1 -1
  106. package/dist/ai/manifest/components/BbConfirm.json +4 -2
  107. package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
  108. package/dist/ai/manifest/components/BbDatePicker.json +1 -1
  109. package/dist/ai/manifest/components/BbDatePickerInput.json +17 -14
  110. package/dist/ai/manifest/components/BbDialog.tree.json +2 -1
  111. package/dist/ai/manifest/components/BbDropdown.json +24 -19
  112. package/dist/ai/manifest/components/BbDropdown.tree.json +9 -2
  113. package/dist/ai/manifest/components/BbDropdownButton.json +33 -20
  114. package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
  115. package/dist/ai/manifest/components/BbForm.json +2 -2
  116. package/dist/ai/manifest/components/BbHost.tree.json +1 -1
  117. package/dist/ai/manifest/components/BbHoverCard.json +1 -1
  118. package/dist/ai/manifest/components/BbIndicator.json +8 -2
  119. package/dist/ai/manifest/components/BbNumberInput.json +5 -2
  120. package/dist/ai/manifest/components/BbOffCanvas.json +2 -2
  121. package/dist/ai/manifest/components/BbOffCanvas.tree.json +1 -1
  122. package/dist/ai/manifest/components/BbPopover.json +1 -1
  123. package/dist/ai/manifest/components/BbRadioGroup.json +17 -12
  124. package/dist/ai/manifest/components/BbRadioGroup.tree.json +8 -1
  125. package/dist/ai/manifest/components/BbSelect.json +21 -18
  126. package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
  127. package/dist/ai/manifest/components/BbSelectPopover.json +10 -10
  128. package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
  129. package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
  130. package/dist/ai/manifest/components/BbSwitchGroup.tree.json +3 -1
  131. package/dist/ai/manifest/components/BbTable.tree.json +14 -1
  132. package/dist/ai/manifest/components/BbTabs.json +9 -6
  133. package/dist/ai/manifest/components/BbTabs.tree.json +1 -1
  134. package/dist/ai/manifest/components/BbTabsList.json +6 -3
  135. package/dist/ai/manifest/components/BbTag.json +19 -16
  136. package/dist/ai/manifest/components/BbTag.tree.json +1 -1
  137. package/dist/ai/manifest/components/BbTextInput.json +6 -3
  138. package/dist/ai/manifest/components/BbTextarea.json +6 -3
  139. package/dist/ai/manifest/components/BbTimePicker.json +1 -1
  140. package/dist/ai/manifest/components/BbTimePickerInput.json +10 -7
  141. package/dist/ai/manifest/components/BbToast.json +7 -2
  142. package/dist/ai/manifest/components/BbToast.tree.json +4 -2
  143. package/dist/ai/manifest/components/BbTooltip.json +6 -5
  144. package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
  145. package/dist/ai/manifest/components/CommonField.json +1 -1
  146. package/dist/ai/manifest/components/OptionsContainer.json +3 -1
  147. package/dist/ai/manifest/components/OptionsContainer.tree.json +38 -0
  148. package/dist/ai/manifest/index.json +3 -3
  149. package/dist/ai/manifest/meta.json +5 -3
  150. package/dist/ai/manifest/types.advanced.json +5 -2
  151. package/dist/ai/manifest/types.api.json +9 -7
  152. package/dist/ai/recipes/inertia/approvals-inbox.md +1 -1
  153. package/dist/ai/recipes/inertia/inline-edit-workspace.md +1 -1
  154. package/dist/ai/recipes/inertia/layout-scaffold.md +19 -6
  155. package/dist/ai/recipes/inertia/ownership-atlas.md +1 -1
  156. package/dist/ai/recipes/inertia/records-workspace.md +50 -14
  157. package/dist/ai/recipes/inertia/upload-center.md +1 -1
  158. package/dist/ai/recipes/nuxt/layout-scaffold.md +19 -6
  159. package/dist/ai/recipes/nuxt/records-workspace.md +42 -12
  160. package/dist/ai/recipes/vue/layout-scaffold.md +19 -6
  161. package/dist/ai/recipes/vue/records-workspace.md +42 -12
  162. package/dist/ai/source/BbAlert.md +94 -76
  163. package/dist/ai/source/BbBadge.md +174 -72
  164. package/dist/ai/source/BbBadgeButton.md +130 -65
  165. package/dist/ai/source/BbBaseButton.md +46 -124
  166. package/dist/ai/source/BbBaseCheckboxIcon.md +38 -0
  167. package/dist/ai/source/BbBaseRadioIcon.md +18 -0
  168. package/dist/ai/source/BbBaseSwitchIcon.md +51 -0
  169. package/dist/ai/source/BbButton.md +153 -36
  170. package/dist/ai/source/BbCheckboxGroup.md +142 -18
  171. package/dist/ai/source/BbColorInput.md +240 -204
  172. package/dist/ai/source/BbColorPalette.md +7 -4
  173. package/dist/ai/source/BbConfirm.md +34 -11
  174. package/dist/ai/source/BbConfirmPortal.md +24 -9
  175. package/dist/ai/source/BbDatePicker.md +11 -7
  176. package/dist/ai/source/BbDatePickerInput.md +306 -269
  177. package/dist/ai/source/BbDialog.md +49 -14
  178. package/dist/ai/source/BbDropdown.md +314 -197
  179. package/dist/ai/source/BbDropdownButton.md +197 -31
  180. package/dist/ai/source/BbDropdownGroup.md +274 -176
  181. package/dist/ai/source/BbForm.md +50 -6
  182. package/dist/ai/source/BbHoverCard.md +12 -5
  183. package/dist/ai/source/BbIcon.md +4 -3
  184. package/dist/ai/source/BbIndicator.md +73 -52
  185. package/dist/ai/source/BbNumberInput.md +293 -257
  186. package/dist/ai/source/BbOffCanvas.md +55 -29
  187. package/dist/ai/source/BbPopover.md +14 -10
  188. package/dist/ai/source/BbRadioGroup.md +413 -297
  189. package/dist/ai/source/BbSelect.md +549 -435
  190. package/dist/ai/source/BbSelectPopover.md +153 -34
  191. package/dist/ai/source/BbSwitchGroup.md +70 -10
  192. package/dist/ai/source/BbTable.md +369 -37
  193. package/dist/ai/source/BbTabs.md +115 -39
  194. package/dist/ai/source/BbTabsList.md +106 -38
  195. package/dist/ai/source/BbTabsPanels.md +96 -36
  196. package/dist/ai/source/BbTabsRoot.md +96 -36
  197. package/dist/ai/source/BbTag.md +267 -233
  198. package/dist/ai/source/BbTextInput.md +261 -225
  199. package/dist/ai/source/BbTextarea.md +251 -215
  200. package/dist/ai/source/BbTimePicker.md +11 -7
  201. package/dist/ai/source/BbTimePickerInput.md +257 -220
  202. package/dist/ai/source/BbToast.md +73 -32
  203. package/dist/ai/source/BbToastPortal.md +65 -30
  204. package/dist/ai/source/BbTooltip.md +148 -113
  205. package/dist/ai/source/CommonPopover.md +6 -1
  206. package/dist/ai/source/FlatListBox.md +19 -9
  207. package/dist/ai/source/GroupedListBox.md +19 -9
  208. package/dist/ai/source/OptionsContainer.md +25 -9
  209. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +61 -36
  210. package/dist/components/BbAlert/types.d.ts +9 -5
  211. package/dist/components/BbAlert/types.js +8 -3
  212. package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +3 -3
  213. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +26 -17
  214. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +103 -50
  215. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +20 -15
  216. package/dist/components/BbBadge/badgeButtonContext.d.ts +12 -1
  217. package/dist/components/BbBadge/types.d.ts +45 -15
  218. package/dist/components/BbBadge/types.js +12 -3
  219. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -126
  220. package/dist/components/BbBaseButton/types.d.ts +23 -4
  221. package/dist/components/BbBaseButton/types.js +7 -1
  222. package/dist/components/BbBaseButton/useLinkState.d.ts +41 -0
  223. package/dist/components/BbBaseButton/useLinkState.js +70 -0
  224. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +130 -74
  225. package/dist/components/BbButton/types.d.ts +50 -13
  226. package/dist/components/BbButton/types.js +10 -3
  227. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +148 -95
  228. package/dist/components/BbCheckboxGroup/types.d.ts +34 -11
  229. package/dist/components/BbCheckboxGroup/types.js +9 -4
  230. package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +1 -1
  231. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +134 -93
  232. package/dist/components/BbColorInput/types.d.ts +11 -4
  233. package/dist/components/BbColorInput/types.js +9 -3
  234. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +82 -59
  235. package/dist/components/BbConfirm/types.d.ts +9 -4
  236. package/dist/components/BbConfirm/types.js +8 -3
  237. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
  238. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +68 -67
  239. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +1 -1
  240. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +259 -215
  241. package/dist/components/BbDatePickerInput/types.d.ts +12 -5
  242. package/dist/components/BbDatePickerInput/types.js +9 -3
  243. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +223 -219
  244. package/dist/components/BbDialog/useDialogStack.d.ts +1 -1
  245. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +104 -89
  246. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +1 -0
  247. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +323 -285
  248. package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +1 -0
  249. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +411 -319
  250. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +100 -98
  251. package/dist/components/BbDropdown/DropdownRow.vue.d.ts +4 -3
  252. package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +49 -28
  253. package/dist/components/BbDropdown/normalizeGroups.d.ts +6 -0
  254. package/dist/components/BbDropdown/normalizeGroups.js +21 -15
  255. package/dist/components/BbDropdown/types.d.ts +59 -12
  256. package/dist/components/BbDropdown/types.js +16 -3
  257. package/dist/components/BbDropdown/useDropdownContext.d.ts +6 -0
  258. package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +2 -1
  259. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +179 -68
  260. package/dist/components/BbDropdownButton/types.d.ts +44 -16
  261. package/dist/components/BbDropdownButton/types.js +28 -3
  262. package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +111 -89
  263. package/dist/components/BbForm/formSchema.d.ts +13 -0
  264. package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +100 -100
  265. package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +40 -25
  266. package/dist/components/BbIndicator/types.d.ts +9 -5
  267. package/dist/components/BbIndicator/types.js +8 -3
  268. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +243 -202
  269. package/dist/components/BbNumberInput/types.d.ts +12 -5
  270. package/dist/components/BbNumberInput/types.js +9 -3
  271. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
  272. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +401 -399
  273. package/dist/components/BbOffCanvas/types.d.ts +6 -2
  274. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +81 -80
  275. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +158 -105
  276. package/dist/components/BbRadioGroup/types.d.ts +21 -7
  277. package/dist/components/BbRadioGroup/types.js +9 -4
  278. package/dist/components/BbSelect/BbSelect.vue.d.ts +4 -3
  279. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +181 -137
  280. package/dist/components/BbSelect/types.d.ts +36 -22
  281. package/dist/components/BbSelect/types.js +22 -3
  282. package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +4 -4
  283. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +600 -577
  284. package/dist/components/BbSelectPopover/knownItems.d.ts +5 -0
  285. package/dist/components/BbSelectPopover/types.d.ts +46 -12
  286. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
  287. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  288. package/dist/components/BbSwitchGroup/types.d.ts +14 -4
  289. package/dist/components/BbSwitchGroup/types.js +8 -3
  290. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1102 -995
  291. package/dist/components/BbTable/estimatedFloors.golden.d.ts +25 -0
  292. package/dist/components/BbTable/measuredFloors.d.ts +46 -0
  293. package/dist/components/BbTable/measuredFloors.js +322 -0
  294. package/dist/components/BbTable/measuredFloorsTestKit.d.ts +27 -0
  295. package/dist/components/BbTable/textRuler.d.ts +71 -0
  296. package/dist/components/BbTable/textRuler.js +121 -0
  297. package/dist/components/BbTable/utils.d.ts +113 -6
  298. package/dist/components/BbTable/utils.js +118 -65
  299. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +53 -35
  300. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +62 -45
  301. package/dist/components/BbTabs/types.d.ts +26 -11
  302. package/dist/components/BbTabs/types.js +23 -8
  303. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +205 -164
  304. package/dist/components/BbTag/types.d.ts +11 -4
  305. package/dist/components/BbTag/types.js +9 -3
  306. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +98 -57
  307. package/dist/components/BbTextInput/types.d.ts +12 -5
  308. package/dist/components/BbTextInput/types.js +9 -3
  309. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +137 -96
  310. package/dist/components/BbTextarea/types.d.ts +12 -5
  311. package/dist/components/BbTextarea/types.js +9 -3
  312. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +105 -104
  313. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +241 -197
  314. package/dist/components/BbTimePickerInput/types.d.ts +12 -5
  315. package/dist/components/BbTimePickerInput/types.js +9 -3
  316. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +74 -32
  317. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +47 -47
  318. package/dist/components/BbToast/types.d.ts +10 -5
  319. package/dist/components/BbToast/types.js +18 -3
  320. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +85 -71
  321. package/dist/components/BbTooltip/types.d.ts +13 -8
  322. package/dist/components/BbTooltip/types.js +8 -3
  323. package/dist/components/CommonField/CommonField.vue.d.ts +1 -1
  324. package/dist/components/CommonPopover/CommonPopover.vue.d.ts +1 -1
  325. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +69 -69
  326. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +53 -50
  327. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +146 -143
  328. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +7 -2
  329. package/dist/components/OptionsContainer/types.d.ts +14 -3
  330. package/dist/composables/useBbConfig.d.ts +1 -0
  331. package/dist/composables/useBbConfig.js +11 -7
  332. package/dist/composables/useBbFormContext.d.ts +4 -3
  333. package/dist/composables/useBbTabsContext.js +99 -85
  334. package/dist/composables/useChoiceIndicator.d.ts +58 -0
  335. package/dist/composables/useChoiceIndicator.js +197 -0
  336. package/dist/composables/useConfirm.d.ts +4 -4
  337. package/dist/composables/usePassthrough.d.ts +54 -1
  338. package/dist/composables/usePassthrough.js +100 -71
  339. package/dist/directives/bbTooltip.d.ts +12 -6
  340. package/dist/directives/createPopoverDirective.js +1 -1
  341. package/dist/index.d.ts +3 -1
  342. package/dist/llms-full.txt +3467 -801
  343. package/dist/llms-medium.txt +71 -53
  344. package/dist/llms.txt +2 -1
  345. package/dist/passthrough-deduper.js +6 -3
  346. package/dist/project-dts.d.ts +24 -0
  347. package/dist/project-dts.js +43 -17
  348. package/dist/styles.css +2 -2
  349. package/dist/types/AlertVariant.d.ts +14 -0
  350. package/dist/types/AlertVariant.js +9 -0
  351. package/dist/types/BadgeVariant.d.ts +14 -0
  352. package/dist/types/BadgeVariant.js +9 -0
  353. package/dist/types/ButtonVariant.d.ts +16 -0
  354. package/dist/types/ButtonVariant.js +11 -0
  355. package/dist/types/CheckboxVariant.d.ts +38 -0
  356. package/dist/types/CheckboxVariant.js +4 -0
  357. package/dist/types/CommonProps.d.ts +4 -3
  358. package/dist/types/Config.d.ts +7 -0
  359. package/dist/types/ConfirmVariant.d.ts +12 -0
  360. package/dist/types/ConfirmVariant.js +4 -0
  361. package/dist/types/DropdownItemVariant.d.ts +12 -0
  362. package/dist/types/DropdownItemVariant.js +4 -0
  363. package/dist/types/IndicatorVariant.d.ts +15 -0
  364. package/dist/types/IndicatorVariant.js +10 -0
  365. package/dist/types/InputVariant.d.ts +13 -0
  366. package/dist/types/InputVariant.js +8 -0
  367. package/dist/types/RadioVariant.d.ts +38 -0
  368. package/dist/types/RadioVariant.js +4 -0
  369. package/dist/types/TabsVariant.d.ts +13 -0
  370. package/dist/types/TabsVariant.js +8 -0
  371. package/dist/types/ToastVariant.d.ts +15 -0
  372. package/dist/types/ToastVariant.js +10 -0
  373. package/dist/types/TooltipVariant.d.ts +12 -0
  374. package/dist/types/TooltipVariant.js +4 -0
  375. package/dist/types/passthrough.d.ts +83 -15
  376. package/dist/types/passthrough.js +2 -2
  377. package/dist/types/ptComponentMap.d.ts +35 -23
  378. package/dist/utilities/functions/extractDomContainer.d.ts +20 -1
  379. package/dist/utilities/functions/extractDomContainer.js +8 -3
  380. package/dist/utils/focusVisibility.d.ts +6 -0
  381. package/dist/utils/focusVisibility.js +4 -1
  382. package/dist/utils/passthroughDeduper.d.ts +14 -0
  383. package/dist/utils/versionCheck.js +1 -1
  384. package/dist/vite-plugin.d.ts +64 -7
  385. package/dist/vite.js +385 -259
  386. package/llms.txt +2 -1
  387. package/package.json +5 -4
  388. package/scripts/lib/adoption-checklist.json +312 -0
  389. package/scripts/lib/eslint-plugin.d.ts +13 -0
  390. package/scripts/lib/eslint-plugin.mjs +75 -11
  391. package/scripts/lib/helpers-add.mjs +26 -2
  392. package/scripts/lib/idiom-scan.mjs +65 -0
  393. package/scripts/lib/mcp-config.mjs +203 -9
  394. package/scripts/lib/migrate-fix.mjs +42 -1
  395. package/scripts/lib/project-variant-dts.mjs +18 -0
  396. package/scripts/lib/validate-bb-markup.mjs +99 -2
@@ -2,22 +2,23 @@ import { hash as e } from "../../utilities/functions/hash.js";
2
2
  import { slotKey as t } from "../../utilities/functions/slotKey.js";
3
3
  import { useLocale as n } from "../../composables/useLocale.js";
4
4
  import { matchAnyKey as r } from "../../utilities/functions/matchAnyKey.js";
5
- import { selectablePredicateOf as i } from "./types.js";
6
- import { useDropdownContext as ee } from "./useDropdownContext.js";
7
- import { useArray as te } from "../../composables/useArray.js";
8
- import { useItemsGetter as ne } from "../../composables/useItemsGetter.js";
9
- import { useItemText as re } from "../../composables/useItemText.js";
5
+ import { selectablePredicateOf as ee } from "./types.js";
6
+ import { sectionTitle as te } from "./normalizeGroups.js";
7
+ import { useDropdownContext as ne } from "./useDropdownContext.js";
8
+ import { useArray as re } from "../../composables/useArray.js";
9
+ import { useItemsGetter as i } from "../../composables/useItemsGetter.js";
10
+ import { useItemText as ie } from "../../composables/useItemText.js";
10
11
  import { useItemValue as a } from "../../composables/useItemValue.js";
11
- import { asDescription as o, createItemPropsResolver as s } from "../../utilities/functions/itemProps.js";
12
- import { useHashedWatcher as c } from "../../composables/useHashedWatcher.js";
13
- import { useDropdownGroupRegistry as l } from "./useDropdownGroupRegistry.js";
14
- import { computed as u, defineComponent as d, getCurrentInstance as ie, onUnmounted as f, ref as ae, renderSlot as oe, watch as p, watchEffect as m } from "vue";
12
+ import { asDescription as ae, createItemPropsResolver as o } from "../../utilities/functions/itemProps.js";
13
+ import { useHashedWatcher as oe } from "../../composables/useHashedWatcher.js";
14
+ import { useDropdownGroupRegistry as se } from "./useDropdownGroupRegistry.js";
15
+ import { computed as s, defineComponent as c, getCurrentInstance as l, onUnmounted as u, ref as d, renderSlot as f, watch as p, watchEffect as m } from "vue";
15
16
  //#region src/components/BbDropdown/DropdownPipelineResolver.vue?vue&type=script&setup=true&lang.ts
16
- var h = "__bb-dropdown-group:loading__", g = "__bb-dropdown-group:no-data__", _ = "__bb-dropdown-group:failed__", v = /*@__PURE__*/ d({
17
+ var h = "__bb-dropdown-group:loading__", g = "__bb-dropdown-group:no-data__", ce = "__bb-dropdown-group:failed__", _ = /*@__PURE__*/ c({
17
18
  __name: "DropdownPipelineResolver",
18
19
  props: { id: {} },
19
- setup(d) {
20
- let v = d, y = /* @__PURE__ */ new Set([
20
+ setup(c) {
21
+ let _ = c, le = /* @__PURE__ */ new Set([
21
22
  "value",
22
23
  "label",
23
24
  "rowKey",
@@ -29,115 +30,115 @@ var h = "__bb-dropdown-group:loading__", g = "__bb-dropdown-group:no-data__", _
29
30
  "placeholder",
30
31
  "slotKey",
31
32
  "disabled"
32
- ]), b = l(), x = ee(), S = ie().uid, C = u(() => b?.configFor(v.id)), { t: w } = n(), T = w("common.loadingText"), se = w("common.emptyText"), ce = w("common.failedText"), le = w("select.searchToStart"), E = u(() => !!C.value?.searchable), D = u(() => x.queryFor(v.id)), O = u(() => C.value?.filterBy ?? []), k = u(() => C.value?.prefill ?? "interaction"), ue = u(() => k.value === !1), de = () => b?.modelValueFor(v.id), A = (e) => [
33
+ ]), v = se(), y = ne(), b = l().uid, x = s(() => v?.configFor(_.id)), { t: S } = n(), C = S("common.loadingText"), w = S("common.emptyText"), T = S("common.failedText"), ue = S("select.searchToStart"), E = s(() => !!x.value?.searchable), D = s(() => y.queryFor(_.id)), O = s(() => x.value?.filterBy ?? []), k = s(() => x.value?.prefill ?? "interaction"), de = s(() => k.value === !1), A = () => v?.modelValueFor(_.id), j = (e) => [
33
34
  E.value ? D.value : void 0,
34
35
  e,
35
- de()
36
- ], j = (e) => me(...A(e)), M = ae(!1), N = u(() => !!C.value?.stash), { array: P, add: F, remove: I } = te(), { getOptionText: L } = re(), { getOptionValue: R } = a(), z = (e) => R(e, C.value?.itemValue), B = (e) => L(e, C.value?.itemText), V = u(() => s(C.value?.itemProps)), H = u(() => C.value ? i(C.value) : void 0), fe = (e) => o(V.value.field(e, "description")), U = (e) => {
37
- if (Array.isArray(e)) return e.map((e) => U(e));
36
+ A()
37
+ ], M = (e) => me(...j(e)), N = d(!1), P = s(() => !!x.value?.stash), { array: F, add: I, remove: L } = re(), { getOptionText: R } = ie(), { getOptionValue: z } = a(), B = (e) => z(e, x.value?.itemValue), V = (e) => R(e, x.value?.itemText), H = s(() => o(x.value?.itemProps)), U = s(() => x.value ? ee(x.value) : void 0), fe = (e) => ae(H.value.field(e, "description")), W = (e) => {
38
+ if (Array.isArray(e)) return e.map((e) => W(e));
38
39
  if (!e || typeof e != "object") return e;
39
40
  let t = e;
40
- return Object.keys(t).sort().reduce((e, n) => (e[n] = U(t[n]), e), {});
41
+ return Object.keys(t).sort().reduce((e, n) => (e[n] = W(t[n]), e), {});
41
42
  }, pe = (e) => {
42
43
  if (typeof e == "string") return t(e);
43
44
  if (e == null || typeof e == "number" || typeof e == "boolean") return t(String(e));
44
45
  try {
45
- return t(JSON.stringify(U(e)) ?? String(e));
46
+ return t(JSON.stringify(W(e)) ?? String(e));
46
47
  } catch {
47
48
  return t(String(e));
48
49
  }
49
- }, { getter: me, debouncedGetter: he, items: W, loading: G, error: K } = ne({
50
- items: u(() => C.value?.items),
51
- debounce: x.queryDebounceTime.value
52
- }), q = u(() => {
50
+ }, { getter: me, debouncedGetter: he, items: G, loading: K, error: q } = i({
51
+ items: s(() => x.value?.items),
52
+ debounce: y.queryDebounceTime.value
53
+ }), J = s(() => {
53
54
  let t = /* @__PURE__ */ new Map();
54
- for (let n of W.value) t.set(e(z(n)), n);
55
+ for (let n of G.value) t.set(e(B(n)), n);
55
56
  return t;
56
- }), ge = u(() => {
57
- let t = W.value;
58
- if (!N.value || !P.value.length) return t;
59
- let n = new Set(t.map((t) => e(z(t)))), r = P.value.filter((t) => !n.has(e(z(t))));
57
+ }), ge = s(() => {
58
+ let t = G.value;
59
+ if (!P.value || !F.value.length) return t;
60
+ let n = new Set(t.map((t) => e(B(t)))), r = F.value.filter((t) => !n.has(e(B(t))));
60
61
  return r.length ? [...t, ...r] : t;
61
- }), J = /* @__PURE__ */ new Map();
62
- b?.onPick(v.id, (e) => {
63
- if (!N.value) return;
64
- let t = q.value.get(e);
65
- t !== void 0 && J.set(e, t);
66
- }), f(() => b?.onPick(v.id, null)), m(() => {
67
- if (!N.value) return;
68
- let t = b?.selectionFor(v.id) ?? [];
62
+ }), Y = /* @__PURE__ */ new Map();
63
+ v?.onPick(_.id, (e) => {
64
+ if (!P.value) return;
65
+ let t = J.value.get(e);
66
+ t !== void 0 && Y.set(e, t);
67
+ }), u(() => v?.onPick(_.id, null)), m(() => {
68
+ if (!P.value) return;
69
+ let t = v?.selectionFor(_.id) ?? [];
69
70
  if (!t.length) return;
70
- let n = new Set(P.value.map((t) => e(z(t))));
71
+ let n = new Set(F.value.map((t) => e(B(t))));
71
72
  for (let e of t) {
72
73
  if (n.has(e)) continue;
73
- let t = q.value.get(e) ?? J.get(e);
74
- t !== void 0 && F(t), J.delete(e);
74
+ let t = J.value.get(e) ?? Y.get(e);
75
+ t !== void 0 && I(t), Y.delete(e);
75
76
  }
76
77
  });
77
- let Y = u(() => ge.value.map((t) => ({
78
+ let X = s(() => ge.value.map((t) => ({
78
79
  item: t,
79
- value: z(t),
80
- key: e(z(t)),
81
- slotToken: pe(z(t)),
82
- text: B(t),
80
+ value: B(t),
81
+ key: e(B(t)),
82
+ slotToken: pe(B(t)),
83
+ text: V(t),
83
84
  description: fe(t)
84
- }))), _e = u(() => {
85
- if (!E.value || !D.value || O.value === !1) return Y.value;
85
+ }))), _e = s(() => {
86
+ if (!E.value || !D.value || O.value === !1) return X.value;
86
87
  let e = D.value.trim(), t = O.value;
87
- return Y.value.filter((n) => t.length ? r(n.item, t, e) : r({
88
+ return X.value.filter((n) => t.length ? r(n.item, t, e) : r({
88
89
  text: n.text,
89
90
  description: n.description
90
91
  }, n.description == null ? ["text"] : ["text", "description"], e));
91
- }), ve = u(() => {
92
+ }), ve = s(() => {
92
93
  let e = /* @__PURE__ */ new Map();
93
- for (let t of Y.value) e.set(t.key, t.value);
94
+ for (let t of X.value) e.set(t.key, t.value);
94
95
  return e;
95
- }), ye = u(() => {
96
+ }), ye = s(() => {
96
97
  let e = /* @__PURE__ */ new Map();
97
- for (let t of Y.value) e.set(t.key, t.item);
98
+ for (let t of X.value) e.set(t.key, t.item);
98
99
  return e;
99
- }), X = u(() => {
100
+ }), be = s(() => {
100
101
  let e = /* @__PURE__ */ new Map();
101
- for (let t of Y.value) e.set(t.key, t.text);
102
+ for (let t of X.value) e.set(t.key, t.text);
102
103
  return e;
103
- }), be = u(() => {
104
+ }), xe = s(() => {
104
105
  let e = /* @__PURE__ */ new Map();
105
- for (let t of Y.value) t.description != null && e.set(t.key, t.description);
106
+ for (let t of X.value) t.description != null && e.set(t.key, t.description);
106
107
  return e;
107
- }), Z = u(() => b?.selectionFor(v.id) ?? []);
108
+ }), Z = s(() => v?.selectionFor(_.id) ?? []);
108
109
  p(Z, (t) => {
109
- if (!N.value || !P.value.length) return;
110
+ if (!P.value || !F.value.length) return;
110
111
  let n = new Set(t);
111
- I((t) => n.has(e(z(t))));
112
+ L((t) => n.has(e(B(t))));
112
113
  });
113
- let xe = u(() => C.value?.multiple ?? b?.multipleFor(v.id) ?? !1), Q = u(() => G.value && Y.value.length > 0), Se = u(() => {
114
- if (G.value && !Y.value.length) return [{
114
+ let Se = s(() => x.value?.multiple ?? v?.multipleFor(_.id) ?? !1), Q = s(() => K.value && X.value.length > 0), Ce = s(() => {
115
+ if (K.value && !X.value.length) return [{
115
116
  rowKey: h,
116
117
  placeholder: "loading",
117
- label: C.value?.loadingText ?? x.loadingText.value ?? T.value,
118
+ label: x.value?.loadingText ?? y.loadingText.value ?? C.value,
118
119
  disabled: !0
119
120
  }];
120
- if (E.value && ue.value && !M.value) return [{
121
+ if (E.value && de.value && !N.value) return [{
121
122
  rowKey: g,
122
123
  placeholder: "empty",
123
- label: le.value,
124
+ label: ue.value,
124
125
  disabled: !0
125
126
  }];
126
127
  let e = _e.value;
127
128
  if (!e.length) return Q.value ? [{
128
129
  rowKey: h,
129
130
  placeholder: "loading",
130
- label: C.value?.loadingText ?? x.loadingText.value ?? T.value,
131
+ label: x.value?.loadingText ?? y.loadingText.value ?? C.value,
131
132
  disabled: !0
132
- }] : K.value === null ? [{
133
+ }] : q.value === null ? [{
133
134
  rowKey: g,
134
135
  placeholder: "empty",
135
- label: C.value?.emptyText ?? x.emptyText.value ?? se.value,
136
+ label: x.value?.emptyText ?? y.emptyText.value ?? w.value,
136
137
  disabled: !0
137
138
  }] : [$()];
138
- let t = C.value?.max ?? Infinity, n = xe.value && Z.value.length >= t, r = e.map((e) => {
139
+ let t = x.value?.max ?? Infinity, n = Se.value && Z.value.length >= t, r = e.map((e) => {
139
140
  let t = {};
140
- for (let [n, r] of Object.entries(V.value.all(e.item))) y.has(n) || (t[n] = r);
141
+ for (let [n, r] of Object.entries(H.value.all(e.item))) le.has(n) || (t[n] = r);
141
142
  return {
142
143
  ...t,
143
144
  rowKey: e.key,
@@ -145,54 +146,55 @@ var h = "__bb-dropdown-group:loading__", g = "__bb-dropdown-group:no-data__", _
145
146
  label: e.text,
146
147
  description: e.description,
147
148
  fetched: !0,
148
- disabled: (H.value ? !H.value(e.item) : !1) || n && !Z.value.includes(e.key)
149
+ ...x.value?.groupBy == null ? {} : { section: te(x.value.groupBy, e.item) },
150
+ disabled: (U.value ? !U.value(e.item) : !1) || n && !Z.value.includes(e.key)
149
151
  };
150
152
  });
151
- return K.value !== null && r.push($()), r;
153
+ return q.value !== null && r.push($()), r;
152
154
  }), $ = () => ({
153
- rowKey: _,
155
+ rowKey: ce,
154
156
  placeholder: "failed",
155
- error: K.value,
156
- label: C.value?.failedText ?? x.failedText.value ?? ce.value,
157
+ error: q.value,
158
+ label: x.value?.failedText ?? y.failedText.value ?? T.value,
157
159
  disabled: !0
158
160
  });
159
- if (b) {
160
- let e = u(() => ({
161
- key: v.id,
162
- items: Se.value,
163
- order: S
161
+ if (v) {
162
+ let e = s(() => ({
163
+ key: _.id,
164
+ items: Ce.value,
165
+ order: b
164
166
  }));
165
- b.register(S, e), m(() => {
166
- b.publishPipeline(v.id, {
167
+ v.register(b, e), m(() => {
168
+ v.publishPipeline(_.id, {
167
169
  valueByKey: ve.value,
168
170
  itemByKey: ye.value,
169
- textByKey: X.value,
170
- descriptionByKey: be.value
171
+ textByKey: be.value,
172
+ descriptionByKey: xe.value
171
173
  });
172
- }), m(() => b.publishLoading(v.id, Q.value)), m(() => b.publishFetching(v.id, G.value));
173
- let t = u(() => C.value?.enforceCoherence ?? x.enforceCoherence.value ?? !1), n = () => {
174
- if (!b || !t.value) return;
175
- let e = q.value, n = b.selectionFor(v.id), r = n.filter((t) => e.has(t));
176
- r.length !== n.length && (b.isControlled(v.id) ? b.request(v.id, { keep: new Set(e.keys()) }) : b.setSelection(v.id, r));
177
- }, r = u(() => x.isTopLevelPipeline(v.id) ? x.open.value : x.isActivated(v.id));
178
- p(u(() => k.value === !0 ? !0 : k.value === "interaction" || !E.value ? r.value : !1), async (e) => {
179
- !e || M.value || (M.value = !0, await j("initial") === "applied" && n());
174
+ }), m(() => v.publishLoading(_.id, Q.value)), m(() => v.publishFetching(_.id, K.value));
175
+ let t = s(() => x.value?.enforceCoherence ?? y.enforceCoherence.value ?? !1), n = () => {
176
+ if (!v || !t.value) return;
177
+ let e = J.value, n = v.selectionFor(_.id), r = n.filter((t) => e.has(t));
178
+ r.length !== n.length && (v.isControlled(_.id) ? v.request(_.id, { keep: new Set(e.keys()) }) : v.setSelection(_.id, r));
179
+ }, r = s(() => y.isTopLevelPipeline(_.id) ? y.open.value : y.isActivated(_.id));
180
+ p(s(() => k.value === !0 ? !0 : k.value === "interaction" || !E.value ? r.value : !1), async (e) => {
181
+ !e || N.value || (N.value = !0, await M("initial") === "applied" && n());
180
182
  }, { immediate: !0 }), p(D, () => {
181
183
  if (E.value) {
182
- if (!M.value) {
184
+ if (!N.value) {
183
185
  if (!D.value) return;
184
- M.value = !0;
186
+ N.value = !0;
185
187
  }
186
- he(() => A("search"));
188
+ he(() => j("search"));
187
189
  }
188
- }), c(() => [C.value?.dependencies], async () => {
189
- M.value && await j("dependencies") === "applied" && n();
190
- }, { debounce: C.value?.depsDebounceTime ?? 0 }), f(() => {
191
- b.unregister(S), b.publishPipeline(v.id, null), b.publishLoading(v.id, !1), b.publishFetching(v.id, !1);
190
+ }), oe(() => [x.value?.dependencies], async () => {
191
+ N.value && await M("dependencies") === "applied" && n();
192
+ }, { debounce: x.value?.depsDebounceTime ?? 0 }), u(() => {
193
+ v.unregister(b), v.publishPipeline(_.id, null), v.publishLoading(_.id, !1), v.publishFetching(_.id, !1);
192
194
  });
193
195
  }
194
- return (e, t) => oe(e.$slots, "default");
196
+ return (e, t) => f(e.$slots, "default");
195
197
  }
196
198
  });
197
199
  //#endregion
198
- export { v as default };
200
+ export { _ as default };
@@ -1,4 +1,5 @@
1
1
  import { Slot, Slots } from 'vue';
2
+ import { LinkState } from '../BbBaseButton/useLinkState';
2
3
  import { BbDropdownItemSlotProps, KeyedItem, NormalizedGroup } from './types';
3
4
  /**
4
5
  * What a row reads from its list: one object the list builds once, so it never
@@ -8,9 +9,9 @@ import { BbDropdownItemSlotProps, KeyedItem, NormalizedGroup } from './types';
8
9
  export interface DropdownRowApi {
9
10
  slots: Slots;
10
11
  setItemEl: (index: number, comp: unknown) => void;
11
- itemAttrs: (group: NormalizedGroup, item: KeyedItem, index: number, selected: boolean) => Record<string, unknown>;
12
- rowPart: (name: 'itemText' | 'itemIcon' | 'itemDescription', item: KeyedItem, selected: boolean) => Record<string, unknown>;
13
- slotProps: (group: NormalizedGroup, item: KeyedItem, index: number, selected: boolean) => BbDropdownItemSlotProps;
12
+ itemAttrs: (group: NormalizedGroup, item: KeyedItem, index: number, selected: boolean, link?: LinkState) => Record<string, unknown>;
13
+ rowPart: (name: 'itemText' | 'itemIcon' | 'itemDescription', item: KeyedItem, selected: boolean, link?: LinkState) => Record<string, unknown>;
14
+ slotProps: (group: NormalizedGroup, item: KeyedItem, index: number, selected: boolean, link?: LinkState) => BbDropdownItemSlotProps;
14
15
  rowSlot: (group: NormalizedGroup, item: KeyedItem, suffix?: 'prepend' | 'append') => Slot | undefined;
15
16
  itemSlot: (item: KeyedItem, suffix?: 'prepend' | 'append') => Slot | undefined;
16
17
  groupRowSlot: (group: NormalizedGroup, suffix?: 'prepend' | 'append') => Slot | undefined;
@@ -1,13 +1,14 @@
1
1
  import e from "../BbIcon/BbIcon.vue.js";
2
- import t from "../BbBaseButton/BbBaseButton.vue.js";
3
- import n from "../../assets/svgs/check_stroke.svg_raw.js";
4
- import r from "../../assets/svgs/chevron_right.svg_raw.js";
5
- import { Fragment as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, defineComponent as l, mergeProps as u, normalizeProps as d, openBlock as f, resolveDynamicComponent as p, toDisplayString as m, unref as h, withCtx as g } from "vue";
2
+ import { provideLinkState as t, useLinkState as n } from "../BbBaseButton/useLinkState.js";
3
+ import r from "../BbBaseButton/BbBaseButton.vue.js";
4
+ import i from "../../assets/svgs/check_stroke.svg_raw.js";
5
+ import a from "../../assets/svgs/chevron_right.svg_raw.js";
6
+ import { Fragment as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, defineComponent as d, mergeProps as f, normalizeProps as p, openBlock as m, resolveDynamicComponent as h, toDisplayString as g, unref as _, withCtx as v } from "vue";
6
7
  //#region src/components/BbDropdown/DropdownRow.vue?vue&type=script&setup=true&lang.ts
7
- var _ = {
8
+ var y = {
8
9
  key: 4,
9
10
  class: "item__content"
10
- }, v = ["id"], y = ["id"], b = /*@__PURE__*/ l({
11
+ }, b = ["id"], x = ["id"], S = /*@__PURE__*/ d({
11
12
  __name: "DropdownRow",
12
13
  props: {
13
14
  group: {},
@@ -16,45 +17,65 @@ var _ = {
16
17
  selected: { type: Boolean },
17
18
  row: {}
18
19
  },
19
- setup(l) {
20
- return (l, b) => (f(), a(t, u({
21
- ref: (e) => l.row.setItemEl(l.index, e),
20
+ setup(d) {
21
+ let S = d, C = n({
22
+ get to() {
23
+ return S.item.to;
24
+ },
25
+ get href() {
26
+ return S.item.href;
27
+ },
28
+ get disabled() {
29
+ return S.item.disabled;
30
+ },
31
+ get external() {
32
+ return S.item.external;
33
+ },
34
+ get target() {
35
+ return S.item.target;
36
+ },
37
+ get replace() {
38
+ return S.item.replace;
39
+ }
40
+ });
41
+ return t(C), (t, n) => (m(), s(r, f({
42
+ ref: (e) => t.row.setItemEl(t.index, e),
22
43
  class: "bb-dropdown__item"
23
- }, l.row.itemAttrs(l.group, l.item, l.index, l.selected)), {
24
- default: g(() => [
25
- l.row.rowSlot(l.group, l.item, "prepend") ? (f(), a(p(l.row.rowSlot(l.group, l.item, "prepend")), d(u({ key: 0 }, l.row.slotProps(l.group, l.item, l.index, l.selected))), null, 16)) : l.row.slots["item:prepend"] ? (f(), a(p(l.row.slots["item:prepend"]), d(u({ key: 1 }, l.row.slotProps(l.group, l.item, l.index, l.selected))), null, 16)) : l.item["prepend:icon"] ? (f(), a(e, u({
44
+ }, t.row.itemAttrs(t.group, t.item, t.index, t.selected, _(C))), {
45
+ default: v(() => [
46
+ t.row.rowSlot(t.group, t.item, "prepend") ? (m(), s(h(t.row.rowSlot(t.group, t.item, "prepend")), p(f({ key: 0 }, t.row.slotProps(t.group, t.item, t.index, t.selected, _(C)))), null, 16)) : t.row.slots["item:prepend"] ? (m(), s(h(t.row.slots["item:prepend"]), p(f({ key: 1 }, t.row.slotProps(t.group, t.item, t.index, t.selected, _(C)))), null, 16)) : t.item["prepend:icon"] ? (m(), s(e, f({
26
47
  key: 2,
27
48
  class: "bb-dropdown__item-icon item__prepend-icon",
28
- icon: l.item["prepend:icon"]
29
- }, l.row.rowPart("itemIcon", l.item, l.selected)), null, 16, ["icon"])) : o("", !0),
30
- l.row.rowSlot(l.group, l.item) ? (f(), a(p(l.row.rowSlot(l.group, l.item)), d(u({ key: 3 }, l.row.slotProps(l.group, l.item, l.index, l.selected))), null, 16)) : (f(), s("span", _, [c("span", u({
31
- id: l.row.rowTextId(l.index),
49
+ icon: t.item["prepend:icon"]
50
+ }, t.row.rowPart("itemIcon", t.item, t.selected, _(C))), null, 16, ["icon"])) : c("", !0),
51
+ t.row.rowSlot(t.group, t.item) ? (m(), s(h(t.row.rowSlot(t.group, t.item)), p(f({ key: 3 }, t.row.slotProps(t.group, t.item, t.index, t.selected, _(C)))), null, 16)) : (m(), l("span", y, [u("span", f({
52
+ id: t.row.rowTextId(t.index),
32
53
  class: "bb-dropdown__item-text"
33
- }, l.row.rowPart("itemText", l.item, l.selected)), m(l.item.label), 17, v), l.item.description ? (f(), s("span", u({
54
+ }, t.row.rowPart("itemText", t.item, t.selected, _(C))), g(t.item.label), 17, b), t.item.description ? (m(), l("span", f({
34
55
  key: 0,
35
- id: l.row.rowDescriptionId(l.index),
56
+ id: t.row.rowDescriptionId(t.index),
36
57
  class: "bb-dropdown__item-description"
37
- }, l.row.rowPart("itemDescription", l.item, l.selected)), m(l.item.description), 17, y)) : o("", !0)])),
38
- l.group.selectable ? (f(), a(e, {
58
+ }, t.row.rowPart("itemDescription", t.item, t.selected, _(C))), g(t.item.description), 17, x)) : c("", !0)])),
59
+ t.group.selectable ? (m(), s(e, {
39
60
  key: 5,
40
61
  "aria-hidden": "true",
41
62
  class: "item__check",
42
- icon: h(n)
43
- }, null, 8, ["icon"])) : o("", !0),
44
- l.selected ? o("", !0) : (f(), s(i, { key: 6 }, [l.row.itemSlot(l.item, "append") ? (f(), a(p(l.row.itemSlot(l.item, "append")), d(u({ key: 0 }, l.row.slotProps(l.group, l.item, l.index, l.selected))), null, 16)) : l.item.items ? (f(), a(e, {
63
+ icon: _(i)
64
+ }, null, 8, ["icon"])) : c("", !0),
65
+ t.selected ? c("", !0) : (m(), l(o, { key: 6 }, [t.row.itemSlot(t.item, "append") ? (m(), s(h(t.row.itemSlot(t.item, "append")), p(f({ key: 0 }, t.row.slotProps(t.group, t.item, t.index, t.selected, _(C)))), null, 16)) : t.item.items ? (m(), s(e, {
45
66
  key: 1,
46
67
  "aria-hidden": "true",
47
68
  class: "item__chevron",
48
- icon: h(r)
49
- }, null, 8, ["icon"])) : l.row.groupRowSlot(l.group, "append") ? (f(), a(p(l.row.groupRowSlot(l.group, "append")), d(u({ key: 2 }, l.row.slotProps(l.group, l.item, l.index, l.selected))), null, 16)) : l.row.slots["item:append"] ? (f(), a(p(l.row.slots["item:append"]), d(u({ key: 3 }, l.row.slotProps(l.group, l.item, l.index, l.selected))), null, 16)) : l.item["append:icon"] ? (f(), a(e, u({
69
+ icon: _(a)
70
+ }, null, 8, ["icon"])) : t.row.groupRowSlot(t.group, "append") ? (m(), s(h(t.row.groupRowSlot(t.group, "append")), p(f({ key: 2 }, t.row.slotProps(t.group, t.item, t.index, t.selected, _(C)))), null, 16)) : t.row.slots["item:append"] ? (m(), s(h(t.row.slots["item:append"]), p(f({ key: 3 }, t.row.slotProps(t.group, t.item, t.index, t.selected, _(C)))), null, 16)) : t.item["append:icon"] ? (m(), s(e, f({
50
71
  key: 4,
51
72
  class: "bb-dropdown__item-icon item__append-icon",
52
- icon: l.item["append:icon"]
53
- }, l.row.rowPart("itemIcon", l.item, l.selected)), null, 16, ["icon"])) : o("", !0)], 64))
73
+ icon: t.item["append:icon"]
74
+ }, t.row.rowPart("itemIcon", t.item, t.selected, _(C))), null, 16, ["icon"])) : c("", !0)], 64))
54
75
  ]),
55
76
  _: 1
56
77
  }, 16));
57
78
  }
58
79
  });
59
80
  //#endregion
60
- export { b as default };
81
+ export { S as default };
@@ -31,3 +31,9 @@ export declare const normalizeGroups: (items?: Item[]) => NormalizedGroup[];
31
31
  * makes it an action row.
32
32
  */
33
33
  export declare const hasRowValue: (item: InternalItem) => boolean;
34
+ /**
35
+ * A row's section title under a group's `groupBy` (ATT-15 prototype): the path
36
+ * read off `row`, or the getter's answer. `undefined` = no section (listed
37
+ * without a heading), like a nullish group in `BbSelect`.
38
+ */
39
+ export declare const sectionTitle: (groupBy: NormalizedGroup["groupBy"], row: unknown) => string | undefined;
@@ -1,22 +1,23 @@
1
1
  import { hash as e } from "../../utilities/functions/hash.js";
2
2
  import { slotKey as t } from "../../utilities/functions/slotKey.js";
3
- import { groupItemsAsArray as n, isGroup as r, isSelectableGroup as i, selectablePredicateOf as a } from "./types.js";
3
+ import { get as n } from "../../utilities/functions/get.js";
4
+ import { groupItemsAsArray as r, isGroup as i, isSelectableGroup as a, selectablePredicateOf as o } from "./types.js";
4
5
  //#region src/components/BbDropdown/normalizeGroups.ts
5
- var o = (e) => e.some((e) => !!e.searchable && !!e.id), s = (e = []) => {
6
- let t = [], o = [], s = () => {
7
- o.length && (t.push({
6
+ var s = (e) => e.some((e) => !!e.searchable && !!e.id), c = (e = []) => {
7
+ let t = [], n = [], s = () => {
8
+ n.length && (t.push({
8
9
  selectable: !1,
9
10
  multiple: !1,
10
11
  selected: [],
11
- items: o,
12
+ items: n,
12
13
  divider: !1
13
- }), o = []);
14
+ }), n = []);
14
15
  };
15
- for (let c of e) if (r(c)) {
16
+ for (let c of e) if (i(c)) {
16
17
  s();
17
- let e = n(c.items).flat();
18
+ let e = r(c.items).flat();
18
19
  if (!e.length) continue;
19
- let r = i(c) && c.id != null && c.id !== "", o = a(c), l = o ? e.map((e) => e.fetched || e.placeholder || e.disabled || o(e) ? e : {
20
+ let n = a(c) && c.id != null && c.id !== "", i = o(c), l = i ? e.map((e) => e.fetched || e.placeholder || e.disabled || i(e) ? e : {
20
21
  ...e,
21
22
  disabled: !0
22
23
  }) : e;
@@ -24,7 +25,7 @@ var o = (e) => e.some((e) => !!e.searchable && !!e.id), s = (e = []) => {
24
25
  id: c.id,
25
26
  label: c.label,
26
27
  hideLabel: c.hideLabel,
27
- selectable: r,
28
+ selectable: n,
28
29
  multiple: c.multiple ?? !1,
29
30
  clearable: c.clearable,
30
31
  selected: [],
@@ -35,6 +36,7 @@ var o = (e) => e.some((e) => !!e.searchable && !!e.id), s = (e = []) => {
35
36
  onClick: c.onClick,
36
37
  searchable: c.searchable,
37
38
  searchPlaceholder: c.searchPlaceholder,
39
+ groupBy: c.groupBy,
38
40
  filterBy: c.filterBy,
39
41
  maxHeight: c.maxHeight,
40
42
  meta: c.meta,
@@ -46,9 +48,9 @@ var o = (e) => e.some((e) => !!e.searchable && !!e.id), s = (e = []) => {
46
48
  selected: [],
47
49
  items: c,
48
50
  divider: t.length > 0
49
- })) : o.push(c);
50
- return s(), l(t);
51
- }, c = (e) => e.value !== void 0, l = (n) => {
51
+ })) : n.push(c);
52
+ return s(), u(t);
53
+ }, l = (e) => e.value !== void 0, u = (n) => {
52
54
  let r = /* @__PURE__ */ new Set(), i = (e) => {
53
55
  let t = e || "row";
54
56
  for (let n = 2; r.has(t); n++) t = `${e || "row"}-${n}`;
@@ -61,7 +63,7 @@ var o = (e) => e.some((e) => !!e.searchable && !!e.id), s = (e = []) => {
61
63
  return n.map((n) => ({
62
64
  ...n,
63
65
  items: n.items.map((r) => {
64
- if (r.rowKey != null || c(r)) {
66
+ if (r.rowKey != null || l(r)) {
65
67
  let t = r.rowKey ?? e(r.value);
66
68
  return {
67
69
  ...r,
@@ -79,6 +81,10 @@ var o = (e) => e.some((e) => !!e.searchable && !!e.id), s = (e = []) => {
79
81
  };
80
82
  })
81
83
  }));
84
+ }, d = (e, t) => {
85
+ if (e == null || t == null) return;
86
+ let r = typeof e == "function" ? e(t) : n(t, e);
87
+ return r == null || r === "" ? void 0 : String(r);
82
88
  };
83
89
  //#endregion
84
- export { c as hasRowValue, o as levelHasSearch, s as normalizeGroups };
90
+ export { l as hasRowValue, s as levelHasSearch, c as normalizeGroups, d as sectionTitle };