bitboss-ui 3.0.0-beta.26 → 3.0.0-beta.27
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/dist/ai/BbColorInput.md +5 -4
- package/dist/ai/BbColorPalette.md +20 -5
- package/dist/ai/BbDatePicker.md +29 -11
- package/dist/ai/BbDatePickerInput.md +4 -4
- package/dist/ai/BbSelect.md +4 -4
- package/dist/ai/BbSelectPopover.md +9 -8
- package/dist/ai/BbTimePicker.md +19 -4
- package/dist/ai/BbTimePickerInput.md +3 -2
- package/dist/ai/changelog.json +11 -3
- package/dist/ai/components.json +292 -41
- package/dist/ai/guides/passthrough.md +81 -63
- package/dist/ai/source/BbColorInput.md +6 -4
- package/dist/ai/source/BbColorPalette.md +198 -183
- package/dist/ai/source/BbDatePicker.md +347 -323
- package/dist/ai/source/BbDatePickerInput.md +2 -2
- package/dist/ai/source/BbSelect.md +2 -2
- package/dist/ai/source/BbSelectPopover.md +13 -1
- package/dist/ai/source/BbTimePicker.md +72 -44
- package/dist/ai/source/BbTimePickerInput.md +47 -25
- package/dist/ai/source/CommonTimeSelector.md +1 -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 +217 -216
- package/dist/components/BbColorPalette/types.d.ts +3 -3
- package/dist/components/BbColorPalette/types.js +1 -0
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +241 -229
- package/dist/components/BbDatePicker/types.d.ts +3 -3
- package/dist/components/BbDatePicker/types.js +1 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbDatePickerInput/types.d.ts +1 -1
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbSelect/types.d.ts +1 -1
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +69 -63
- package/dist/components/BbSelectPopover/types.d.ts +3 -3
- package/dist/components/BbSelectPopover/types.js +1 -0
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +123 -118
- package/dist/components/BbTimePicker/types.d.ts +3 -3
- package/dist/components/BbTimePicker/types.js +1 -0
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +230 -226
- package/dist/components/BbTimePickerInput/types.d.ts +1 -1
- package/dist/llms-full.txt +174 -105
- package/dist/styles.css +1 -1
- package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +7 -0
- package/package.json +1 -1
package/dist/ai/BbColorInput.md
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
| pt part | Lands on | In |
|
|
16
16
|
| --- | --- | --- |
|
|
17
|
+
| `pt:panel` | `pt:panel` of `BbColorPalette` | `BbColorPalette` ([contract](./BbColorPalette.md)) |
|
|
17
18
|
| `pt:sheet` | `pt:sheet` of `BbColorPalette` | `BbColorPalette` ([contract](./BbColorPalette.md)) |
|
|
18
19
|
| `pt:swatch` | `pt:swatch` of `BbColorPalette` | `BbColorPalette` ([contract](./BbColorPalette.md)) |
|
|
19
20
|
| `pt:root` | `div.bb-field` | `CommonField` _(internal)_ |
|
|
@@ -504,7 +505,7 @@ the `BbTextInput` guide.
|
|
|
504
505
|
|
|
505
506
|
`pt` reaches a named part of the control with a class list — or, in the
|
|
506
507
|
object form, a style and attributes — optionally only while a state is on.
|
|
507
|
-
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 `indicator` (the colour dot that opens the palette), `sheet` (the bottom sheet the color palette opens in on a phone — no node on desktop) and `swatch` (one palette swatch, after the `swatches` prop — a broadcast).
|
|
508
|
+
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 `indicator` (the colour dot that opens the palette), `panel` (the palette box — the popover's painted bubble on desktop, the box inside the sheet on a phone), `sheet` (the bottom sheet the color palette opens in on a phone — no node on desktop) and `swatch` (one palette swatch, after the `swatches` prop — a broadcast).
|
|
508
509
|
States: `errors`, `warnings` (never beside errors), `loading`, `disabled`, `readonly`, `has-value` (written `pt:box:has-value`), on every part; plus `selected` on `swatch` only — the swatch matching the value (`pt:swatch:selected`). A name outside that list is a type error and an
|
|
509
510
|
ESLint error.
|
|
510
511
|
|
|
@@ -663,7 +664,7 @@ of it. The full grammar, the merge rules and the global map are in the
|
|
|
663
664
|
|
|
664
665
|
| Prop | Type | Default | Required | Description |
|
|
665
666
|
| --- | --- | --- | --- | --- |
|
|
666
|
-
| `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: `box`, `clear`, `description`, `hint`, `icon`, `indicator`, `input`, `label`, `message`, `prefix`, `root`, `sheet`, `spinner`, `suffix`, `swatch`. States: `disabled`, `errors`, `has-value`, `loading`, `readonly`, `warnings`, `selected`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
667
|
+
| `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: `box`, `clear`, `description`, `hint`, `icon`, `indicator`, `input`, `label`, `message`, `panel`, `prefix`, `root`, `sheet`, `spinner`, `suffix`, `swatch`. States: `disabled`, `errors`, `has-value`, `loading`, `readonly`, `warnings`, `selected`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
667
668
|
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | When `true`, the color palette opens as a bottom off-canvas sheet on mobile viewports instead of a floating popover; on desktop it stays a popover. Mirrors the adaptive behaviour of `BbSelect`/`BbDatePickerInput`. When unset, falls back to … |
|
|
668
669
|
| `alpha` | `boolean \| undefined` | `false` | | Enable the alpha channel. Shows an opacity slider and uses `#RRGGBBAA` hex8 format. |
|
|
669
670
|
| `append:icon` | `string \| undefined` | | | Name of the icon to be added at the end of the input. |
|
|
@@ -757,10 +758,10 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
757
758
|
- **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 `BbColorInput`'s root, where the node's own declaration masks it (design-tokens guide, _Overriding one from a consumer app_, rule 0).
|
|
758
759
|
- Listed nodes are the ones `BbColorInput`'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`.
|
|
759
760
|
|
|
760
|
-
- `BbColorInput` _(this component)_ — its own template binds: `controlAttrs` → `input.bb-color-input__input`, `input` → `input.bb-color-input__input`, `indicator` → `button.bb-color-input__indicator`, `suffix` → `span.bb-field-input__suffix`; hands `BbColorPalette` the pt map `{ sheet: 'sheet', swatch: 'swatch' }` (ours → theirs)
|
|
761
|
+
- `BbColorInput` _(this component)_ — its own template binds: `controlAttrs` → `input.bb-color-input__input`, `input` → `input.bb-color-input__input`, `indicator` → `button.bb-color-input__indicator`, `suffix` → `span.bb-field-input__suffix`; hands `BbColorPalette` the pt map `{ panel: 'panel', sheet: 'sheet', swatch: 'swatch' }` (ours → theirs)
|
|
761
762
|
- `CommonField` _(internal — not importable, reach it through `BbColorInput`)_ — `BbColorInput`'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`
|
|
762
763
|
- `CommonFieldInput` _(internal — not importable, reach it through `BbColorInput`)_ — `BbColorInput`'s pt parts land here: `box` → `span.bb-field-input__box`, `prefix` → `span.bb-field-input__prefix`, `icon` → `BbIcon`, `clear` → `ClearableButton`, `spinner` → `BbSpinner`, `suffix` → `span.bb-field-input__suffix`; documented CSS variables: `--bg`, `--bg-hover`, `--bg-focus`, `--bg-disabled`, `--border-color`, `--border-focus`, `--ring-size`, `--ring-color`, `--elev`, `--frost`, `--inside-label-clearance`; also mounts `ErrorIcon`, `WarningIcon`, `ClearableButton`, `BbIcon`, `BbSpinner`
|
|
763
|
-
- `BbColorPalette` _(public — [contract](./BbColorPalette.md))_ — its own pt parts (`BbColorPalette`): `
|
|
764
|
+
- `BbColorPalette` _(public — [contract](./BbColorPalette.md))_ — its own pt parts (`BbColorPalette`): `swatch` → `button.bb-color-palette__swatch`, `root` → `BbOffCanvas`, `panel` → `div`, `panel` → `CommonPopover`, `root` → `CommonPopover`; hands `BbOffCanvas` the pt map `{ sheet: 'root' }` (ours → theirs); also mounts `CommonPopover`
|
|
764
765
|
- `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`
|
|
765
766
|
- `CloseButton` _(internal — not importable, reach it through `BbOffCanvas`)_ — documented CSS variables: `--size`, `--p`
|
|
766
767
|
|
|
@@ -14,8 +14,21 @@
|
|
|
14
14
|
|
|
15
15
|
| pt part | Lands on | In |
|
|
16
16
|
| --- | --- | --- |
|
|
17
|
+
| `pt:root` | the root of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
18
|
+
| `pt:panel` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
19
|
+
| `pt:root` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
17
20
|
| `pt:sheet` | `pt:root` of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
18
21
|
|
|
22
|
+
**CSS variables you can set through those parts** — declared deeper in the tree, so set one on the part that reads it (`pt:<part>="[--name:value]"`), never on `BbColorPalette`'s root:
|
|
23
|
+
|
|
24
|
+
| Variable | Set through | Declared by | What it is |
|
|
25
|
+
| --- | --- | --- | --- |
|
|
26
|
+
| `--stack-x` | `pt:root` | `BbOffCanvas` | Inward shift applied to a parent panel while a child is stacked on top. |
|
|
27
|
+
| `--stack-fill` | `pt:root` | `BbOffCanvas` | Length of the pad (see `::after`) that fills from the panel's anchored edge out to the screen edge, so no empty band shows when a descendant is dragged away or shrinks. |
|
|
28
|
+
| `--stack-transition-duration` | `pt:root` | `BbOffCanvas` | Duration for the stack shift + pad. Zeroed while a peer resizes so parents track the live size instead of lagging behind a 250ms animation. |
|
|
29
|
+
| `--px` | `pt:root` | `BbOffCanvas` | Axis split of --bb-panel-p: --px (inline) / --py (block), each branching off it. Set the pair only when the axes differ; setting --bb-panel-p alone keeps them equal. Local on this root class (not :roo… |
|
|
30
|
+
| `--close-size` | `pt:root` | `BbOffCanvas` | Shared by the close control and by the space the title reserves for it, * so the two can never drift apart. |
|
|
31
|
+
|
|
19
32
|
## Usage & Guidelines
|
|
20
33
|
|
|
21
34
|
### When to use
|
|
@@ -556,9 +569,11 @@ styling (a caret, a highlight). Two props gate interaction:
|
|
|
556
569
|
|
|
557
570
|
`pt` reaches a named part with a class list — or, in the object form, a
|
|
558
571
|
style and attributes — optionally only while a state is on. Parts: `root`
|
|
559
|
-
(the
|
|
560
|
-
|
|
561
|
-
|
|
572
|
+
(the floating element — the bottom sheet on a phone), `panel` (the palette box you
|
|
573
|
+
see: the popover's painted bubble on desktop, the box inside the sheet on a
|
|
574
|
+
phone — canvas, sliders, swatches; `pt:panel="px-1"`
|
|
575
|
+
tightens its padding), `sheet` (the bottom sheet on a phone only, applied
|
|
576
|
+
after `root`) and `swatch` (one swatch, named after the `swatches` prop — a
|
|
562
577
|
broadcast). States: `open`, and
|
|
563
578
|
`selected` per swatch (the one matching the value). The canvas and the sliders
|
|
564
579
|
are not parts.
|
|
@@ -733,7 +748,7 @@ The full grammar, the merge rules and the global map are in the
|
|
|
733
748
|
|
|
734
749
|
| Prop | Type | Default | Required | Description |
|
|
735
750
|
| --- | --- | --- | --- | --- |
|
|
736
|
-
| `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: `root`, `sheet`, `swatch`. States: `open`, `selected`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
751
|
+
| `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: `panel`, `root`, `sheet`, `swatch`. States: `open`, `selected`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
737
752
|
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the `activator` slot is not rendered and click listeners are attached programmatically to the referenced element — mirroring the BbDropdown activator API. |
|
|
738
753
|
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | When `true`, the palette opens as a bottom off-canvas sheet on mobile viewports instead of a floating popover; on desktop it stays a popover. Mirrors the adaptive behaviour of `BbPopover`/`BbDropdown`/`BbDatePicker`. When unset, falls back … |
|
|
739
754
|
| `alpha` | `boolean \| undefined` | `false` | | Enable the alpha channel. The picker shows an opacity slider and emits `#RRGGBBAA` hex8 values. |
|
|
@@ -774,7 +789,7 @@ The full grammar, the merge rules and the global map are in the
|
|
|
774
789
|
- **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 `BbColorPalette`'s root, where the node's own declaration masks it (design-tokens guide, _Overriding one from a consumer app_, rule 0).
|
|
775
790
|
- Listed nodes are the ones `BbColorPalette`'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`.
|
|
776
791
|
|
|
777
|
-
- `BbColorPalette` _(this component)_ — its own template binds: `
|
|
792
|
+
- `BbColorPalette` _(this component)_ — its own template binds: `swatch` → `button.bb-color-palette__swatch`, `root` → `BbOffCanvas`, `panel` → `div`, `panel` → `CommonPopover`, `root` → `CommonPopover`; hands `BbOffCanvas` the pt map `{ sheet: 'root' }` (ours → theirs)
|
|
778
793
|
- `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`
|
|
779
794
|
- `CloseButton` _(internal — not importable, reach it through `BbOffCanvas`)_ — documented CSS variables: `--size`, `--p`
|
|
780
795
|
- Also mounts `CommonPopover`
|
package/dist/ai/BbDatePicker.md
CHANGED
|
@@ -17,8 +17,21 @@
|
|
|
17
17
|
| `pt:arrow` | the root of `BbBaseButton` | `BbBaseButton` ([contract](./BbBaseButton.md)) |
|
|
18
18
|
| `pt:month` | the root of `BbBaseButton` | `BbBaseButton` ([contract](./BbBaseButton.md)) |
|
|
19
19
|
| `pt:year` | the root of `BbBaseButton` | `BbBaseButton` ([contract](./BbBaseButton.md)) |
|
|
20
|
+
| `pt:root` | the root of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
21
|
+
| `pt:panel` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
22
|
+
| `pt:root` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
20
23
|
| `pt:sheet` | `pt:root` of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
21
24
|
|
|
25
|
+
**CSS variables you can set through those parts** — declared deeper in the tree, so set one on the part that reads it (`pt:<part>="[--name:value]"`), never on `BbDatePicker`'s root:
|
|
26
|
+
|
|
27
|
+
| Variable | Set through | Declared by | What it is |
|
|
28
|
+
| --- | --- | --- | --- |
|
|
29
|
+
| `--stack-x` | `pt:root` | `BbOffCanvas` | Inward shift applied to a parent panel while a child is stacked on top. |
|
|
30
|
+
| `--stack-fill` | `pt:root` | `BbOffCanvas` | Length of the pad (see `::after`) that fills from the panel's anchored edge out to the screen edge, so no empty band shows when a descendant is dragged away or shrinks. |
|
|
31
|
+
| `--stack-transition-duration` | `pt:root` | `BbOffCanvas` | Duration for the stack shift + pad. Zeroed while a peer resizes so parents track the live size instead of lagging behind a 250ms animation. |
|
|
32
|
+
| `--px` | `pt:root` | `BbOffCanvas` | Axis split of --bb-panel-p: --px (inline) / --py (block), each branching off it. Set the pair only when the axes differ; setting --bb-panel-p alone keeps them equal. Local on this root class (not :roo… |
|
|
33
|
+
| `--close-size` | `pt:root` | `BbOffCanvas` | Shared by the close control and by the space the title reserves for it, * so the two can never drift apart. |
|
|
34
|
+
|
|
22
35
|
## Usage & Guidelines
|
|
23
36
|
|
|
24
37
|
### When to use
|
|
@@ -252,8 +265,11 @@ into, `BbDatePickerInput` when there is.
|
|
|
252
265
|
|
|
253
266
|
`pt` reaches a named part with a class list — or, in the object form, a
|
|
254
267
|
style and attributes — optionally only while a state is on. Parts: `root`
|
|
255
|
-
(the
|
|
256
|
-
|
|
268
|
+
(the floating element — the bottom sheet on a phone), `panel` (the calendar box you
|
|
269
|
+
see: the popover's painted bubble on desktop, the box inside the sheet on a
|
|
270
|
+
phone — it also carries the sizing tokens, so
|
|
271
|
+
`pt:panel="[--pad-x:2px]"` tightens the padding and the grid width follows), `sheet` (the
|
|
272
|
+
bottom sheet on a phone only, applied after `root`), `header` (the
|
|
257
273
|
navigation bar), `arrow` (the previous / next buttons), `month` and `year`
|
|
258
274
|
(the heading buttons), `column-header` (each weekday letter), `day` (one whole
|
|
259
275
|
day cell) and `day-button` (the button inside it), `month-item` and
|
|
@@ -355,7 +371,7 @@ and digit typeahead; the time rail exposes labelled columns. Always pass a
|
|
|
355
371
|
|
|
356
372
|
| Prop | Type | Default | Required | Description |
|
|
357
373
|
| --- | --- | --- | --- | --- |
|
|
358
|
-
| `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: `arrow`, `column-header`, `day`, `day-button`, `header`, `month`, `month-item`, `root`, `sheet`, `year`, `year-item`. States: `active`, `disabled`, `highlighted`, `in-range`, `open`, `outside`, `range-end`, `range-start`, `selected`, `today`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
374
|
+
| `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: `arrow`, `column-header`, `day`, `day-button`, `header`, `month`, `month-item`, `panel`, `root`, `sheet`, `year`, `year-item`. States: `active`, `disabled`, `highlighted`, `in-range`, `open`, `outside`, `range-end`, `range-start`, `selected`, `today`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
359
375
|
| `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 the `BbColorPalette` activator API. |
|
|
360
376
|
| `activeSegment` | `BbDatePickerSegment \| undefined` | | | Which end the time rail edits in range + `type="datetime"` (`v-model:active-segment`). Standalone use manages this internally; an embedding host (the date input) drives it from its focused field. Ignored outside range + datetime. |
|
|
361
377
|
| `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`. |
|
|
@@ -410,14 +426,16 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
410
426
|
|
|
411
427
|
| Property | Set on | Default | What it is |
|
|
412
428
|
| --- | --- | --- | --- |
|
|
413
|
-
| `--cell` | `.bb-date-
|
|
414
|
-
| `--pad-x` | `.bb-date-
|
|
415
|
-
| `--pad-y` | `.bb-date-
|
|
416
|
-
| `--nav-button-h` | `.bb-date-
|
|
429
|
+
| `--cell` | `.bb-date-picker__panel` | `28px` | Cell size drives all grid math: 224px ÷ 7 = 32px exactly |
|
|
430
|
+
| `--pad-x` | `.bb-date-picker__panel` | `6px` | |
|
|
431
|
+
| `--pad-y` | `.bb-date-picker__panel` | `8px` | |
|
|
432
|
+
| `--nav-button-h` | `.bb-date-picker__panel` | `24px` | |
|
|
433
|
+
| `--day-slot-allowance` | `.bb-date-picker__panel` | `0px` | Allowance for the day slot append area - needed for the slot to be visible |
|
|
434
|
+
| `--unit-row` | `.bb-date-picker__panel` | `calc(var(--cell) * 1.25)` | Row pitch for the coarse grids (month/year), where a "row" is one of four month rows rather than a week. Roomier than --cell because twelve months in a 4×3 grid have space the 6×7 day grid does not. |
|
|
417
435
|
| `--weeks` | `.bb-date-picker__grid` | `6` | |
|
|
418
|
-
| `--
|
|
419
|
-
| `--
|
|
420
|
-
| `--
|
|
436
|
+
| `--sheet-cell` | `.bb-date-picker__panel--sheet` | `40px` | Declared on the container so the time rail (the calendar's sibling) can align its wheels to the same column grid. |
|
|
437
|
+
| `--cell` | `.bb-date-picker__panel--sheet` | `var(--sheet-cell)` | One touch scale for the whole sheet: 40px day cells (36px marks), and a nav row to match — on the panel, where the tokens live. |
|
|
438
|
+
| `--nav-button-h` | `.bb-date-picker__panel--sheet` | `40px` | |
|
|
421
439
|
|
|
422
440
|
## Component tree
|
|
423
441
|
|
|
@@ -428,7 +446,7 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
428
446
|
- **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 `BbDatePicker`'s root, where the node's own declaration masks it (design-tokens guide, _Overriding one from a consumer app_, rule 0).
|
|
429
447
|
- Listed nodes are the ones `BbDatePicker`'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`.
|
|
430
448
|
|
|
431
|
-
- `BbDatePicker` _(this component)_ — its own template binds: `
|
|
449
|
+
- `BbDatePicker` _(this component)_ — its own template binds: `header` → `div.bb-date-picker__controls`, `arrow` → `BbBaseButton`, `month` → `BbBaseButton`, `year` → `BbBaseButton`, `day` → `div.bb-date-picker__date`, `day-button` → `button.bb-date-picker__date-button`, `root` → `BbOffCanvas`, `panel` → `div`, `panel` → `CommonPopover`, `root` → `CommonPopover`; hands `BbOffCanvas` the pt map `{ sheet: 'root' }` (ours → theirs)
|
|
432
450
|
- `BbBaseButton` _(public — [contract](./BbBaseButton.md))_ — its own pt parts (`BbBaseButton`): `root` → `RouterComponent`, `root` → `a`, `root` → `component`; also mounts `RouterComponent`
|
|
433
451
|
- `CommonTimeSelector` _(internal — not importable, reach it through `BbDatePicker`)_ — documented CSS variables: `--time-mark`; also mounts `BbBaseButton`
|
|
434
452
|
- `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,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
| pt part | Lands on | In |
|
|
16
16
|
| --- | --- | --- |
|
|
17
|
-
| `pt:panel` | `pt:
|
|
17
|
+
| `pt:panel` | `pt:panel` of `BbDatePicker` | `BbDatePicker` ([contract](./BbDatePicker.md)) |
|
|
18
18
|
| `pt:sheet` | `pt:sheet` of `BbDatePicker` | `BbDatePicker` ([contract](./BbDatePicker.md)) |
|
|
19
19
|
| `pt:header` | `pt:header` of `BbDatePicker` | `BbDatePicker` ([contract](./BbDatePicker.md)) |
|
|
20
20
|
| `pt:arrow` | `pt:arrow` of `BbDatePicker` | `BbDatePicker` ([contract](./BbDatePicker.md)) |
|
|
@@ -707,7 +707,7 @@ the `BbTextInput` guide.
|
|
|
707
707
|
|
|
708
708
|
`pt` reaches a named part of the control with a class list — or, in the
|
|
709
709
|
object form, a style and attributes — optionally only while a state is on.
|
|
710
|
-
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 calendar
|
|
710
|
+
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 calendar box you see — the popover's painted bubble on desktop, the box inside the sheet on a phone; it carries the sizing tokens, so `pt:panel="[--pad-x:2px]"` tightens it), `sheet` (the bottom sheet on a phone only) and the calendar's own parts, forwarded to it: `header`, `arrow`, `month`, `year`, `column-header`, `day` (the whole cell), `day-button` (the mark inside it), `month-item` and `year-item` — the `BbDatePicker` guide describes each node. `input` is every segment field; the calendar trigger is chrome.
|
|
711
711
|
States: `errors`, `warnings` (never beside errors), `loading`, `disabled`, `readonly`, `has-value` (written `pt:box:has-value`). Plus `open` (the calendar is showing), and the calendar's per-node states: `selected`, `disabled`, `today`, `outside`, `range-start` / `range-end` / `in-range` and `highlighted` on the cells, `active` on `month` / `year`. A name outside that list is a type error and an
|
|
712
712
|
ESLint error.
|
|
713
713
|
|
|
@@ -942,8 +942,8 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
942
942
|
- **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 `BbDatePickerInput`'s root, where the node's own declaration masks it (design-tokens guide, _Overriding one from a consumer app_, rule 0).
|
|
943
943
|
- Listed nodes are the ones `BbDatePickerInput`'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`.
|
|
944
944
|
|
|
945
|
-
- `BbDatePickerInput` _(this component)_ — its own template binds: `input` → `input.bb-segmented-field__field`, `suffix` → `span.bb-field-input__suffix`; hands `BbDatePicker` the pt map `{ panel: '
|
|
946
|
-
- `BbDatePicker` _(public — [contract](./BbDatePicker.md))_ — its own pt parts (`BbDatePicker`): `
|
|
945
|
+
- `BbDatePickerInput` _(this component)_ — its own template binds: `input` → `input.bb-segmented-field__field`, `suffix` → `span.bb-field-input__suffix`; hands `BbDatePicker` the pt map `{ panel: 'panel', sheet: 'sheet', header: 'header', arrow: 'arrow', month: 'month', year: 'year', 'column-header': 'column-header', day: 'day', 'day-button': 'day-button', 'month-item': 'month-item', 'year-item': 'year-item', }` (ours → theirs)
|
|
946
|
+
- `BbDatePicker` _(public — [contract](./BbDatePicker.md))_ — its own pt parts (`BbDatePicker`): `header` → `div.bb-date-picker__controls`, `arrow` → `BbBaseButton`, `month` → `BbBaseButton`, `year` → `BbBaseButton`, `day` → `div.bb-date-picker__date`, `day-button` → `button.bb-date-picker__date-button`, `root` → `BbOffCanvas`, `panel` → `div`, `panel` → `CommonPopover`, `root` → `CommonPopover`; hands `BbOffCanvas` the pt map `{ sheet: 'root' }` (ours → theirs); documented CSS variables: `--cell`, `--day-slot-allowance`, `--unit-row`, `--sheet-cell`, `--cell`; also mounts `CommonPopover`, `ScaleFade`, `Slide`, `DatePickerMonthPanel`, `DatePickerYearPanel`
|
|
947
947
|
- `BbBaseButton` _(public — [contract](./BbBaseButton.md))_ — its own pt parts (`BbBaseButton`): `root` → `RouterComponent`, `root` → `a`, `root` → `component`; also mounts `RouterComponent`
|
|
948
948
|
- `CommonTimeSelector` _(internal — not importable, reach it through `BbDatePicker`)_ — documented CSS variables: `--time-mark`; also mounts `BbBaseButton`
|
|
949
949
|
- `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`
|
package/dist/ai/BbSelect.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
| pt part | Lands on | In |
|
|
16
16
|
| --- | --- | --- |
|
|
17
|
-
| `pt:panel` | `pt:
|
|
17
|
+
| `pt:panel` | `pt:panel` of `BbSelectPopover` | `BbSelectPopover` ([contract](./BbSelectPopover.md)) |
|
|
18
18
|
| `pt:sheet` | `pt:sheet` of `BbSelectPopover` | `BbSelectPopover` ([contract](./BbSelectPopover.md)) |
|
|
19
19
|
| `pt:option` | `pt:option` of `BbSelectPopover` | `BbSelectPopover` ([contract](./BbSelectPopover.md)) |
|
|
20
20
|
| `pt:item-text` | `pt:item-text` of `BbSelectPopover` | `BbSelectPopover` ([contract](./BbSelectPopover.md)) |
|
|
@@ -1576,7 +1576,7 @@ the `BbTextInput` guide.
|
|
|
1576
1576
|
|
|
1577
1577
|
`pt` reaches a named part of the control with a class list — or, in the
|
|
1578
1578
|
object form, a style and attributes — optionally only while a state is on.
|
|
1579
|
-
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 options
|
|
1579
|
+
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 options 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), `option` (one listbox option, a broadcast), `item-text` (that option's label), `item-icon` (its `itemProps` prepend / append icons — never the field's `icon`) and `item-description` (its muted second line from `itemProps.description` — never the field's `description`), all with the option's `selected` / `disabled`; a custom `#option` slot replaces the label and description. `input` is the activator — the thing you act on to enter the value; the chevron and the clear ✕ are chrome.
|
|
1580
1580
|
States: `errors`, `warnings` (never beside errors), `loading`, `disabled`, `readonly`, `has-value` (written `pt:box:has-value`). Plus `open` (the options surface is showing) and `selected`, resolved per option. A name outside that list is a type error and an
|
|
1581
1581
|
ESLint error.
|
|
1582
1582
|
|
|
@@ -1863,11 +1863,11 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
1863
1863
|
- **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 `BbSelect`'s root, where the node's own declaration masks it (design-tokens guide, _Overriding one from a consumer app_, rule 0).
|
|
1864
1864
|
- Listed nodes are the ones `BbSelect`'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`.
|
|
1865
1865
|
|
|
1866
|
-
- `BbSelect` _(this component)_ — its own template binds: `input` → `input.bb-select__activator`; hands `BbSelectPopover` the pt map `{ panel: '
|
|
1866
|
+
- `BbSelect` _(this component)_ — its own template binds: `input` → `input.bb-select__activator`; hands `BbSelectPopover` the pt map `{ panel: 'panel', sheet: 'sheet', option: 'option', 'item-text': 'item-text', 'item-icon': 'item-icon', 'item-description': 'item-description', }` (ours → theirs)
|
|
1867
1867
|
- `CommonField` _(internal — not importable, reach it through `BbSelect`)_ — `BbSelect`'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`
|
|
1868
1868
|
- `CommonFieldInput` _(internal — not importable, reach it through `BbSelect`)_ — `BbSelect`'s pt parts land here: `box` → `span.bb-field-input__box`, `prefix` → `span.bb-field-input__prefix`, `icon` → `BbIcon`, `clear` → `ClearableButton`, `spinner` → `BbSpinner`, `suffix` → `span.bb-field-input__suffix`; documented CSS variables: `--bg`, `--bg-hover`, `--bg-focus`, `--bg-disabled`, `--border-color`, `--border-focus`, `--ring-size`, `--ring-color`, `--elev`, `--frost`, `--inside-label-clearance`; also mounts `ErrorIcon`, `WarningIcon`, `ClearableButton`, `BbIcon`, `BbSpinner`
|
|
1869
1869
|
- `BbBadge` _(public — [contract](./BbBadge.md))_ — its own pt parts (`BbBadge`): `spinner` → `BbSpinner`, `icon` → `BbIcon`, `clear` → `button.bb-badge__clear-button`; documented CSS variables: `--bg`, `--fg`, `--border-width`, `--ring`, `--min-size-md`, `--min-size`, `--elev`, `--radius`, `--font-size`, `--icon-size`, `--gap`, `--padding-inline`, `--clear-size`, `--pad-left`; also mounts `BbIcon`, `BbSpinner`, `BadgeBodyContent`
|
|
1870
|
-
- `BbSelectPopover` _(public — [contract](./BbSelectPopover.md))_ — its own pt parts (`BbSelectPopover`): `input` → `input.bb-select-popover__search-input`, `clear` → `ClearableButton`, `root` → `BbOffCanvas`, `root` → `CommonPopover`, `header` → `div.bb-select-popover__header`, `footer` → `div.bb-select-popover__footer`; hands `BbOffCanvas` the pt map `{ header: 'header', footer: 'footer', sheet: 'root' }` (ours → theirs); also mounts `BbBadge`, `BbIcon`, `ClearableButton`, `CommonPopover`, `ErrorIcon`, `WarningIcon`, `BbSmoothHeight`
|
|
1870
|
+
- `BbSelectPopover` _(public — [contract](./BbSelectPopover.md))_ — its own pt parts (`BbSelectPopover`): `input` → `input.bb-select-popover__search-input`, `clear` → `ClearableButton`, `root` → `BbOffCanvas`, `panel` → `div.bb-select-popover`, `panel` → `CommonPopover`, `root` → `CommonPopover`, `header` → `div.bb-select-popover__header`, `footer` → `div.bb-select-popover__footer`; hands `BbOffCanvas` the pt map `{ header: 'header', footer: 'footer', sheet: 'root' }` (ours → theirs); also mounts `BbBadge`, `BbIcon`, `ClearableButton`, `CommonPopover`, `ErrorIcon`, `WarningIcon`, `BbSmoothHeight`
|
|
1871
1871
|
- `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`
|
|
1872
1872
|
- `CloseButton` _(internal — not importable, reach it through `BbOffCanvas`)_ — documented CSS variables: `--size`, `--p`
|
|
1873
1873
|
- `ListBox` _(internal — not importable, reach it through `BbSelectPopover`)_
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
| --- | --- | --- |
|
|
17
17
|
| `pt:clear` | the root of `ClearableButton` | `ClearableButton` _(internal)_ |
|
|
18
18
|
| `pt:root` | the root of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
19
|
+
| `pt:panel` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
19
20
|
| `pt:root` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
20
21
|
| `pt:header` | `pt:header` of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
21
22
|
| `pt:footer` | `pt:footer` of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
@@ -1326,18 +1327,18 @@ floating popover everywhere.
|
|
|
1326
1327
|
|
|
1327
1328
|
`pt` reaches a named part of the popover with a class list — or, in the
|
|
1328
1329
|
object form, a style and attributes — optionally only while a state is on.
|
|
1329
|
-
Parts: `root` (the
|
|
1330
|
+
Parts: `root` (the floating element — the sheet on a phone), `panel` (the options box you see: the popover's painted bubble on desktop, the box inside the sheet on a phone), `sheet` (the bottom sheet the surface becomes on a phone — only that sheet, never the desktop surface; applied after `root`, so it wins a conflict there), `input` (the search
|
|
1330
1331
|
field), `option` (every listbox option, a broadcast resolved per option), `item-text` (that option's label), `item-icon` (its `itemProps` icons) and `item-description` (its muted second line, `itemProps.description`) — all with the option's states; a custom `#option` slot replaces the label and description,
|
|
1331
1332
|
`header`, `footer`. States: `open`, and `selected` / `disabled` per option.
|
|
1332
1333
|
`BbSelect` forwards its own `panel` / `sheet` / `option` here.
|
|
1333
1334
|
|
|
1334
1335
|
The filter-pill assignee picker above, restyled through those parts: mono on
|
|
1335
1336
|
the search `pt:input`, a muted wash on the chosen option
|
|
1336
|
-
(`pt:option:selected` is per node), a primary ring on `pt:
|
|
1337
|
-
|
|
1337
|
+
(`pt:option:selected` is per node), a primary ring on `pt:panel:open` (the
|
|
1338
|
+
options box — the box inside the sheet on a phone). The activator is yours; don't restyle it
|
|
1338
1339
|
through `pt`.
|
|
1339
1340
|
|
|
1340
|
-
**pt:input / pt:option:selected / pt:
|
|
1341
|
+
**pt:input / pt:option:selected / pt:panel:open — assignee pill**
|
|
1341
1342
|
|
|
1342
1343
|
```vue
|
|
1343
1344
|
<template>
|
|
@@ -1355,7 +1356,7 @@ through `pt`.
|
|
|
1355
1356
|
:items="teammates"
|
|
1356
1357
|
pt:input="font-mono text-sm"
|
|
1357
1358
|
pt:option:selected="bg-(--bb-muted) font-semibold"
|
|
1358
|
-
pt:
|
|
1359
|
+
pt:panel:open="ring-1 ring-(--bb-primary)"
|
|
1359
1360
|
width="240px"
|
|
1360
1361
|
>
|
|
1361
1362
|
<template #activator="{ props }">
|
|
@@ -1385,7 +1386,7 @@ type Teammate = {
|
|
|
1385
1386
|
|
|
1386
1387
|
// Same filter-pill assignee picker as `AssigneePicker.vue`, restyled through
|
|
1387
1388
|
// passthrough: mono on the search `pt:input`, a muted wash on the chosen
|
|
1388
|
-
// option (`pt:option:selected` is per node), a primary ring on `pt:
|
|
1389
|
+
// option (`pt:option:selected` is per node), a primary ring on `pt:panel:open`
|
|
1389
1390
|
// (the flyout — the sheet on mobile).
|
|
1390
1391
|
const teammates: Teammate[] = [
|
|
1391
1392
|
{ id: 'ada', fullName: 'Ada Lovelace' },
|
|
@@ -1524,7 +1525,7 @@ in the [passthrough guide](./guides/passthrough.md).
|
|
|
1524
1525
|
|
|
1525
1526
|
| Prop | Type | Default | Required | Description |
|
|
1526
1527
|
| --- | --- | --- | --- | --- |
|
|
1527
|
-
| `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: `clear`, `footer`, `header`, `input`, `item-description`, `item-icon`, `item-text`, `option`, `root`, `sheet`. States: `disabled`, `open`, `selected`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
1528
|
+
| `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: `clear`, `footer`, `header`, `input`, `item-description`, `item-icon`, `item-text`, `option`, `panel`, `root`, `sheet`. States: `disabled`, `open`, `selected`. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. |
|
|
1528
1529
|
| `activator` | `Record<string, any> \| HTMLElement \| null \| undefined` | | | External activator element or component ref. When provided, the activator slot is not rendered and event listeners are attached programmatically to the referenced element. |
|
|
1529
1530
|
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | When `true`, the panel opens as a bottom off-canvas sheet on mobile viewports instead of a floating popover; on desktop it stays a popover. The sheet reuses the same search field and options list, adding a representation of the current sele… |
|
|
1530
1531
|
| `anchor` | `Record<string, any> \| HTMLElement \| null \| undefined` | `null` | | Override the element used for popover positioning and width measurement. Useful when the focusable activator is narrower than its visual container (e.g. a button inside a wrapper). Falls back to `activatorEl` when omitted. |
|
|
@@ -1616,7 +1617,7 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
1616
1617
|
- **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 `BbSelectPopover`'s root, where the node's own declaration masks it (design-tokens guide, _Overriding one from a consumer app_, rule 0).
|
|
1617
1618
|
- Listed nodes are the ones `BbSelectPopover`'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`.
|
|
1618
1619
|
|
|
1619
|
-
- `BbSelectPopover` _(this component)_ — its own template binds: `input` → `input.bb-select-popover__search-input`, `clear` → `ClearableButton`, `root` → `BbOffCanvas`, `root` → `CommonPopover`, `header` → `div.bb-select-popover__header`, `footer` → `div.bb-select-popover__footer`; hands `BbOffCanvas` the pt map `{ header: 'header', footer: 'footer', sheet: 'root' }` (ours → theirs)
|
|
1620
|
+
- `BbSelectPopover` _(this component)_ — its own template binds: `input` → `input.bb-select-popover__search-input`, `clear` → `ClearableButton`, `root` → `BbOffCanvas`, `panel` → `div.bb-select-popover`, `panel` → `CommonPopover`, `root` → `CommonPopover`, `header` → `div.bb-select-popover__header`, `footer` → `div.bb-select-popover__footer`; hands `BbOffCanvas` the pt map `{ header: 'header', footer: 'footer', sheet: 'root' }` (ours → theirs)
|
|
1620
1621
|
- `BbBadge` _(public — [contract](./BbBadge.md))_ — its own pt parts (`BbBadge`): `spinner` → `BbSpinner`, `icon` → `BbIcon`, `clear` → `button.bb-badge__clear-button`; documented CSS variables: `--bg`, `--fg`, `--border-width`, `--ring`, `--min-size-md`, `--min-size`, `--elev`, `--radius`, `--font-size`, `--icon-size`, `--gap`, `--padding-inline`, `--clear-size`, `--pad-left`; also mounts `BbIcon`, `BbSpinner`, `BadgeBodyContent`
|
|
1621
1622
|
- `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`
|
|
1622
1623
|
- `CloseButton` _(internal — not importable, reach it through `BbOffCanvas`)_ — documented CSS variables: `--size`, `--p`
|
package/dist/ai/BbTimePicker.md
CHANGED
|
@@ -14,9 +14,22 @@
|
|
|
14
14
|
|
|
15
15
|
| pt part | Lands on | In |
|
|
16
16
|
| --- | --- | --- |
|
|
17
|
+
| `pt:root` | the root of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
18
|
+
| `pt:panel` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
19
|
+
| `pt:root` | the root of `CommonPopover` | `CommonPopover` _(internal)_ |
|
|
17
20
|
| `pt:sheet` | `pt:root` of `BbOffCanvas` | `BbOffCanvas` ([contract](./BbOffCanvas.md)) |
|
|
18
21
|
| `pt:item` | the root of `BbBaseButton` | `BbBaseButton` ([contract](./BbBaseButton.md)) |
|
|
19
22
|
|
|
23
|
+
**CSS variables you can set through those parts** — declared deeper in the tree, so set one on the part that reads it (`pt:<part>="[--name:value]"`), never on `BbTimePicker`'s root:
|
|
24
|
+
|
|
25
|
+
| Variable | Set through | Declared by | What it is |
|
|
26
|
+
| --- | --- | --- | --- |
|
|
27
|
+
| `--stack-x` | `pt:root` | `BbOffCanvas` | Inward shift applied to a parent panel while a child is stacked on top. |
|
|
28
|
+
| `--stack-fill` | `pt:root` | `BbOffCanvas` | Length of the pad (see `::after`) that fills from the panel's anchored edge out to the screen edge, so no empty band shows when a descendant is dragged away or shrinks. |
|
|
29
|
+
| `--stack-transition-duration` | `pt:root` | `BbOffCanvas` | Duration for the stack shift + pad. Zeroed while a peer resizes so parents track the live size instead of lagging behind a 250ms animation. |
|
|
30
|
+
| `--px` | `pt:root` | `BbOffCanvas` | Axis split of --bb-panel-p: --px (inline) / --py (block), each branching off it. Set the pair only when the axes differ; setting --bb-panel-p alone keeps them equal. Local on this root class (not :roo… |
|
|
31
|
+
| `--close-size` | `pt:root` | `BbOffCanvas` | Shared by the close control and by the space the title reserves for it, * so the two can never drift apart. |
|
|
32
|
+
|
|
20
33
|
## Usage & Guidelines
|
|
21
34
|
|
|
22
35
|
### When to use
|
|
@@ -187,8 +200,10 @@ there is no text field to type into, `BbTimePickerInput` when there is.
|
|
|
187
200
|
|
|
188
201
|
`pt` reaches a named part with a class list — or, in the object form, a
|
|
189
202
|
style and attributes — optionally only while a state is on. Parts: `root`
|
|
190
|
-
(the
|
|
191
|
-
|
|
203
|
+
(the floating element — the bottom sheet on a phone), `panel` (the time box you
|
|
204
|
+
see: the popover's painted bubble on desktop, the box inside the sheet on a
|
|
205
|
+
phone), `sheet` (the bottom
|
|
206
|
+
sheet on a phone only, applied after `root`) and `item` (one column entry, a broadcast). States: `open`,
|
|
192
207
|
and `selected` per entry.
|
|
193
208
|
|
|
194
209
|
The opening-time cell above, restyled through those parts: the current
|
|
@@ -256,7 +271,7 @@ typeahead. Always pass a `label` when the trigger is an unlabelled cell or icon.
|
|
|
256
271
|
|
|
257
272
|
| Prop | Type | Default | Required | Description |
|
|
258
273
|
| --- | --- | --- | --- | --- |
|
|
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`. |
|
|
274
|
+
| `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
275
|
| `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
276
|
| `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
277
|
| `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`. |
|
|
@@ -304,7 +319,7 @@ typeahead. Always pass a `label` when the trigger is an unlabelled cell or icon.
|
|
|
304
319
|
- **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
320
|
- 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
321
|
|
|
307
|
-
- `BbTimePicker` _(this component)_ — its own template binds: `root` → `div
|
|
322
|
+
- `BbTimePicker` _(this component)_ — its own template binds: `root` → `BbOffCanvas`, `panel` → `div`, `panel` → `CommonPopover`, `root` → `CommonPopover`; hands `BbOffCanvas` the pt map `{ sheet: 'root' }` (ours → theirs)
|
|
308
323
|
- `CommonTimeSelector` _(internal — not importable, reach it through `BbTimePicker`)_ — `BbTimePicker`'s pt parts land here: `item` → `BbBaseButton`; documented CSS variables: `--time-mark`
|
|
309
324
|
- `BbBaseButton` _(public — [contract](./BbBaseButton.md))_ — its own pt parts (`BbBaseButton`): `root` → `RouterComponent`, `root` → `a`, `root` → `component`; also mounts `RouterComponent`
|
|
310
325
|
- `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)_ |
|
|
@@ -155,7 +156,7 @@ the `BbTextInput` guide.
|
|
|
155
156
|
|
|
156
157
|
`pt` reaches a named part of the control with a class list — or, in the
|
|
157
158
|
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
|
|
159
|
+
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
160
|
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
161
|
ESLint error.
|
|
161
162
|
|
|
@@ -354,7 +355,7 @@ Set these on the element, or on a class you put on it, to retune this component
|
|
|
354
355
|
- **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
356
|
- 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
357
|
|
|
357
|
-
- `BbTimePickerInput` _(this component)_ — its own template binds: `input` → `input.bb-segmented-field__field`, `suffix` → `span.bb-field-input__suffix`, `panel` → `div
|
|
358
|
+
- `BbTimePickerInput` _(this component)_ — its own template binds: `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
359
|
- `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
360
|
- `CloseButton` _(internal — not importable, reach it through `BbOffCanvas`)_ — documented CSS variables: `--size`, `--p`
|
|
360
361
|
- `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/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.27",
|
|
5
5
|
"upgrade": "v2-to-v3",
|
|
6
6
|
"guide": "ai/guides/migration/v2-to-v3.md",
|
|
7
7
|
"releases": [
|
|
@@ -39,11 +39,12 @@
|
|
|
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"
|
|
43
44
|
],
|
|
44
45
|
"summary": {
|
|
45
46
|
"renames": 64,
|
|
46
|
-
"behaviourBreaks":
|
|
47
|
+
"behaviourBreaks": 65,
|
|
47
48
|
"unreleased": 0
|
|
48
49
|
},
|
|
49
50
|
"breaking": [
|
|
@@ -949,6 +950,13 @@
|
|
|
949
950
|
"guide": "components/bb-popover.md",
|
|
950
951
|
"firstReleasedIn": "3.0.0-beta.17"
|
|
951
952
|
},
|
|
953
|
+
{
|
|
954
|
+
"kind": "behaviour",
|
|
955
|
+
"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",
|
|
956
|
+
"ruling": "Q37",
|
|
957
|
+
"guide": "ai/guides/passthrough.md (picker surfaces)",
|
|
958
|
+
"firstReleasedIn": "3.0.0-beta.27"
|
|
959
|
+
},
|
|
952
960
|
{
|
|
953
961
|
"kind": "behaviour",
|
|
954
962
|
"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",
|