bitboss-ui 3.0.0-beta.21 → 3.0.0-beta.23
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 +55 -3
- package/bin/bitboss-ui-mcp.mjs +419 -9
- package/bin/bitboss-ui.mjs +293 -22
- package/dist/ai/BbAccordion.md +21 -23
- package/dist/ai/BbAlert.md +6 -12
- package/dist/ai/BbAvatar.md +60 -24
- package/dist/ai/BbBadge.md +12 -20
- package/dist/ai/BbBaseButton.md +14 -16
- package/dist/ai/BbBaseCheckboxIcon.md +6 -10
- package/dist/ai/BbBaseColorInput.md +1 -0
- package/dist/ai/BbBaseDatePickerInput.md +1 -0
- package/dist/ai/BbBaseNumberInput.md +1 -0
- package/dist/ai/BbBaseRadioIcon.md +6 -10
- package/dist/ai/BbBaseSelect.md +1 -0
- package/dist/ai/BbBaseSwitchIcon.md +5 -9
- package/dist/ai/BbBaseTag.md +1 -0
- package/dist/ai/BbBaseTextInput.md +2 -1
- package/dist/ai/BbBaseTextarea.md +1 -0
- package/dist/ai/BbBaseTimePickerInput.md +1 -0
- package/dist/ai/BbBreadcrumbs.md +23 -34
- package/dist/ai/BbButton.md +35 -47
- package/dist/ai/BbCheckbox.md +21 -37
- package/dist/ai/BbCheckboxGroup.md +13 -13
- package/dist/ai/BbCollapsible.md +14 -26
- package/dist/ai/BbColorInput.md +27 -23
- package/dist/ai/BbColorPalette.md +23 -35
- package/dist/ai/BbConfirm.md +17 -32
- package/dist/ai/BbDatePickerInput.md +29 -21
- package/dist/ai/BbDialog.md +159 -62
- package/dist/ai/BbDropdown.md +21 -25
- package/dist/ai/BbDropdownButton.md +13 -30
- package/dist/ai/BbDropzone.md +9 -11
- package/dist/ai/BbIcon.md +44 -33
- package/dist/ai/BbIndicator.md +2 -2
- package/dist/ai/BbNumberInput.md +32 -20
- package/dist/ai/BbOffCanvas.md +42 -42
- package/dist/ai/BbPagination.md +21 -23
- package/dist/ai/BbPopover.md +15 -17
- package/dist/ai/BbProgress.md +40 -51
- package/dist/ai/BbRadio.md +9 -9
- package/dist/ai/BbRadioGroup.md +7 -11
- package/dist/ai/BbRating.md +8 -12
- package/dist/ai/BbSelect.md +46 -36
- package/dist/ai/BbSelectPopover.md +19 -31
- package/dist/ai/BbSlider.md +15 -19
- package/dist/ai/BbSmoothHeight.md +16 -31
- package/dist/ai/BbSpinner.md +118 -74
- package/dist/ai/BbSwitch.md +25 -18
- package/dist/ai/BbSwitchGroup.md +9 -14
- package/dist/ai/BbTable.md +102 -55
- package/dist/ai/BbTabs.md +59 -82
- package/dist/ai/BbTag.md +26 -23
- package/dist/ai/BbTextInput.md +63 -27
- package/dist/ai/BbTextarea.md +42 -34
- package/dist/ai/BbTimePickerInput.md +14 -0
- package/dist/ai/BbToast.md +14 -34
- package/dist/ai/BbTooltip.md +22 -20
- package/dist/ai/BbTree.md +46 -72
- package/dist/ai/CommonInputWrapper.md +1 -0
- package/dist/ai/changelog.json +170 -62
- package/dist/ai/components.json +1678 -11
- package/dist/ai/composables/useConfirm.md +5 -2
- package/dist/ai/composables/useToast.md +4 -2
- package/dist/ai/guides/agent-contract.md +7 -4
- package/dist/ai/guides/ai-router.md +37 -22
- package/dist/ai/guides/component-picker.md +23 -18
- package/dist/ai/guides/design-language.md +151 -21
- package/dist/ai/guides/design-tokens.md +29 -4
- package/dist/ai/guides/icons-policy.md +46 -21
- package/dist/ai/guides/installation-and-plugin-setup.md +286 -17
- package/dist/ai/guides/migration/components/bb-rating.md +26 -1
- package/dist/ai/guides/migration/components/bb-tooltip.md +18 -0
- package/dist/ai/guides/migration/v2-to-v3.md +50 -23
- package/dist/ai/index.md +1 -1
- package/dist/ai/recipes/inertia/approvals-inbox.md +3 -3
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/inertia/onboarding.md +2 -2
- package/dist/ai/recipes/inertia/ownership-atlas.md +6 -6
- package/dist/ai/recipes/inertia/record-form.md +5 -5
- package/dist/ai/recipes/inertia/records-workspace.md +4 -4
- package/dist/ai/recipes/inertia/upload-center.md +6 -6
- package/dist/ai/recipes/inertia/wizard-form.md +5 -5
- package/dist/ai/recipes/nuxt/approvals-inbox.md +3 -3
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/nuxt/onboarding.md +2 -2
- package/dist/ai/recipes/nuxt/record-form.md +5 -5
- package/dist/ai/recipes/nuxt/records-workspace.md +4 -4
- package/dist/ai/recipes/nuxt/upload-center.md +6 -6
- package/dist/ai/recipes/nuxt/wizard-form.md +5 -5
- package/dist/ai/recipes/vue/approvals-inbox.md +3 -3
- package/dist/ai/recipes/vue/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/vue/onboarding.md +2 -2
- package/dist/ai/recipes/vue/record-form.md +10 -10
- package/dist/ai/recipes/vue/records-workspace.md +4 -4
- package/dist/ai/recipes/vue/upload-center.md +6 -6
- package/dist/ai/recipes/vue/wizard-form.md +5 -5
- package/dist/ai/source/BbBadge.md +1 -1
- package/dist/ai/source/BbBaseCheckbox.md +1 -1
- package/dist/ai/source/BbBaseColorInput.md +7 -0
- package/dist/ai/source/BbBaseDatePicker.md +5 -5
- package/dist/ai/source/BbBaseDatePickerInput.md +9 -2
- package/dist/ai/source/BbBaseNumberInput.md +7 -0
- package/dist/ai/source/BbBaseRadio.md +1 -1
- package/dist/ai/source/BbBaseRating.md +5 -5
- package/dist/ai/source/BbBaseSelect.md +8 -1
- package/dist/ai/source/BbBaseSlider.md +5 -5
- package/dist/ai/source/BbBaseSwitch.md +1 -1
- package/dist/ai/source/BbBaseTag.md +7 -0
- package/dist/ai/source/BbBaseTextInput.md +7 -0
- package/dist/ai/source/BbBaseTextarea.md +7 -0
- package/dist/ai/source/BbBaseTimePickerInput.md +8 -1
- package/dist/ai/source/BbBreadcrumbs.md +20 -1
- package/dist/ai/source/BbButton.md +2 -2
- package/dist/ai/source/BbColorInput.md +14 -0
- package/dist/ai/source/BbDatePickerInput.md +14 -0
- package/dist/ai/source/BbDialog.md +39 -8
- package/dist/ai/source/BbDropdown.md +1 -1
- package/dist/ai/source/BbDropzone.md +5 -5
- package/dist/ai/source/BbIcon.md +23 -10
- package/dist/ai/source/BbNumberInput.md +14 -0
- package/dist/ai/source/BbOffCanvas.md +50 -28
- package/dist/ai/source/BbPagination.md +2 -2
- package/dist/ai/source/BbPopover.md +12 -1
- package/dist/ai/source/BbSelect.md +14 -0
- package/dist/ai/source/BbSelectPopover.md +45 -7
- package/dist/ai/source/BbSpinner.md +2 -2
- package/dist/ai/source/BbTable.md +11 -11
- package/dist/ai/source/BbTag.md +14 -0
- package/dist/ai/source/BbTextInput.md +14 -0
- package/dist/ai/source/BbTextarea.md +14 -0
- package/dist/ai/source/BbTimePickerInput.md +14 -0
- package/dist/ai/source/BbTooltip.md +57 -10
- package/dist/ai/source/ChipsBox.md +1 -1
- package/dist/ai/source/CommaBox.md +1 -1
- package/dist/ai/source/CommonInputWrapper.md +128 -33
- package/dist/ai/source/GuidesComponent.md +14 -7
- package/dist/ai/source/OptionsContainer.md +1 -1
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseColorInput/BbBaseColorInput.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseColorInput/types.d.ts +5 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbBaseDatePickerInput/types.d.ts +5 -0
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +1 -1
- package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseNumberInput/types.d.ts +5 -0
- package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseSelect/types.d.ts +5 -0
- package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseTag/BbBaseTag.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseTag/types.d.ts +5 -0
- package/dist/components/BbBaseTextInput/BbBaseTextInput.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseTextInput/types.d.ts +5 -0
- package/dist/components/BbBaseTextarea/BbBaseTextarea.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseTextarea/types.d.ts +5 -0
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbBaseTimePickerInput/types.d.ts +5 -0
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +71 -71
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbColorInput/types.d.ts +12 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/components/BbDatePickerInput/types.d.ts +12 -0
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +102 -97
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +58 -58
- package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +33 -35
- package/dist/components/BbIcon/iconCache.d.ts +30 -0
- package/dist/components/BbIcon/iconCache.js +21 -3
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbNumberInput/types.d.ts +12 -0
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +57 -56
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +138 -138
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/components/BbSelect/types.d.ts +12 -0
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +43 -43
- package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbSpinner/types.d.ts +1 -1
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/BbTable/BbTableDataRow.js +2 -2
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbTag/types.d.ts +12 -0
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbTextInput/types.d.ts +12 -0
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbTextarea/types.d.ts +12 -0
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/components/BbTimePickerInput/types.d.ts +12 -0
- package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +62 -62
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +81 -78
- package/dist/components/BbTooltip/types.d.ts +8 -1
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.d.ts +1 -0
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/components/CommonInputWrapper/types.d.ts +10 -0
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/composables/useConfirm.d.ts +22 -0
- package/dist/composables/useConfirm.js +43 -40
- package/dist/composables/useSafeAreaInternal.js +1 -1
- package/dist/composables/useToast.d.ts +16 -0
- package/dist/composables/useToast.js +20 -16
- package/dist/composables/useViewportWidth.d.ts +20 -6
- package/dist/composables/useViewportWidth.js +8 -7
- package/dist/icon-scan.d.ts +276 -0
- package/dist/icon-scan.js +485 -0
- package/dist/icons-whitelist.d.ts +5 -4
- package/dist/index.d.ts +2 -0
- package/dist/input-variants.d.ts +18 -0
- package/dist/llms-full.txt +2173 -1537
- package/dist/llms-medium.txt +504 -82
- package/dist/llms.txt +1 -1
- package/dist/nuxt-module.d.ts +1 -0
- package/dist/nuxt.js +10 -7
- package/dist/plugin.js +1 -0
- package/dist/runtime/nuxt-plugin.js +2 -1
- package/dist/styles.css +1 -1
- package/dist/types/Config.d.ts +18 -0
- package/dist/types/InputVariant.d.ts +22 -0
- package/dist/utils/cssLayers.d.ts +91 -0
- package/dist/utils/cssLayers.js +43 -0
- package/dist/utils/injectLibraryStyles.d.ts +3 -1
- package/dist/utils/injectLibraryStyles.js +24 -23
- package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbNumberInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbTag.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbTextInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbTextarea.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/index.d.ts +1 -0
- package/dist/vite-plugin.d.ts +89 -12
- package/dist/vite.js +331 -281
- package/llms.txt +1 -1
- package/package.json +7 -5
- package/scripts/lib/ensure-manifest.mjs +28 -5
- package/scripts/lib/eslint-plugin.d.ts +35 -0
- package/scripts/lib/eslint-plugin.mjs +299 -3
- package/scripts/lib/hand-roll-hints.mjs +50 -6
- package/scripts/lib/html-attributes.mjs +42 -0
- package/scripts/lib/mcp-config.mjs +38 -34
- package/scripts/lib/public-type-exports.mjs +246 -0
- package/scripts/lib/validate-bb-markup.mjs +205 -12
package/dist/ai/BbTooltip.md
CHANGED
|
@@ -128,30 +128,28 @@ bubbles from flickering while the pointer crosses the dense toolbar.
|
|
|
128
128
|
```vue
|
|
129
129
|
<template>
|
|
130
130
|
<div
|
|
131
|
-
class="flex max-w-sm flex-col gap-2 rounded-
|
|
131
|
+
class="flex max-w-sm flex-col gap-2 rounded-(--bb-radius) border border-(--bb-border) p-3"
|
|
132
132
|
>
|
|
133
133
|
<div class="flex items-start justify-between gap-2">
|
|
134
134
|
<div class="flex min-w-0 flex-col gap-0.5">
|
|
135
135
|
<span class="truncate text-sm font-medium">Q3 board deck</span>
|
|
136
|
-
<span class="text-xs text-
|
|
136
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
137
137
|
Shared draft · Acme Studio · edited 2h ago
|
|
138
138
|
</span>
|
|
139
139
|
</div>
|
|
140
|
-
<span class="shrink-0 text-xs text-
|
|
141
|
-
>PDF</span
|
|
142
|
-
>
|
|
140
|
+
<span class="shrink-0 text-xs text-(--bb-text-muted)">PDF</span>
|
|
143
141
|
</div>
|
|
144
142
|
|
|
145
143
|
<div
|
|
146
144
|
aria-label="Document actions"
|
|
147
|
-
class="inline-flex w-fit items-center gap-0.5 rounded-
|
|
145
|
+
class="inline-flex w-fit items-center gap-0.5 rounded-(--bb-radius) border border-(--bb-border) p-0.5"
|
|
148
146
|
role="toolbar"
|
|
149
147
|
>
|
|
150
148
|
<template v-for="action in actions" :key="action.label">
|
|
151
149
|
<span
|
|
152
150
|
v-if="action.startsGroup"
|
|
153
151
|
aria-hidden="true"
|
|
154
|
-
class="mx-0.5 h-4 w-px bg-
|
|
152
|
+
class="mx-0.5 h-4 w-px bg-(--bb-border)"
|
|
155
153
|
></span>
|
|
156
154
|
<BbTooltip :delay="400" :text="action.label">
|
|
157
155
|
<template #activator="{ props }">
|
|
@@ -211,7 +209,7 @@ works on any variant.
|
|
|
211
209
|
</template>
|
|
212
210
|
<span class="flex items-center gap-1.5">
|
|
213
211
|
Search
|
|
214
|
-
<kbd class="rounded border border-current px-1 font-mono text-[10px] leading-4 opacity-75">⌘K</kbd>
|
|
212
|
+
<kbd class="rounded-sm border border-current px-1 font-mono text-[10px] leading-4 opacity-75">⌘K</kbd>
|
|
215
213
|
</span>
|
|
216
214
|
</BbTooltip>
|
|
217
215
|
<BbTooltip>
|
|
@@ -226,7 +224,7 @@ works on any variant.
|
|
|
226
224
|
</template>
|
|
227
225
|
<span class="flex items-center gap-1.5">
|
|
228
226
|
Toggle sidebar
|
|
229
|
-
<kbd class="rounded border border-current px-1 font-mono text-[10px] leading-4 opacity-75">⌘B</kbd>
|
|
227
|
+
<kbd class="rounded-sm border border-current px-1 font-mono text-[10px] leading-4 opacity-75">⌘B</kbd>
|
|
230
228
|
</span>
|
|
231
229
|
</BbTooltip>
|
|
232
230
|
</div>
|
|
@@ -244,8 +242,14 @@ is concerned — the whole label (shortcut included) is flattened into the
|
|
|
244
242
|
useful on dense toolbars to avoid a flicker of bubbles while the cursor passes
|
|
245
243
|
over. It delays only the **open**; the close is always a short debounce (so the
|
|
246
244
|
pointer can travel from the trigger into the bubble without it vanishing).
|
|
247
|
-
- `width` caps the bubble
|
|
248
|
-
|
|
245
|
+
- `width` caps the bubble so long hints wrap instead of stretching across the
|
|
246
|
+
screen. It is a **maximum, not a fixed width** — the bubble still shrinks to
|
|
247
|
+
short text, so a one-line hint never sits in an oversized box. A bare number
|
|
248
|
+
is pixels, a percentage is measured against the activator, and any other CSS
|
|
249
|
+
length (`'20rem'`, `'min(320px, 90vw)'`) passes through. Bubbles already cap
|
|
250
|
+
at `40ch` without it; reach for the prop when a specific hint wants a
|
|
251
|
+
different measure, and for a library-wide change set `--max-w` on
|
|
252
|
+
`.bb-tooltip` in your own CSS.
|
|
249
253
|
- `disabled` suppresses the tooltip entirely — and dismisses it if already open,
|
|
250
254
|
so you can bind it to skip a hint when the label is already visible elsewhere.
|
|
251
255
|
- Content is **lazy** (rendered on first open); `eager` renders it up front, and
|
|
@@ -339,25 +343,23 @@ brief settle, matching dense toolbars.
|
|
|
339
343
|
```vue
|
|
340
344
|
<template>
|
|
341
345
|
<div
|
|
342
|
-
class="max-w-sm overflow-hidden rounded-
|
|
346
|
+
class="max-w-sm overflow-hidden rounded-(--bb-radius) border border-(--bb-border)"
|
|
343
347
|
>
|
|
344
348
|
<div
|
|
345
|
-
class="flex items-baseline justify-between gap-2 border-b border-
|
|
349
|
+
class="flex items-baseline justify-between gap-2 border-b border-(--bb-border) px-3 py-2"
|
|
346
350
|
>
|
|
347
351
|
<span class="text-sm font-medium">Attachments</span>
|
|
348
|
-
<span class="text-xs text-
|
|
349
|
-
>INV-1042 · 3 files</span
|
|
350
|
-
>
|
|
352
|
+
<span class="text-xs text-(--bb-text-muted)">INV-1042 · 3 files</span>
|
|
351
353
|
</div>
|
|
352
354
|
|
|
353
|
-
<div class="divide-y divide-
|
|
355
|
+
<div class="divide-y divide-(--bb-border)">
|
|
354
356
|
<div
|
|
355
357
|
v-for="file in files"
|
|
356
358
|
:key="file.name"
|
|
357
359
|
class="flex items-center gap-2 px-3 py-1.5 text-sm"
|
|
358
360
|
>
|
|
359
361
|
<BbIcon
|
|
360
|
-
class="shrink-0 text-
|
|
362
|
+
class="shrink-0 text-(--bb-text-muted)"
|
|
361
363
|
:icon="file.icon"
|
|
362
364
|
size="sm"
|
|
363
365
|
/>
|
|
@@ -369,7 +371,7 @@ brief settle, matching dense toolbars.
|
|
|
369
371
|
>
|
|
370
372
|
{{ file.name }}
|
|
371
373
|
</span>
|
|
372
|
-
<span class="shrink-0 text-xs text-
|
|
374
|
+
<span class="shrink-0 text-xs text-(--bb-text-muted)">{{
|
|
373
375
|
file.size
|
|
374
376
|
}}</span>
|
|
375
377
|
</div>
|
|
@@ -468,7 +470,7 @@ const files: SharedFile[] = [
|
|
|
468
470
|
| `text` | `string \| undefined` | | | Text content of the component. |
|
|
469
471
|
| `transitionDuration` | `number \| undefined` | `250` | | How long the transition has to last in milliseconds |
|
|
470
472
|
| `variant` | `keyof TooltipVariantRegistry \| undefined` | `"default"` | | Visual variant. `'default'` is the inverted (primary) bubble, `'destructive'` is the danger-tinted bubble for warnings. Any other string is applied as a `bb-tooltip--<name>` class hook. |
|
|
471
|
-
| `width` | `string \| number \| undefined` | | |
|
|
473
|
+
| `width` | `string \| number \| undefined` | | | Caps the width of the tooltip bubble: it wraps at this measure but still shrinks to its text, so a short hint never sits in an oversized bubble. A bare number is read as pixels, a percentage is measured against the activator, and any other … |
|
|
472
474
|
|
|
473
475
|
## Events
|
|
474
476
|
|
package/dist/ai/BbTree.md
CHANGED
|
@@ -68,20 +68,14 @@ normally:
|
|
|
68
68
|
```vue
|
|
69
69
|
<template>
|
|
70
70
|
<div
|
|
71
|
-
class="w-full max-w-xs overflow-hidden rounded-
|
|
71
|
+
class="w-full max-w-xs overflow-hidden rounded-(--bb-radius) border border-(--bb-border)"
|
|
72
72
|
>
|
|
73
73
|
<div
|
|
74
|
-
class="flex items-center gap-1.5 border-b border-
|
|
74
|
+
class="flex items-center gap-1.5 border-b border-(--bb-border) px-2.5 py-1.5"
|
|
75
75
|
>
|
|
76
|
-
<BbIcon
|
|
77
|
-
class="text-[color:var(--bb-text-muted)]"
|
|
78
|
-
icon="lucide:users"
|
|
79
|
-
size="sm"
|
|
80
|
-
/>
|
|
76
|
+
<BbIcon class="text-(--bb-text-muted)" icon="lucide:users" size="sm" />
|
|
81
77
|
<span class="text-xs font-medium">People</span>
|
|
82
|
-
<span class="ml-auto text-xs text-
|
|
83
|
-
>Acme Studio</span
|
|
84
|
-
>
|
|
78
|
+
<span class="ml-auto text-xs text-(--bb-text-muted)">Acme Studio</span>
|
|
85
79
|
</div>
|
|
86
80
|
|
|
87
81
|
<BbTree
|
|
@@ -96,12 +90,12 @@ normally:
|
|
|
96
90
|
<button
|
|
97
91
|
v-if="expandable"
|
|
98
92
|
:aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.name}`"
|
|
99
|
-
class="flex w-full items-center gap-1.5 rounded-
|
|
93
|
+
class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm font-medium hover:bg-(--bb-surface-hover)"
|
|
100
94
|
type="button"
|
|
101
95
|
v-bind="expandProps"
|
|
102
96
|
>
|
|
103
97
|
<BbIcon
|
|
104
|
-
class="shrink-0 text-
|
|
98
|
+
class="shrink-0 text-(--bb-text-muted)"
|
|
105
99
|
:icon="expanded ? 'lucide:chevron-down' : 'lucide:chevron-right'"
|
|
106
100
|
size="sm"
|
|
107
101
|
/>
|
|
@@ -114,7 +108,7 @@ normally:
|
|
|
114
108
|
expanded with no toggle, so it reads as a pinned section. -->
|
|
115
109
|
<span
|
|
116
110
|
v-else-if="item.children?.length"
|
|
117
|
-
class="flex items-center gap-1.5 px-1.5 py-1 text-xs font-semibold
|
|
111
|
+
class="flex items-center gap-1.5 px-1.5 py-1 text-xs font-semibold tracking-wide text-(--bb-text-muted) uppercase"
|
|
118
112
|
>
|
|
119
113
|
{{ meta.name }}
|
|
120
114
|
</span>
|
|
@@ -124,7 +118,7 @@ normally:
|
|
|
124
118
|
{{ initials(meta.name) }}
|
|
125
119
|
</BbAvatar>
|
|
126
120
|
<span class="min-w-0 truncate font-medium">{{ meta.name }}</span>
|
|
127
|
-
<span class="shrink-0 text-xs text-
|
|
121
|
+
<span class="shrink-0 text-xs text-(--bb-text-muted)">{{
|
|
128
122
|
meta.role
|
|
129
123
|
}}</span>
|
|
130
124
|
</span>
|
|
@@ -222,20 +216,14 @@ as plain rows.
|
|
|
222
216
|
```vue
|
|
223
217
|
<template>
|
|
224
218
|
<div
|
|
225
|
-
class="w-full max-w-xs overflow-hidden rounded-
|
|
219
|
+
class="w-full max-w-xs overflow-hidden rounded-(--bb-radius) border border-(--bb-border)"
|
|
226
220
|
>
|
|
227
221
|
<div
|
|
228
|
-
class="flex items-center gap-1.5 border-b border-
|
|
222
|
+
class="flex items-center gap-1.5 border-b border-(--bb-border) px-2.5 py-1.5"
|
|
229
223
|
>
|
|
230
|
-
<BbIcon
|
|
231
|
-
class="text-[color:var(--bb-text-muted)]"
|
|
232
|
-
icon="lucide:files"
|
|
233
|
-
size="sm"
|
|
234
|
-
/>
|
|
224
|
+
<BbIcon class="text-(--bb-text-muted)" icon="lucide:files" size="sm" />
|
|
235
225
|
<span class="text-xs font-medium">Explorer</span>
|
|
236
|
-
<span class="ml-auto text-xs text-
|
|
237
|
-
>acme-web</span
|
|
238
|
-
>
|
|
226
|
+
<span class="ml-auto text-xs text-(--bb-text-muted)">acme-web</span>
|
|
239
227
|
</div>
|
|
240
228
|
|
|
241
229
|
<BbTree
|
|
@@ -249,17 +237,17 @@ as plain rows.
|
|
|
249
237
|
<button
|
|
250
238
|
v-if="expandable"
|
|
251
239
|
:aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.name}`"
|
|
252
|
-
class="flex w-full items-center gap-1.5 rounded-
|
|
240
|
+
class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm hover:bg-(--bb-surface-hover)"
|
|
253
241
|
type="button"
|
|
254
242
|
v-bind="expandProps"
|
|
255
243
|
>
|
|
256
244
|
<BbIcon
|
|
257
|
-
class="shrink-0 text-
|
|
245
|
+
class="shrink-0 text-(--bb-text-muted)"
|
|
258
246
|
:icon="expanded ? 'lucide:chevron-down' : 'lucide:chevron-right'"
|
|
259
247
|
size="sm"
|
|
260
248
|
/>
|
|
261
249
|
<BbIcon
|
|
262
|
-
class="shrink-0 text-
|
|
250
|
+
class="shrink-0 text-(--bb-text-muted)"
|
|
263
251
|
:icon="expanded ? 'lucide:folder-open' : 'lucide:folder'"
|
|
264
252
|
size="sm"
|
|
265
253
|
/>
|
|
@@ -267,16 +255,14 @@ as plain rows.
|
|
|
267
255
|
</button>
|
|
268
256
|
<span
|
|
269
257
|
v-else
|
|
270
|
-
class="flex items-center gap-1.5 rounded-
|
|
258
|
+
class="flex items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 pl-[1.55rem] text-sm text-(--bb-text-muted)"
|
|
271
259
|
>
|
|
272
260
|
<BbIcon
|
|
273
|
-
class="shrink-0 text-
|
|
261
|
+
class="shrink-0 text-(--bb-text-faint)"
|
|
274
262
|
icon="lucide:file"
|
|
275
263
|
size="sm"
|
|
276
264
|
/>
|
|
277
|
-
<span class="truncate text-
|
|
278
|
-
meta.name
|
|
279
|
-
}}</span>
|
|
265
|
+
<span class="truncate text-(--bb-text)">{{ meta.name }}</span>
|
|
280
266
|
</span>
|
|
281
267
|
</template>
|
|
282
268
|
</BbTree>
|
|
@@ -364,7 +350,7 @@ or restore them on reload.
|
|
|
364
350
|
|
|
365
351
|
<BbTree
|
|
366
352
|
v-model:expanded-items="expandedSections"
|
|
367
|
-
class="rounded-
|
|
353
|
+
class="rounded-(--bb-radius) border border-(--bb-border) p-1.5"
|
|
368
354
|
:expandable="(node) => !!node.children?.length"
|
|
369
355
|
item-value="id"
|
|
370
356
|
:items="sections"
|
|
@@ -374,7 +360,7 @@ or restore them on reload.
|
|
|
374
360
|
<button
|
|
375
361
|
v-if="expandable"
|
|
376
362
|
:aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.label}`"
|
|
377
|
-
class="flex w-full items-center gap-1.5 rounded-
|
|
363
|
+
class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-xs font-semibold tracking-wide text-(--bb-text-muted) uppercase hover:bg-(--bb-surface-hover)"
|
|
378
364
|
type="button"
|
|
379
365
|
v-bind="expandProps"
|
|
380
366
|
>
|
|
@@ -471,7 +457,7 @@ useful for a custom layout or an inline empty state under one branch.
|
|
|
471
457
|
```vue
|
|
472
458
|
<template>
|
|
473
459
|
<BbTree
|
|
474
|
-
class="w-full max-w-xs rounded-
|
|
460
|
+
class="w-full max-w-xs rounded-(--bb-radius) border border-(--bb-border) p-1.5"
|
|
475
461
|
:expandable="(n) => !!n.children?.length"
|
|
476
462
|
item-value="id"
|
|
477
463
|
:items="pages"
|
|
@@ -481,7 +467,7 @@ useful for a custom layout or an inline empty state under one branch.
|
|
|
481
467
|
<template #0="{ meta, expanded, expandProps }">
|
|
482
468
|
<button
|
|
483
469
|
:aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.label}`"
|
|
484
|
-
class="flex w-full items-center gap-1.5 rounded-
|
|
470
|
+
class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-xs font-semibold tracking-wide text-(--bb-text-muted) uppercase hover:bg-(--bb-surface-hover)"
|
|
485
471
|
type="button"
|
|
486
472
|
v-bind="expandProps"
|
|
487
473
|
>
|
|
@@ -498,7 +484,7 @@ useful for a custom layout or an inline empty state under one branch.
|
|
|
498
484
|
<template #trash="{ meta, expanded, expandProps }">
|
|
499
485
|
<button
|
|
500
486
|
:aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.label}`"
|
|
501
|
-
class="knowledge-base-tree__trash flex w-full items-center gap-1.5 rounded-
|
|
487
|
+
class="knowledge-base-tree__trash flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm"
|
|
502
488
|
type="button"
|
|
503
489
|
v-bind="expandProps"
|
|
504
490
|
>
|
|
@@ -514,13 +500,11 @@ useful for a custom layout or an inline empty state under one branch.
|
|
|
514
500
|
<li
|
|
515
501
|
v-for="page in item.children ?? []"
|
|
516
502
|
:key="page.meta.id"
|
|
517
|
-
class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm text-
|
|
503
|
+
class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm text-(--bb-text-muted) line-through"
|
|
518
504
|
>
|
|
519
505
|
<BbIcon icon="lucide:file-x" size="sm" /> {{ page.meta.label }}
|
|
520
506
|
</li>
|
|
521
|
-
<li
|
|
522
|
-
class="px-1.5 pb-1 pl-[1.55rem] text-xs text-[color:var(--bb-text-muted)]"
|
|
523
|
-
>
|
|
507
|
+
<li class="px-1.5 pb-1 pl-[1.55rem] text-xs text-(--bb-text-muted)">
|
|
524
508
|
Deleted pages are removed for good after 30 days.
|
|
525
509
|
</li>
|
|
526
510
|
</ul>
|
|
@@ -529,10 +513,10 @@ useful for a custom layout or an inline empty state under one branch.
|
|
|
529
513
|
<!-- Default slot: every remaining node (the pages). -->
|
|
530
514
|
<template #default="{ meta }">
|
|
531
515
|
<span
|
|
532
|
-
class="flex items-center gap-1.5 rounded-
|
|
516
|
+
class="flex items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 pl-[1.55rem] text-sm"
|
|
533
517
|
>
|
|
534
518
|
<BbIcon
|
|
535
|
-
class="text-
|
|
519
|
+
class="text-(--bb-text-faint)"
|
|
536
520
|
icon="lucide:file-text"
|
|
537
521
|
size="sm"
|
|
538
522
|
/>
|
|
@@ -646,7 +630,7 @@ out of the box: collapsing is a smooth CSS grid-rows transition, not a remount.
|
|
|
646
630
|
},
|
|
647
631
|
]"
|
|
648
632
|
:expandable="(n) => !!n.children?.length"
|
|
649
|
-
class="max-w-xs rounded-
|
|
633
|
+
class="max-w-xs rounded-(--bb-radius) border border-(--bb-border) p-1.5"
|
|
650
634
|
style="--indent:1.5rem; --gap:.375rem"
|
|
651
635
|
>
|
|
652
636
|
<template #default="{ meta, expandable, expanded, expandProps }">
|
|
@@ -654,16 +638,16 @@ out of the box: collapsing is a smooth CSS grid-rows transition, not a remount.
|
|
|
654
638
|
v-if="expandable"
|
|
655
639
|
v-bind="expandProps"
|
|
656
640
|
type="button"
|
|
657
|
-
class="flex w-full items-center gap-1.5 rounded-
|
|
641
|
+
class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm font-medium hover:bg-(--bb-surface-hover)"
|
|
658
642
|
>
|
|
659
643
|
<BbIcon
|
|
660
|
-
class="text-
|
|
644
|
+
class="text-(--bb-text-muted)"
|
|
661
645
|
:icon="expanded ? 'lucide:chevron-down' : 'lucide:chevron-right'"
|
|
662
646
|
size="sm"
|
|
663
647
|
/>
|
|
664
648
|
{{ meta.name }}
|
|
665
649
|
</button>
|
|
666
|
-
<span v-else class="px-1.5 py-0.5 text-sm text-
|
|
650
|
+
<span v-else class="px-1.5 py-0.5 text-sm text-(--bb-text-muted)">{{ meta.name }}</span>
|
|
667
651
|
</template>
|
|
668
652
|
</BbTree>
|
|
669
653
|
```
|
|
@@ -682,7 +666,7 @@ scoped under a wrapper class so it stays local.
|
|
|
682
666
|
```vue
|
|
683
667
|
<template>
|
|
684
668
|
<BbTree
|
|
685
|
-
class="connector-tree w-full max-w-xs rounded-
|
|
669
|
+
class="connector-tree w-full max-w-xs rounded-(--bb-radius) border border-(--bb-border) p-1.5"
|
|
686
670
|
:expandable="(node) => !!node.children?.length"
|
|
687
671
|
item-value="path"
|
|
688
672
|
:items="items"
|
|
@@ -691,12 +675,12 @@ scoped under a wrapper class so it stays local.
|
|
|
691
675
|
<button
|
|
692
676
|
v-if="expandable"
|
|
693
677
|
:aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.name}`"
|
|
694
|
-
class="flex items-center gap-1.5 rounded-
|
|
678
|
+
class="flex items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-sm hover:bg-(--bb-surface-hover)"
|
|
695
679
|
type="button"
|
|
696
680
|
v-bind="expandProps"
|
|
697
681
|
>
|
|
698
682
|
<BbIcon
|
|
699
|
-
class="shrink-0 text-
|
|
683
|
+
class="shrink-0 text-(--bb-text-muted)"
|
|
700
684
|
:icon="expanded ? 'lucide:folder-open' : 'lucide:folder'"
|
|
701
685
|
size="sm"
|
|
702
686
|
/>
|
|
@@ -704,14 +688,14 @@ scoped under a wrapper class so it stays local.
|
|
|
704
688
|
</button>
|
|
705
689
|
<span
|
|
706
690
|
v-else
|
|
707
|
-
class="flex items-center gap-1.5 px-1.5 py-0.5 text-sm text-
|
|
691
|
+
class="flex items-center gap-1.5 px-1.5 py-0.5 text-sm text-(--bb-text-muted)"
|
|
708
692
|
>
|
|
709
693
|
<BbIcon
|
|
710
|
-
class="shrink-0 text-
|
|
694
|
+
class="shrink-0 text-(--bb-text-faint)"
|
|
711
695
|
icon="lucide:file"
|
|
712
696
|
size="sm"
|
|
713
697
|
/>
|
|
714
|
-
<span class="text-
|
|
698
|
+
<span class="text-(--bb-text)">{{ meta.name }}</span>
|
|
715
699
|
</span>
|
|
716
700
|
</template>
|
|
717
701
|
</BbTree>
|
|
@@ -829,20 +813,14 @@ fetch and swap its children.
|
|
|
829
813
|
```vue
|
|
830
814
|
<template>
|
|
831
815
|
<div
|
|
832
|
-
class="w-full max-w-xs overflow-hidden rounded-
|
|
816
|
+
class="w-full max-w-xs overflow-hidden rounded-(--bb-radius) border border-(--bb-border)"
|
|
833
817
|
>
|
|
834
818
|
<div
|
|
835
|
-
class="flex items-center gap-1.5 border-b border-
|
|
819
|
+
class="flex items-center gap-1.5 border-b border-(--bb-border) px-2.5 py-1.5"
|
|
836
820
|
>
|
|
837
|
-
<BbIcon
|
|
838
|
-
class="text-[color:var(--bb-text-muted)]"
|
|
839
|
-
icon="lucide:cloud"
|
|
840
|
-
size="sm"
|
|
841
|
-
/>
|
|
821
|
+
<BbIcon class="text-(--bb-text-muted)" icon="lucide:cloud" size="sm" />
|
|
842
822
|
<span class="text-xs font-medium">Remote files</span>
|
|
843
|
-
<span class="ml-auto text-xs text-
|
|
844
|
-
>lazy load</span
|
|
845
|
-
>
|
|
823
|
+
<span class="ml-auto text-xs text-(--bb-text-muted)">lazy load</span>
|
|
846
824
|
</div>
|
|
847
825
|
|
|
848
826
|
<BbTree
|
|
@@ -857,17 +835,17 @@ fetch and swap its children.
|
|
|
857
835
|
<button
|
|
858
836
|
v-if="expandable"
|
|
859
837
|
:aria-label="`${isOpen ? 'Collapse' : 'Expand'} ${meta.label}`"
|
|
860
|
-
class="flex w-full items-center gap-1.5 rounded-
|
|
838
|
+
class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm hover:bg-(--bb-surface-hover)"
|
|
861
839
|
type="button"
|
|
862
840
|
v-bind="expandProps"
|
|
863
841
|
>
|
|
864
842
|
<BbIcon
|
|
865
|
-
class="shrink-0 text-
|
|
843
|
+
class="shrink-0 text-(--bb-text-muted)"
|
|
866
844
|
:icon="isOpen ? 'lucide:chevron-down' : 'lucide:chevron-right'"
|
|
867
845
|
size="sm"
|
|
868
846
|
/>
|
|
869
847
|
<BbIcon
|
|
870
|
-
class="shrink-0 text-
|
|
848
|
+
class="shrink-0 text-(--bb-text-muted)"
|
|
871
849
|
:icon="isOpen ? 'lucide:folder-open' : 'lucide:folder'"
|
|
872
850
|
size="sm"
|
|
873
851
|
/>
|
|
@@ -875,7 +853,7 @@ fetch and swap its children.
|
|
|
875
853
|
</button>
|
|
876
854
|
<span
|
|
877
855
|
v-else-if="meta.loading"
|
|
878
|
-
class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm text-
|
|
856
|
+
class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm text-(--bb-text-muted)"
|
|
879
857
|
>
|
|
880
858
|
<BbSpinner size="xs" /> Loading…
|
|
881
859
|
</span>
|
|
@@ -883,11 +861,7 @@ fetch and swap its children.
|
|
|
883
861
|
v-else
|
|
884
862
|
class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm"
|
|
885
863
|
>
|
|
886
|
-
<BbIcon
|
|
887
|
-
class="text-[color:var(--bb-text-faint)]"
|
|
888
|
-
icon="lucide:file"
|
|
889
|
-
size="sm"
|
|
890
|
-
/>
|
|
864
|
+
<BbIcon class="text-(--bb-text-faint)" icon="lucide:file" size="sm" />
|
|
891
865
|
{{ meta.label }}
|
|
892
866
|
</span>
|
|
893
867
|
</template>
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
| `preventFocus` | `boolean \| undefined` | `false` | | Prevents the wrapper from focusing the inner input on click. |
|
|
26
26
|
| `readonly` | `boolean \| undefined` | `false` | | Whether the input is readonly. |
|
|
27
27
|
| `reserveAppendSpace` | `boolean \| undefined` | `false` | | Keeps trailing action/icon space reserved even when currently empty. |
|
|
28
|
+
| `variant` | `InputVariantType \| undefined` | `"outline"` | | Visual variant of the field box. Controls colours only — background, border colour, focus border — while height, padding and border WIDTH stay identical across variants, so switching one never reflows a form. Mirrors the equally named `BbBu… |
|
|
28
29
|
|
|
29
30
|
## Events
|
|
30
31
|
|