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

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 (377) 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 +416 -6
  47. package/dist/ai/components.json +50 -48
  48. package/dist/ai/composables/useConfirm.md +39 -1
  49. package/dist/ai/design-tokens.json +6 -6
  50. package/dist/ai/guides/agent-contract.md +2 -2
  51. package/dist/ai/guides/ai-router.md +24 -23
  52. package/dist/ai/guides/app-layout.md +5 -0
  53. package/dist/ai/guides/component-picker.md +9 -2
  54. package/dist/ai/guides/design-language.md +24 -24
  55. package/dist/ai/guides/design-tokens.md +15 -8
  56. package/dist/ai/guides/icons-policy.md +9 -2
  57. package/dist/ai/guides/inertia-helpers.md +79 -49
  58. package/dist/ai/guides/installation-and-plugin-setup.md +12 -2
  59. package/dist/ai/guides/migration/adoption-checklist.md +235 -0
  60. package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -15
  61. package/dist/ai/guides/migration/components/bb-dialog.md +9 -9
  62. package/dist/ai/guides/migration/components/bb-dropdown.md +7 -2
  63. package/dist/ai/guides/migration/components/bb-popover.md +4 -2
  64. package/dist/ai/guides/migration/components/bb-select.md +19 -0
  65. package/dist/ai/guides/migration/components/bb-table.md +1 -0
  66. package/dist/ai/guides/migration/components/bb-toast.md +4 -0
  67. package/dist/ai/guides/migration/components/bb-tooltip.md +15 -12
  68. package/dist/ai/guides/migration/components/use-confirm.md +25 -2
  69. package/dist/ai/guides/migration/v2-to-v3.md +163 -9
  70. package/dist/ai/guides/migration/v3-beta-css-classes.md +7 -3
  71. package/dist/ai/guides/options-items-playbook.md +2 -1
  72. package/dist/ai/guides/passthrough.md +147 -85
  73. package/dist/ai/guides/preset-components.md +140 -15
  74. package/dist/ai/helpers/definePreset.json +7 -0
  75. package/dist/ai/helpers/definePreset.ts +123 -11
  76. package/dist/ai/helpers/inertia/manifest.json +15 -9
  77. package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +4 -4
  78. package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +39 -24
  79. package/dist/ai/helpers/inertia/useRouteQuery.ts +10 -4
  80. package/dist/ai/index.md +1 -0
  81. package/dist/ai/manifest/common.json +0 -1
  82. package/dist/ai/manifest/components/BbAlert.json +7 -2
  83. package/dist/ai/manifest/components/BbBadge.json +13 -4
  84. package/dist/ai/manifest/components/BbBadge.tree.json +2 -0
  85. package/dist/ai/manifest/components/BbBadgeButton.json +4 -2
  86. package/dist/ai/manifest/components/BbBaseButton.json +4 -2
  87. package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
  88. package/dist/ai/manifest/components/BbButton.json +14 -3
  89. package/dist/ai/manifest/components/BbButton.tree.json +5 -1
  90. package/dist/ai/manifest/components/BbCheckboxGroup.json +13 -8
  91. package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +11 -1
  92. package/dist/ai/manifest/components/BbColorInput.json +18 -15
  93. package/dist/ai/manifest/components/BbColorPalette.json +1 -1
  94. package/dist/ai/manifest/components/BbConfirm.json +4 -2
  95. package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
  96. package/dist/ai/manifest/components/BbDatePicker.json +1 -1
  97. package/dist/ai/manifest/components/BbDatePickerInput.json +17 -14
  98. package/dist/ai/manifest/components/BbDialog.tree.json +2 -1
  99. package/dist/ai/manifest/components/BbDropdown.json +24 -19
  100. package/dist/ai/manifest/components/BbDropdown.tree.json +9 -2
  101. package/dist/ai/manifest/components/BbDropdownButton.json +33 -20
  102. package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
  103. package/dist/ai/manifest/components/BbForm.json +2 -2
  104. package/dist/ai/manifest/components/BbHost.tree.json +1 -1
  105. package/dist/ai/manifest/components/BbHoverCard.json +1 -1
  106. package/dist/ai/manifest/components/BbIndicator.json +8 -2
  107. package/dist/ai/manifest/components/BbNumberInput.json +5 -2
  108. package/dist/ai/manifest/components/BbOffCanvas.json +2 -2
  109. package/dist/ai/manifest/components/BbOffCanvas.tree.json +1 -1
  110. package/dist/ai/manifest/components/BbPopover.json +1 -1
  111. package/dist/ai/manifest/components/BbRadioGroup.json +17 -12
  112. package/dist/ai/manifest/components/BbRadioGroup.tree.json +8 -1
  113. package/dist/ai/manifest/components/BbSelect.json +21 -18
  114. package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
  115. package/dist/ai/manifest/components/BbSelectPopover.json +10 -10
  116. package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
  117. package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
  118. package/dist/ai/manifest/components/BbSwitchGroup.tree.json +3 -1
  119. package/dist/ai/manifest/components/BbTable.tree.json +14 -1
  120. package/dist/ai/manifest/components/BbTabs.json +9 -6
  121. package/dist/ai/manifest/components/BbTabs.tree.json +1 -1
  122. package/dist/ai/manifest/components/BbTabsList.json +6 -3
  123. package/dist/ai/manifest/components/BbTag.json +19 -16
  124. package/dist/ai/manifest/components/BbTag.tree.json +1 -1
  125. package/dist/ai/manifest/components/BbTextInput.json +6 -3
  126. package/dist/ai/manifest/components/BbTextarea.json +6 -3
  127. package/dist/ai/manifest/components/BbTimePicker.json +1 -1
  128. package/dist/ai/manifest/components/BbTimePickerInput.json +10 -7
  129. package/dist/ai/manifest/components/BbToast.json +7 -2
  130. package/dist/ai/manifest/components/BbToast.tree.json +4 -2
  131. package/dist/ai/manifest/components/BbTooltip.json +6 -5
  132. package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
  133. package/dist/ai/manifest/components/CommonField.json +1 -1
  134. package/dist/ai/manifest/components/OptionsContainer.json +3 -1
  135. package/dist/ai/manifest/components/OptionsContainer.tree.json +38 -0
  136. package/dist/ai/manifest/index.json +3 -3
  137. package/dist/ai/manifest/meta.json +5 -3
  138. package/dist/ai/manifest/types.advanced.json +5 -2
  139. package/dist/ai/manifest/types.api.json +9 -7
  140. package/dist/ai/recipes/inertia/layout-scaffold.md +19 -6
  141. package/dist/ai/recipes/inertia/records-workspace.md +49 -13
  142. package/dist/ai/recipes/nuxt/layout-scaffold.md +19 -6
  143. package/dist/ai/recipes/nuxt/records-workspace.md +42 -12
  144. package/dist/ai/recipes/vue/layout-scaffold.md +19 -6
  145. package/dist/ai/recipes/vue/records-workspace.md +42 -12
  146. package/dist/ai/source/BbAlert.md +94 -76
  147. package/dist/ai/source/BbBadge.md +174 -72
  148. package/dist/ai/source/BbBadgeButton.md +130 -65
  149. package/dist/ai/source/BbBaseButton.md +46 -124
  150. package/dist/ai/source/BbBaseCheckboxIcon.md +38 -0
  151. package/dist/ai/source/BbBaseRadioIcon.md +18 -0
  152. package/dist/ai/source/BbBaseSwitchIcon.md +51 -0
  153. package/dist/ai/source/BbButton.md +153 -36
  154. package/dist/ai/source/BbCheckboxGroup.md +142 -18
  155. package/dist/ai/source/BbColorInput.md +240 -204
  156. package/dist/ai/source/BbColorPalette.md +7 -4
  157. package/dist/ai/source/BbConfirm.md +34 -11
  158. package/dist/ai/source/BbConfirmPortal.md +24 -9
  159. package/dist/ai/source/BbDatePicker.md +11 -7
  160. package/dist/ai/source/BbDatePickerInput.md +306 -269
  161. package/dist/ai/source/BbDialog.md +49 -14
  162. package/dist/ai/source/BbDropdown.md +314 -197
  163. package/dist/ai/source/BbDropdownButton.md +197 -31
  164. package/dist/ai/source/BbDropdownGroup.md +274 -176
  165. package/dist/ai/source/BbForm.md +50 -6
  166. package/dist/ai/source/BbHoverCard.md +12 -5
  167. package/dist/ai/source/BbIcon.md +4 -3
  168. package/dist/ai/source/BbIndicator.md +73 -52
  169. package/dist/ai/source/BbNumberInput.md +293 -257
  170. package/dist/ai/source/BbOffCanvas.md +55 -29
  171. package/dist/ai/source/BbPopover.md +14 -10
  172. package/dist/ai/source/BbRadioGroup.md +413 -297
  173. package/dist/ai/source/BbSelect.md +549 -435
  174. package/dist/ai/source/BbSelectPopover.md +128 -33
  175. package/dist/ai/source/BbSwitchGroup.md +70 -10
  176. package/dist/ai/source/BbTable.md +369 -37
  177. package/dist/ai/source/BbTabs.md +115 -39
  178. package/dist/ai/source/BbTabsList.md +106 -38
  179. package/dist/ai/source/BbTabsPanels.md +96 -36
  180. package/dist/ai/source/BbTabsRoot.md +96 -36
  181. package/dist/ai/source/BbTag.md +267 -233
  182. package/dist/ai/source/BbTextInput.md +261 -225
  183. package/dist/ai/source/BbTextarea.md +251 -215
  184. package/dist/ai/source/BbTimePicker.md +11 -7
  185. package/dist/ai/source/BbTimePickerInput.md +257 -220
  186. package/dist/ai/source/BbToast.md +73 -32
  187. package/dist/ai/source/BbToastPortal.md +65 -30
  188. package/dist/ai/source/BbTooltip.md +148 -113
  189. package/dist/ai/source/CommonPopover.md +6 -1
  190. package/dist/ai/source/FlatListBox.md +19 -9
  191. package/dist/ai/source/GroupedListBox.md +19 -9
  192. package/dist/ai/source/OptionsContainer.md +25 -9
  193. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +61 -36
  194. package/dist/components/BbAlert/types.d.ts +9 -5
  195. package/dist/components/BbAlert/types.js +8 -3
  196. package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +3 -3
  197. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +26 -17
  198. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +103 -50
  199. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +20 -15
  200. package/dist/components/BbBadge/badgeButtonContext.d.ts +12 -1
  201. package/dist/components/BbBadge/types.d.ts +45 -15
  202. package/dist/components/BbBadge/types.js +12 -3
  203. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -126
  204. package/dist/components/BbBaseButton/types.d.ts +23 -4
  205. package/dist/components/BbBaseButton/types.js +7 -1
  206. package/dist/components/BbBaseButton/useLinkState.d.ts +41 -0
  207. package/dist/components/BbBaseButton/useLinkState.js +70 -0
  208. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +130 -74
  209. package/dist/components/BbButton/types.d.ts +50 -13
  210. package/dist/components/BbButton/types.js +10 -3
  211. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +148 -95
  212. package/dist/components/BbCheckboxGroup/types.d.ts +34 -11
  213. package/dist/components/BbCheckboxGroup/types.js +9 -4
  214. package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +1 -1
  215. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +134 -93
  216. package/dist/components/BbColorInput/types.d.ts +11 -4
  217. package/dist/components/BbColorInput/types.js +9 -3
  218. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +82 -59
  219. package/dist/components/BbConfirm/types.d.ts +9 -4
  220. package/dist/components/BbConfirm/types.js +8 -3
  221. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
  222. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +68 -67
  223. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +1 -1
  224. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +259 -215
  225. package/dist/components/BbDatePickerInput/types.d.ts +12 -5
  226. package/dist/components/BbDatePickerInput/types.js +9 -3
  227. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +223 -219
  228. package/dist/components/BbDialog/useDialogStack.d.ts +1 -1
  229. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +104 -89
  230. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +1 -0
  231. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +323 -285
  232. package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +1 -0
  233. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +411 -319
  234. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +100 -98
  235. package/dist/components/BbDropdown/DropdownRow.vue.d.ts +4 -3
  236. package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +49 -28
  237. package/dist/components/BbDropdown/normalizeGroups.d.ts +6 -0
  238. package/dist/components/BbDropdown/normalizeGroups.js +21 -15
  239. package/dist/components/BbDropdown/types.d.ts +59 -12
  240. package/dist/components/BbDropdown/types.js +16 -3
  241. package/dist/components/BbDropdown/useDropdownContext.d.ts +6 -0
  242. package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +2 -1
  243. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +179 -68
  244. package/dist/components/BbDropdownButton/types.d.ts +44 -16
  245. package/dist/components/BbDropdownButton/types.js +28 -3
  246. package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +111 -89
  247. package/dist/components/BbForm/formSchema.d.ts +13 -0
  248. package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +100 -100
  249. package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +40 -25
  250. package/dist/components/BbIndicator/types.d.ts +9 -5
  251. package/dist/components/BbIndicator/types.js +8 -3
  252. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +243 -202
  253. package/dist/components/BbNumberInput/types.d.ts +12 -5
  254. package/dist/components/BbNumberInput/types.js +9 -3
  255. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
  256. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +401 -399
  257. package/dist/components/BbOffCanvas/types.d.ts +6 -2
  258. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +81 -80
  259. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +158 -105
  260. package/dist/components/BbRadioGroup/types.d.ts +21 -7
  261. package/dist/components/BbRadioGroup/types.js +9 -4
  262. package/dist/components/BbSelect/BbSelect.vue.d.ts +4 -3
  263. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +181 -137
  264. package/dist/components/BbSelect/types.d.ts +36 -22
  265. package/dist/components/BbSelect/types.js +22 -3
  266. package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +4 -4
  267. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +543 -532
  268. package/dist/components/BbSelectPopover/knownItems.d.ts +5 -0
  269. package/dist/components/BbSelectPopover/types.d.ts +46 -12
  270. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
  271. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  272. package/dist/components/BbSwitchGroup/types.d.ts +14 -4
  273. package/dist/components/BbSwitchGroup/types.js +8 -3
  274. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1102 -995
  275. package/dist/components/BbTable/estimatedFloors.golden.d.ts +25 -0
  276. package/dist/components/BbTable/measuredFloors.d.ts +46 -0
  277. package/dist/components/BbTable/measuredFloors.js +322 -0
  278. package/dist/components/BbTable/measuredFloorsTestKit.d.ts +27 -0
  279. package/dist/components/BbTable/textRuler.d.ts +71 -0
  280. package/dist/components/BbTable/textRuler.js +121 -0
  281. package/dist/components/BbTable/utils.d.ts +113 -6
  282. package/dist/components/BbTable/utils.js +118 -65
  283. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +53 -35
  284. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +62 -45
  285. package/dist/components/BbTabs/types.d.ts +26 -11
  286. package/dist/components/BbTabs/types.js +23 -8
  287. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +205 -164
  288. package/dist/components/BbTag/types.d.ts +11 -4
  289. package/dist/components/BbTag/types.js +9 -3
  290. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +98 -57
  291. package/dist/components/BbTextInput/types.d.ts +12 -5
  292. package/dist/components/BbTextInput/types.js +9 -3
  293. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +137 -96
  294. package/dist/components/BbTextarea/types.d.ts +12 -5
  295. package/dist/components/BbTextarea/types.js +9 -3
  296. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +105 -104
  297. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +241 -197
  298. package/dist/components/BbTimePickerInput/types.d.ts +12 -5
  299. package/dist/components/BbTimePickerInput/types.js +9 -3
  300. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +74 -32
  301. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +47 -47
  302. package/dist/components/BbToast/types.d.ts +10 -5
  303. package/dist/components/BbToast/types.js +18 -3
  304. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +85 -71
  305. package/dist/components/BbTooltip/types.d.ts +13 -8
  306. package/dist/components/BbTooltip/types.js +8 -3
  307. package/dist/components/CommonField/CommonField.vue.d.ts +1 -1
  308. package/dist/components/CommonPopover/CommonPopover.vue.d.ts +1 -1
  309. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +69 -69
  310. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +53 -50
  311. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +146 -143
  312. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +7 -2
  313. package/dist/components/OptionsContainer/types.d.ts +14 -3
  314. package/dist/composables/useBbFormContext.d.ts +4 -3
  315. package/dist/composables/useBbTabsContext.js +99 -85
  316. package/dist/composables/useChoiceIndicator.d.ts +58 -0
  317. package/dist/composables/useChoiceIndicator.js +197 -0
  318. package/dist/composables/useConfirm.d.ts +4 -4
  319. package/dist/composables/usePassthrough.d.ts +54 -1
  320. package/dist/composables/usePassthrough.js +100 -71
  321. package/dist/directives/bbTooltip.d.ts +12 -6
  322. package/dist/directives/createPopoverDirective.js +1 -1
  323. package/dist/index.d.ts +3 -1
  324. package/dist/llms-full.txt +2300 -543
  325. package/dist/llms-medium.txt +71 -53
  326. package/dist/llms.txt +2 -1
  327. package/dist/passthrough-deduper.js +6 -3
  328. package/dist/project-dts.d.ts +24 -0
  329. package/dist/project-dts.js +43 -17
  330. package/dist/styles.css +2 -2
  331. package/dist/types/AlertVariant.d.ts +14 -0
  332. package/dist/types/AlertVariant.js +9 -0
  333. package/dist/types/BadgeVariant.d.ts +14 -0
  334. package/dist/types/BadgeVariant.js +9 -0
  335. package/dist/types/ButtonVariant.d.ts +16 -0
  336. package/dist/types/ButtonVariant.js +11 -0
  337. package/dist/types/CheckboxVariant.d.ts +38 -0
  338. package/dist/types/CheckboxVariant.js +4 -0
  339. package/dist/types/CommonProps.d.ts +4 -3
  340. package/dist/types/Config.d.ts +7 -0
  341. package/dist/types/ConfirmVariant.d.ts +12 -0
  342. package/dist/types/ConfirmVariant.js +4 -0
  343. package/dist/types/DropdownItemVariant.d.ts +12 -0
  344. package/dist/types/DropdownItemVariant.js +4 -0
  345. package/dist/types/IndicatorVariant.d.ts +15 -0
  346. package/dist/types/IndicatorVariant.js +10 -0
  347. package/dist/types/InputVariant.d.ts +13 -0
  348. package/dist/types/InputVariant.js +8 -0
  349. package/dist/types/RadioVariant.d.ts +38 -0
  350. package/dist/types/RadioVariant.js +4 -0
  351. package/dist/types/TabsVariant.d.ts +13 -0
  352. package/dist/types/TabsVariant.js +8 -0
  353. package/dist/types/ToastVariant.d.ts +15 -0
  354. package/dist/types/ToastVariant.js +10 -0
  355. package/dist/types/TooltipVariant.d.ts +12 -0
  356. package/dist/types/TooltipVariant.js +4 -0
  357. package/dist/types/passthrough.d.ts +83 -15
  358. package/dist/types/passthrough.js +2 -2
  359. package/dist/types/ptComponentMap.d.ts +35 -23
  360. package/dist/utilities/functions/extractDomContainer.d.ts +20 -1
  361. package/dist/utilities/functions/extractDomContainer.js +8 -3
  362. package/dist/utils/focusVisibility.d.ts +6 -0
  363. package/dist/utils/focusVisibility.js +4 -1
  364. package/dist/utils/passthroughDeduper.d.ts +14 -0
  365. package/dist/utils/versionCheck.js +1 -1
  366. package/dist/vite-plugin.d.ts +64 -7
  367. package/dist/vite.js +385 -259
  368. package/llms.txt +2 -1
  369. package/package.json +3 -3
  370. package/scripts/lib/adoption-checklist.json +312 -0
  371. package/scripts/lib/eslint-plugin.d.ts +13 -0
  372. package/scripts/lib/eslint-plugin.mjs +75 -11
  373. package/scripts/lib/idiom-scan.mjs +65 -0
  374. package/scripts/lib/mcp-config.mjs +203 -9
  375. package/scripts/lib/migrate-fix.mjs +42 -1
  376. package/scripts/lib/project-variant-dts.mjs +18 -0
  377. package/scripts/lib/validate-bb-markup.mjs +99 -2
