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/BbTextInput.md
CHANGED
|
@@ -55,10 +55,10 @@ label already plays that role and the two would overlap.
|
|
|
55
55
|
|
|
56
56
|
```vue
|
|
57
57
|
<template>
|
|
58
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
58
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
59
59
|
<div>
|
|
60
60
|
<p class="text-sm font-medium">Profile basics</p>
|
|
61
|
-
<p class="text-xs text-
|
|
61
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
62
62
|
Same field, three label placements — pick one per product.
|
|
63
63
|
</p>
|
|
64
64
|
</div>
|
|
@@ -85,10 +85,10 @@ const inside = ref<string | null>('Bitboss');
|
|
|
85
85
|
|
|
86
86
|
```vue
|
|
87
87
|
<template>
|
|
88
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
88
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
89
89
|
<div>
|
|
90
90
|
<p class="text-sm font-medium">Workspace settings</p>
|
|
91
|
-
<p class="text-xs text-
|
|
91
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
92
92
|
Required fields mark the label — keep the accessible name intact.
|
|
93
93
|
</p>
|
|
94
94
|
</div>
|
|
@@ -102,11 +102,7 @@ const inside = ref<string | null>('Bitboss');
|
|
|
102
102
|
<template #label="{ text, hasErrors }">
|
|
103
103
|
{{ text }}
|
|
104
104
|
<span
|
|
105
|
-
:class="
|
|
106
|
-
hasErrors
|
|
107
|
-
? 'text-[color:var(--bb-danger)]'
|
|
108
|
-
: 'text-[color:var(--bb-text-muted)]'
|
|
109
|
-
"
|
|
105
|
+
:class="hasErrors ? 'text-(--bb-danger)' : 'text-(--bb-text-muted)'"
|
|
110
106
|
>
|
|
111
107
|
*
|
|
112
108
|
</span>
|
|
@@ -171,10 +167,8 @@ validation layer should still drive `errors`.
|
|
|
171
167
|
```vue
|
|
172
168
|
<template>
|
|
173
169
|
<div class="grid max-w-sm gap-3">
|
|
174
|
-
<div class="grid gap-2 rounded-
|
|
175
|
-
<p class="text-xs font-medium text-
|
|
176
|
-
Invite teammate
|
|
177
|
-
</p>
|
|
170
|
+
<div class="grid gap-2 rounded-(--bb-radius) border p-3">
|
|
171
|
+
<p class="text-xs font-medium text-(--bb-text-muted)">Invite teammate</p>
|
|
178
172
|
<BbTextInput
|
|
179
173
|
v-model="email"
|
|
180
174
|
compact
|
|
@@ -186,8 +180,8 @@ validation layer should still drive `errors`.
|
|
|
186
180
|
type="email"
|
|
187
181
|
/>
|
|
188
182
|
</div>
|
|
189
|
-
<div class="grid gap-2 rounded-
|
|
190
|
-
<p class="text-xs font-medium text-
|
|
183
|
+
<div class="grid gap-2 rounded-(--bb-radius) border p-3">
|
|
184
|
+
<p class="text-xs font-medium text-(--bb-text-muted)">
|
|
191
185
|
Non-blocking hint
|
|
192
186
|
</p>
|
|
193
187
|
<BbTextInput
|
|
@@ -199,7 +193,7 @@ validation layer should still drive `errors`.
|
|
|
199
193
|
:warnings="['This name is very short — is it what you meant?']"
|
|
200
194
|
/>
|
|
201
195
|
</div>
|
|
202
|
-
<div class="rounded-
|
|
196
|
+
<div class="rounded-(--bb-radius) border px-2 py-1.5">
|
|
203
197
|
<BbTextInput
|
|
204
198
|
v-model="search"
|
|
205
199
|
class="w-full"
|
|
@@ -258,10 +252,10 @@ The full slot ring, inside → out:
|
|
|
258
252
|
|
|
259
253
|
```vue
|
|
260
254
|
<template>
|
|
261
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
255
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
262
256
|
<div>
|
|
263
257
|
<p class="text-sm font-medium">Workspace & billing</p>
|
|
264
|
-
<p class="text-xs text-
|
|
258
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
265
259
|
Icons and short affixes live inside the chrome; actions sit outside.
|
|
266
260
|
</p>
|
|
267
261
|
</div>
|
|
@@ -328,10 +322,10 @@ the status.
|
|
|
328
322
|
|
|
329
323
|
```vue
|
|
330
324
|
<template>
|
|
331
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
325
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
332
326
|
<div>
|
|
333
327
|
<p class="text-sm font-medium">Claim your handle</p>
|
|
334
|
-
<p class="text-xs text-
|
|
328
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
335
329
|
Debounced check — spinner while pending, hint or error on result.
|
|
336
330
|
</p>
|
|
337
331
|
</div>
|
|
@@ -550,10 +544,10 @@ five carry `labelMode` and all five fall back to
|
|
|
550
544
|
|
|
551
545
|
```vue
|
|
552
546
|
<template>
|
|
553
|
-
<div class="grid max-w-md gap-3 rounded-
|
|
547
|
+
<div class="grid max-w-md gap-3 rounded-(--bb-radius) border p-4">
|
|
554
548
|
<div>
|
|
555
549
|
<p class="text-sm font-medium">Billing contact</p>
|
|
556
|
-
<p class="text-xs text-
|
|
550
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
557
551
|
Outside labels only — horizontal rows keep dense forms scannable.
|
|
558
552
|
</p>
|
|
559
553
|
</div>
|
|
@@ -591,10 +585,10 @@ const company = ref<string | null>('Bitboss');
|
|
|
591
585
|
|
|
592
586
|
```vue
|
|
593
587
|
<template>
|
|
594
|
-
<div class="grid max-w-sm gap-2 rounded-
|
|
588
|
+
<div class="grid max-w-sm gap-2 rounded-(--bb-radius) border p-3">
|
|
595
589
|
<div>
|
|
596
590
|
<p class="text-sm font-medium">Merino Tee — Black / M</p>
|
|
597
|
-
<p class="text-xs text-
|
|
591
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
598
592
|
Product identifiers · compact density
|
|
599
593
|
</p>
|
|
600
594
|
</div>
|
|
@@ -623,6 +617,47 @@ const barcode = ref<string | null>('0 12345 67890 5');
|
|
|
623
617
|
</script>
|
|
624
618
|
```
|
|
625
619
|
|
|
620
|
+
### Variants
|
|
621
|
+
|
|
622
|
+
`variant` picks the field box's look — and only its look. Height, padding and
|
|
623
|
+
border width are identical across variants, so mixing them in one view never
|
|
624
|
+
reflows anything. The names and tokens are the `BbButton` ones, so a page
|
|
625
|
+
reads one vocabulary for buttons and fields:
|
|
626
|
+
|
|
627
|
+
- **`outline`** (default) — the raised panel with the neutral border.
|
|
628
|
+
- **`secondary`** — a soft tinted surface with a faint border; fields that
|
|
629
|
+
should sit back on a busy panel.
|
|
630
|
+
- **`ghost`** — no border in **any** state, a hover wash as the affordance,
|
|
631
|
+
and the same wash under the focus ring (a ring around nothing reads as a
|
|
632
|
+
glitch). Errors and warnings do not tint it; the icon and
|
|
633
|
+
the message carry the state. This is the inline-edit table cell: the field
|
|
634
|
+
reads as text at rest and needs no `:deep()` to get there.
|
|
635
|
+
- **`none`** — structure only: every colour transparent and **no focus
|
|
636
|
+
ring**. An escape hatch for a fully custom look; prefer registering a
|
|
637
|
+
variant, which keeps the ring.
|
|
638
|
+
|
|
639
|
+
**The variant ladder**
|
|
640
|
+
|
|
641
|
+
```vue
|
|
642
|
+
<template>
|
|
643
|
+
<div class="grid gap-3 sm:grid-cols-3">
|
|
644
|
+
<BbTextInput label="Outline" model-value="Ada Lovelace" />
|
|
645
|
+
<BbTextInput
|
|
646
|
+
label="Secondary"
|
|
647
|
+
model-value="Ada Lovelace"
|
|
648
|
+
variant="secondary"
|
|
649
|
+
/>
|
|
650
|
+
<BbTextInput label="Ghost" model-value="Ada Lovelace" variant="ghost" />
|
|
651
|
+
</div>
|
|
652
|
+
</template>
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
`variant` is the same prop on `BbTextarea`, `BbNumberInput`, `BbSelect`,
|
|
656
|
+
`BbTag`, `BbDatePickerInput`, `BbTimePickerInput` and `BbColorInput`. Extra
|
|
657
|
+
names are registered through the plugin's `inputVariants` option and styled
|
|
658
|
+
as a token block on `common-input-wrapper--<name>` — see the installation
|
|
659
|
+
guide.
|
|
660
|
+
|
|
626
661
|
### Global config & platforms
|
|
627
662
|
|
|
628
663
|
- `config.defaultInputLabelMode` — project-wide default for `labelMode`
|
|
@@ -655,7 +690,7 @@ submit, format checks on blur, errors cleared as the user fixes them.
|
|
|
655
690
|
```vue
|
|
656
691
|
<template>
|
|
657
692
|
<form
|
|
658
|
-
class="grid max-w-md gap-3 rounded-
|
|
693
|
+
class="grid max-w-md gap-3 rounded-(--bb-radius) border p-4"
|
|
659
694
|
novalidate
|
|
660
695
|
@submit.prevent="submit"
|
|
661
696
|
>
|
|
@@ -663,7 +698,7 @@ submit, format checks on blur, errors cleared as the user fixes them.
|
|
|
663
698
|
<p class="text-sm font-medium">
|
|
664
699
|
Invoice for {{ customer || 'a new client' }}
|
|
665
700
|
</p>
|
|
666
|
-
<p class="text-xs text-
|
|
701
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
667
702
|
Draft INV-2048 · validate on blur / submit, clear as they type
|
|
668
703
|
</p>
|
|
669
704
|
</div>
|
|
@@ -880,7 +915,7 @@ const formattedTotal = computed(() =>
|
|
|
880
915
|
| `hideLabel` | `boolean \| undefined` | `false` | | Visually hides the label of the input while maintaining accessibility. |
|
|
881
916
|
| `hint` | `string \| undefined` | | | Text box to be displayed near the input, usually to indicate instructions. |
|
|
882
917
|
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
883
|
-
| `inputMode` | `"text" \| "
|
|
918
|
+
| `inputMode` | `"text" \| "none" \| "search" \| "email" \| "url" \| "tel" \| "numeric" \| "decimal" \| undefined` | | | The inputmode of the input. |
|
|
884
919
|
| `label` | `string` | | yes | Text content of the label of the element. |
|
|
885
920
|
| `labelMode` | `"floating" \| "outside" \| "inside" \| undefined` | | | Label rendering mode. |
|
|
886
921
|
| `labelPosition` | `"left" \| "center" \| "right" \| undefined` | | | Sets the text alignment of the label. |
|
|
@@ -895,6 +930,7 @@ const formattedTotal = computed(() =>
|
|
|
895
930
|
| `required` | `boolean \| undefined` | `false` | | Sets the input as required. |
|
|
896
931
|
| `reverse` | `boolean \| undefined` | `false` | | Reverses the layout. Applicable in every direction the order of the label and the input is swapped. |
|
|
897
932
|
| `type` | `"text" \| "search" \| "email" \| "url" \| "tel" \| "password" \| undefined` | | | Type of the input. Restricted to the textual input types this component supports — use `BbNumberInput` for numbers and `BbDatePickerInput` for dates. |
|
|
933
|
+
| `variant` | `InputVariantType \| undefined` | `'outline'` | | Visual variant of the field box — the same names and tokens as the `BbButton` variants. Colours only: height, padding and border width are identical across variants, so a form never reflows when one changes. `'ghost'` has no border in any s… |
|
|
898
934
|
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-text-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are… |
|
|
899
935
|
|
|
900
936
|
## Events
|
package/dist/ai/BbTextarea.md
CHANGED
|
@@ -51,10 +51,10 @@ form or read from `FormData`.
|
|
|
51
51
|
|
|
52
52
|
```vue
|
|
53
53
|
<template>
|
|
54
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
54
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
55
55
|
<div>
|
|
56
56
|
<p class="text-sm font-medium">Member profile</p>
|
|
57
|
-
<p class="text-xs text-
|
|
57
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
58
58
|
Label stays required — hide it visually or customize the slot.
|
|
59
59
|
</p>
|
|
60
60
|
</div>
|
|
@@ -69,11 +69,7 @@ form or read from `FormData`.
|
|
|
69
69
|
<template #label="{ text, hasErrors }">
|
|
70
70
|
{{ text }}
|
|
71
71
|
<span
|
|
72
|
-
:class="
|
|
73
|
-
hasErrors
|
|
74
|
-
? 'text-[color:var(--bb-danger)]'
|
|
75
|
-
: 'text-[color:var(--bb-text-muted)]'
|
|
76
|
-
"
|
|
72
|
+
:class="hasErrors ? 'text-(--bb-danger)' : 'text-(--bb-text-muted)'"
|
|
77
73
|
>
|
|
78
74
|
*
|
|
79
75
|
</span>
|
|
@@ -118,10 +114,10 @@ label and the placeholder occupy the same spot.
|
|
|
118
114
|
|
|
119
115
|
```vue
|
|
120
116
|
<template>
|
|
121
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
117
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
122
118
|
<div>
|
|
123
119
|
<p class="text-sm font-medium">Checkout · shipping</p>
|
|
124
|
-
<p class="text-xs text-
|
|
120
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
125
121
|
Floating and inside labels — skip placeholders on floating fields.
|
|
126
122
|
</p>
|
|
127
123
|
</div>
|
|
@@ -191,10 +187,10 @@ validation layer should still drive `errors`.
|
|
|
191
187
|
```vue
|
|
192
188
|
<template>
|
|
193
189
|
<div class="grid max-w-sm gap-3">
|
|
194
|
-
<div class="grid gap-3 rounded-
|
|
190
|
+
<div class="grid gap-3 rounded-(--bb-radius) border p-4">
|
|
195
191
|
<div>
|
|
196
192
|
<p class="text-sm font-medium">Public profile</p>
|
|
197
|
-
<p class="text-xs text-
|
|
193
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
198
194
|
Description before typing; hint while focused.
|
|
199
195
|
</p>
|
|
200
196
|
</div>
|
|
@@ -210,12 +206,10 @@ validation layer should still drive `errors`.
|
|
|
210
206
|
:rows="3"
|
|
211
207
|
/>
|
|
212
208
|
</div>
|
|
213
|
-
<div class="grid gap-3 rounded-
|
|
209
|
+
<div class="grid gap-3 rounded-(--bb-radius) border p-4">
|
|
214
210
|
<div>
|
|
215
211
|
<p class="text-sm font-medium">Request a refund</p>
|
|
216
|
-
<p class="text-xs text-
|
|
217
|
-
INV-2048 · Acme Studio
|
|
218
|
-
</p>
|
|
212
|
+
<p class="text-xs text-(--bb-text-muted)">INV-2048 · Acme Studio</p>
|
|
219
213
|
</div>
|
|
220
214
|
<BbTextarea
|
|
221
215
|
v-model="reason"
|
|
@@ -265,10 +259,10 @@ Two ways to size the box — and they compose:
|
|
|
265
259
|
|
|
266
260
|
```vue
|
|
267
261
|
<template>
|
|
268
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
262
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
269
263
|
<div>
|
|
270
264
|
<p class="text-sm font-medium">Issue description</p>
|
|
271
|
-
<p class="text-xs text-
|
|
265
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
272
266
|
Fixed rows, auto-grow, or rows as a minimum floor.
|
|
273
267
|
</p>
|
|
274
268
|
</div>
|
|
@@ -320,10 +314,10 @@ while the comment saves:
|
|
|
320
314
|
|
|
321
315
|
```vue
|
|
322
316
|
<template>
|
|
323
|
-
<div class="grid max-w-md gap-3 rounded-
|
|
317
|
+
<div class="grid max-w-md gap-3 rounded-(--bb-radius) border p-3">
|
|
324
318
|
<div>
|
|
325
319
|
<p class="text-sm font-medium">PR #2048 · Review</p>
|
|
326
|
-
<p class="text-xs text-
|
|
320
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
327
321
|
feat/command-palette · 2 comments
|
|
328
322
|
</p>
|
|
329
323
|
</div>
|
|
@@ -332,7 +326,7 @@ while the comment saves:
|
|
|
332
326
|
:key="comment.id"
|
|
333
327
|
class="grid gap-0.5 border-t pt-2 first:border-t-0 first:pt-0"
|
|
334
328
|
>
|
|
335
|
-
<p class="text-xs text-
|
|
329
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
336
330
|
{{ comment.author }} · {{ comment.postedAt }}
|
|
337
331
|
</p>
|
|
338
332
|
<p class="text-sm">{{ comment.body }}</p>
|
|
@@ -409,10 +403,10 @@ informed. For a simple inline readout the `suffix` slot is enough:
|
|
|
409
403
|
|
|
410
404
|
```vue
|
|
411
405
|
<template>
|
|
412
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
406
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
413
407
|
<div>
|
|
414
408
|
<p class="text-sm font-medium">Status update</p>
|
|
415
|
-
<p class="text-xs text-
|
|
409
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
416
410
|
Inline suffix counter — visual only, no hard cap.
|
|
417
411
|
</p>
|
|
418
412
|
</div>
|
|
@@ -445,10 +439,10 @@ companion SFC:
|
|
|
445
439
|
|
|
446
440
|
```vue
|
|
447
441
|
<template>
|
|
448
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
442
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
449
443
|
<div>
|
|
450
444
|
<p class="text-sm font-medium">Contact support</p>
|
|
451
|
-
<p class="text-xs text-
|
|
445
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
452
446
|
Ticket #4812 · counter is visual; cap is enforced via errors.
|
|
453
447
|
</p>
|
|
454
448
|
</div>
|
|
@@ -509,10 +503,10 @@ The full slot ring, inside → out:
|
|
|
509
503
|
|
|
510
504
|
```vue
|
|
511
505
|
<template>
|
|
512
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
506
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
513
507
|
<div>
|
|
514
508
|
<p class="text-sm font-medium">Deal notes</p>
|
|
515
|
-
<p class="text-xs text-
|
|
509
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
516
510
|
Icons inside the chrome; copy actions sit in append-outer.
|
|
517
511
|
</p>
|
|
518
512
|
</div>
|
|
@@ -568,10 +562,10 @@ change mid-operation (e.g. an autosave round-trip). They compose freely.
|
|
|
568
562
|
|
|
569
563
|
```vue
|
|
570
564
|
<template>
|
|
571
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
565
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
572
566
|
<div>
|
|
573
567
|
<p class="text-sm font-medium">Meeting notes</p>
|
|
574
|
-
<p class="text-xs text-
|
|
568
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
575
569
|
Q3 roadmap sync · clearable draft and autosave spinner.
|
|
576
570
|
</p>
|
|
577
571
|
</div>
|
|
@@ -619,10 +613,10 @@ content — screen-reader and keyboard users can still reach it.
|
|
|
619
613
|
```vue
|
|
620
614
|
<template>
|
|
621
615
|
<div class="grid max-w-sm gap-3">
|
|
622
|
-
<div class="grid gap-3 rounded-
|
|
616
|
+
<div class="grid gap-3 rounded-(--bb-radius) border p-4">
|
|
623
617
|
<div>
|
|
624
618
|
<p class="text-sm font-medium">Refund policy</p>
|
|
625
|
-
<p class="text-xs text-
|
|
619
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
626
620
|
Readonly keeps terms focusable and copyable.
|
|
627
621
|
</p>
|
|
628
622
|
</div>
|
|
@@ -635,10 +629,10 @@ content — screen-reader and keyboard users can still reach it.
|
|
|
635
629
|
:rows="3"
|
|
636
630
|
/>
|
|
637
631
|
</div>
|
|
638
|
-
<div class="grid gap-3 rounded-
|
|
632
|
+
<div class="grid gap-3 rounded-(--bb-radius) border p-4">
|
|
639
633
|
<div>
|
|
640
634
|
<p class="text-sm font-medium">Deploy log</p>
|
|
641
|
-
<p class="text-xs text-
|
|
635
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
642
636
|
Disabled greys the field and blocks interaction.
|
|
643
637
|
</p>
|
|
644
638
|
</div>
|
|
@@ -678,10 +672,10 @@ order. This makes it a good pick for label-beside-field settings rows.
|
|
|
678
672
|
|
|
679
673
|
```vue
|
|
680
674
|
<template>
|
|
681
|
-
<div class="grid max-w-md gap-3 rounded-
|
|
675
|
+
<div class="grid max-w-md gap-3 rounded-(--bb-radius) border p-4">
|
|
682
676
|
<div>
|
|
683
677
|
<p class="text-sm font-medium">Issue properties</p>
|
|
684
|
-
<p class="text-xs text-
|
|
678
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
685
679
|
Horizontal outside labels + compact density on the whole panel.
|
|
686
680
|
</p>
|
|
687
681
|
</div>
|
|
@@ -751,6 +745,19 @@ comment composer above).
|
|
|
751
745
|
/>
|
|
752
746
|
```
|
|
753
747
|
|
|
748
|
+
### Variants
|
|
749
|
+
|
|
750
|
+
`variant` picks the field box's look and nothing else — height, padding and
|
|
751
|
+
border width are identical across variants. `outline` (default) is the raised
|
|
752
|
+
panel with the neutral border, `secondary` a soft tinted surface with a faint
|
|
753
|
+
border, and `ghost` draws **no border in any state**: a hover wash is the
|
|
754
|
+
affordance, the focus ring still shows, and errors or warnings surface through
|
|
755
|
+
the icon and the message rather than a tinted edge. `ghost` is the inline-edit
|
|
756
|
+
table cell (`<BbTextarea compact hide-label variant="ghost" />`) — no
|
|
757
|
+
`:deep()` needed. The names and tokens are the `BbButton` ones; extra names
|
|
758
|
+
register through the plugin's `inputVariants` option. The full ladder is in
|
|
759
|
+
the `BbTextInput` guide.
|
|
760
|
+
|
|
754
761
|
### Works well with
|
|
755
762
|
|
|
756
763
|
- `BbTextInput` / `BbNumberInput` / `BbDatePickerInput` — same chrome and
|
|
@@ -829,6 +836,7 @@ comment composer above).
|
|
|
829
836
|
| `required` | `boolean \| undefined` | `false` | | Sets the input as required. |
|
|
830
837
|
| `reverse` | `boolean \| undefined` | `false` | | Reverses the layout. Applicable in every direction the order of the label and the input is swapped. |
|
|
831
838
|
| `rows` | `string \| number \| undefined` | | | Sets the number of visible text lines for the control. |
|
|
839
|
+
| `variant` | `InputVariantType \| undefined` | `'outline'` | | Visual variant of the field box — the same names and tokens as the `BbButton` variants. Colours only: height, padding and border width are identical across variants, so a form never reflows when one changes. `'ghost'` has no border in any s… |
|
|
832
840
|
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-text-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are… |
|
|
833
841
|
|
|
834
842
|
## Events
|
|
@@ -101,6 +101,19 @@ interaction.
|
|
|
101
101
|
| `active`/`inactive` | — | focus enters / leaves the whole control |
|
|
102
102
|
| `focus` | `FocusEvent` | a native field gains focus |
|
|
103
103
|
|
|
104
|
+
### Variants
|
|
105
|
+
|
|
106
|
+
`variant` picks the field box's look and nothing else — height, padding and
|
|
107
|
+
border width are identical across variants. `outline` (default) is the raised
|
|
108
|
+
panel with the neutral border, `secondary` a soft tinted surface with a faint
|
|
109
|
+
border, and `ghost` draws **no border in any state**: a hover wash is the
|
|
110
|
+
affordance, the focus ring still shows, and errors or warnings surface through
|
|
111
|
+
the icon and the message rather than a tinted edge. `ghost` is the inline-edit
|
|
112
|
+
table cell (`<BbTimePickerInput compact hide-label variant="ghost" />`) — no
|
|
113
|
+
`:deep()` needed. The names and tokens are the `BbButton` ones; extra names
|
|
114
|
+
register through the plugin's `inputVariants` option. The full ladder is in
|
|
115
|
+
the `BbTextInput` guide.
|
|
116
|
+
|
|
104
117
|
### Gotchas & anti-patterns
|
|
105
118
|
|
|
106
119
|
- **Don't parse the value with `new Date('14:30')`** — it's a wall-clock
|
|
@@ -165,6 +178,7 @@ Messages _also_ render in an `aria-live="polite"` region.
|
|
|
165
178
|
| `seconds` | `boolean \| undefined` | `false` | | Adds the seconds segment. Without it an incoming value carrying seconds displays truncated and zeroes out on the next user commit. |
|
|
166
179
|
| `step` | `number \| undefined` | `1` | | Minute granularity for the minute column and its arrow stepping. Constrains what the columns produce, never what typing accepts. |
|
|
167
180
|
| `transitionDuration` | `number \| undefined` | | | Transition duration, in milliseconds, for the popover appearance. |
|
|
181
|
+
| `variant` | `InputVariantType \| undefined` | `'outline'` | | Visual variant of the field box — the same names and tokens as the `BbButton` variants. Colours only: height, padding and border width are identical across variants, so a form never reflows when one changes. `'ghost'` has no border in any s… |
|
|
168
182
|
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-text-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are… |
|
|
169
183
|
|
|
170
184
|
## Events
|
package/dist/ai/BbToast.md
CHANGED
|
@@ -70,14 +70,10 @@ per-message options. Built-in variants: `default`, `success`, `info`,
|
|
|
70
70
|
|
|
71
71
|
```vue
|
|
72
72
|
<template>
|
|
73
|
-
<div
|
|
74
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
75
|
-
>
|
|
73
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
76
74
|
<div class="flex flex-col gap-0.5">
|
|
77
75
|
<p class="text-sm font-medium">Alex Rivera</p>
|
|
78
|
-
<p class="text-xs text-
|
|
79
|
-
alex@northwind.co · Product
|
|
80
|
-
</p>
|
|
76
|
+
<p class="text-xs text-(--bb-text-muted)">alex@northwind.co · Product</p>
|
|
81
77
|
</div>
|
|
82
78
|
|
|
83
79
|
<div class="flex flex-wrap items-center gap-2">
|
|
@@ -196,14 +192,10 @@ the spinner and the pinning stay).
|
|
|
196
192
|
|
|
197
193
|
```vue
|
|
198
194
|
<template>
|
|
199
|
-
<div
|
|
200
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
201
|
-
>
|
|
195
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
202
196
|
<div class="flex flex-col gap-0.5">
|
|
203
197
|
<p class="text-sm font-medium">invoice-INV-1042.pdf</p>
|
|
204
|
-
<p class="text-xs text-
|
|
205
|
-
248 KB · ready to upload
|
|
206
|
-
</p>
|
|
198
|
+
<p class="text-xs text-(--bb-text-muted)">248 KB · ready to upload</p>
|
|
207
199
|
</div>
|
|
208
200
|
|
|
209
201
|
<BbButton prepend:icon="lucide:upload" variant="primary" @click="upload">
|
|
@@ -261,12 +253,10 @@ status, "copied" — so hammering the action never floods the corner.
|
|
|
261
253
|
|
|
262
254
|
```vue
|
|
263
255
|
<template>
|
|
264
|
-
<div
|
|
265
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
266
|
-
>
|
|
256
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
267
257
|
<div class="flex flex-col gap-0.5">
|
|
268
258
|
<p class="text-sm font-medium">Proposal — Acme Studio</p>
|
|
269
|
-
<p class="text-xs text-
|
|
259
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
270
260
|
Draft · last edited just now · {{ saveCount }} saves this session
|
|
271
261
|
</p>
|
|
272
262
|
</div>
|
|
@@ -362,12 +352,10 @@ toast expires, the delete simply stands.
|
|
|
362
352
|
|
|
363
353
|
```vue
|
|
364
354
|
<template>
|
|
365
|
-
<div
|
|
366
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
367
|
-
>
|
|
355
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
368
356
|
<div class="flex flex-col gap-0.5">
|
|
369
357
|
<p class="text-sm font-medium">Saved replies</p>
|
|
370
|
-
<p class="text-xs text-
|
|
358
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
371
359
|
Delete commits immediately — Undo lives on the toast.
|
|
372
360
|
</p>
|
|
373
361
|
</div>
|
|
@@ -389,9 +377,7 @@ toast expires, the delete simply stands.
|
|
|
389
377
|
</BbButton>
|
|
390
378
|
</li>
|
|
391
379
|
</ul>
|
|
392
|
-
<p v-else class="text-sm text-
|
|
393
|
-
No saved replies left.
|
|
394
|
-
</p>
|
|
380
|
+
<p v-else class="text-sm text-(--bb-text-muted)">No saved replies left.</p>
|
|
395
381
|
|
|
396
382
|
<!--
|
|
397
383
|
Standalone example: it mounts its own host because it has no app root.
|
|
@@ -449,12 +435,10 @@ morphs in place with a fresh countdown (e.g. into a success confirmation).
|
|
|
449
435
|
|
|
450
436
|
```vue
|
|
451
437
|
<template>
|
|
452
|
-
<div
|
|
453
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
454
|
-
>
|
|
438
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
455
439
|
<div class="flex flex-col gap-0.5">
|
|
456
440
|
<p class="text-sm font-medium">Workspace sync</p>
|
|
457
|
-
<p class="text-xs text-
|
|
441
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
458
442
|
Northwind · last synced 12 minutes ago
|
|
459
443
|
</p>
|
|
460
444
|
</div>
|
|
@@ -546,12 +530,10 @@ overlays unless `hideClose`.
|
|
|
546
530
|
|
|
547
531
|
```vue
|
|
548
532
|
<template>
|
|
549
|
-
<div
|
|
550
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
551
|
-
>
|
|
533
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
552
534
|
<div class="flex flex-col gap-0.5">
|
|
553
535
|
<p class="text-sm font-medium">Invite teammate</p>
|
|
554
|
-
<p class="text-xs text-
|
|
536
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
555
537
|
Portal toast with avatar + custom actions.
|
|
556
538
|
</p>
|
|
557
539
|
</div>
|
|
@@ -572,9 +554,7 @@ overlays unless `hideClose`.
|
|
|
572
554
|
<BbAvatar size="32">{{ props.initials }}</BbAvatar>
|
|
573
555
|
<div class="min-w-0 flex-1">
|
|
574
556
|
<p class="text-sm font-semibold">{{ props.name }} was invited</p>
|
|
575
|
-
<p class="text-xs text-
|
|
576
|
-
Northwind · Design
|
|
577
|
-
</p>
|
|
557
|
+
<p class="text-xs text-(--bb-text-muted)">Northwind · Design</p>
|
|
578
558
|
<div class="mt-2 flex gap-2">
|
|
579
559
|
<BbButton size="xs" @click="close">Got it</BbButton>
|
|
580
560
|
<BbButton size="xs" variant="outline" @click="close">Undo</BbButton>
|