bitboss-ui 3.0.0-beta.21 → 3.0.0-beta.22
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/BbBaseRadioIcon.md +6 -10
- package/dist/ai/BbBaseSwitchIcon.md +5 -9
- 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 +13 -23
- package/dist/ai/BbColorPalette.md +23 -35
- package/dist/ai/BbConfirm.md +17 -32
- package/dist/ai/BbDatePickerInput.md +15 -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 +18 -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 +32 -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 +12 -23
- package/dist/ai/BbTextInput.md +20 -26
- package/dist/ai/BbTextarea.md +28 -34
- package/dist/ai/BbToast.md +14 -34
- package/dist/ai/BbTooltip.md +22 -20
- package/dist/ai/BbTree.md +46 -72
- package/dist/ai/changelog.json +169 -62
- package/dist/ai/components.json +1467 -9
- 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 +141 -13
- 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 +253 -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/BbBaseDatePicker.md +5 -5
- package/dist/ai/source/BbBaseDatePickerInput.md +2 -2
- package/dist/ai/source/BbBaseRadio.md +1 -1
- package/dist/ai/source/BbBaseRating.md +5 -5
- package/dist/ai/source/BbBaseSelect.md +1 -1
- package/dist/ai/source/BbBaseSlider.md +5 -5
- package/dist/ai/source/BbBaseSwitch.md +1 -1
- package/dist/ai/source/BbBaseTimePickerInput.md +1 -1
- package/dist/ai/source/BbBreadcrumbs.md +20 -1
- package/dist/ai/source/BbButton.md +2 -2
- 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/BbOffCanvas.md +50 -28
- package/dist/ai/source/BbPagination.md +2 -2
- package/dist/ai/source/BbPopover.md +12 -1
- 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/BbTooltip.md +57 -10
- package/dist/ai/source/ChipsBox.md +1 -1
- package/dist/ai/source/CommaBox.md +1 -1
- 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/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 +1 -1
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +1 -1
- 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 +1 -1
- 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/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +1 -1
- 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/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/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/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/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/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/llms-full.txt +1979 -1527
- package/dist/llms-medium.txt +461 -74
- package/dist/llms.txt +1 -1
- 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/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/vite-plugin.d.ts +74 -11
- package/dist/vite.js +292 -253
- 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/BbCollapsible.md
CHANGED
|
@@ -41,12 +41,10 @@ fields visible; tuck rarely-needed controls behind the disclosure.
|
|
|
41
41
|
|
|
42
42
|
```vue
|
|
43
43
|
<template>
|
|
44
|
-
<div
|
|
45
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
46
|
-
>
|
|
44
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
47
45
|
<div class="flex flex-col gap-0.5">
|
|
48
46
|
<p class="text-sm font-medium">Create webhook</p>
|
|
49
|
-
<p class="text-xs text-
|
|
47
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
50
48
|
Northwind Billing · deliver invoice events to your endpoint.
|
|
51
49
|
</p>
|
|
52
50
|
</div>
|
|
@@ -147,12 +145,10 @@ the switch's checked state already conveys it.
|
|
|
147
145
|
|
|
148
146
|
```vue
|
|
149
147
|
<template>
|
|
150
|
-
<div
|
|
151
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
152
|
-
>
|
|
148
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
153
149
|
<div class="flex flex-col gap-0.5">
|
|
154
150
|
<p class="text-sm font-medium">Custom domain</p>
|
|
155
|
-
<p class="text-xs text-
|
|
151
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
156
152
|
Acme Docs · serve from your domain instead of *.bitdocs.app.
|
|
157
153
|
</p>
|
|
158
154
|
</div>
|
|
@@ -211,12 +207,10 @@ entry that reveals the full bullet list on demand.
|
|
|
211
207
|
|
|
212
208
|
```vue
|
|
213
209
|
<template>
|
|
214
|
-
<div
|
|
215
|
-
class="flex max-w-md flex-col gap-2 rounded-[var(--bb-radius)] border p-3"
|
|
216
|
-
>
|
|
210
|
+
<div class="flex max-w-md flex-col gap-2 rounded-(--bb-radius) border p-3">
|
|
217
211
|
<div class="flex items-baseline gap-2">
|
|
218
212
|
<p class="text-sm font-medium">v3.2.0</p>
|
|
219
|
-
<p class="text-xs text-
|
|
213
|
+
<p class="text-xs text-(--bb-text-muted)">Jul 18, 2026</p>
|
|
220
214
|
</div>
|
|
221
215
|
|
|
222
216
|
<p class="text-sm leading-relaxed">
|
|
@@ -225,9 +219,7 @@ entry that reveals the full bullet list on demand.
|
|
|
225
219
|
</p>
|
|
226
220
|
|
|
227
221
|
<BbCollapsible id="changelog-more" v-model="more">
|
|
228
|
-
<ul
|
|
229
|
-
class="flex flex-col gap-1.5 pt-1 text-sm text-[color:var(--bb-text-muted)]"
|
|
230
|
-
>
|
|
222
|
+
<ul class="flex flex-col gap-1.5 pt-1 text-sm text-(--bb-text-muted)">
|
|
231
223
|
<li v-for="note in notes" :key="note">{{ note }}</li>
|
|
232
224
|
</ul>
|
|
233
225
|
</BbCollapsible>
|
|
@@ -278,12 +270,10 @@ grid-rows transition) and the opacity/visibility fade. Under
|
|
|
278
270
|
|
|
279
271
|
```vue
|
|
280
272
|
<template>
|
|
281
|
-
<div
|
|
282
|
-
class="flex max-w-sm flex-col gap-2 rounded-[var(--bb-radius)] border p-3"
|
|
283
|
-
>
|
|
273
|
+
<div class="flex max-w-sm flex-col gap-2 rounded-(--bb-radius) border p-3">
|
|
284
274
|
<div class="flex flex-col gap-0.5">
|
|
285
275
|
<p class="text-sm font-medium">Checkout · Acme Pro</p>
|
|
286
|
-
<p class="text-xs text-
|
|
276
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
287
277
|
$29 / month · billed annually
|
|
288
278
|
</p>
|
|
289
279
|
</div>
|
|
@@ -306,7 +296,7 @@ grid-rows transition) and the opacity/visibility fade. Under
|
|
|
306
296
|
eager
|
|
307
297
|
:transition-duration="350"
|
|
308
298
|
>
|
|
309
|
-
<p class="pt-1 text-sm text-
|
|
299
|
+
<p class="pt-1 text-sm text-(--bb-text-muted)">
|
|
310
300
|
Refunds return to the original payment method within 5–10 business days.
|
|
311
301
|
Annual plans are refundable in full within 30 days of purchase.
|
|
312
302
|
</p>
|
|
@@ -332,12 +322,10 @@ triggers live in a segmented control or toolbar rather than stacked headers.
|
|
|
332
322
|
|
|
333
323
|
```vue
|
|
334
324
|
<template>
|
|
335
|
-
<div
|
|
336
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
337
|
-
>
|
|
325
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
338
326
|
<div class="flex flex-col gap-0.5">
|
|
339
327
|
<p class="text-sm font-medium">Studio Display</p>
|
|
340
|
-
<p class="text-xs text-
|
|
328
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
341
329
|
INV-1042 · Acme Studio · $1,599.00
|
|
342
330
|
</p>
|
|
343
331
|
</div>
|
|
@@ -357,12 +345,12 @@ triggers live in a segmented control or toolbar rather than stacked headers.
|
|
|
357
345
|
</div>
|
|
358
346
|
|
|
359
347
|
<BbCollapsible :id="tabs[0].panelId" :model-value="active === 'specs'">
|
|
360
|
-
<p class="text-sm text-
|
|
348
|
+
<p class="text-sm text-(--bb-text-muted)">
|
|
361
349
|
Aluminium body · 1.2 kg · USB-C · 14" matte display · 60 Hz.
|
|
362
350
|
</p>
|
|
363
351
|
</BbCollapsible>
|
|
364
352
|
<BbCollapsible :id="tabs[1].panelId" :model-value="active === 'shipping'">
|
|
365
|
-
<p class="text-sm text-
|
|
353
|
+
<p class="text-sm text-(--bb-text-muted)">
|
|
366
354
|
Ships in 2–3 business days. Free returns within 30 days of delivery.
|
|
367
355
|
</p>
|
|
368
356
|
</BbCollapsible>
|
package/dist/ai/BbColorInput.md
CHANGED
|
@@ -53,18 +53,18 @@ users can type or pick — both paths land in the same `v-model`.
|
|
|
53
53
|
```vue
|
|
54
54
|
<template>
|
|
55
55
|
<form
|
|
56
|
-
class="flex max-w-sm flex-col gap-3 rounded-
|
|
56
|
+
class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3"
|
|
57
57
|
@submit.prevent
|
|
58
58
|
>
|
|
59
59
|
<div class="flex flex-col gap-0.5">
|
|
60
60
|
<span class="text-sm font-medium">Workspace appearance</span>
|
|
61
|
-
<span class="text-xs text-
|
|
61
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
62
62
|
Brand and accent colors for buttons, links, and chrome.
|
|
63
63
|
</span>
|
|
64
64
|
</div>
|
|
65
65
|
|
|
66
66
|
<div
|
|
67
|
-
class="flex items-center gap-2 rounded-
|
|
67
|
+
class="flex items-center gap-2 rounded-(--bb-radius) border bg-(--bb-muted) px-3 py-2"
|
|
68
68
|
>
|
|
69
69
|
<span
|
|
70
70
|
class="rounded-full px-2.5 py-0.5 text-xs font-medium"
|
|
@@ -85,9 +85,7 @@ users can type or pick — both paths land in the same `v-model`.
|
|
|
85
85
|
>
|
|
86
86
|
Accent
|
|
87
87
|
</span>
|
|
88
|
-
<span v-else class="text-xs text-
|
|
89
|
-
>No accent yet</span
|
|
90
|
-
>
|
|
88
|
+
<span v-else class="text-xs text-(--bb-text-muted)">No accent yet</span>
|
|
91
89
|
</div>
|
|
92
90
|
|
|
93
91
|
<BbColorInput
|
|
@@ -162,12 +160,10 @@ const resetToDefaults = () => {
|
|
|
162
160
|
|
|
163
161
|
```vue
|
|
164
162
|
<template>
|
|
165
|
-
<div
|
|
166
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
167
|
-
>
|
|
163
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
168
164
|
<div class="flex flex-col gap-0.5">
|
|
169
165
|
<span class="text-sm font-medium">Label & overlay</span>
|
|
170
|
-
<span class="text-xs text-
|
|
166
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
171
167
|
Custom swatch columns, optional alpha, and eyedropper when available.
|
|
172
168
|
</span>
|
|
173
169
|
</div>
|
|
@@ -220,12 +216,10 @@ color) can parse it without guards.
|
|
|
220
216
|
|
|
221
217
|
```vue
|
|
222
218
|
<template>
|
|
223
|
-
<div
|
|
224
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
225
|
-
>
|
|
219
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
226
220
|
<div class="flex flex-col gap-0.5">
|
|
227
221
|
<span class="text-sm font-medium">New label</span>
|
|
228
|
-
<span class="text-xs text-
|
|
222
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
229
223
|
GitHub-style — name a label and paint it as you drag.
|
|
230
224
|
</span>
|
|
231
225
|
</div>
|
|
@@ -316,12 +310,10 @@ server-side rules, surfaced through `errors`.
|
|
|
316
310
|
|
|
317
311
|
```vue
|
|
318
312
|
<template>
|
|
319
|
-
<div
|
|
320
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
321
|
-
>
|
|
313
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
322
314
|
<div class="flex flex-col gap-0.5">
|
|
323
315
|
<span class="text-sm font-medium">Theme colors</span>
|
|
324
|
-
<span class="text-xs text-
|
|
316
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
325
317
|
Floating label, always-visible description, and a required-field error.
|
|
326
318
|
</span>
|
|
327
319
|
</div>
|
|
@@ -377,12 +369,10 @@ The full common-field surface applies:
|
|
|
377
369
|
|
|
378
370
|
```vue
|
|
379
371
|
<template>
|
|
380
|
-
<div
|
|
381
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
382
|
-
>
|
|
372
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
383
373
|
<div class="flex flex-col gap-0.5">
|
|
384
374
|
<span class="text-sm font-medium">Chart series</span>
|
|
385
|
-
<span class="text-xs text-
|
|
375
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
386
376
|
Compact field with a palette icon and a hex suffix.
|
|
387
377
|
</span>
|
|
388
378
|
</div>
|
|
@@ -395,7 +385,7 @@ The full common-field surface applies:
|
|
|
395
385
|
swatches
|
|
396
386
|
>
|
|
397
387
|
<template #suffix>
|
|
398
|
-
<span class="text-xs text-
|
|
388
|
+
<span class="text-xs text-(--bb-text-muted)">hex</span>
|
|
399
389
|
</template>
|
|
400
390
|
</BbColorInput>
|
|
401
391
|
</div>
|
|
@@ -68,17 +68,15 @@ drag would hit your backend.
|
|
|
68
68
|
|
|
69
69
|
```vue
|
|
70
70
|
<template>
|
|
71
|
-
<div
|
|
72
|
-
class="flex max-w-sm flex-col gap-2 rounded-[var(--bb-radius)] border p-3"
|
|
73
|
-
>
|
|
71
|
+
<div class="flex max-w-sm flex-col gap-2 rounded-(--bb-radius) border p-3">
|
|
74
72
|
<div class="flex items-center justify-between gap-3">
|
|
75
73
|
<div class="flex flex-col gap-0.5">
|
|
76
74
|
<span class="text-sm font-medium">Repository labels</span>
|
|
77
|
-
<span class="text-xs text-
|
|
75
|
+
<span class="text-xs text-(--bb-text-muted)"
|
|
78
76
|
>bitboss/ui · paint from the row</span
|
|
79
77
|
>
|
|
80
78
|
</div>
|
|
81
|
-
<span class="shrink-0 text-xs text-
|
|
79
|
+
<span class="shrink-0 text-xs text-(--bb-text-muted)">
|
|
82
80
|
{{ pending ? 'Saving…' : 'All changes saved' }}
|
|
83
81
|
</span>
|
|
84
82
|
</div>
|
|
@@ -87,7 +85,7 @@ drag would hit your backend.
|
|
|
87
85
|
<li
|
|
88
86
|
v-for="label in labels"
|
|
89
87
|
:key="label.name"
|
|
90
|
-
class="flex items-center gap-2 rounded-
|
|
88
|
+
class="flex items-center gap-2 rounded-(--bb-radius) px-1 py-1 hover:bg-(--bb-surface-hover)"
|
|
91
89
|
>
|
|
92
90
|
<span
|
|
93
91
|
class="shrink-0 rounded-full px-2 py-0.5 text-xs font-medium"
|
|
@@ -98,9 +96,7 @@ drag would hit your backend.
|
|
|
98
96
|
>
|
|
99
97
|
{{ label.name }}
|
|
100
98
|
</span>
|
|
101
|
-
<span
|
|
102
|
-
class="mr-auto truncate text-xs text-[color:var(--bb-text-muted)]"
|
|
103
|
-
>
|
|
99
|
+
<span class="mr-auto truncate text-xs text-(--bb-text-muted)">
|
|
104
100
|
{{ label.description }}
|
|
105
101
|
</span>
|
|
106
102
|
|
|
@@ -114,8 +110,8 @@ drag would hit your backend.
|
|
|
114
110
|
<template #activator="{ props, value, open }">
|
|
115
111
|
<button
|
|
116
112
|
v-bind="props"
|
|
117
|
-
class="h-4 w-4 shrink-0 rounded-full border border-
|
|
118
|
-
:class="open ? 'ring-2 ring-
|
|
113
|
+
class="h-4 w-4 shrink-0 rounded-full border border-(--bb-border) ring-offset-1 outline-hidden focus-visible:ring-2 focus-visible:ring-(--bb-ring)"
|
|
114
|
+
:class="open ? 'ring-2 ring-(--bb-ring)' : ''"
|
|
119
115
|
:style="{ backgroundColor: value ?? 'transparent' }"
|
|
120
116
|
type="button"
|
|
121
117
|
/>
|
|
@@ -205,12 +201,10 @@ is one instance per row.
|
|
|
205
201
|
|
|
206
202
|
```vue
|
|
207
203
|
<template>
|
|
208
|
-
<div
|
|
209
|
-
class="flex max-w-xs flex-col gap-2 rounded-[var(--bb-radius)] border p-3"
|
|
210
|
-
>
|
|
204
|
+
<div class="flex max-w-xs flex-col gap-2 rounded-(--bb-radius) border p-3">
|
|
211
205
|
<div class="flex flex-col gap-0.5">
|
|
212
206
|
<span class="text-sm font-medium">My calendars</span>
|
|
213
|
-
<span class="text-xs text-
|
|
207
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
214
208
|
Dot triggers — one palette instance per category.
|
|
215
209
|
</span>
|
|
216
210
|
</div>
|
|
@@ -219,7 +213,7 @@ is one instance per row.
|
|
|
219
213
|
<li
|
|
220
214
|
v-for="category in categories"
|
|
221
215
|
:key="category.name"
|
|
222
|
-
class="flex items-center justify-between gap-3 rounded-
|
|
216
|
+
class="flex items-center justify-between gap-3 rounded-(--bb-radius) px-1 py-1 hover:bg-(--bb-surface-hover)"
|
|
223
217
|
>
|
|
224
218
|
<span class="text-sm">{{ category.name }}</span>
|
|
225
219
|
|
|
@@ -232,8 +226,8 @@ is one instance per row.
|
|
|
232
226
|
<template #activator="{ props, value, open }">
|
|
233
227
|
<button
|
|
234
228
|
v-bind="props"
|
|
235
|
-
class="h-4 w-4 shrink-0 rounded-full border border-
|
|
236
|
-
:class="open ? 'ring-2 ring-
|
|
229
|
+
class="h-4 w-4 shrink-0 rounded-full border border-(--bb-border) ring-offset-1 outline-hidden focus-visible:ring-2 focus-visible:ring-(--bb-ring)"
|
|
230
|
+
:class="open ? 'ring-2 ring-(--bb-ring)' : ''"
|
|
237
231
|
:style="{ backgroundColor: value ?? 'transparent' }"
|
|
238
232
|
type="button"
|
|
239
233
|
/>
|
|
@@ -348,19 +342,17 @@ Three independent enrichments to the palette body:
|
|
|
348
342
|
|
|
349
343
|
```vue
|
|
350
344
|
<template>
|
|
351
|
-
<div
|
|
352
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
353
|
-
>
|
|
345
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
354
346
|
<div class="flex flex-col gap-0.5">
|
|
355
347
|
<span class="text-sm font-medium">Overlay tint</span>
|
|
356
|
-
<span class="text-xs text-
|
|
348
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
357
349
|
Custom columns, alpha channel, and eyedropper when the browser supports
|
|
358
350
|
it.
|
|
359
351
|
</span>
|
|
360
352
|
</div>
|
|
361
353
|
|
|
362
354
|
<div
|
|
363
|
-
class="flex h-16 items-end overflow-hidden rounded-
|
|
355
|
+
class="flex h-16 items-end overflow-hidden rounded-(--bb-radius) border"
|
|
364
356
|
style="
|
|
365
357
|
background-image:
|
|
366
358
|
linear-gradient(45deg, var(--bb-muted) 25%, transparent 25%),
|
|
@@ -391,11 +383,11 @@ Three independent enrichments to the palette body:
|
|
|
391
383
|
<template #activator="{ props, value, open }">
|
|
392
384
|
<button
|
|
393
385
|
v-bind="props"
|
|
394
|
-
class="inline-flex w-full items-center gap-2 rounded-
|
|
386
|
+
class="inline-flex w-full items-center gap-2 rounded-(--bb-radius) border border-(--bb-border) px-3 py-1.5 text-sm outline-hidden focus-visible:ring-2 focus-visible:ring-(--bb-ring)"
|
|
395
387
|
type="button"
|
|
396
388
|
>
|
|
397
389
|
<span
|
|
398
|
-
class="h-4 w-4 shrink-0 rounded-full border border-
|
|
390
|
+
class="h-4 w-4 shrink-0 rounded-full border border-(--bb-border)"
|
|
399
391
|
:style="{ backgroundColor: value ?? 'transparent' }"
|
|
400
392
|
/>
|
|
401
393
|
<span class="mr-auto tabular-nums">{{
|
|
@@ -450,12 +442,10 @@ The float itself is tuned with the popover props:
|
|
|
450
442
|
|
|
451
443
|
```vue
|
|
452
444
|
<template>
|
|
453
|
-
<div
|
|
454
|
-
class="flex max-w-sm flex-col gap-2 rounded-[var(--bb-radius)] border p-3"
|
|
455
|
-
>
|
|
445
|
+
<div class="flex max-w-sm flex-col gap-2 rounded-(--bb-radius) border p-3">
|
|
456
446
|
<div class="flex flex-col gap-0.5">
|
|
457
447
|
<span class="text-sm font-medium">Brand settings</span>
|
|
458
|
-
<span class="text-xs text-
|
|
448
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
459
449
|
Row anchors the popover; only the swatch is clickable.
|
|
460
450
|
</span>
|
|
461
451
|
</div>
|
|
@@ -469,20 +459,18 @@ The float itself is tuned with the popover props:
|
|
|
469
459
|
<template #activator="{ props, anchorProps, value, open }">
|
|
470
460
|
<span
|
|
471
461
|
v-bind="anchorProps"
|
|
472
|
-
class="flex items-center justify-between gap-3 rounded-
|
|
462
|
+
class="flex items-center justify-between gap-3 rounded-(--bb-radius) border border-(--bb-border) px-3 py-2 hover:bg-(--bb-surface-hover)"
|
|
473
463
|
>
|
|
474
464
|
<span class="flex min-w-0 flex-col gap-0.5">
|
|
475
465
|
<span class="text-sm font-medium">Brand accent</span>
|
|
476
|
-
<span
|
|
477
|
-
class="truncate text-xs tabular-nums text-[color:var(--bb-text-muted)]"
|
|
478
|
-
>
|
|
466
|
+
<span class="truncate text-xs text-(--bb-text-muted) tabular-nums">
|
|
479
467
|
{{ value ?? 'No color' }}
|
|
480
468
|
</span>
|
|
481
469
|
</span>
|
|
482
470
|
<button
|
|
483
471
|
v-bind="props"
|
|
484
|
-
class="h-5 w-5 shrink-0 rounded-full border border-
|
|
485
|
-
:class="open ? 'ring-2 ring-
|
|
472
|
+
class="h-5 w-5 shrink-0 rounded-full border border-(--bb-border) ring-offset-1 outline-hidden focus-visible:ring-2 focus-visible:ring-(--bb-ring)"
|
|
473
|
+
:class="open ? 'ring-2 ring-(--bb-ring)' : ''"
|
|
486
474
|
:style="{ backgroundColor: value ?? 'transparent' }"
|
|
487
475
|
type="button"
|
|
488
476
|
/>
|
package/dist/ai/BbConfirm.md
CHANGED
|
@@ -73,19 +73,17 @@ inherits the destructive button style automatically. Everything after the
|
|
|
73
73
|
|
|
74
74
|
```vue
|
|
75
75
|
<template>
|
|
76
|
-
<div
|
|
77
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
78
|
-
>
|
|
76
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
79
77
|
<div class="flex flex-col gap-0.5">
|
|
80
78
|
<span class="text-sm font-medium">API keys</span>
|
|
81
|
-
<span class="text-xs text-
|
|
79
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
82
80
|
<span data-count>{{ keys.length }}</span> active · revoking is immediate
|
|
83
81
|
</span>
|
|
84
82
|
</div>
|
|
85
83
|
<div v-for="key in keys" :key="key.id" class="flex items-center gap-2">
|
|
86
84
|
<div class="flex min-w-0 flex-1 flex-col">
|
|
87
85
|
<span class="truncate text-sm font-medium">{{ key.label }}</span>
|
|
88
|
-
<span class="text-xs text-
|
|
86
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
89
87
|
{{ key.masked }} · created {{ key.created }}
|
|
90
88
|
</span>
|
|
91
89
|
</div>
|
|
@@ -98,10 +96,7 @@ inherits the destructive button style automatically. Everything after the
|
|
|
98
96
|
Revoke
|
|
99
97
|
</BbButton>
|
|
100
98
|
</div>
|
|
101
|
-
<p
|
|
102
|
-
v-if="keys.length === 0"
|
|
103
|
-
class="text-xs text-[color:var(--bb-text-muted)]"
|
|
104
|
-
>
|
|
99
|
+
<p v-if="keys.length === 0" class="text-xs text-(--bb-text-muted)">
|
|
105
100
|
No active keys.
|
|
106
101
|
</p>
|
|
107
102
|
|
|
@@ -170,12 +165,10 @@ callback's own return value rather than a plain boolean. One sharp edge:
|
|
|
170
165
|
|
|
171
166
|
```vue
|
|
172
167
|
<template>
|
|
173
|
-
<div
|
|
174
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
175
|
-
>
|
|
168
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
176
169
|
<div class="flex flex-col gap-0.5">
|
|
177
170
|
<span class="text-sm font-medium">Changelog — week 28</span>
|
|
178
|
-
<span class="text-xs text-
|
|
171
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
179
172
|
Status: <span data-status>{{ status }}</span>
|
|
180
173
|
</span>
|
|
181
174
|
</div>
|
|
@@ -268,12 +261,10 @@ the array (`as const` keeps the literal types; without it each handler infers
|
|
|
268
261
|
|
|
269
262
|
```vue
|
|
270
263
|
<template>
|
|
271
|
-
<div
|
|
272
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
273
|
-
>
|
|
264
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
274
265
|
<div class="flex flex-col gap-0.5">
|
|
275
266
|
<span class="text-sm font-medium">Post editor</span>
|
|
276
|
-
<span class="text-xs text-
|
|
267
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
277
268
|
Last decision: <span data-decision>{{ decision }}</span>
|
|
278
269
|
</span>
|
|
279
270
|
</div>
|
|
@@ -391,12 +382,10 @@ edits, so every implicit way out is blocked and the user answers with a button.
|
|
|
391
382
|
|
|
392
383
|
```vue
|
|
393
384
|
<template>
|
|
394
|
-
<div
|
|
395
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
396
|
-
>
|
|
385
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
397
386
|
<div class="flex flex-col gap-0.5">
|
|
398
387
|
<span class="text-sm font-medium">Profile</span>
|
|
399
|
-
<span class="text-xs text-
|
|
388
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
400
389
|
Saved as: <span data-saved>{{ saved }}</span>
|
|
401
390
|
</span>
|
|
402
391
|
</div>
|
|
@@ -463,12 +452,10 @@ By default the dialog closes as soon as the promise settles. Set
|
|
|
463
452
|
|
|
464
453
|
```vue
|
|
465
454
|
<template>
|
|
466
|
-
<div
|
|
467
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
468
|
-
>
|
|
455
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
469
456
|
<div class="flex flex-col gap-0.5">
|
|
470
457
|
<span class="text-sm font-medium">Workspace backup</span>
|
|
471
|
-
<span class="text-xs text-
|
|
458
|
+
<span class="text-xs text-(--bb-text-muted)" data-status>{{
|
|
472
459
|
status
|
|
473
460
|
}}</span>
|
|
474
461
|
</div>
|
|
@@ -550,13 +537,11 @@ portal never renders.
|
|
|
550
537
|
|
|
551
538
|
```vue
|
|
552
539
|
<template>
|
|
553
|
-
<div
|
|
554
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
555
|
-
>
|
|
540
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
556
541
|
<div class="flex items-center gap-2">
|
|
557
542
|
<div class="flex min-w-0 flex-1 flex-col">
|
|
558
543
|
<span class="truncate text-sm font-medium">Sofia Esposito</span>
|
|
559
|
-
<span class="text-xs text-
|
|
544
|
+
<span class="text-xs text-(--bb-text-muted)"
|
|
560
545
|
>Editor · sofia@acme.dev</span
|
|
561
546
|
>
|
|
562
547
|
</div>
|
|
@@ -564,7 +549,7 @@ portal never renders.
|
|
|
564
549
|
Remove
|
|
565
550
|
</BbButton>
|
|
566
551
|
</div>
|
|
567
|
-
<p class="text-xs text-
|
|
552
|
+
<p class="text-xs text-(--bb-text-muted)" data-result>
|
|
568
553
|
{{ result }}
|
|
569
554
|
</p>
|
|
570
555
|
|
|
@@ -574,10 +559,10 @@ portal never renders.
|
|
|
574
559
|
<template #default="{ props }">
|
|
575
560
|
<div class="flex flex-col items-center gap-1 text-center">
|
|
576
561
|
<p class="text-sm font-medium">{{ props.name }}</p>
|
|
577
|
-
<p class="text-xs text-
|
|
562
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
578
563
|
{{ props.role }}
|
|
579
564
|
</p>
|
|
580
|
-
<p class="mt-1 text-xs text-
|
|
565
|
+
<p class="mt-1 text-xs text-(--bb-text-muted)">
|
|
581
566
|
They lose access to every shared resource.
|
|
582
567
|
</p>
|
|
583
568
|
</div>
|
|
@@ -92,12 +92,10 @@ en-dash.
|
|
|
92
92
|
|
|
93
93
|
```vue
|
|
94
94
|
<template>
|
|
95
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
95
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
96
96
|
<div>
|
|
97
97
|
<p class="text-sm font-medium">Book your stay</p>
|
|
98
|
-
<p class="text-xs text-
|
|
99
|
-
Seaside Loft · Lisbon
|
|
100
|
-
</p>
|
|
98
|
+
<p class="text-xs text-(--bb-text-muted)">Seaside Loft · Lisbon</p>
|
|
101
99
|
</div>
|
|
102
100
|
<BbDatePickerInput
|
|
103
101
|
v-model="stay"
|
|
@@ -109,7 +107,7 @@ en-dash.
|
|
|
109
107
|
prepend:icon="lucide:calendar"
|
|
110
108
|
range
|
|
111
109
|
/>
|
|
112
|
-
<p class="text-xs text-
|
|
110
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
113
111
|
<template v-if="stay.length === 2">
|
|
114
112
|
{{ stay[0] }} → {{ stay[1] }} · {{ nights }} night{{
|
|
115
113
|
nights === 1 ? '' : 's'
|
|
@@ -181,10 +179,10 @@ predicate, `floating` output, and the `append:day` slot to dot specific days.
|
|
|
181
179
|
|
|
182
180
|
```vue
|
|
183
181
|
<template>
|
|
184
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
182
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
185
183
|
<div>
|
|
186
184
|
<p class="text-sm font-medium">Book a demo</p>
|
|
187
|
-
<p class="text-xs text-
|
|
185
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
188
186
|
30 minutes. Dotted days still have open slots.
|
|
189
187
|
</p>
|
|
190
188
|
</div>
|
|
@@ -208,7 +206,7 @@ predicate, `floating` output, and the `append:day` slot to dot specific days.
|
|
|
208
206
|
/>
|
|
209
207
|
</template>
|
|
210
208
|
</BbDatePickerInput>
|
|
211
|
-
<p class="text-xs text-
|
|
209
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
212
210
|
{{ appointment ? `Booked for ${appointment}` : 'No date chosen yet.' }}
|
|
213
211
|
</p>
|
|
214
212
|
</div>
|
|
@@ -265,13 +263,11 @@ name while the field reads as toolbar chrome.
|
|
|
265
263
|
|
|
266
264
|
```vue
|
|
267
265
|
<template>
|
|
268
|
-
<div class="grid max-w-md gap-3 rounded-
|
|
266
|
+
<div class="grid max-w-md gap-3 rounded-(--bb-radius) border p-4">
|
|
269
267
|
<div class="flex flex-wrap items-center justify-between gap-2">
|
|
270
268
|
<div>
|
|
271
269
|
<p class="text-sm font-medium">Issue date</p>
|
|
272
|
-
<p class="text-xs text-
|
|
273
|
-
Filter the invoice list
|
|
274
|
-
</p>
|
|
270
|
+
<p class="text-xs text-(--bb-text-muted)">Filter the invoice list</p>
|
|
275
271
|
</div>
|
|
276
272
|
<div class="flex gap-1.5">
|
|
277
273
|
<BbButton size="xs" variant="outline" @click="setPreset(7)">
|
|
@@ -297,7 +293,7 @@ name while the field reads as toolbar chrome.
|
|
|
297
293
|
prepend:icon="lucide:calendar-range"
|
|
298
294
|
range
|
|
299
295
|
/>
|
|
300
|
-
<p class="text-xs text-
|
|
296
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
301
297
|
{{
|
|
302
298
|
period.length === 2
|
|
303
299
|
? `Showing invoices from ${period[0]} to ${period[1]}`
|
|
@@ -447,15 +443,13 @@ issue date and surfaces the normalisation.
|
|
|
447
443
|
|
|
448
444
|
```vue
|
|
449
445
|
<template>
|
|
450
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
446
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
451
447
|
<div class="flex items-start justify-between gap-3">
|
|
452
448
|
<div>
|
|
453
449
|
<p class="text-sm font-medium">INV-2048</p>
|
|
454
|
-
<p class="text-xs text-
|
|
455
|
-
Acme Studio · $2,400.00
|
|
456
|
-
</p>
|
|
450
|
+
<p class="text-xs text-(--bb-text-muted)">Acme Studio · $2,400.00</p>
|
|
457
451
|
</div>
|
|
458
|
-
<p class="text-xs text-
|
|
452
|
+
<p class="text-xs text-(--bb-text-muted)">Draft</p>
|
|
459
453
|
</div>
|
|
460
454
|
<BbDatePickerInput
|
|
461
455
|
v-model="dueDate"
|
|
@@ -472,7 +466,7 @@ issue date and surfaces the normalisation.
|
|
|
472
466
|
@error="onError"
|
|
473
467
|
@update:model-value="dueError = ''"
|
|
474
468
|
/>
|
|
475
|
-
<p class="text-xs text-
|
|
469
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
476
470
|
Issued {{ issuedAt }} · Net 30 from issue
|
|
477
471
|
</p>
|
|
478
472
|
</div>
|
|
@@ -571,10 +565,10 @@ typing and the calendar (`aria-readonly`).
|
|
|
571
565
|
|
|
572
566
|
```vue
|
|
573
567
|
<template>
|
|
574
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
568
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-4">
|
|
575
569
|
<div>
|
|
576
570
|
<p class="text-sm font-medium">Contract dates</p>
|
|
577
|
-
<p class="text-xs text-
|
|
571
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
578
572
|
Clear the start date, or copy the locked created stamp.
|
|
579
573
|
</p>
|
|
580
574
|
</div>
|