bitboss-ui 3.0.0-beta.26 → 3.0.0-beta.28
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/bin/bitboss-ui-mcp.mjs +1 -1
- package/dist/ai/BbColorInput.md +5 -4
- package/dist/ai/BbColorPalette.md +8 -5
- package/dist/ai/BbConfirm.md +16 -3
- package/dist/ai/BbDatePicker.md +24 -12
- package/dist/ai/BbDatePickerInput.md +16 -7
- package/dist/ai/BbDropdownButton.md +5 -2
- package/dist/ai/BbPtScope.md +136 -0
- package/dist/ai/BbSelect.md +10 -4
- package/dist/ai/BbSelectPopover.md +9 -8
- package/dist/ai/BbTag.md +0 -2
- package/dist/ai/BbTextInput.md +6 -2
- package/dist/ai/BbTimePicker.md +14 -5
- package/dist/ai/BbTimePickerInput.md +14 -4
- package/dist/ai/BbToast.md +10 -2
- package/dist/ai/changelog.json +63 -5
- package/dist/ai/components.json +347 -61
- package/dist/ai/guides/agent-contract.md +14 -3
- package/dist/ai/guides/app-layout.md +3 -1
- package/dist/ai/guides/design-language.md +10 -6
- package/dist/ai/guides/design-tokens.md +2 -1
- package/dist/ai/guides/installation-and-plugin-setup.md +27 -5
- package/dist/ai/guides/migration/components/bb-color-palette.md +9 -9
- package/dist/ai/guides/migration/v2-to-v3.md +62 -58
- package/dist/ai/guides/passthrough.md +182 -73
- package/dist/ai/index.md +1 -0
- package/dist/ai/source/BbCheckbox.md +4 -4
- package/dist/ai/source/BbColorInput.md +6 -4
- package/dist/ai/source/BbColorPalette.md +234 -183
- package/dist/ai/source/BbConfirm.md +9 -2
- package/dist/ai/source/BbConfirmPortal.md +7 -0
- package/dist/ai/source/BbDatePicker.md +406 -325
- package/dist/ai/source/BbDatePickerInput.md +12 -13
- package/dist/ai/source/BbDialog.md +7 -0
- package/dist/ai/source/BbDropdown.md +9 -0
- package/dist/ai/source/BbDropdownButton.md +45 -9
- package/dist/ai/source/BbOffCanvas.md +7 -0
- package/dist/ai/source/BbPopover.md +7 -0
- package/dist/ai/source/BbPtScope.md +54 -0
- package/dist/ai/source/BbRadio.md +4 -4
- package/dist/ai/source/BbSelect.md +8 -4
- package/dist/ai/source/BbSelectPopover.md +47 -12
- package/dist/ai/source/BbSlider.md +19 -2
- package/dist/ai/source/BbSwitch.md +4 -4
- package/dist/ai/source/BbTable.md +49 -2
- package/dist/ai/source/BbTag.md +19 -15
- package/dist/ai/source/BbTimePicker.md +132 -46
- package/dist/ai/source/BbTimePickerInput.md +61 -34
- package/dist/ai/source/BbToast.md +1 -1
- package/dist/ai/source/BbTooltip.md +7 -0
- package/dist/ai/source/CommonField.md +6 -2
- package/dist/ai/source/CommonTimeSelector.md +6 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +8 -0
- package/dist/components/BbColorInput/types.d.ts +5 -4
- package/dist/components/BbColorInput/types.js +1 -0
- package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +253 -244
- package/dist/components/BbColorPalette/types.d.ts +3 -3
- package/dist/components/BbColorPalette/types.js +1 -0
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/BbConfirm/types.d.ts +7 -0
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +252 -232
- package/dist/components/BbDatePicker/DatePickerYearPanel.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/BbDatePicker/types.d.ts +10 -4
- package/dist/components/BbDatePicker/types.js +1 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +297 -296
- package/dist/components/BbDatePickerInput/types.d.ts +5 -2
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +120 -120
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +115 -113
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +4 -0
- package/dist/components/BbDropdownButton/types.d.ts +31 -9
- package/dist/components/BbDropdownButton/types.js +9 -1
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +116 -116
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +146 -146
- package/dist/components/BbPtScope/BbPtScope.vue.d.ts +12 -0
- package/dist/components/BbPtScope/BbPtScope.vue.js +5 -0
- package/dist/components/BbPtScope/BbPtScope.vue_vue_type_script_setup_true_lang.js +13 -0
- package/dist/components/BbPtScope/types.d.ts +15 -0
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +124 -123
- package/dist/components/BbSelect/types.d.ts +1 -1
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +151 -143
- package/dist/components/BbSelectPopover/types.d.ts +3 -3
- package/dist/components/BbSelectPopover/types.js +1 -0
- package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +180 -180
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +814 -800
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +145 -145
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +134 -121
- package/dist/components/BbTimePicker/types.d.ts +10 -4
- package/dist/components/BbTimePicker/types.js +1 -0
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +249 -243
- package/dist/components/BbTimePickerInput/types.d.ts +6 -3
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +40 -40
- package/dist/components/CommonField/CommonField.vue_vue_type_script_setup_true_lang.js +32 -32
- package/dist/components/CommonTimeSelector/CommonTimeSelector.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/composables/useConfirm.d.ts +11 -2
- package/dist/composables/useConfirm.js +1 -1
- package/dist/composables/usePassthrough.d.ts +27 -1
- package/dist/composables/usePassthrough.js +111 -92
- package/dist/composables/useToast.d.ts +2 -1
- package/dist/composables/useToast.js +1 -1
- package/dist/directives/createPopoverDirective.js +68 -53
- package/dist/index.d.ts +4 -0
- package/dist/index.js +24 -23
- package/dist/llms-full.txt +589 -216
- package/dist/llms-medium.txt +52 -14
- package/dist/nuxt-auto-imports.js +1 -1
- package/dist/nuxt-module.d.ts +2 -0
- package/dist/nuxt.js +12 -12
- package/dist/pt-scope-registry.d.ts +15 -0
- package/dist/styles.css +1 -1
- package/dist/types/PtScope.d.ts +13 -0
- package/dist/types/passthrough.d.ts +19 -0
- package/dist/types/ptComponentMap.d.ts +59 -0
- package/dist/utils/passthrough.d.ts +12 -4
- package/dist/utils/passthrough.js +28 -19
- package/dist/utils/ptScope.d.ts +8 -0
- package/dist/utils/ptScope.js +4 -0
- package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +7 -0
- package/dist/validated/index.d.ts +1 -0
- package/dist/vite-plugin.d.ts +38 -6
- package/dist/vite.js +270 -263
- package/package.json +1 -1
package/dist/ai/BbTag.md
CHANGED
|
@@ -560,8 +560,6 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
560
560
|
| Property | Set on | Default | What it is |
|
|
561
561
|
| --- | --- | --- | --- |
|
|
562
562
|
| `--compensation-multiplier` | `.bb-tag__field` | `0.3` | Fraction of the shell's inner padding the chip row is pulled back by when no prepend icon precedes it (see the negative margin below). |
|
|
563
|
-
| `--inner-h` | `.bb-tag__field` | `max( calc(var(--bb-leading) + var(--bb-input-py) * 2), calc(var(--bb-input-h) - …` | The first chip row's height: the tallest of one line plus its vertical padding, the input height less its borders, and the icon box. Feeds `--floating-py` and nothing else. |
|
|
564
|
-
| `--floating-py` | `.bb-tag__field` | `calc((var(--inner-h) - var(--bb-input-icon)) / 2)` | Top offset for centring icons and affixes on that first row — the same value BbTextarea uses for that. Nothing in the library reads it, so this and the compact override below are currently inert. |
|
|
565
563
|
| `--border-color` | `pt:box` | `per variant` | The resting border, at the fixed --bb-border-w. Errors and warnings paint their frame over it, so `pt:box="[--border-color:…]"` recolours the rest without hiding the state; a plain `border-*` utility on the base pt:box would hide it (ESLint… |
|
|
566
564
|
|
|
567
565
|
## Component tree
|
package/dist/ai/BbTextInput.md
CHANGED
|
@@ -511,8 +511,12 @@ The native attributes that only mean something on the input itself —
|
|
|
511
511
|
`maxlength`, `minlength`, `pattern`, `spellcheck`, `autocapitalize`,
|
|
512
512
|
`autocorrect`, `enterkeyhint`, `list`, `form`, `dirname` — go straight to the
|
|
513
513
|
native `<input>` (the same holds for BbTextarea, BbNumberInput, BbTag and
|
|
514
|
-
BbColorInput, where `wrap` joins them on the textarea).
|
|
515
|
-
|
|
514
|
+
BbColorInput, where `wrap` joins them on the textarea). The controls without
|
|
515
|
+
a text input route only what their native control reads: BbSelect sends
|
|
516
|
+
`form` to its hidden inputs, BbDatePickerInput and BbTimePickerInput send
|
|
517
|
+
`form`, `spellcheck`, `autocapitalize`, `autocorrect` and `enterkeyhint` to
|
|
518
|
+
every segment (each segment keeps its own `maxlength` and parsing). Any other
|
|
519
|
+
attribute you set lands on the field's outer element; reach the input with
|
|
516
520
|
`pt:input="{ attrs: { … } }"`, which also wins over the attributes above.
|
|
517
521
|
|
|
518
522
|
**An OTP field: text type, numeric keyboard, masked**
|
package/dist/ai/BbTimePicker.md
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
| pt part | Lands on | In |
|
|
16
16
|
| --- | --- | --- |
|
|
17
|
+
| `pt:panel` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
17
18
|
| `pt:sheet` | `pt:root` of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
18
19
|
| `pt:item` | the root of `BbBaseButton` | `BbBaseButton` ([contract](./BbBaseButton.md)) |
|
|
19
20
|
|
|
@@ -145,6 +146,12 @@ props with `offCanvasProps`). Position the desktop popover with `placement`,
|
|
|
145
146
|
`offset`, `padding`, `boundary`, and `disableFlip` — the same knobs as the other
|
|
146
147
|
overlays. Escape and backdrop clicks close it; focus returns to the activator.
|
|
147
148
|
|
|
149
|
+
The sheet can be **dragged down to dismiss** and shows **no ✕** — picking,
|
|
150
|
+
drag, backdrop tap and Escape close it. The time wheels are no-drag zones: a
|
|
151
|
+
swipe there scrolls the wheel and never moves the sheet, even at the top of the
|
|
152
|
+
list. `offCanvasProps` is spread over those defaults: `{ hideClose: false }`
|
|
153
|
+
brings the ✕ back, `{ draggable: false }` pins the sheet.
|
|
154
|
+
|
|
148
155
|
### The `v-bb-time` directive
|
|
149
156
|
|
|
150
157
|
For the leanest case — a time cell in a schedule table where you don't want a
|
|
@@ -187,8 +194,10 @@ there is no text field to type into, `BbTimePickerInput` when there is.
|
|
|
187
194
|
|
|
188
195
|
`pt` reaches a named part with a class list — or, in the object form, a
|
|
189
196
|
style and attributes — optionally only while a state is on. Parts: `root`
|
|
190
|
-
(the
|
|
191
|
-
|
|
197
|
+
(the floating element — the bottom sheet on a phone), `panel` (the time box you
|
|
198
|
+
see: the popover's painted bubble on desktop, the box inside the sheet on a
|
|
199
|
+
phone), `sheet` (the bottom
|
|
200
|
+
sheet on a phone only, applied after `root`) and `item` (one column entry, a broadcast). States: `open`,
|
|
192
201
|
and `selected` per entry.
|
|
193
202
|
|
|
194
203
|
The opening-time cell above, restyled through those parts: the current
|
|
@@ -256,7 +265,7 @@ typeahead. Always pass a `label` when the trigger is an unlabelled cell or icon.
|
|
|
256
265
|
|
|
257
266
|
| Prop | Type | Default | Required | Description |
|
|
258
267
|
| --- | --- | --- | --- | --- |
|
|
259
|
-
| `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `item`, `root`, `sheet`. States: `open`, `selected`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
268
|
+
| `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `item`, `panel`, `root`, `sheet`. States: `open`, `selected`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
260
269
|
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the `activator` slot is not rendered and click + ARIA are attached programmatically to the referenced element — mirroring `BbDatePicker`. |
|
|
261
270
|
| `activeSegment` | `BbTimePickerSegment \| undefined` | | | Which end the columns edit in range mode (`v-model:active-segment`). Standalone use manages this internally via the in-panel toggle; a host can drive it. Ignored outside `range`. |
|
|
262
271
|
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile, open in a bottom off-canvas sheet instead of a floating popover. When unset, falls back to the global `config.adaptive`. |
|
|
@@ -270,7 +279,7 @@ typeahead. Always pass a `label` when the trigger is an unlabelled cell or icon.
|
|
|
270
279
|
| `max` | `string \| undefined` | | | Maximum selectable time in `HH:mm` format. Values outside the pattern throw during setup to surface configuration mistakes. |
|
|
271
280
|
| `min` | `string \| undefined` | | | Minimum selectable time in `HH:mm` format. Values outside the pattern throw during setup to surface configuration mistakes. |
|
|
272
281
|
| `modelValue` | `string \| string[] \| null` | | yes | v-model value: `null` for empty, a 24-hour `HH:mm` (or `HH:mm:ss` with `seconds`) string, or a two-element `[start, end]` array when `range` is true. |
|
|
273
|
-
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Extra props forwarded to the `BbOffCanvas` sheet when adaptive on mobile. |
|
|
282
|
+
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on mobile (e.g. `title`, `size`, `persistent`). Spread over the defaults: the sheet is `draggable` (the time wheels never drag it) and hides its ✕ (picking, backdrop… |
|
|
274
283
|
| `offset` | `number \| undefined` | `4` | | Space the popover keeps from the activator. |
|
|
275
284
|
| `padding` | `number \| undefined` | | | Minimum empty space to keep from the edge of the page. |
|
|
276
285
|
| `placement` | `Placement \| undefined` | | | Position of the popover relative to the activator/anchor. |
|
|
@@ -304,7 +313,7 @@ typeahead. Always pass a `label` when the trigger is an unlabelled cell or icon.
|
|
|
304
313
|
- **CSS custom properties** listed on a node are declared on THAT node's root and read by elements inside it. Set one on that node's root or on the element inside it that reads it — the pt part that lands there is how you reach it (`pt:box="[--border-color:…]"` on a text input) — never on `BbTimePicker`'s root, where the node's own declaration masks it (design-tokens guide, _Overriding one from a consumer app_, rule 0).
|
|
305
314
|
- Listed nodes are the ones `BbTimePicker`'s API reaches or that declare a documented CSS variable; the rest fold into "also mounts". The complete tree, repeats and undocumented locals included, is the `tree` field of this component in `components.json`.
|
|
306
315
|
|
|
307
|
-
- `BbTimePicker` _(this component)_ — its own template binds: `
|
|
316
|
+
- `BbTimePicker` _(this component)_ — its own template binds: `panel` → `div`, `panel` → `CommonPopover`; hands `BbOffCanvas` the pt map `{ sheet: 'root' }` (ours → theirs)
|
|
308
317
|
- `CommonTimeSelector` _(internal — not importable, reach it through `BbTimePicker`)_ — `BbTimePicker`'s pt parts land here: `item` → `BbBaseButton`; documented CSS variables: `--time-mark`
|
|
309
318
|
- `BbBaseButton` _(public — [contract](./BbBaseButton.md))_ — its own pt parts (`BbBaseButton`): `root` → `RouterComponent`, `root` → `a`, `root` → `component`; also mounts `RouterComponent`
|
|
310
319
|
- `BbOffCanvas` _(public — [contract](./BbOffCanvas.md))_ — its own pt parts (`BbOffCanvas`): `header` → `div.bb-offcanvas__header`, `title` → `span.bb-offcanvas__title`, `description` → `p.bb-offcanvas__description`, `close` → `CloseButton`, `content` → `div.bb-offcanvas__body`, `footer` → `div.bb-offcanvas__footer`; documented CSS variables: `--stack-x`, `--stack-fill`, `--stack-transition-duration`, `--px`, `--close-size`
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
| pt part | Lands on | In |
|
|
16
16
|
| --- | --- | --- |
|
|
17
|
+
| `pt:panel` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
17
18
|
| `pt:sheet` | `pt:root` of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
18
19
|
| `pt:root` | `div.bb-field` | `CommonField` _(internal)_ |
|
|
19
20
|
| `pt:label` | `component` | `CommonField` _(internal)_ |
|
|
@@ -100,6 +101,13 @@ is required.
|
|
|
100
101
|
<BbTimePickerInput v-model="state.slotAt" ampm :step="15" label="Pickup slot" />
|
|
101
102
|
```
|
|
102
103
|
|
|
104
|
+
Native attributes that describe typing — `spellcheck`, `autocapitalize`,
|
|
105
|
+
`autocorrect`, `enterkeyhint` — and `form` go to **every segment** (each one
|
|
106
|
+
is a real `<input>` that posts its own `<name>-<field>`); `maxlength`,
|
|
107
|
+
`pattern` and `list` are not routed, because each segment sets its own length
|
|
108
|
+
and parses its own digits. Any other attribute lands on the field root; a
|
|
109
|
+
`pt:input` attribute reaches every segment and wins over the routed ones.
|
|
110
|
+
|
|
103
111
|
### Bounds & ranges
|
|
104
112
|
|
|
105
113
|
`min` / `max` (`HH:mm`) clamp typed times when interaction ends — the value
|
|
@@ -125,7 +133,9 @@ end]`; typing an inverted pair swaps it on blur with the usual
|
|
|
125
133
|
|
|
126
134
|
The popover follows the family's adaptive pattern: on mobile (with the global
|
|
127
135
|
`config.adaptive`, or the `adaptive` prop) the columns open in a bottom sheet
|
|
128
|
-
|
|
136
|
+
that drags down to dismiss and shows no ✕ (the wheels never drag it;
|
|
137
|
+
`offCanvasProps` is spread over those defaults — `{ hideClose: false }` brings
|
|
138
|
+
the ✕ back). `disableWriting` (`true` / `'mobile'` /
|
|
129
139
|
`'desktop'`) turns off typing per platform — the columns then carry the
|
|
130
140
|
interaction.
|
|
131
141
|
|
|
@@ -155,7 +165,7 @@ the `BbTextInput` guide.
|
|
|
155
165
|
|
|
156
166
|
`pt` reaches a named part of the control with a class list — or, in the
|
|
157
167
|
object form, a style and attributes — optionally only while a state is on.
|
|
158
|
-
Parts: `root` (the container), `label`, `description`, `message` (the errors / warnings region — one node each, only one ever shows), `hint` (the helper line — shown on focus, or always with `persistent-hint`), `box` (the bordered field box), `input` (the native control), `icon` (`prepend:icon` + `append:icon` — a broadcast; the state glyphs are chrome), `spinner` (the spinner shown while `loading`), `prefix`, `suffix`, `clear` (the ✕ that empties the field). Plus `panel` (the time
|
|
168
|
+
Parts: `root` (the container), `label`, `description`, `message` (the errors / warnings region — one node each, only one ever shows), `hint` (the helper line — shown on focus, or always with `persistent-hint`), `box` (the bordered field box), `input` (the native control), `icon` (`prepend:icon` + `append:icon` — a broadcast; the state glyphs are chrome), `spinner` (the spinner shown while `loading`), `prefix`, `suffix`, `clear` (the ✕ that empties the field). Plus `panel` (the time box you see — the popover's painted bubble on desktop, the box inside the sheet on a phone), `sheet` (the bottom sheet on a phone only) and `item` (one column entry, a broadcast). `input` is every segment field; the clock trigger is chrome.
|
|
159
169
|
States: `errors`, `warnings` (never beside errors), `loading`, `disabled`, `readonly`, `has-value` (written `pt:box:has-value`). Plus `open` (the panel is showing) and `selected`, resolved per entry. A name outside that list is a type error and an
|
|
160
170
|
ESLint error.
|
|
161
171
|
|
|
@@ -290,7 +300,7 @@ Messages _also_ render in an `aria-live="polite"` region.
|
|
|
290
300
|
| `min` | `string \| undefined` | | | Minimum selectable time in `HH:mm` format. Values outside the pattern throw during setup to surface configuration mistakes. |
|
|
291
301
|
| `modelValue` | `string \| string[] \| null` | | yes | v-model value: `null` for empty, a 24-hour `HH:mm` (or `HH:mm:ss` with `seconds`) string, or a two-element array when `range` is true. |
|
|
292
302
|
| `name` | `string \| undefined` | | | Defines the name of the input. |
|
|
293
|
-
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on mobile (e.g. `title`, `size`, `persistent`). |
|
|
303
|
+
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on mobile (e.g. `title`, `size`, `persistent`). Spread over the defaults: the sheet is `draggable` (the time wheels never drag it) and hides its ✕ (picking, backdrop… |
|
|
294
304
|
| `persistentHint` | `boolean \| undefined` | `false` | | Keeps the hint displayed. |
|
|
295
305
|
| `placeholder` | `string \| undefined` | | | String displayed when there's no data. |
|
|
296
306
|
| `prepend:icon` | `string \| undefined` | | | Name of the icon to be added at the start of the input. |
|
|
@@ -354,7 +364,7 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
354
364
|
- **CSS custom properties** listed on a node are declared on THAT node's root and read by elements inside it. Set one on that node's root or on the element inside it that reads it — the pt part that lands there is how you reach it (`pt:box="[--border-color:…]"` on a text input) — never on `BbTimePickerInput`'s root, where the node's own declaration masks it (design-tokens guide, _Overriding one from a consumer app_, rule 0).
|
|
355
365
|
- Listed nodes are the ones `BbTimePickerInput`'s API reaches or that declare a documented CSS variable; the rest fold into "also mounts". The complete tree, repeats and undocumented locals included, is the `tree` field of this component in `components.json`.
|
|
356
366
|
|
|
357
|
-
- `BbTimePickerInput` _(this component)_ — its own template binds: `input` → `input.bb-segmented-field__field`, `suffix` → `span.bb-field-input__suffix`, `panel` → `div
|
|
367
|
+
- `BbTimePickerInput` _(this component)_ — its own template binds: `controlAttrs` → `input.bb-segmented-field__field`, `input` → `input.bb-segmented-field__field`, `suffix` → `span.bb-field-input__suffix`, `panel` → `div`, `panel` → `CommonPopover`; hands `BbOffCanvas` the pt map `{ sheet: 'root' }` (ours → theirs)
|
|
358
368
|
- `BbOffCanvas` _(public — [contract](./BbOffCanvas.md))_ — its own pt parts (`BbOffCanvas`): `header` → `div.bb-offcanvas__header`, `title` → `span.bb-offcanvas__title`, `description` → `p.bb-offcanvas__description`, `close` → `CloseButton`, `content` → `div.bb-offcanvas__body`, `footer` → `div.bb-offcanvas__footer`; documented CSS variables: `--stack-x`, `--stack-fill`, `--stack-transition-duration`, `--px`, `--close-size`
|
|
359
369
|
- `CloseButton` _(internal — not importable, reach it through `BbOffCanvas`)_ — documented CSS variables: `--size`, `--p`
|
|
360
370
|
- `CommonField` _(internal — not importable, reach it through `BbTimePickerInput`)_ — `BbTimePickerInput`'s pt parts land here: `root` → `div.bb-field`, `label` → `component`, `description` → `span.bb-field__description`, `hint` → `span.bb-field__hint-text`, `message` → `div.bb-field__errors`, `message` → `div.bb-field__warnings`
|
package/dist/ai/BbToast.md
CHANGED
|
@@ -57,6 +57,14 @@ import { BbToast } from 'bitboss-ui';
|
|
|
57
57
|
</script>
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
**Areas with their own look.** A toast takes the passthrough scope and the
|
|
61
|
+
tokens of the place its HOST is mounted, not of the code that fired it. When
|
|
62
|
+
the app is split into areas that each wrap their pages in `<BbPtScope>`
|
|
63
|
+
([passthrough guide](./guides/passthrough.md) § Named scopes), mount one
|
|
64
|
+
`<BbToast />` inside each area's layout, within its scope, and none at the app
|
|
65
|
+
root. That still means one host at a time — as long as **every** page renders
|
|
66
|
+
inside exactly one of those layouts.
|
|
67
|
+
|
|
60
68
|
On Nuxt the host goes in `app.vue`; on Inertia, in the `createInertiaApp`
|
|
61
69
|
render root — one mount above the router, so every page shares it and no page
|
|
62
70
|
mounts its own. **Every example on this page mounts its own `<BbToast />` only
|
|
@@ -736,8 +744,8 @@ The full grammar, the merge rules and the global map are in the
|
|
|
736
744
|
|
|
737
745
|
- **No host, no toasts**: `toast(...)` without a mounted `<BbToast />`
|
|
738
746
|
enqueues silently — and the messages never expire, because the dismiss timer
|
|
739
|
-
lives inside the host. Mount exactly one host
|
|
740
|
-
page or per component.
|
|
747
|
+
lives inside the host. Mount exactly one host at a time: at the app root
|
|
748
|
+
(or one per area layout, see _Setup_) — never one per page or per component.
|
|
741
749
|
- Don't hand-roll notification markup or timers; between variants, upsert,
|
|
742
750
|
portals, and persistence the component covers it.
|
|
743
751
|
- Don't put must-act information only in a toast — it self-dismisses.
|
package/dist/ai/changelog.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"library": "bitboss-ui",
|
|
4
|
-
"version": "3.0.0-beta.
|
|
4
|
+
"version": "3.0.0-beta.28",
|
|
5
5
|
"upgrade": "v2-to-v3",
|
|
6
6
|
"guide": "ai/guides/migration/v2-to-v3.md",
|
|
7
7
|
"releases": [
|
|
@@ -39,11 +39,13 @@
|
|
|
39
39
|
"3.0.0-beta.23",
|
|
40
40
|
"3.0.0-beta.24",
|
|
41
41
|
"3.0.0-beta.25",
|
|
42
|
-
"3.0.0-beta.26"
|
|
42
|
+
"3.0.0-beta.26",
|
|
43
|
+
"3.0.0-beta.27",
|
|
44
|
+
"3.0.0-beta.28"
|
|
43
45
|
],
|
|
44
46
|
"summary": {
|
|
45
47
|
"renames": 64,
|
|
46
|
-
"behaviourBreaks":
|
|
48
|
+
"behaviourBreaks": 72,
|
|
47
49
|
"unreleased": 0
|
|
48
50
|
},
|
|
49
51
|
"breaking": [
|
|
@@ -564,10 +566,10 @@
|
|
|
564
566
|
".bb-color-palette"
|
|
565
567
|
],
|
|
566
568
|
"from": ".bb-base-color-palette (the picker root)",
|
|
567
|
-
"to": ".bb-color-
|
|
569
|
+
"to": ".bb-color-palette__panel (__picker until Queue 37)",
|
|
568
570
|
"since": "",
|
|
569
571
|
"default": "",
|
|
570
|
-
"firstReleasedIn": "3.0.0-beta.
|
|
572
|
+
"firstReleasedIn": "3.0.0-beta.28"
|
|
571
573
|
},
|
|
572
574
|
{
|
|
573
575
|
"kind": "rename",
|
|
@@ -949,6 +951,13 @@
|
|
|
949
951
|
"guide": "components/bb-popover.md",
|
|
950
952
|
"firstReleasedIn": "3.0.0-beta.17"
|
|
951
953
|
},
|
|
954
|
+
{
|
|
955
|
+
"kind": "behaviour",
|
|
956
|
+
"description": "Picker pt surfaces: BbColorPalette / BbTimePicker / BbDatePicker pt:root moves from the inner content box to the floating element (the sheet on a phone); the box is the new pt:panel (the bubble). BbSelect / BbDatePickerInput / BbTimePickerInput pt:panel now land on the painted bubble, not the floating element / inner box. Classes __picker / __calendar → __panel",
|
|
957
|
+
"ruling": "Q37",
|
|
958
|
+
"guide": "ai/guides/passthrough.md (picker surfaces)",
|
|
959
|
+
"firstReleasedIn": "3.0.0-beta.27"
|
|
960
|
+
},
|
|
952
961
|
{
|
|
953
962
|
"kind": "behaviour",
|
|
954
963
|
"description": "BbDropdown fetched (pipeline) rows no longer copy BbBaseButton props / icons / variant / onClick / disabled off the raw item — every field beyond text and value comes only from itemProps",
|
|
@@ -1235,6 +1244,55 @@
|
|
|
1235
1244
|
"ruling": "owner 2026-09-16 (date-picker pt parts)",
|
|
1236
1245
|
"guide": "v2-to-v3.md §5.6",
|
|
1237
1246
|
"firstReleasedIn": "3.0.0-beta.26"
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
"kind": "behaviour",
|
|
1250
|
+
"description": "BbDropdown defineExpose({ open }) (v3 prereleases only; v2 had no such handle) removed → show / hide events (and shown / hidden); BbDropdownButton reads them",
|
|
1251
|
+
"ruling": "Q30.4 (owner 2026-09-16)",
|
|
1252
|
+
"guide": "none — a v2 app never had it; components/bb-dropdown.md lists the surviving loading row",
|
|
1253
|
+
"firstReleasedIn": "3.0.0-beta.28"
|
|
1254
|
+
},
|
|
1255
|
+
{
|
|
1256
|
+
"kind": "behaviour",
|
|
1257
|
+
"description": "BbDatePicker defineExpose({ calendarEl }) (v3 prereleases only) removed → the calendar is reachable through its pt:panel / pt:day parts and the show / shown events",
|
|
1258
|
+
"ruling": "Q30.4 (owner 2026-09-16)",
|
|
1259
|
+
"guide": "none — v2 had no standalone BbDatePicker",
|
|
1260
|
+
"firstReleasedIn": "3.0.0-beta.28"
|
|
1261
|
+
},
|
|
1262
|
+
{
|
|
1263
|
+
"kind": "behaviour",
|
|
1264
|
+
"description": "BbDatePicker / BbTimePicker / BbColorPalette: a consumer class / $attrs lands on the floating element (the popover; the sheet on a phone) — before 3.0.0-beta.28 it was dropped on the fragment root with a Vue warning",
|
|
1265
|
+
"ruling": "Q39 (P11)",
|
|
1266
|
+
"guide": "ai/guides/passthrough.md (picker surfaces)",
|
|
1267
|
+
"firstReleasedIn": "3.0.0-beta.28"
|
|
1268
|
+
},
|
|
1269
|
+
{
|
|
1270
|
+
"kind": "behaviour",
|
|
1271
|
+
"description": "Open overlays close on KeepAlive deactivation: BbDialog / BbOffCanvas / BbPopover / BbTooltip emit update:modelValue false, BbDropdown / BbSelectPopover / the three standalone pickers emit hide; a BbTable resize or drag in flight is cancelled (nothing emitted). Before, a cached open surface kept its document listeners and a modal <dialog> lost its top layer",
|
|
1272
|
+
"ruling": "Q39.6 (2026-09-16)",
|
|
1273
|
+
"guide": "none needed — a cached surface reopens as usual; noted in each component's source",
|
|
1274
|
+
"firstReleasedIn": "3.0.0-beta.28"
|
|
1275
|
+
},
|
|
1276
|
+
{
|
|
1277
|
+
"kind": "behaviour",
|
|
1278
|
+
"description": "BbDropdownButton declares pt:item:selected / pt:item-text:selected / pt:item-icon:selected / pt:item-description:selected (additive; the entry parts only)",
|
|
1279
|
+
"ruling": "Q39.2 (2026-09-16)",
|
|
1280
|
+
"guide": "none — additive",
|
|
1281
|
+
"firstReleasedIn": "3.0.0-beta.28"
|
|
1282
|
+
},
|
|
1283
|
+
{
|
|
1284
|
+
"kind": "behaviour",
|
|
1285
|
+
"description": "BbSelect routes a consumer form attribute to its hidden inputs; BbDatePickerInput / BbTimePickerInput route form, spellcheck, autocapitalize, autocorrect, enterkeyhint to every segment (they used to land on .bb-field)",
|
|
1286
|
+
"ruling": "Q39.1 (2026-09-16)",
|
|
1287
|
+
"guide": "components/bb-text-input.md (family note)",
|
|
1288
|
+
"firstReleasedIn": "3.0.0-beta.28"
|
|
1289
|
+
},
|
|
1290
|
+
{
|
|
1291
|
+
"kind": "behaviour",
|
|
1292
|
+
"description": "BbTable virtual: the first frame renders a window of rows from the estimates (server render and the client's first frame alike; was an empty body until the first virtualizer flush). Scroll height settles once the first measurements land, a frame or two after mount",
|
|
1293
|
+
"ruling": "Q36 (2026-09-17)",
|
|
1294
|
+
"guide": "none — additive; nothing observable after the first frame",
|
|
1295
|
+
"firstReleasedIn": "3.0.0-beta.28"
|
|
1238
1296
|
}
|
|
1239
1297
|
]
|
|
1240
1298
|
}
|