@@ -9,13 +9,16 @@ import { listboxHeaderHeight as s, listboxOptionFontSize as c, listboxOptionHeig
9
9
  import { isNotNil as u } from "../../utilities/functions/isNotNil.js";
10
10
  import { useListboxFocus as d } from "../../composables/useListboxFocus.js";
11
11
  import { indexBy as f } from "../../utilities/functions/indexBy.js";
12
- import { Fragment as p, computed as m, createBlock as h, createCommentVNode as g, createElementBlock as _, createElementVNode as v, createTextVNode as y, createVNode as ee, defineComponent as b, mergeProps as x, nextTick as te, normalizeClass as ne, normalizeStyle as S, openBlock as C, ref as re, renderList as w, renderSlot as T, toDisplayString as E, unref as D, useId as ie, useSlots as ae, useTemplateRef as O, watch as k, withModifiers as A } from "vue";
13
- import { useVirtualizer as oe } from "@tanstack/vue-virtual";
12
+ import { Fragment as p, computed as m, createBlock as h, createCommentVNode as g, createElementBlock as _, createElementVNode as v, createTextVNode as y, createVNode as ee, defineComponent as b, mergeProps as x, nextTick as te, normalizeClass as S, normalizeStyle as C, openBlock as w, ref as ne, renderList as T, renderSlot as E, toDisplayString as D, unref as O, useId as re, useSlots as ie, useTemplateRef as k, watch as A, withModifiers as j } from "vue";
13
+ import { useVirtualizer as ae } from "@tanstack/vue-virtual";
14
14
  //#region src/components/GroupedListBox/GroupedListBox.vue?vue&type=script&setup=true&lang.ts
15
- var se = { class: "bb-listbox__outer-container scrollbar-border" }, ce = {
15
+ var oe = { class: "bb-listbox__outer-container scrollbar-border" }, se = {
16
16
  ref: "inner",
17
17
  class: "bb-listbox__inner-container",
18
18
  tabindex: "-1"
19
+ }, ce = {
20
+ class: "bb-listbox__status",
21
+ role: "status"
19
22
  }, le = {
20
23
  key: 0,
21
24
  class: "bb-listbox__loading"
@@ -42,9 +45,9 @@ var se = { class: "bb-listbox__outer-container scrollbar-border" }, ce = {
42
45
  key: 0,
43
46
  class: "bb-listbox__option-content"
44
47
  }, _e = ["id"], ve = ["id"], ye = {
45
- key: 3,
48
+ key: 1,
46
49
  class: "bb-listbox__loading bb-listbox__loading--below"
47
- }, be = ["id"], xe = { class: "bb-listbox__failed-text" }, j = /*@__PURE__*/ b({
50
+ }, be = ["id"], xe = { class: "bb-listbox__failed-text" }, M = /*@__PURE__*/ b({
48
51
  __name: "GroupedListBox",
49
52
  props: {
50
53
  passthrough: {},
@@ -70,11 +73,11 @@ var se = { class: "bb-listbox__outer-container scrollbar-border" }, ce = {
70
73
  "option:unselected",
71
74
  "focused:change"
72
75
  ],
73
- setup(t, { expose: b, emit: j }) {
74
- let M = t, N = j, Se = ae(), { t: P } = r(), F = O("inner"), Ce = O("listbox"), { touch: I } = n(), L = m(() => M.optionHeight ? M.optionHeight : l(I.value, !!M.compact, !!M.described)), R = m(() => M.headerHeight ? M.headerHeight : s(I.value, !!M.compact)), we = m(() => c(I.value)), z = (t) => e(M.groups[t].data) ? 0 : R.value, Te = m(() => {
76
+ setup(t, { expose: b, emit: M }) {
77
+ let N = t, P = M, Se = ie(), { t: F } = r(), I = k("inner"), Ce = k("listbox"), { touch: L } = n(), R = m(() => N.optionHeight ? N.optionHeight : l(L.value, !!N.compact, !!N.described)), z = m(() => N.headerHeight ? N.headerHeight : s(L.value, !!N.compact)), we = m(() => c(L.value)), B = (t) => e(N.groups[t].data) ? 0 : z.value, Te = m(() => {
75
78
  let t = 0;
76
- return M.groups.map((n, r) => {
77
- let i = n.id, a = t, o = n.options.length, s = Y(r), c = e(n.data) ? void 0 : `${U}-group-header-${n.id}`, l = typeof n.data == "string" ? n.data : e(n.data) ? "" : JSON.stringify(n.data), u = n.options.every((e) => e.disabled), d = n.data, f = n.options;
79
+ return N.groups.map((n, r) => {
80
+ let i = n.id, a = t, o = n.options.length, s = X(r), c = e(n.data) ? void 0 : `${W}-group-header-${n.id}`, l = typeof n.data == "string" ? n.data : e(n.data) ? "" : JSON.stringify(n.data), u = n.options.every((e) => e.disabled), d = n.data, f = n.options;
78
81
  return t += o, {
79
82
  offset: a,
80
83
  length: o,
@@ -88,15 +91,15 @@ var se = { class: "bb-listbox__outer-container scrollbar-border" }, ce = {
88
91
  options: f
89
92
  };
90
93
  });
91
- }), B = m(() => f(Te.value, "index")), V = m(() => {
94
+ }), V = m(() => f(Te.value, "index")), H = m(() => {
92
95
  let e = /* @__PURE__ */ new Map();
93
- return M.groups.flatMap((t, n) => t.options.map((r, i) => {
96
+ return N.groups.flatMap((t, n) => t.options.map((r, i) => {
94
97
  let a = r.valueHash, o = Ee(`${t.id}-${r.valueHash}`), s = (e.get(o) ?? 0) + 1;
95
98
  e.set(o, s);
96
99
  let c = s === 1 ? o : `${o}-${s}`;
97
100
  return {
98
101
  id: a,
99
- globalIndex: B.value[n].offset + i,
102
+ globalIndex: V.value[n].offset + i,
100
103
  groupIndex: n,
101
104
  groupId: t.id,
102
105
  indexInGroup: i,
@@ -112,52 +115,52 @@ var se = { class: "bb-listbox__outer-container scrollbar-border" }, ce = {
112
115
  domId: c
113
116
  };
114
117
  }));
115
- }), H = m(() => {
116
- let e = M.groups.map(() => []);
117
- for (let t of V.value) e[t.groupIndex].push(t);
118
+ }), U = m(() => {
119
+ let e = N.groups.map(() => []);
120
+ for (let t of H.value) e[t.groupIndex].push(t);
118
121
  return e;
119
- }), U = ie(), Ee = (e) => `${U}-listbox-option-${e}`, W = (e) => `${e}__label`, G = (e) => `${e}__description`, K = (e) => !!e && !Se.option, q = m(() => {
120
- if (e(Z.value)) return;
121
- let t = V.value[Z.value];
122
+ }), W = re(), Ee = (e) => `${W}-listbox-option-${e}`, G = (e) => `${e}__label`, K = (e) => `${e}__description`, q = (e) => !!e && !Se.option, J = m(() => {
123
+ if (e(Q.value)) return;
124
+ let t = H.value[Q.value];
122
125
  if (t) return t.domId;
123
- }), J = m(() => V.value.length > 0);
124
- function Y(e) {
125
- return z(e) + M.groups[e].options.length * L.value;
126
+ }), Y = m(() => H.value.length > 0);
127
+ function X(e) {
128
+ return B(e) + N.groups[e].options.length * R.value;
126
129
  }
127
- let X = oe({
130
+ let Z = ae({
128
131
  get count() {
129
- return M.groups.length;
132
+ return N.groups.length;
130
133
  },
131
- getScrollElement: () => F.value ?? null,
132
- estimateSize: (e) => Y(e),
134
+ getScrollElement: () => I.value ?? null,
135
+ estimateSize: (e) => X(e),
133
136
  overscan: 2
134
- }), De = m(() => X.value.getVirtualItems()), Oe = m(() => X.value.getTotalSize()), { focusedIndex: Z, focusNext: ke, focusPrevious: Ae, focusFirst: je, focusLast: Me, focusFirstSelected: Ne, focusLastSelected: Pe, focusByHash: Fe, focusByPointer: Ie, blurPointerFocus: Le, blur: Q, getHighlighted: Re } = d(m(() => V.value), { disabled: () => !M.open }), $ = re(!1), ze = async () => {
135
- if (!F.value || e(Z.value)) return;
136
- let t = V.value[Z.value]?.groupIndex;
137
- u(t) && (X.value.scrollToIndex(t, { align: "auto" }), await te());
138
- let n = F.value.querySelector(`[data-index="${Z.value}"]`);
137
+ }), De = m(() => Z.value.getVirtualItems()), Oe = m(() => Z.value.getTotalSize()), { focusedIndex: Q, focusNext: ke, focusPrevious: Ae, focusFirst: je, focusLast: Me, focusFirstSelected: Ne, focusLastSelected: Pe, focusByHash: Fe, focusByPointer: Ie, blurPointerFocus: Le, blur: Re, getHighlighted: ze } = d(m(() => H.value), { disabled: () => !N.open }), $ = ne(!1), Be = async () => {
138
+ if (!I.value || e(Q.value)) return;
139
+ let t = H.value[Q.value]?.groupIndex;
140
+ u(t) && (Z.value.scrollToIndex(t, { align: "auto" }), await te());
141
+ let n = I.value.querySelector(`[data-index="${Q.value}"]`);
139
142
  n && n.scrollIntoView({ block: "nearest" });
140
143
  };
141
- k(Z, () => {
142
- $.value || ze(), $.value = !1, N("focused:change", q.value);
144
+ A(Q, () => {
145
+ $.value || Be(), $.value = !1, P("focused:change", J.value);
143
146
  });
144
- let Be = () => X.value.scrollToOffset(0), Ve = () => {
145
- let e = V.value.find((e) => e.selected);
146
- if (!e) return Be();
147
- X.value.getTotalSize();
148
- let t = X.value.measurementsCache[e.groupIndex];
149
- t && X.value.scrollToOffset(t.start + z(e.groupIndex) + e.indexInGroup * L.value);
147
+ let Ve = () => Z.value.scrollToOffset(0), He = () => {
148
+ let e = H.value.find((e) => e.selected);
149
+ if (!e) return Ve();
150
+ Z.value.getTotalSize();
151
+ let t = Z.value.measurementsCache[e.groupIndex];
152
+ t && Z.value.scrollToOffset(t.start + B(e.groupIndex) + e.indexInGroup * R.value);
150
153
  };
151
- k(() => M.open && !!F.value, (e) => {
152
- e && Ve();
154
+ A(() => N.open && !!I.value, (e) => {
155
+ e && He();
153
156
  }, { flush: "post" });
154
- let He = (e) => {
155
- M.open && ($.value = !0, Ie(e));
156
- }, Ue = () => {
157
- Le();
157
+ let Ue = (e) => {
158
+ N.open && ($.value = !0, Ie(e));
158
159
  }, We = () => {
159
- if (e(Z.value) || !M.open) return;
160
- let t = V.value[Z.value];
160
+ Le();
161
+ }, Ge = () => {
162
+ if (e(Q.value) || !N.open) return;
163
+ let t = H.value[Q.value];
161
164
  if (!t || t.disabled) return;
162
165
  let n = {
163
166
  text: t.text,
@@ -167,21 +170,21 @@ var se = { class: "bb-listbox__outer-container scrollbar-border" }, ce = {
167
170
  selected: t.selected,
168
171
  disabled: t.disabled
169
172
  };
170
- t.selected ? N("option:unselected", n) : N("option:selected", n);
171
- }, Ge = (t) => {
172
- if (t.preventDefault(), F.value && t.target instanceof HTMLElement && Ce.value) {
173
+ t.selected ? P("option:unselected", n) : P("option:selected", n);
174
+ }, Ke = (t) => {
175
+ if (t.preventDefault(), I.value && t.target instanceof HTMLElement && Ce.value) {
173
176
  let n = t.target, r = n.dataset.index;
174
177
  for (; e(r) && n.parentElement;) n = n.parentElement, r = n.dataset.index;
175
178
  if (r) {
176
- let e = V.value[+r];
177
- e && !e.disabled && (Z.value = +r, We());
179
+ let e = H.value[+r];
180
+ e && !e.disabled && (Q.value = +r, Ge());
178
181
  }
179
182
  }
180
183
  };
181
- return k(() => M.groups, (e, t) => {
182
- e.flatMap((e) => [e.id, ...e.options.map((e) => e.valueHash)]).join(",") !== t.flatMap((e) => [e.id, ...e.options.map((e) => e.valueHash)]).join(",") && (X.value.measure(), Q());
183
- }, { flush: "post" }), k([L, R], () => {
184
- X.value.measure();
184
+ return A(() => N.groups, (e, t) => {
185
+ e.flatMap((e) => [e.id, ...e.options.map((e) => e.valueHash)]).join(",") !== t.flatMap((e) => [e.id, ...e.options.map((e) => e.valueHash)]).join(",") && (Z.value.measure(), Re());
186
+ }, { flush: "post" }), A([R, z], () => {
187
+ Z.value.measure();
185
188
  }, { flush: "post" }), b({
186
189
  focusNext: ke,
187
190
  focusPrevious: Ae,
@@ -189,39 +192,39 @@ var se = { class: "bb-listbox__outer-container scrollbar-border" }, ce = {
189
192
  focusFirstSelected: Ne,
190
193
  focusLast: Me,
191
194
  focusLastSelected: Pe,
192
- blur: Q,
193
- confirmOption: We,
195
+ blur: Re,
196
+ confirmOption: Ge,
194
197
  focusByHash: Fe,
195
- getHighlighted: Re,
196
- getActiveDescendantId: () => q.value,
197
- scrollToTop: Be,
198
- scrollToSelected: Ve
199
- }), (e, t) => (C(), _("span", {
200
- class: ne(["bb-listbox bb-listbox--grouped", {
198
+ getHighlighted: ze,
199
+ getActiveDescendantId: () => J.value,
200
+ scrollToTop: Ve,
201
+ scrollToSelected: He
202
+ }), (e, t) => (w(), _("span", {
203
+ class: S(["bb-listbox bb-listbox--grouped", {
201
204
  "bb-listbox--compact": e.compact,
202
205
  "bb-listbox--described": e.described,
203
206
  "bb-listbox--loading": e.loading,
204
207
  "bb-listbox--multiple": e.multiple,
205
- "bb-listbox--empty": !J.value,
208
+ "bb-listbox--empty": !Y.value,
206
209
  "bb-listbox--open": e.open
207
210
  }]),
208
- style: S({
211
+ style: C({
209
212
  "--transition-duration": `${e.transitionDuration}ms`,
210
- "--option-height": `${L.value}px`,
211
- "--group-header-height": `${R.value}px`,
213
+ "--option-height": `${R.value}px`,
214
+ "--group-header-height": `${z.value}px`,
212
215
  "--option-font-size": we.value
213
216
  }),
214
- onClickCapture: Ge,
215
- onClick: t[0] ||= A(() => {}, ["stop"]),
216
- onMousedown: t[1] ||= A(() => {}, ["prevent"])
217
- }, [v("span", se, [v("span", ce, [
218
- T(e.$slots, "options:prepend"),
219
- e.loading && !J.value ? (C(), _("span", le, [T(e.$slots, "loading", {}, () => [y(E(e.loadingText || D(P)("common.loadingText").value), 1)])])) : !J.value && !e.failedText ? (C(), _("span", ue, [T(e.$slots, "empty", {}, () => [y(E(e.emptyText || D(P)("common.emptyText").value), 1)])])) : g("", !0),
220
- J.value ? (C(), _("span", x({
221
- key: 2,
217
+ onClickCapture: Ke,
218
+ onClick: t[0] ||= j(() => {}, ["stop"]),
219
+ onMousedown: t[1] ||= j(() => {}, ["prevent"])
220
+ }, [v("span", oe, [v("span", se, [
221
+ E(e.$slots, "options:prepend"),
222
+ v("span", ce, [e.loading && !Y.value ? (w(), _("span", le, [E(e.$slots, "loading", {}, () => [y(D(e.loadingText || O(F)("common.loadingText").value), 1)])])) : !Y.value && !e.failedText ? (w(), _("span", ue, [E(e.$slots, "empty", {}, () => [y(D(e.emptyText || O(F)("common.emptyText").value), 1)])])) : g("", !0)]),
223
+ Y.value ? (w(), _("span", x({
224
+ key: 0,
222
225
  id: e.id,
223
226
  ref: "listbox",
224
- "aria-activedescendant": q.value,
227
+ "aria-activedescendant": J.value,
225
228
  "aria-label": e.listLabelledby ? void 0 : e.listLabel,
226
229
  "aria-labelledby": e.listLabelledby,
227
230
  "aria-multiselectable": e.multiple ? !0 : void 0,
@@ -229,113 +232,113 @@ var se = { class: "bb-listbox__outer-container scrollbar-border" }, ce = {
229
232
  role: "listbox",
230
233
  style: { height: `${Oe.value}px` },
231
234
  tabindex: "-1",
232
- onMouseleave: Ue
233
- }, e.passthrough?.list), [(C(!0), _(p, null, w(De.value, (t) => (C(), _("span", {
234
- key: B.value[t.index].id,
235
- "aria-disabled": B.value[t.index].allOptionsAreDisabled,
236
- "aria-labelledby": B.value[t.index].headerId,
235
+ onMouseleave: We
236
+ }, e.passthrough?.list), [(w(!0), _(p, null, T(De.value, (t) => (w(), _("span", {
237
+ key: V.value[t.index].id,
238
+ "aria-disabled": V.value[t.index].allOptionsAreDisabled,
239
+ "aria-labelledby": V.value[t.index].headerId,
237
240
  class: "bb-listbox__group",
238
241
  role: "group",
239
- style: S({ transform: `translateY(${t.start}px)` })
240
- }, [B.value[t.index].headerId ? (C(), _("span", {
242
+ style: C({ transform: `translateY(${t.start}px)` })
243
+ }, [V.value[t.index].headerId ? (w(), _("span", {
241
244
  key: 0,
242
- id: B.value[t.index].headerId,
245
+ id: V.value[t.index].headerId,
243
246
  class: "bb-listbox__group-header",
244
247
  role: "presentation"
245
- }, [T(e.$slots, "group", {
246
- disabled: B.value[t.index].allOptionsAreDisabled,
248
+ }, [E(e.$slots, "group", {
249
+ disabled: V.value[t.index].allOptionsAreDisabled,
247
250
  index: t.index,
248
- item: B.value[t.index].data,
249
- length: B.value[t.index].length,
250
- text: B.value[t.index].label
251
- }, () => [v("span", me, E(B.value[t.index].label), 1)])], 8, pe)) : g("", !0), (C(!0), _(p, null, w(B.value[t.index].options, (n, r) => (C(), _("span", x({
252
- id: H.value[t.index][r].domId,
251
+ item: V.value[t.index].data,
252
+ length: V.value[t.index].length,
253
+ text: V.value[t.index].label
254
+ }, () => [v("span", me, D(V.value[t.index].label), 1)])], 8, pe)) : g("", !0), (w(!0), _(p, null, T(V.value[t.index].options, (n, r) => (w(), _("span", x({
255
+ id: U.value[t.index][r].domId,
253
256
  key: n.valueHash,
254
- "aria-describedby": K(H.value[t.index][r].description) ? G(H.value[t.index][r].domId) : void 0,
255
- "aria-disabled": H.value[t.index][r].disabled ? !0 : void 0,
256
- "aria-labelledby": K(H.value[t.index][r].description) ? W(H.value[t.index][r].domId) : void 0,
257
- "aria-posinset": H.value[t.index][r].indexInGroup + 1,
258
- "aria-selected": H.value[t.index][r].selected,
259
- "aria-setsize": B.value[t.index].length,
257
+ "aria-describedby": q(U.value[t.index][r].description) ? K(U.value[t.index][r].domId) : void 0,
258
+ "aria-disabled": U.value[t.index][r].disabled ? !0 : void 0,
259
+ "aria-labelledby": q(U.value[t.index][r].description) ? G(U.value[t.index][r].domId) : void 0,
260
+ "aria-posinset": U.value[t.index][r].indexInGroup + 1,
261
+ "aria-selected": U.value[t.index][r].selected,
262
+ "aria-setsize": V.value[t.index].length,
260
263
  class: ["bb-listbox__option", {
261
- "bb-listbox__option--focused": D(Z) === H.value[t.index][r].globalIndex,
262
- "bb-listbox__option--selected": H.value[t.index][r].selected,
263
- "bb-listbox__option--disabled": H.value[t.index][r].disabled
264
+ "bb-listbox__option--focused": O(Q) === U.value[t.index][r].globalIndex,
265
+ "bb-listbox__option--selected": U.value[t.index][r].selected,
266
+ "bb-listbox__option--disabled": U.value[t.index][r].disabled
264
267
  }],
265
- "data-index": H.value[t.index][r].globalIndex,
268
+ "data-index": U.value[t.index][r].globalIndex,
266
269
  role: "option",
267
- onMouseenter: A((e) => He(H.value[t.index][r].globalIndex), ["stop"]),
270
+ onMouseenter: j((e) => Ue(U.value[t.index][r].globalIndex), ["stop"]),
268
271
  ref_for: !0
269
272
  }, e.passthrough?.part?.("option", {
270
- selected: H.value[t.index][r].selected,
271
- disabled: H.value[t.index][r].disabled || void 0
272
- }, H.value[t.index][r].item)), [
273
- H.value[t.index][r]["prepend:icon"] ? (C(), h(i, x({
273
+ selected: U.value[t.index][r].selected,
274
+ disabled: U.value[t.index][r].disabled || void 0
275
+ }, U.value[t.index][r].item)), [
276
+ U.value[t.index][r]["prepend:icon"] ? (w(), h(i, x({
274
277
  key: 0,
275
278
  "aria-hidden": "true",
276
279
  class: "bb-listbox__item-icon bb-listbox__option-prepend-icon",
277
- icon: H.value[t.index][r]["prepend:icon"],
280
+ icon: U.value[t.index][r]["prepend:icon"],
278
281
  ref_for: !0
279
282
  }, e.passthrough?.part?.("itemIcon", {
280
- selected: H.value[t.index][r].selected,
281
- disabled: H.value[t.index][r].disabled || void 0
282
- }, H.value[t.index][r].item)), null, 16, ["icon"])) : g("", !0),
283
- T(e.$slots, "option", {
284
- description: H.value[t.index][r].description,
285
- disabled: !!H.value[t.index][r].disabled,
286
- focused: D(Z) === H.value[t.index][r].globalIndex,
287
- index: H.value[t.index][r].globalIndex,
288
- item: H.value[t.index][r].item,
289
- selected: !!H.value[t.index][r].selected,
290
- text: H.value[t.index][r].text,
291
- value: H.value[t.index][r].value
292
- }, () => [H.value[t.index][r].description ? (C(), _("span", ge, [v("span", x({
293
- id: W(H.value[t.index][r].domId),
283
+ selected: U.value[t.index][r].selected,
284
+ disabled: U.value[t.index][r].disabled || void 0
285
+ }, U.value[t.index][r].item)), null, 16, ["icon"])) : g("", !0),
286
+ E(e.$slots, "option", {
287
+ description: U.value[t.index][r].description,
288
+ disabled: !!U.value[t.index][r].disabled,
289
+ focused: O(Q) === U.value[t.index][r].globalIndex,
290
+ index: U.value[t.index][r].globalIndex,
291
+ item: U.value[t.index][r].item,
292
+ selected: !!U.value[t.index][r].selected,
293
+ text: U.value[t.index][r].text,
294
+ value: U.value[t.index][r].value
295
+ }, () => [U.value[t.index][r].description ? (w(), _("span", ge, [v("span", x({
296
+ id: G(U.value[t.index][r].domId),
294
297
  class: "bb-listbox__item-text",
295
298
  ref_for: !0
296
299
  }, e.passthrough?.part?.("itemText", {
297
- selected: H.value[t.index][r].selected,
298
- disabled: H.value[t.index][r].disabled || void 0
299
- }, H.value[t.index][r].item)), E(H.value[t.index][r].text), 17, _e), v("span", x({
300
- id: G(H.value[t.index][r].domId),
300
+ selected: U.value[t.index][r].selected,
301
+ disabled: U.value[t.index][r].disabled || void 0
302
+ }, U.value[t.index][r].item)), D(U.value[t.index][r].text), 17, _e), v("span", x({
303
+ id: K(U.value[t.index][r].domId),
301
304
  class: "bb-listbox__item-description",
302
305
  ref_for: !0
303
306
  }, e.passthrough?.part?.("itemDescription", {
304
- selected: H.value[t.index][r].selected,
305
- disabled: H.value[t.index][r].disabled || void 0
306
- }, H.value[t.index][r].item)), E(H.value[t.index][r].description), 17, ve)])) : (C(), _("span", x({
307
+ selected: U.value[t.index][r].selected,
308
+ disabled: U.value[t.index][r].disabled || void 0
309
+ }, U.value[t.index][r].item)), D(U.value[t.index][r].description), 17, ve)])) : (w(), _("span", x({
307
310
  key: 1,
308
311
  class: "bb-listbox__item-text",
309
312
  ref_for: !0
310
313
  }, e.passthrough?.part?.("itemText", {
311
- selected: H.value[t.index][r].selected,
312
- disabled: H.value[t.index][r].disabled || void 0
313
- }, H.value[t.index][r].item)), E(H.value[t.index][r].text), 17))]),
314
- H.value[t.index][r]["append:icon"] && !H.value[t.index][r].selected ? (C(), h(i, x({
314
+ selected: U.value[t.index][r].selected,
315
+ disabled: U.value[t.index][r].disabled || void 0
316
+ }, U.value[t.index][r].item)), D(U.value[t.index][r].text), 17))]),
317
+ U.value[t.index][r]["append:icon"] && !U.value[t.index][r].selected ? (w(), h(i, x({
315
318
  key: 1,
316
319
  "aria-hidden": "true",
317
320
  class: "bb-listbox__item-icon bb-listbox__option-append-icon",
318
- icon: H.value[t.index][r]["append:icon"],
321
+ icon: U.value[t.index][r]["append:icon"],
319
322
  ref_for: !0
320
323
  }, e.passthrough?.part?.("itemIcon", {
321
- selected: H.value[t.index][r].selected,
322
- disabled: H.value[t.index][r].disabled || void 0
323
- }, H.value[t.index][r].item)), null, 16, ["icon"])) : g("", !0),
324
+ selected: U.value[t.index][r].selected,
325
+ disabled: U.value[t.index][r].disabled || void 0
326
+ }, U.value[t.index][r].item)), null, 16, ["icon"])) : g("", !0),
324
327
  ee(i, {
325
328
  "aria-hidden": "true",
326
329
  class: "bb-listbox__option-check",
327
- icon: D(o)
330
+ icon: O(o)
328
331
  }, null, 8, ["icon"])
329
332
  ], 16, he))), 128))], 12, fe))), 128))], 16, de)) : g("", !0),
330
- e.loading && e.loadingBelow && J.value ? (C(), _("span", ye, [T(e.$slots, "loading", {}, () => [y(E(e.loadingText || D(P)("common.loadingText").value), 1)])])) : g("", !0),
331
- T(e.$slots, "options:append")
332
- ], 512)]), e.failedText ? (C(), _("span", {
333
+ e.loading && e.loadingBelow && Y.value ? (w(), _("span", ye, [E(e.$slots, "loading", {}, () => [y(D(e.loadingText || O(F)("common.loadingText").value), 1)])])) : g("", !0),
334
+ E(e.$slots, "options:append")
335
+ ], 512)]), e.failedText ? (w(), _("span", {
333
336
  key: 0,
334
337
  id: `${e.id}_failed`,
335
- class: ne(["bb-listbox__failed", { "bb-listbox__failed--divided": J.value }]),
338
+ class: S(["bb-listbox__failed", { "bb-listbox__failed--divided": Y.value }]),
336
339
  role: "status"
337
- }, [ee(a, { class: "bb-listbox__failed-icon" }), v("span", xe, [T(e.$slots, "empty", {}, () => [y(E(e.failedText), 1)])])], 10, be)) : g("", !0)], 38));
340
+ }, [ee(a, { class: "bb-listbox__failed-icon" }), v("span", xe, [E(e.$slots, "empty", {}, () => [y(D(e.failedText), 1)])])], 10, be)) : g("", !0)], 38));
338
341
  }
339
342
  });
340
343
  //#endregion
341
- export { j as default };
344
+ export { M as default };
@@ -12,6 +12,8 @@ var v = ["id"], y = ["id"], b = /*@__PURE__*/ l({
12
12
  itemLabelAlign: {},
13
13
  itemInputAlign: {},
14
14
  listLayout: {},
15
+ variant: {},
16
+ indicatorReady: { type: Boolean },
15
17
  hasErrors: { type: Boolean },
16
18
  hasWarnings: { type: Boolean },
17
19
  hideLabel: { type: Boolean },
@@ -67,7 +69,10 @@ var v = ["id"], y = ["id"], b = /*@__PURE__*/ l({
67
69
  return (e, t) => (f(), o("span", u({ class: [C.value.root, {
68
70
  [`${C.value.root}--errors`]: e.hasErrors,
69
71
  [`${C.value.root}--warnings`]: x.value,
70
- [`${C.value.root}--${w.value}`]: !0
72
+ [`${C.value.root}--${w.value}`]: !0,
73
+ [`${C.value.root}--strip`]: !!e.variant,
74
+ [`${C.value.root}--${e.variant}`]: !!e.variant,
75
+ [`${C.value.root}--no-transition`]: !!e.variant && !e.indicatorReady
71
76
  }] }, e.passthrough?.list), [
72
77
  h(e.$slots, "prepend"),
73
78
  !e.options.length && e.loading ? (f(), o("span", {
@@ -97,7 +102,7 @@ var v = ["id"], y = ["id"], b = /*@__PURE__*/ l({
97
102
  h(e.$slots, "input", {
98
103
  descriptionId: t.description ? P(n) : void 0,
99
104
  index: n,
100
- labelId: t.description ? N(n) : void 0,
105
+ labelId: N(n),
101
106
  option: t,
102
107
  rowStates: B(t, n)
103
108
  }),
@@ -34,6 +34,17 @@ export type OptionsContainerProps<T = any> = {
34
34
  * @defaultValue `'horizontal'`
35
35
  */
36
36
  listLayout?: ListLayout;
37
+ /**
38
+ * A tab-strip look on the list (Q76.11 d): `--strip` plus the variant's
39
+ * class hook (`--pill`, `--line`, a registered name), the strip and its
40
+ * triggers (choice-strip.css). The owning group renders the indicators.
41
+ */
42
+ variant?: string;
43
+ /**
44
+ * With a `variant`: the indicators have been measured and painted, so they
45
+ * may transition. Until then the list is `--no-transition`.
46
+ */
47
+ indicatorReady?: boolean;
37
48
  /**
38
49
  * Define if the component should be in an error state.
39
50
  * It usually attaches a CSS class for styling purposes.
@@ -92,10 +103,10 @@ export type OptionsContainerInputSlotProps<T = any> = {
92
103
  /** The full internal Option object for this row. */
93
104
  option: Option<T>;
94
105
  /**
95
- * Id of the row's text, set only when the option has a description. Pass as
96
- * `aria-labelledby` so the description stays out of the input's name.
106
+ * Id of the row's text. Pass as `aria-labelledby` so the `icon` slot and the
107
+ * description stay out of the input's name.
97
108
  */
98
- labelId: string | undefined;
109
+ labelId: string;
99
110
  /**
100
111
  * Id of the row's description, set only when it has one. Add it to the
101
112
  * input's `aria-describedby` (see `withItemDescribedby`).
@@ -181,9 +181,10 @@ export type BbFormContextHandle = {
181
181
  * (`setErrors({ ...body.errors, _request: [body.message] })`). A message
182
182
  * you take back yourself (your own cross-field check) belongs in BbForm's
183
183
  * `field-errors`, computed.
184
- * Returns nothing and does not emit `invalid`: the form state is the
185
- * answer, so read `fields` / `unmatchedErrors` afterwards (to jump to the
186
- * step that holds an error, or show a summary). It moves focus to the first
184
+ * Returns nothing; a non-empty map emits BbForm's `invalid` with
185
+ * `source: 'server'` (before any focus), and `fields` / `unmatchedErrors`
186
+ * hold the same answer afterwards (to jump to the step that holds an
187
+ * error, or show a summary). It moves focus to the first
187
188
  * field that got an error and is on screen, like a failed submit — unless
188
189
  * focus has left the form meanwhile, or the form was never submitted and
189
190
  * focus is on `<body>`; `{ focus: false }` turns it off. No-op until the