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.
- package/README.md +25 -20
- package/bin/bitboss-ui.mjs +73 -7
- package/dist/ai/BbAlert.md +10 -1
- package/dist/ai/BbBadge.md +35 -3
- package/dist/ai/BbBadgeButton.md +4 -2
- package/dist/ai/BbBaseButton.md +9 -3
- package/dist/ai/BbBreadcrumbs.md +2 -2
- package/dist/ai/BbButton.md +113 -8
- package/dist/ai/BbCheckbox.md +1 -1
- package/dist/ai/BbCheckboxGroup.md +94 -6
- package/dist/ai/BbColorInput.md +4 -1
- package/dist/ai/BbColorPalette.md +2 -1
- package/dist/ai/BbConfirm.md +7 -3
- package/dist/ai/BbDatePicker.md +2 -1
- package/dist/ai/BbDatePickerInput.md +4 -1
- package/dist/ai/BbDialog.md +12 -11
- package/dist/ai/BbDropdown.md +189 -38
- package/dist/ai/BbDropdownButton.md +27 -7
- package/dist/ai/BbForm.md +55 -22
- package/dist/ai/BbHost.md +2 -2
- package/dist/ai/BbHoverCard.md +7 -3
- package/dist/ai/BbIcon.md +12 -6
- package/dist/ai/BbIndicator.md +11 -1
- package/dist/ai/BbNumberInput.md +4 -1
- package/dist/ai/BbOffCanvas.md +37 -3
- package/dist/ai/BbPopover.md +2 -1
- package/dist/ai/BbRadio.md +1 -1
- package/dist/ai/BbRadioGroup.md +102 -10
- package/dist/ai/BbSelect.md +52 -17
- package/dist/ai/BbSelectPopover.md +93 -26
- package/dist/ai/BbSwitch.md +1 -1
- package/dist/ai/BbSwitchGroup.md +30 -3
- package/dist/ai/BbTable.md +17 -10
- package/dist/ai/BbTabs.md +8 -3
- package/dist/ai/BbTabsList.md +4 -1
- package/dist/ai/BbTag.md +5 -2
- package/dist/ai/BbTextInput.md +4 -1
- package/dist/ai/BbTextarea.md +4 -1
- package/dist/ai/BbTimePicker.md +2 -1
- package/dist/ai/BbTimePickerInput.md +4 -1
- package/dist/ai/BbToast.md +9 -3
- package/dist/ai/BbTooltip.md +71 -9
- package/dist/ai/ChipsBox.md +1 -1
- package/dist/ai/CommonField.md +1 -1
- package/dist/ai/OptionsContainer.md +42 -0
- package/dist/ai/changelog.json +416 -6
- package/dist/ai/components.json +50 -48
- package/dist/ai/composables/useConfirm.md +39 -1
- package/dist/ai/design-tokens.json +6 -6
- package/dist/ai/guides/agent-contract.md +2 -2
- package/dist/ai/guides/ai-router.md +24 -23
- package/dist/ai/guides/app-layout.md +5 -0
- package/dist/ai/guides/component-picker.md +9 -2
- package/dist/ai/guides/design-language.md +24 -24
- package/dist/ai/guides/design-tokens.md +15 -8
- package/dist/ai/guides/icons-policy.md +9 -2
- package/dist/ai/guides/inertia-helpers.md +79 -49
- package/dist/ai/guides/installation-and-plugin-setup.md +12 -2
- package/dist/ai/guides/migration/adoption-checklist.md +235 -0
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -15
- package/dist/ai/guides/migration/components/bb-dialog.md +9 -9
- package/dist/ai/guides/migration/components/bb-dropdown.md +7 -2
- package/dist/ai/guides/migration/components/bb-popover.md +4 -2
- package/dist/ai/guides/migration/components/bb-select.md +19 -0
- package/dist/ai/guides/migration/components/bb-table.md +1 -0
- package/dist/ai/guides/migration/components/bb-toast.md +4 -0
- package/dist/ai/guides/migration/components/bb-tooltip.md +15 -12
- package/dist/ai/guides/migration/components/use-confirm.md +25 -2
- package/dist/ai/guides/migration/v2-to-v3.md +163 -9
- package/dist/ai/guides/migration/v3-beta-css-classes.md +7 -3
- package/dist/ai/guides/options-items-playbook.md +2 -1
- package/dist/ai/guides/passthrough.md +147 -85
- package/dist/ai/guides/preset-components.md +140 -15
- package/dist/ai/helpers/definePreset.json +7 -0
- package/dist/ai/helpers/definePreset.ts +123 -11
- package/dist/ai/helpers/inertia/manifest.json +15 -9
- package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +4 -4
- package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +39 -24
- package/dist/ai/helpers/inertia/useRouteQuery.ts +10 -4
- package/dist/ai/index.md +1 -0
- package/dist/ai/manifest/common.json +0 -1
- package/dist/ai/manifest/components/BbAlert.json +7 -2
- package/dist/ai/manifest/components/BbBadge.json +13 -4
- package/dist/ai/manifest/components/BbBadge.tree.json +2 -0
- package/dist/ai/manifest/components/BbBadgeButton.json +4 -2
- package/dist/ai/manifest/components/BbBaseButton.json +4 -2
- package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
- package/dist/ai/manifest/components/BbButton.json +14 -3
- package/dist/ai/manifest/components/BbButton.tree.json +5 -1
- package/dist/ai/manifest/components/BbCheckboxGroup.json +13 -8
- package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +11 -1
- package/dist/ai/manifest/components/BbColorInput.json +18 -15
- package/dist/ai/manifest/components/BbColorPalette.json +1 -1
- package/dist/ai/manifest/components/BbConfirm.json +4 -2
- package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
- package/dist/ai/manifest/components/BbDatePicker.json +1 -1
- package/dist/ai/manifest/components/BbDatePickerInput.json +17 -14
- package/dist/ai/manifest/components/BbDialog.tree.json +2 -1
- package/dist/ai/manifest/components/BbDropdown.json +24 -19
- package/dist/ai/manifest/components/BbDropdown.tree.json +9 -2
- package/dist/ai/manifest/components/BbDropdownButton.json +33 -20
- package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
- package/dist/ai/manifest/components/BbForm.json +2 -2
- package/dist/ai/manifest/components/BbHost.tree.json +1 -1
- package/dist/ai/manifest/components/BbHoverCard.json +1 -1
- package/dist/ai/manifest/components/BbIndicator.json +8 -2
- package/dist/ai/manifest/components/BbNumberInput.json +5 -2
- package/dist/ai/manifest/components/BbOffCanvas.json +2 -2
- package/dist/ai/manifest/components/BbOffCanvas.tree.json +1 -1
- package/dist/ai/manifest/components/BbPopover.json +1 -1
- package/dist/ai/manifest/components/BbRadioGroup.json +17 -12
- package/dist/ai/manifest/components/BbRadioGroup.tree.json +8 -1
- package/dist/ai/manifest/components/BbSelect.json +21 -18
- package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
- package/dist/ai/manifest/components/BbSelectPopover.json +10 -10
- package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
- package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
- package/dist/ai/manifest/components/BbSwitchGroup.tree.json +3 -1
- package/dist/ai/manifest/components/BbTable.tree.json +14 -1
- package/dist/ai/manifest/components/BbTabs.json +9 -6
- package/dist/ai/manifest/components/BbTabs.tree.json +1 -1
- package/dist/ai/manifest/components/BbTabsList.json +6 -3
- package/dist/ai/manifest/components/BbTag.json +19 -16
- package/dist/ai/manifest/components/BbTag.tree.json +1 -1
- package/dist/ai/manifest/components/BbTextInput.json +6 -3
- package/dist/ai/manifest/components/BbTextarea.json +6 -3
- package/dist/ai/manifest/components/BbTimePicker.json +1 -1
- package/dist/ai/manifest/components/BbTimePickerInput.json +10 -7
- package/dist/ai/manifest/components/BbToast.json +7 -2
- package/dist/ai/manifest/components/BbToast.tree.json +4 -2
- package/dist/ai/manifest/components/BbTooltip.json +6 -5
- package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
- package/dist/ai/manifest/components/CommonField.json +1 -1
- package/dist/ai/manifest/components/OptionsContainer.json +3 -1
- package/dist/ai/manifest/components/OptionsContainer.tree.json +38 -0
- package/dist/ai/manifest/index.json +3 -3
- package/dist/ai/manifest/meta.json +5 -3
- package/dist/ai/manifest/types.advanced.json +5 -2
- package/dist/ai/manifest/types.api.json +9 -7
- package/dist/ai/recipes/inertia/layout-scaffold.md +19 -6
- package/dist/ai/recipes/inertia/records-workspace.md +49 -13
- package/dist/ai/recipes/nuxt/layout-scaffold.md +19 -6
- package/dist/ai/recipes/nuxt/records-workspace.md +42 -12
- package/dist/ai/recipes/vue/layout-scaffold.md +19 -6
- package/dist/ai/recipes/vue/records-workspace.md +42 -12
- package/dist/ai/source/BbAlert.md +94 -76
- package/dist/ai/source/BbBadge.md +174 -72
- package/dist/ai/source/BbBadgeButton.md +130 -65
- package/dist/ai/source/BbBaseButton.md +46 -124
- package/dist/ai/source/BbBaseCheckboxIcon.md +38 -0
- package/dist/ai/source/BbBaseRadioIcon.md +18 -0
- package/dist/ai/source/BbBaseSwitchIcon.md +51 -0
- package/dist/ai/source/BbButton.md +153 -36
- package/dist/ai/source/BbCheckboxGroup.md +142 -18
- package/dist/ai/source/BbColorInput.md +240 -204
- package/dist/ai/source/BbColorPalette.md +7 -4
- package/dist/ai/source/BbConfirm.md +34 -11
- package/dist/ai/source/BbConfirmPortal.md +24 -9
- package/dist/ai/source/BbDatePicker.md +11 -7
- package/dist/ai/source/BbDatePickerInput.md +306 -269
- package/dist/ai/source/BbDialog.md +49 -14
- package/dist/ai/source/BbDropdown.md +314 -197
- package/dist/ai/source/BbDropdownButton.md +197 -31
- package/dist/ai/source/BbDropdownGroup.md +274 -176
- package/dist/ai/source/BbForm.md +50 -6
- package/dist/ai/source/BbHoverCard.md +12 -5
- package/dist/ai/source/BbIcon.md +4 -3
- package/dist/ai/source/BbIndicator.md +73 -52
- package/dist/ai/source/BbNumberInput.md +293 -257
- package/dist/ai/source/BbOffCanvas.md +55 -29
- package/dist/ai/source/BbPopover.md +14 -10
- package/dist/ai/source/BbRadioGroup.md +413 -297
- package/dist/ai/source/BbSelect.md +549 -435
- package/dist/ai/source/BbSelectPopover.md +128 -33
- package/dist/ai/source/BbSwitchGroup.md +70 -10
- package/dist/ai/source/BbTable.md +369 -37
- package/dist/ai/source/BbTabs.md +115 -39
- package/dist/ai/source/BbTabsList.md +106 -38
- package/dist/ai/source/BbTabsPanels.md +96 -36
- package/dist/ai/source/BbTabsRoot.md +96 -36
- package/dist/ai/source/BbTag.md +267 -233
- package/dist/ai/source/BbTextInput.md +261 -225
- package/dist/ai/source/BbTextarea.md +251 -215
- package/dist/ai/source/BbTimePicker.md +11 -7
- package/dist/ai/source/BbTimePickerInput.md +257 -220
- package/dist/ai/source/BbToast.md +73 -32
- package/dist/ai/source/BbToastPortal.md +65 -30
- package/dist/ai/source/BbTooltip.md +148 -113
- package/dist/ai/source/CommonPopover.md +6 -1
- package/dist/ai/source/FlatListBox.md +19 -9
- package/dist/ai/source/GroupedListBox.md +19 -9
- package/dist/ai/source/OptionsContainer.md +25 -9
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +61 -36
- package/dist/components/BbAlert/types.d.ts +9 -5
- package/dist/components/BbAlert/types.js +8 -3
- package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +3 -3
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +26 -17
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +103 -50
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +20 -15
- package/dist/components/BbBadge/badgeButtonContext.d.ts +12 -1
- package/dist/components/BbBadge/types.d.ts +45 -15
- package/dist/components/BbBadge/types.js +12 -3
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -126
- package/dist/components/BbBaseButton/types.d.ts +23 -4
- package/dist/components/BbBaseButton/types.js +7 -1
- package/dist/components/BbBaseButton/useLinkState.d.ts +41 -0
- package/dist/components/BbBaseButton/useLinkState.js +70 -0
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +130 -74
- package/dist/components/BbButton/types.d.ts +50 -13
- package/dist/components/BbButton/types.js +10 -3
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +148 -95
- package/dist/components/BbCheckboxGroup/types.d.ts +34 -11
- package/dist/components/BbCheckboxGroup/types.js +9 -4
- package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +1 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +134 -93
- package/dist/components/BbColorInput/types.d.ts +11 -4
- package/dist/components/BbColorInput/types.js +9 -3
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +82 -59
- package/dist/components/BbConfirm/types.d.ts +9 -4
- package/dist/components/BbConfirm/types.js +8 -3
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +68 -67
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +1 -1
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +259 -215
- package/dist/components/BbDatePickerInput/types.d.ts +12 -5
- package/dist/components/BbDatePickerInput/types.js +9 -3
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +223 -219
- package/dist/components/BbDialog/useDialogStack.d.ts +1 -1
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +104 -89
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +323 -285
- package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +411 -319
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +100 -98
- package/dist/components/BbDropdown/DropdownRow.vue.d.ts +4 -3
- package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +49 -28
- package/dist/components/BbDropdown/normalizeGroups.d.ts +6 -0
- package/dist/components/BbDropdown/normalizeGroups.js +21 -15
- package/dist/components/BbDropdown/types.d.ts +59 -12
- package/dist/components/BbDropdown/types.js +16 -3
- package/dist/components/BbDropdown/useDropdownContext.d.ts +6 -0
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +2 -1
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +179 -68
- package/dist/components/BbDropdownButton/types.d.ts +44 -16
- package/dist/components/BbDropdownButton/types.js +28 -3
- package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +111 -89
- package/dist/components/BbForm/formSchema.d.ts +13 -0
- package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +100 -100
- package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +40 -25
- package/dist/components/BbIndicator/types.d.ts +9 -5
- package/dist/components/BbIndicator/types.js +8 -3
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +243 -202
- package/dist/components/BbNumberInput/types.d.ts +12 -5
- package/dist/components/BbNumberInput/types.js +9 -3
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +401 -399
- package/dist/components/BbOffCanvas/types.d.ts +6 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +81 -80
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +158 -105
- package/dist/components/BbRadioGroup/types.d.ts +21 -7
- package/dist/components/BbRadioGroup/types.js +9 -4
- package/dist/components/BbSelect/BbSelect.vue.d.ts +4 -3
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +181 -137
- package/dist/components/BbSelect/types.d.ts +36 -22
- package/dist/components/BbSelect/types.js +22 -3
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +4 -4
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +543 -532
- package/dist/components/BbSelectPopover/knownItems.d.ts +5 -0
- package/dist/components/BbSelectPopover/types.d.ts +46 -12
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbSwitchGroup/types.d.ts +14 -4
- package/dist/components/BbSwitchGroup/types.js +8 -3
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1102 -995
- package/dist/components/BbTable/estimatedFloors.golden.d.ts +25 -0
- package/dist/components/BbTable/measuredFloors.d.ts +46 -0
- package/dist/components/BbTable/measuredFloors.js +322 -0
- package/dist/components/BbTable/measuredFloorsTestKit.d.ts +27 -0
- package/dist/components/BbTable/textRuler.d.ts +71 -0
- package/dist/components/BbTable/textRuler.js +121 -0
- package/dist/components/BbTable/utils.d.ts +113 -6
- package/dist/components/BbTable/utils.js +118 -65
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +53 -35
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +62 -45
- package/dist/components/BbTabs/types.d.ts +26 -11
- package/dist/components/BbTabs/types.js +23 -8
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +205 -164
- package/dist/components/BbTag/types.d.ts +11 -4
- package/dist/components/BbTag/types.js +9 -3
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +98 -57
- package/dist/components/BbTextInput/types.d.ts +12 -5
- package/dist/components/BbTextInput/types.js +9 -3
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +137 -96
- package/dist/components/BbTextarea/types.d.ts +12 -5
- package/dist/components/BbTextarea/types.js +9 -3
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +105 -104
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +241 -197
- package/dist/components/BbTimePickerInput/types.d.ts +12 -5
- package/dist/components/BbTimePickerInput/types.js +9 -3
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +74 -32
- package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +47 -47
- package/dist/components/BbToast/types.d.ts +10 -5
- package/dist/components/BbToast/types.js +18 -3
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +85 -71
- package/dist/components/BbTooltip/types.d.ts +13 -8
- package/dist/components/BbTooltip/types.js +8 -3
- package/dist/components/CommonField/CommonField.vue.d.ts +1 -1
- package/dist/components/CommonPopover/CommonPopover.vue.d.ts +1 -1
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +69 -69
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +53 -50
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +146 -143
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/components/OptionsContainer/types.d.ts +14 -3
- package/dist/composables/useBbFormContext.d.ts +4 -3
- package/dist/composables/useBbTabsContext.js +99 -85
- package/dist/composables/useChoiceIndicator.d.ts +58 -0
- package/dist/composables/useChoiceIndicator.js +197 -0
- package/dist/composables/useConfirm.d.ts +4 -4
- package/dist/composables/usePassthrough.d.ts +54 -1
- package/dist/composables/usePassthrough.js +100 -71
- package/dist/directives/bbTooltip.d.ts +12 -6
- package/dist/directives/createPopoverDirective.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/llms-full.txt +2300 -543
- package/dist/llms-medium.txt +71 -53
- package/dist/llms.txt +2 -1
- package/dist/passthrough-deduper.js +6 -3
- package/dist/project-dts.d.ts +24 -0
- package/dist/project-dts.js +43 -17
- package/dist/styles.css +2 -2
- package/dist/types/AlertVariant.d.ts +14 -0
- package/dist/types/AlertVariant.js +9 -0
- package/dist/types/BadgeVariant.d.ts +14 -0
- package/dist/types/BadgeVariant.js +9 -0
- package/dist/types/ButtonVariant.d.ts +16 -0
- package/dist/types/ButtonVariant.js +11 -0
- package/dist/types/CheckboxVariant.d.ts +38 -0
- package/dist/types/CheckboxVariant.js +4 -0
- package/dist/types/CommonProps.d.ts +4 -3
- package/dist/types/Config.d.ts +7 -0
- package/dist/types/ConfirmVariant.d.ts +12 -0
- package/dist/types/ConfirmVariant.js +4 -0
- package/dist/types/DropdownItemVariant.d.ts +12 -0
- package/dist/types/DropdownItemVariant.js +4 -0
- package/dist/types/IndicatorVariant.d.ts +15 -0
- package/dist/types/IndicatorVariant.js +10 -0
- package/dist/types/InputVariant.d.ts +13 -0
- package/dist/types/InputVariant.js +8 -0
- package/dist/types/RadioVariant.d.ts +38 -0
- package/dist/types/RadioVariant.js +4 -0
- package/dist/types/TabsVariant.d.ts +13 -0
- package/dist/types/TabsVariant.js +8 -0
- package/dist/types/ToastVariant.d.ts +15 -0
- package/dist/types/ToastVariant.js +10 -0
- package/dist/types/TooltipVariant.d.ts +12 -0
- package/dist/types/TooltipVariant.js +4 -0
- package/dist/types/passthrough.d.ts +83 -15
- package/dist/types/passthrough.js +2 -2
- package/dist/types/ptComponentMap.d.ts +35 -23
- package/dist/utilities/functions/extractDomContainer.d.ts +20 -1
- package/dist/utilities/functions/extractDomContainer.js +8 -3
- package/dist/utils/focusVisibility.d.ts +6 -0
- package/dist/utils/focusVisibility.js +4 -1
- package/dist/utils/passthroughDeduper.d.ts +14 -0
- package/dist/utils/versionCheck.js +1 -1
- package/dist/vite-plugin.d.ts +64 -7
- package/dist/vite.js +385 -259
- package/llms.txt +2 -1
- package/package.json +3 -3
- package/scripts/lib/adoption-checklist.json +312 -0
- package/scripts/lib/eslint-plugin.d.ts +13 -0
- package/scripts/lib/eslint-plugin.mjs +75 -11
- package/scripts/lib/idiom-scan.mjs +65 -0
- package/scripts/lib/mcp-config.mjs +203 -9
- package/scripts/lib/migrate-fix.mjs +42 -1
- package/scripts/lib/project-variant-dts.mjs +18 -0
- package/scripts/lib/validate-bb-markup.mjs +99 -2
package/dist/ai/source/BbTag.md
CHANGED
|
@@ -158,6 +158,7 @@ import {
|
|
|
158
158
|
formControlPtActive,
|
|
159
159
|
TEXT_CONTROL_NATIVE_ATTRS,
|
|
160
160
|
usePassthrough,
|
|
161
|
+
variantPt,
|
|
161
162
|
} from '@/composables/usePassthrough';
|
|
162
163
|
import { useBaseOptions } from '@/composables/useBaseOptions';
|
|
163
164
|
import { useConfig } from '@/composables/useConfig';
|
|
@@ -175,7 +176,11 @@ import {
|
|
|
175
176
|
type BbTagSlots,
|
|
176
177
|
} from './types';
|
|
177
178
|
|
|
178
|
-
defineOptions({
|
|
179
|
+
defineOptions({
|
|
180
|
+
// An app's own variants as declared `pt:<part>:<name>` props (Q76.7).
|
|
181
|
+
mixins: [variantPt(BB_TAG_PT)],
|
|
182
|
+
inheritAttrs: false,
|
|
183
|
+
});
|
|
179
184
|
const declaredProps = withDefaults(defineProps<BbTagProps>(), {
|
|
180
185
|
autocomplete: 'off',
|
|
181
186
|
divider: 'Enter',
|
|
@@ -258,6 +263,11 @@ const passthrough = usePassthrough({
|
|
|
258
263
|
parts: BB_TAG_PT.parts,
|
|
259
264
|
states: BB_TAG_PT.states,
|
|
260
265
|
active: formControlPtActive(props, () => hasValue.value),
|
|
266
|
+
variant: {
|
|
267
|
+
...BB_TAG_PT.variant,
|
|
268
|
+
// CommonFieldInput's default.
|
|
269
|
+
current: () => props.variant ?? 'outline',
|
|
270
|
+
},
|
|
261
271
|
});
|
|
262
272
|
|
|
263
273
|
const logger = useLogger();
|
|
@@ -655,7 +665,12 @@ onBeforeUnmount(leave);
|
|
|
655
665
|
|
|
656
666
|
```ts
|
|
657
667
|
import type { Responsive } from '@/types/ResponsiveSize';
|
|
658
|
-
import
|
|
668
|
+
import {
|
|
669
|
+
INPUT_VARIANTS,
|
|
670
|
+
type InputVariantBuiltIn,
|
|
671
|
+
type InputVariantRegistry,
|
|
672
|
+
type InputVariantType,
|
|
673
|
+
} from '@/types/InputVariant';
|
|
659
674
|
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
660
675
|
import {
|
|
661
676
|
type FormControlPtState,
|
|
@@ -666,6 +681,7 @@ import {
|
|
|
666
681
|
type PtValue,
|
|
667
682
|
TEXT_CONTROL_PT_PARTS,
|
|
668
683
|
type TextControlPtPart,
|
|
684
|
+
type PtVariantAttrs,
|
|
669
685
|
} from '@/types/passthrough';
|
|
670
686
|
import type { FieldCrossAlign, FieldLayout } from '@/types/FieldLayout';
|
|
671
687
|
import type { IconType } from '@/types/Icon';
|
|
@@ -714,7 +730,19 @@ export const BB_TAG_PT = {
|
|
|
714
730
|
/** `rowStates` are declared on `rowParts` only. */
|
|
715
731
|
rowParts: ['badge', 'comma'],
|
|
716
732
|
rowStates: ['highlighted'],
|
|
733
|
+
// The input `variant` is a state on the field's parts (Q76.7), below
|
|
734
|
+
// the real states; a picker's panel and rows are not the field's.
|
|
735
|
+
variant: {
|
|
736
|
+
names: INPUT_VARIANTS,
|
|
737
|
+
option: 'inputVariants',
|
|
738
|
+
parts: TEXT_CONTROL_PT_PARTS,
|
|
739
|
+
},
|
|
717
740
|
} as const satisfies {
|
|
741
|
+
variant: {
|
|
742
|
+
names: readonly InputVariantBuiltIn[];
|
|
743
|
+
option: string;
|
|
744
|
+
parts: readonly TextControlPtPart[];
|
|
745
|
+
};
|
|
718
746
|
parts: readonly BbTagPtPart[];
|
|
719
747
|
states: readonly BbTagPtState[];
|
|
720
748
|
rowParts: readonly BbTagPtPart[];
|
|
@@ -731,238 +759,244 @@ export type BbTagProps = {
|
|
|
731
759
|
| `pt:${TextControlPtPart}`
|
|
732
760
|
| `pt:${BbTagPtPart}:${FormControlPtState}`
|
|
733
761
|
| 'pt:badge:highlighted'
|
|
734
|
-
| 'pt:comma:highlighted'
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
*/
|
|
746
|
-
pt?: PtMap<TextControlPtPart, FormControlPtState> & {
|
|
747
|
-
[K in
|
|
748
|
-
| `${BbTagItemPtPart}:${FormControlPtState}`
|
|
749
|
-
| 'badge:highlighted'
|
|
750
|
-
| 'comma:highlighted']?: PtValue;
|
|
762
|
+
| 'pt:comma:highlighted'
|
|
763
|
+
| `pt:${TextControlPtPart}:${InputVariantBuiltIn}`]?: PtValue;
|
|
764
|
+
} & /* @vue-ignore */ PtVariantAttrs<
|
|
765
|
+
TextControlPtPart,
|
|
766
|
+
keyof InputVariantRegistry
|
|
767
|
+
> & {
|
|
768
|
+
// The tag parts also take a per-item function, called with the tag — a
|
|
769
|
+
// literal function type, not `PtItemFn` (T23).
|
|
770
|
+
[K in `pt:${BbTagItemPtPart}`]?:
|
|
771
|
+
| PtValue
|
|
772
|
+
| ((ctx: PtItemCtx<string, BbTagPtState>) => PtItemResult);
|
|
751
773
|
} & {
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
774
|
+
/**
|
|
775
|
+
* Passthrough, object form: the same keys as the `pt:*` attributes
|
|
776
|
+
* without the prefix. See the `pt:<part>` row.
|
|
777
|
+
*/
|
|
778
|
+
pt?: PtMap<TextControlPtPart, FormControlPtState> & {
|
|
779
|
+
[K in
|
|
780
|
+
| `${BbTagItemPtPart}:${FormControlPtState}`
|
|
781
|
+
| 'badge:highlighted'
|
|
782
|
+
| 'comma:highlighted']?: PtValue;
|
|
783
|
+
} & {
|
|
784
|
+
[K in BbTagItemPtPart]?: PtValue | PtItemFn<string, BbTagPtState>;
|
|
785
|
+
} & {
|
|
786
|
+
[K in `${TextControlPtPart}:${InputVariantBuiltIn | keyof InputVariantRegistry}`]?: PtValue;
|
|
787
|
+
};
|
|
788
|
+
/* eslint-enable @typescript-eslint/consistent-indexed-object-style */
|
|
789
|
+
/**
|
|
790
|
+
* Name of the icon to be added at the end of the input.
|
|
791
|
+
*/
|
|
792
|
+
|
|
793
|
+
'append:icon'?: IconType;
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* Guides to the browser as to the type of information expected in the field.
|
|
797
|
+
*
|
|
798
|
+
* @defaultValue `'off'`
|
|
799
|
+
*/
|
|
800
|
+
autocomplete?: InputHTMLAttributes['autocomplete'];
|
|
801
|
+
|
|
802
|
+
/**
|
|
803
|
+
* Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.
|
|
804
|
+
*/
|
|
805
|
+
autofocus?: InputHTMLAttributes['autofocus'];
|
|
806
|
+
|
|
807
|
+
/**
|
|
808
|
+
* Compares tags case-sensitively when rejecting duplicates (`Vue` and `vue`
|
|
809
|
+
* both allowed); by default case folds. A tag keeps the casing typed either
|
|
810
|
+
* way, and entries are trimmed first.
|
|
811
|
+
*
|
|
812
|
+
* @defaultValue `false`
|
|
813
|
+
*/
|
|
814
|
+
caseSensitive?: boolean;
|
|
815
|
+
|
|
816
|
+
/**
|
|
817
|
+
* Sets the display model for selected values to a list of comma separated string.
|
|
818
|
+
* In this mode the user cannot deselect an option by pressing the close button.
|
|
819
|
+
*/
|
|
820
|
+
comma?: boolean;
|
|
821
|
+
|
|
822
|
+
/**
|
|
823
|
+
* Displays a clear button when the input has a value and is being interacted with.
|
|
824
|
+
*/
|
|
825
|
+
clearable?: boolean;
|
|
826
|
+
|
|
827
|
+
/**
|
|
828
|
+
* Compact density: the field uses the `-compact` twins of `--bb-input-h`,
|
|
829
|
+
* `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on
|
|
830
|
+
* the component is ignored while it is on. Size a compact field with
|
|
831
|
+
* `--bb-input-h-compact` (and `--bb-input-py-compact`).
|
|
832
|
+
*/
|
|
833
|
+
compact?: boolean;
|
|
834
|
+
|
|
835
|
+
/**
|
|
836
|
+
* The field box's look, with `BbButton`'s names and tokens. Colours only,
|
|
837
|
+
* so a form never reflows; `'ghost'` has no border in any state, `'none'`
|
|
838
|
+
* no look at all (you own hover, focus and the states). Register more with
|
|
839
|
+
* the plugin's `inputVariants`.
|
|
840
|
+
*
|
|
841
|
+
* @defaultValue `'outline'`
|
|
842
|
+
*/
|
|
843
|
+
variant?: InputVariantType;
|
|
844
|
+
|
|
845
|
+
/**
|
|
846
|
+
* Text between the label and the input. Unlike the hint it is always
|
|
847
|
+
* visible; it joins the input's `aria-describedby` after any `errors` /
|
|
848
|
+
* `warnings`, before the `hint`.
|
|
849
|
+
*/
|
|
850
|
+
description?: string;
|
|
851
|
+
|
|
852
|
+
/**
|
|
853
|
+
* How label and input sit together: `'vertical'`, `'horizontal'` (50/50),
|
|
854
|
+
* `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a
|
|
855
|
+
* per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).
|
|
856
|
+
*/
|
|
857
|
+
layout?: Responsive<FieldLayout>;
|
|
858
|
+
|
|
859
|
+
/**
|
|
860
|
+
* Vertical position of the label block in a side-by-side row; not
|
|
861
|
+
* `labelPosition`, the horizontal one. Omitted, the label's first line
|
|
862
|
+
* meets the control's.
|
|
863
|
+
*/
|
|
864
|
+
labelAlign?: FieldCrossAlign;
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* Vertical position of the control in a side-by-side row; not
|
|
868
|
+
* `inputPosition`, the horizontal one. Omitted, the control's first line
|
|
869
|
+
* meets the label's.
|
|
870
|
+
*/
|
|
871
|
+
inputAlign?: FieldCrossAlign;
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Disables the component.
|
|
875
|
+
*/
|
|
876
|
+
disabled?: boolean;
|
|
877
|
+
|
|
878
|
+
/**
|
|
879
|
+
* The divider key used to separate values from one another. By default it is "Enter".
|
|
880
|
+
* Accepts a single key or an array of keys (e.g. `['Enter', ',']`) — any of them
|
|
881
|
+
* commits the current text, split on every single-character divider in the
|
|
882
|
+
* set into one tag per trimmed, non-empty piece.
|
|
883
|
+
*
|
|
884
|
+
* @defaultValue `'Enter'`
|
|
885
|
+
*/
|
|
886
|
+
divider?: KeyboardEvent['key'] | Array<KeyboardEvent['key']>;
|
|
887
|
+
|
|
888
|
+
/**
|
|
889
|
+
* Error messages under the field, a string or array, in an
|
|
890
|
+
* `aria-live="polite"` region and first in the control's
|
|
891
|
+
* `aria-describedby`, so they are re-read when it regains focus.
|
|
892
|
+
*/
|
|
893
|
+
errors?: string | string[];
|
|
894
|
+
|
|
895
|
+
/**
|
|
896
|
+
* Define if the component should be in an error state.
|
|
897
|
+
* It usually attaches a CSS class for styling purposes.
|
|
898
|
+
*/
|
|
899
|
+
hasErrors?: boolean;
|
|
900
|
+
|
|
901
|
+
/**
|
|
902
|
+
* Warning messages under the field, a string or array: amber, in their own
|
|
903
|
+
* `aria-live` region and in the control's `aria-describedby` after the
|
|
904
|
+
* errors. Non-empty turns on the warning state; errors win when both are
|
|
905
|
+
* set.
|
|
906
|
+
*/
|
|
907
|
+
warnings?: string | string[];
|
|
908
|
+
|
|
909
|
+
/**
|
|
910
|
+
* Define if the component should be in a warning state.
|
|
911
|
+
* Same chrome as errors with `--bb-warn`; errors take priority.
|
|
912
|
+
*/
|
|
913
|
+
hasWarnings?: boolean;
|
|
914
|
+
|
|
915
|
+
/**
|
|
916
|
+
* Visually hides the label of the input while maintaining accessibility.
|
|
917
|
+
*/
|
|
918
|
+
hideLabel?: boolean;
|
|
919
|
+
|
|
920
|
+
/**
|
|
921
|
+
* Text box to be displayed near the input, usually to indicate instructions.
|
|
922
|
+
*/
|
|
923
|
+
hint?: string;
|
|
924
|
+
|
|
925
|
+
/**
|
|
926
|
+
* The `id` of the native control; the label's `for` and the description
|
|
927
|
+
* and message ids derive from it. Generated when omitted.
|
|
928
|
+
*/
|
|
929
|
+
id?: HTMLAttributes['id'];
|
|
930
|
+
|
|
931
|
+
/**
|
|
932
|
+
* Text content of the label of the element.
|
|
933
|
+
*/
|
|
934
|
+
label: string;
|
|
935
|
+
|
|
936
|
+
/**
|
|
937
|
+
* Where the label sits relative to the field: `outside` above it, `inside`
|
|
938
|
+
* within the control, or `floating` (starts inside, lifts on focus/value).
|
|
939
|
+
* Defaults to `config.defaultInputLabelMode`, like the other inputs.
|
|
940
|
+
*/
|
|
941
|
+
labelMode?: 'outside' | 'floating' | 'inside';
|
|
942
|
+
|
|
943
|
+
/**
|
|
944
|
+
* Sets the text alignment of the label.
|
|
945
|
+
*/
|
|
946
|
+
labelPosition?: 'left' | 'center' | 'right';
|
|
947
|
+
|
|
948
|
+
/**
|
|
949
|
+
* Sets the component in a loading state, usually triggering some visual styles.
|
|
950
|
+
*/
|
|
951
|
+
loading?: boolean;
|
|
952
|
+
|
|
953
|
+
/**
|
|
954
|
+
* Maximum number of selected items.
|
|
955
|
+
*/
|
|
956
|
+
max?: number;
|
|
957
|
+
|
|
958
|
+
/**
|
|
959
|
+
* Used by v-model. Contains all selected tags.
|
|
960
|
+
*/
|
|
961
|
+
modelValue?: string[];
|
|
962
|
+
|
|
963
|
+
/**
|
|
964
|
+
* Defines the name of the input.
|
|
965
|
+
*/
|
|
966
|
+
name?: InputHTMLAttributes['name'];
|
|
967
|
+
|
|
968
|
+
/**
|
|
969
|
+
* Keeps the hint displayed.
|
|
970
|
+
*/
|
|
971
|
+
persistentHint?: boolean;
|
|
972
|
+
|
|
973
|
+
/**
|
|
974
|
+
* Text shown while the field is empty.
|
|
975
|
+
*/
|
|
976
|
+
placeholder?: InputHTMLAttributes['placeholder'];
|
|
977
|
+
|
|
978
|
+
/**
|
|
979
|
+
* Name of the icon to be added at the start of the input.
|
|
980
|
+
*/
|
|
981
|
+
|
|
982
|
+
'prepend:icon'?: IconType;
|
|
983
|
+
|
|
984
|
+
/**
|
|
985
|
+
* Sets the input in a readonly state.
|
|
986
|
+
*/
|
|
987
|
+
readonly?: boolean;
|
|
988
|
+
|
|
989
|
+
/**
|
|
990
|
+
* Sets the input as required.
|
|
991
|
+
*/
|
|
992
|
+
required?: boolean;
|
|
993
|
+
|
|
994
|
+
/**
|
|
995
|
+
* Reverses the layout. Applicable in every direction the order of the label and
|
|
996
|
+
* the input is swapped.
|
|
997
|
+
*/
|
|
998
|
+
reverse?: boolean;
|
|
999
|
+
} & FormFieldProps<string[]>;
|
|
966
1000
|
|
|
967
1001
|
export type BbTagEvents = {
|
|
968
1002
|
/** Emitted when the native input loses focus. Forwards the original DOM `FocusEvent`. */
|