bitboss-ui 3.0.0-beta.51 → 3.0.0-beta.52
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/BbTable.md +56 -23
- package/dist/ai/changelog.json +28 -3
- package/dist/ai/components.json +3 -3
- package/dist/ai/guides/component-picker.md +2 -2
- package/dist/ai/guides/migration/components/bb-table.md +32 -31
- package/dist/ai/guides/migration/v2-to-v3.md +22 -0
- package/dist/ai/helpers/inertia/manifest.json +1 -1
- package/dist/ai/manifest/components/BbTable.json +2 -1
- package/dist/ai/manifest/components/BbTable.tree.json +1 -0
- package/dist/ai/manifest/index.json +2 -2
- package/dist/ai/source/BbTable.md +90 -82
- package/dist/components/BbForm/bindFormField.js +4 -4
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +865 -863
- package/dist/components/BbTable/BbTableDataRow.js +1 -0
- package/dist/components/BbTable/types.d.ts +11 -3
- package/dist/components/BbTable/useRowReorder.d.ts +6 -0
- package/dist/components/BbTable/useRowReorder.js +16 -16
- package/dist/composables/useBbTableContext.js +1 -0
- package/dist/llms-full.txt +109 -53
- package/dist/llms-medium.txt +2 -2
- package/dist/styles.css +2 -2
- package/dist/utils/versionCheck.js +1 -1
- package/package.json +1 -1
package/dist/ai/components.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"library": "bitboss-ui",
|
|
4
|
-
"version": "3.0.0-beta.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "3.0.0-beta.52",
|
|
5
|
+
"generatedAt": "2026-10-09T15:22:07.861Z",
|
|
6
6
|
"legend": {
|
|
7
7
|
"referenceOnly": "true = internal building block, documented so trees and sources can be read. Never write it in a template; most are not exported.",
|
|
8
8
|
"types[].usage": "api = the type of a prop, event or slot value you pass; wrapper = a component Props/Events/Slots type (its component entry lists every field); advanced = everything else.",
|
|
@@ -516,7 +516,7 @@
|
|
|
516
516
|
{"name":"BbSpinner","group":"Feedback","description":"Indicates ongoing loading or pending operations.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbSpinner.md","source":"ai/source/BbSpinner.md","props":[{"name":"label","type":"string | undefined","required":false,"description":"Accessible loading announcement. When set, the spinner is wrapped in a\n`role=\"status\"` element containing this text rendered `bb-sr-only`, so\nscreen readers announce the loading state. When omitted the markup is\nunchanged and the spinner is purely decorative."},{"name":"pt","type":"PtMap<\"root\", never> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:<part>` row."},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"size","type":"number | CssSize | keyof Sizes | undefined","required":false,"default":"\"md\"","description":"Defines the component size.\n\nAccepted values:\n- A key from the provided size map (`keyof T`), e.g. `'sm' | 'md' | 'lg'`\n- A custom CSS size string (e.g. `'20px'`, `'1.5rem'`, `'2em'`)\n- A number, typically interpreted as pixels by size parsers"}],"events":[],"slots":[],"exposed":[],"models":[],"pt":{"parts":[{"name":"root","description":"The spinning glyph. With a `label`, the status wrapper around it is not a part."}],"states":[]},"tree":{"nodes":[{"name":"BbIcon","kind":"public","cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]}]},"css":{"classes":{"bb-spinner":["","__circle","__circle--1","__circle--10","__circle--11","__circle--2","__circle--3","__circle--4","__circle--5","__circle--6","__circle--7","__circle--8","__circle--9"]},"locals":["--color-gray-200","--size"]},"attrTargets":["svg"],"removed":[{"name":"color","new":null,"since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-spinner.md","silent":true,"fix":{"kind":"manual"}}]},
|
|
517
517
|
{"name":"BbSwitch","group":"Selection","description":"Toggles two-state values with switch semantics.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbSwitch.md","source":"ai/source/BbSwitch.md","props":[{"name":"autofocus","type":"Booleanish | undefined","required":false,"description":"Sets autofocus on page load."},{"name":"checked","type":"boolean | undefined","required":false,"default":"undefined","description":"Defines the input as checked."},{"name":"compact","type":"boolean | undefined","required":false,"default":"false","description":"Compact density. Swaps `--bb-label-spacing-y` for\n`--bb-label-spacing-y-compact`, so tune a compact field's label gap with\nthe `-compact` token, not the base one. The same meaning as on the\ncheckbox, radio and switch groups."},{"name":"description","type":"string | undefined","required":false,"description":"Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."},{"name":"disabled","type":"boolean | undefined","required":false,"default":"false","description":"Disables the component."},{"name":"errors","type":"string | string[] | undefined","required":false,"description":"Error messages under the field, a string or string array. They render in\nan `aria-live=\"polite\"` region and are referenced first from the\ncontrol's `aria-describedby`, so they are re-read when it regains focus."},{"name":"falseValue","type":"any","required":false,"description":"Value of the input when unchecked. It handles any kind of serializable object."},{"name":"formless","type":"boolean | undefined","required":false,"default":"false","description":"Keep this control out of the enclosing `BbForm` entirely: not submitted,\nnot dirty, not reset, not validated. For a control that is not form data\n(a filter, a \"show advanced\" switch)."},{"name":"hasErrors","type":"boolean | undefined","required":false,"default":"false","description":"Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."},{"name":"hasWarnings","type":"boolean | undefined","required":false,"default":"false","description":"Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."},{"name":"hideLabel","type":"boolean | undefined","required":false,"default":"false","description":"Visually hides the label of the input while maintaining accessibility."},{"name":"hint","type":"string | undefined","required":false,"description":"Text box to be displayed near the input, usually to indicate instructions."},{"name":"id","type":"string | undefined","required":false,"description":"The `id` of the native control; the label's `for` and the description\nand message ids derive from it. Generated when omitted."},{"name":"indeterminate","type":"boolean | undefined","required":false,"default":"false","description":"Sets the input in an indeterminate state."},{"name":"inputAlign","type":"FieldCrossAlign | undefined","required":false,"values":["top","center","bottom"],"description":"Vertical position of the control in a side-by-side row; not\n`inputPosition`, the horizontal one. Omitted, the control's first line\nmeets the label's."},{"name":"inputPosition","type":"\"left\" | \"center\" | \"right\" | undefined","required":false,"default":"\"left\"","description":"Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."},{"name":"label","type":"string","required":true,"description":"Text content of the label of the element."},{"name":"labelAlign","type":"FieldCrossAlign | undefined","required":false,"values":["top","center","bottom"],"description":"Vertical position of the label block in a side-by-side row; not\n`labelPosition`, the horizontal one. Omitted, the label's first line\nmeets the control's."},{"name":"labelPosition","type":"\"left\" | \"center\" | \"right\" | undefined","required":false,"description":"Sets the text alignment of the label."},{"name":"layout","type":"FieldLayout | undefined","required":false,"default":"\"auto\"","description":"How the label and the input sit together: `'vertical'`, `'horizontal'` (50/50),\n`'auto'`, `'label-fill'` (the label takes the free space, the input keeps\nits size), `'input-fill'` (the other way round), or a two-word ratio\npattern like `'xx xxxxx'`."},{"name":"modelValue","type":"any","required":false,"description":"Used by v-model. Can be any serializable type."},{"name":"name","type":"string | undefined","required":false,"description":"Defines the name of the input."},{"name":"persistentHint","type":"boolean | undefined","required":false,"default":"false","description":"Keeps the hint displayed."},{"name":"pt","type":"PtMap<TogglePtPart, CheckablePtState> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:<part>` row."},{"name":"pt:description","type":"PtValue | undefined","required":false},{"name":"pt:description:checked","type":"PtValue | undefined","required":false},{"name":"pt:description:disabled","type":"PtValue | undefined","required":false},{"name":"pt:description:errors","type":"PtValue | undefined","required":false},{"name":"pt:description:focused","type":"PtValue | undefined","required":false},{"name":"pt:description:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:description:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:description:readonly","type":"PtValue | undefined","required":false},{"name":"pt:description:warnings","type":"PtValue | undefined","required":false},{"name":"pt:hint","type":"PtValue | undefined","required":false},{"name":"pt:hint:checked","type":"PtValue | undefined","required":false},{"name":"pt:hint:disabled","type":"PtValue | undefined","required":false},{"name":"pt:hint:errors","type":"PtValue | undefined","required":false},{"name":"pt:hint:focused","type":"PtValue | undefined","required":false},{"name":"pt:hint:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:hint:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:hint:readonly","type":"PtValue | undefined","required":false},{"name":"pt:hint:warnings","type":"PtValue | undefined","required":false},{"name":"pt:icon","type":"PtValue | undefined","required":false},{"name":"pt:icon:checked","type":"PtValue | undefined","required":false},{"name":"pt:icon:disabled","type":"PtValue | undefined","required":false},{"name":"pt:icon:errors","type":"PtValue | undefined","required":false},{"name":"pt:icon:focused","type":"PtValue | undefined","required":false},{"name":"pt:icon:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:icon:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:icon:readonly","type":"PtValue | undefined","required":false},{"name":"pt:icon:warnings","type":"PtValue | undefined","required":false},{"name":"pt:label","type":"PtValue | undefined","required":false},{"name":"pt:label:checked","type":"PtValue | undefined","required":false},{"name":"pt:label:disabled","type":"PtValue | undefined","required":false},{"name":"pt:label:errors","type":"PtValue | undefined","required":false},{"name":"pt:label:focused","type":"PtValue | undefined","required":false},{"name":"pt:label:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:label:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:label:readonly","type":"PtValue | undefined","required":false},{"name":"pt:label:warnings","type":"PtValue | undefined","required":false},{"name":"pt:message","type":"PtValue | undefined","required":false},{"name":"pt:message:checked","type":"PtValue | undefined","required":false},{"name":"pt:message:disabled","type":"PtValue | undefined","required":false},{"name":"pt:message:errors","type":"PtValue | undefined","required":false},{"name":"pt:message:focused","type":"PtValue | undefined","required":false},{"name":"pt:message:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:message:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:message:readonly","type":"PtValue | undefined","required":false},{"name":"pt:message:warnings","type":"PtValue | undefined","required":false},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"pt:root:checked","type":"PtValue | undefined","required":false},{"name":"pt:root:disabled","type":"PtValue | undefined","required":false},{"name":"pt:root:errors","type":"PtValue | undefined","required":false},{"name":"pt:root:focused","type":"PtValue | undefined","required":false},{"name":"pt:root:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:root:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:root:readonly","type":"PtValue | undefined","required":false},{"name":"pt:root:warnings","type":"PtValue | undefined","required":false},{"name":"readonly","type":"boolean | undefined","required":false,"default":"false","description":"Sets the input in a readonly state."},{"name":"required","type":"boolean | undefined","required":false,"default":"false","description":"Sets the input as required."},{"name":"reverse","type":"boolean | undefined","required":false,"default":"false","description":"Reverses the layout: in every direction the order of the label and the\ninput is swapped from the standard arrangement."},{"name":"rules","type":"RuleExpression<any>","required":false,"description":"vee-validate rules for this field. Only inside a `BbForm`."},{"name":"submitWhenFalse","type":"boolean | undefined","required":false,"default":"false","description":"Will submit \"falseValue\" if the input is not checked. Otherwise \"trueValue\" will be submitted."},{"name":"trueValue","type":"any","required":false,"description":"Value of the input when checked. It handles any kind of serializable object."},{"name":"validationLabel","type":"string | undefined","required":false,"description":"The field's name in validation messages (`{field}`): \"Email is not\nvalid\". Defaults to the `label` (or `legend`), then \"This field\"; the\nfield's `name` never shows. Set it when the label is not a good noun for\na sentence (an icon-only label, a question) or is hidden. Only inside a\n`BbForm`."},{"name":"validationMode","type":"ValidationMode | undefined","required":false,"values":["aggressive","balanced","lazy","submit-only","submit-live"],"description":"When this field validates as the user works: `aggressive` (every change),\n`balanced` (on leave, then live while it shows an error), `lazy` (on\nleave), `submit-only` or `submit-live`. Unset: the `BbForm`'s\n`validation-mode`, then `formControls.validationMode` (`'balanced'`).\nOnly in a `BbForm`."},{"name":"warnings","type":"string | string[] | undefined","required":false,"description":"Warning messages under the field, a string or string array: amber, in\ntheir own `aria-live` region, and in the control's `aria-describedby`\nafter the errors. A non-empty list implies the warning state; errors win\nwhen both are set."}],"events":[{"name":"blur","signature":"(event: FocusEvent): void","description":"Emitted when the native input loses focus.\nForwards the original DOM `FocusEvent`."},{"name":"change","signature":"(event: Event): void","description":"Emitted when the checkbox checked state changes.\nForwards the original DOM `Event` from the input."},{"name":"click","signature":"(event: MouseEvent): void","description":"Emitted when the input receives a click interaction.\nForwards the original DOM `MouseEvent`."},{"name":"focus","signature":"(event: FocusEvent): void","description":"Emitted when the native input gains focus.\nForwards the original DOM `FocusEvent`."},{"name":"input","signature":"(event: Event): void","description":"Emitted on native input events from the checkbox input.\nForwards the original DOM `Event`."},{"name":"keydown","signature":"(event: KeyboardEvent): void","description":"Emitted for keyboard interaction on the input.\nForwards the original DOM `KeyboardEvent`."},{"name":"mousedown","signature":"(event: MouseEvent): void","description":"Emitted when a pointing device button is pressed over the input.\nForwards the original DOM `MouseEvent`."},{"name":"mouseup","signature":"(event: MouseEvent): void","description":"Emitted when a pointing device button is released over the input.\nForwards the original DOM `MouseEvent`."},{"name":"update:modelValue","signature":"(value: any): void","description":"Emitted on checked-state changes with the effective model value:\n- `trueValue` when checked\n- `falseValue` when unchecked"}],"slots":[{"name":"description","type":"BbSwitchDescriptionSlotProps","fields":["text: string","hasErrors: boolean","hasWarnings: boolean"],"description":"Replaces the description text. Provided alone (no `description` prop) it still\nrenders the description region and wires it into `aria-describedby`."},{"name":"icon","type":"BbCheckboxIconSlotProps","fields":["checked: boolean","disabled: boolean","indeterminate?: boolean","falseValue: any","focused: boolean","focusVisible: boolean","hasErrors: boolean","hasWarnings: boolean","id: string","name: string","parsedValue: string","readonly: boolean","trueValue: any","value: any","text: string"],"description":"Replaces the default toggle track visual inside the switch. Receives the\nswitch state plus the label text."},{"name":"label","type":"BbSwitchLabelSlotProps","fields":["text: string","hasErrors: boolean","hasWarnings: boolean"],"description":"Replaces the default label text rendered next to the switch."}],"exposed":[],"models":[{"name":"modelValue","type":"any"}],"pt":{"parts":[{"name":"root","description":"The toggle's container: the glyph, the label and the lines under them."},{"name":"label","description":"The label text beside the glyph (the `label` prop)."},{"name":"description","description":"The muted line under the label (the `description` prop)."},{"name":"message","description":"The errors / warnings line. A node of its own: it can show at the same time as `hint`."},{"name":"hint","description":"The helper line (the `hint` prop), shown on focus, or always with `persistent-hint`."},{"name":"icon","description":"The drawn glyph — the box, the dot or the switch track. The default one: a consumer `icon` slot replaces it. The hidden native input is not a part."}],"states":[{"name":"checked","description":"Component-wide: the toggle is on."},{"name":"indeterminate","description":"Component-wide: the mixed state (the `indeterminate` prop) — neither on nor off."},{"name":"readonly","description":"Component-wide: the toggle is `readonly` — focusable, cannot change."},{"name":"disabled","description":"Component-wide: the toggle is `disabled`."},{"name":"warnings","description":"Component-wide: the toggle shows warnings and no errors."},{"name":"errors","description":"Component-wide: the toggle shows errors — the glyph and the message line turn red."},{"name":"focused","description":"Component-wide: the native input has focus — any focus, mouse included, like the `focused` slot prop."},{"name":"focusVisible","description":"Component-wide: that focus is keyboard-visible — where a focus ring belongs."}]},"tree":{"bindings":[{"part":"icon","target":"BbBaseSwitchIcon"}],"nodes":[{"name":"CommonField","kind":"internal","vocabulary":"BbSwitch","bindings":[{"part":"root","target":"div.bb-field"},{"part":"label","target":"component"},{"part":"description","target":"span.bb-field__description"},{"part":"hint","target":"span.bb-field__hint"},{"part":"counter","target":"span.bb-field__counter"},{"part":"message","target":"div.bb-field__message"}],"cssProps":[{"name":"--ctrl-line","documented":true,"readBy":["bb-field__label","bb-field__input-wrapper"]}],"children":[{"name":"BbAsterisk","kind":"public"}]},{"name":"BbBaseSwitchIcon","kind":"public","cssProps":[{"name":"--accent","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon--errors","bb-base-switch-icon--checked","bb-base-switch-icon--indeterminate","bb-base-switch-icon--warnings","bb-base-switch-icon--disabled"]},{"name":"--bg","documented":true,"readBy":["bb-base-switch-icon"]},{"name":"--ring-color","documented":true,"readBy":["bb-base-switch-icon--focus-visible"]},{"name":"--r","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon__thumb"]},{"name":"--bw","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon__thumb"]},{"name":"--h","documented":true,"readBy":["bb-base-switch-icon"]},{"name":"--w","documented":true,"readBy":["bb-base-switch-icon"]},{"name":"--thumb","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon__thumb"]},{"name":"--inset","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon__thumb"]},{"name":"--travel","documented":true,"readBy":["bb-base-switch-icon__thumb"]}]}]},"css":{"classes":{"bb-switch":[""]},"locals":["--color-gray-200"]},"attrTargets":["div"],"removed":[{"name":"color","new":null,"since":"3.0.0-beta.15","migration":"ai/guides/migration/components/bb-checkbox.md","silent":true,"fix":{"kind":"manual"}},{"name":"hasWarning","new":"hasWarnings","since":"3.0.0-beta.26","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"direction","new":"layout","since":"3.0.0-beta.33","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"vid","new":null,"hint":"a display name (v2: `vid=\"Email address\"`) is now `validation-label`; a field path (3.0 betas: `vid=\"address.city\"`) is now `name` (brackets for a native post: `address[city]`). `check --fix` picks by the value","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"byValue","display":"validationLabel","key":"name"}},{"name":"validateOn","new":"validationMode","hint":"an array of events became one mode (`aggressive` | `balanced` | `lazy` | `submit-only` | `submit-live`). The old defaults (`['blur']`, `['inactive']`, a toggle's `['update:modelValue', 'change', 'blur']`) are `balanced`, the new default: delete the prop. A text field on `['update:modelValue']` is `validation-mode=\"aggressive\"`. Set it once on `<BbForm validation-mode>` instead of per field","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"manual"}}],"renamed":[{"from":"hasWarning","to":"hasWarnings","since":"3.0.0-beta.26","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"direction","to":"layout","since":"3.0.0-beta.33","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"validateOn","to":"validationMode","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"manual"}}]},
|
|
518
518
|
{"name":"BbSwitchGroup","group":"Selection","description":"Manages grouped switch options with shared behavior.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbSwitchGroup.md","source":"ai/source/BbSwitchGroup.md","props":[{"name":"autofocus","type":"Booleanish | undefined","required":false,"description":"Sets autofocus on page load."},{"name":"compact","type":"boolean | undefined","required":false,"default":"false","description":"Compact density. Swaps `--bb-label-spacing-y` for\n`--bb-label-spacing-y-compact`, so tune a compact group's label gap with\nthe `-compact` token, not the base one."},{"name":"dependencies","type":"unknown[] | undefined","required":false,"description":"Defines an array of dependencies that will trigger actions in the component upon change."},{"name":"depsDebounceTime","type":"number | undefined","required":false,"description":"Timeout used to debounce response to changes to dependencies."},{"name":"description","type":"string | undefined","required":false,"description":"Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."},{"name":"disabled","type":"boolean | undefined","required":false,"default":"false","description":"Disables the component."},{"name":"emptyText","type":"string | undefined","required":false,"description":"String displayed when there are no items to display."},{"name":"enforceCoherence","type":"boolean | undefined","required":false,"default":"false","description":"After every applied, successful load (an empty one included), drops the\nmodel values the options no longer contain (a single value resets to\n`null`). A failed load never prunes."},{"name":"errors","type":"string | string[] | undefined","required":false,"description":"Error messages under the field, a string or string array. They render in\nan `aria-live=\"polite\"` region and are referenced first from the\ncontrol's `aria-describedby`, so they are re-read when it regains focus."},{"name":"failedText","type":"string | undefined","required":false,"default":"the localized `common.failedText` (\"Couldn't load items\")","description":"String displayed in the empty state while the latest load FAILED (the\n`items` provider threw): the twin of `emptyText` for that case."},{"name":"formless","type":"boolean | undefined","required":false,"default":"false","description":"Keep this control out of the enclosing `BbForm` entirely: not submitted,\nnot dirty, not reset, not validated. For a control that is not form data\n(a filter, a \"show advanced\" switch)."},{"name":"hasErrors","type":"boolean | undefined","required":false,"default":"false","description":"Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."},{"name":"hasWarnings","type":"boolean | undefined","required":false,"default":"false","description":"Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."},{"name":"hideLabel","type":"boolean | undefined","required":false,"default":"false","description":"Visually hides each option's label text (the text rendered next to every\ninput) while keeping it accessible to screen readers.\nDoes not affect the fieldset legend — use `hideLegend` for that."},{"name":"hideLegend","type":"boolean | undefined","required":false,"default":"false","description":"Visually hides the legend of the fieldset while maintaining accessibility."},{"name":"hint","type":"string | undefined","required":false,"description":"Text box to be displayed near the input, usually to indicate instructions."},{"name":"id","type":"string | undefined","required":false,"description":"Prefix for the ids of each option's input and of the label, description\nand message. Generated when omitted."},{"name":"inputAlign","type":"FieldCrossAlign | undefined","required":false,"values":["top","center","bottom"],"description":"Vertical position of the control in a side-by-side row; not\n`inputPosition`, the horizontal one. Omitted, the control's first line\nmeets the label's."},{"name":"inputPosition","type":"\"left\" | \"center\" | \"right\" | undefined","required":false,"default":"\"left\"","description":"Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."},{"name":"itemInputAlign","type":"FieldCrossAlign | undefined","required":false,"values":["top","center","bottom"],"description":"Vertical position of each option's control in its row; `'center'` is\nthe middle of the label plus its description. Omitted, it sits on the\nlabel's first line."},{"name":"itemLabelAlign","type":"FieldCrossAlign | undefined","required":false,"values":["top","center","bottom"],"description":"Vertical position of each option's label in its row. Omitted, it stays\nas it is."},{"name":"itemLayout","type":"FieldLayout | undefined","required":false,"default":"'auto'","description":"How each row's input and label sit together, in the `layout` keywords:\n`'auto'`, `'vertical'`, `'horizontal'`, `'label-fill'`, `'input-fill'`,\nor a two-word ratio pattern like `'xx xxxxx'`."},{"name":"itemProps","type":"BbOptionGroupItemProps<T> | undefined","required":false,"description":"ADDITIONAL row fields, never the text or value: `description`, a muted\nline under the label (it may wrap; announced as the option's\ndescription). An object of paths or getters, or a function of the item;\nnothing is read implicitly."},{"name":"itemReverse","type":"boolean | undefined","required":false,"default":"false","description":"Swaps each row's input and label from their natural order (input first),\nin every `item-layout`. `reverse` swaps the legend and the options instead."},{"name":"items","type":"T[] | ((context: BbCheckboxGroupItemsContext) => T[] | Promise<T[]>)","required":true,"description":"The options: an array, or a provider called with a\n`BbCheckboxGroupItemsContext` (`BbSwitchGroupItemsContext` on a switch\ngroup) (`reason`, `modelValue`, `signal`), sync or async. A provider\nfails by THROWING, never by returning `[]`: the rows clear and `#empty`\ngets the `error`."},{"name":"itemText","type":"ItemAccessor<T, string> | undefined","required":false,"default":"own `label`, else `text`, else `JSON.stringify(item)`","description":"Defines a path that returns a property of the object to use as text or a function that returns a string.\n\nUnset: own `label`, else `text` (`{ label, value }` needs no accessor)."},{"name":"itemValue","type":"ItemAccessor<T> | undefined","required":false,"default":"own `value`, else the whole item","description":"Defines a path that returns a property of the object to use as value or a function that returns any value.\n\nUnset: own `value`, even `null`."},{"name":"labelAlign","type":"FieldCrossAlign | undefined","required":false,"values":["top","center","bottom"],"description":"Vertical position of the label block in a side-by-side row; not\n`labelPosition`, the horizontal one. Omitted, the label's first line\nmeets the control's."},{"name":"layout","type":"FieldLayout | undefined","required":false,"description":"How the label and the input sit together: `'vertical'`, `'horizontal'` (50/50),\n`'auto'`, `'label-fill'` (the label takes the free space, the input keeps\nits size), `'input-fill'` (the other way round), or a two-word ratio\npattern like `'xx xxxxx'`."},{"name":"legend","type":"string","required":true,"description":"Text content of the legend."},{"name":"legendMode","type":"\"outside\" | \"inside\" | undefined","required":false,"description":"Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow;\n`'inside'` overlays the legend inside the fieldset border.\nFloating mode is not supported for option groups (checkbox, radio or\nswitch) — there is no single field for the legend to float against."},{"name":"legendPosition","type":"\"left\" | \"center\" | \"right\" | undefined","required":false,"description":"Sets the text alignment of the label."},{"name":"listLayout","type":"ListLayout | undefined","required":false,"default":"'horizontal'","values":["horizontal","vertical","vertical-stretch","tiles"],"description":"How the rows sit in the list: `'horizontal'` (on a line, wrapping),\n`'vertical'` (stacked), `'vertical-stretch'` (stacked, as wide as the\nlist) or `'tiles'` (equal boxes; `--tile-min-width` on `pt:list` sets the\nnarrowest)."},{"name":"loadingText","type":"string | undefined","required":false,"description":"String displayed while items are being loaded."},{"name":"max","type":"number | undefined","required":false,"description":"Maximum number of selected items."},{"name":"modelValue","type":"any","required":false,"description":"Used by v-model. Can be an array of any serializable type."},{"name":"modelValueDebounceTime","type":"number | undefined","required":false,"description":"Timeout used to debounce response to changes to modelValue."},{"name":"multiple","type":"boolean | undefined","required":false,"default":"true","description":"Enables multi-selection behavior.\nWhen true, `modelValue` must be an array.\nWhen false, `modelValue` should be a single value."},{"name":"name","type":"string | undefined","required":false,"description":"Defines the name of the input."},{"name":"persistentHint","type":"boolean | undefined","required":false,"default":"false","description":"Keeps the hint displayed."},{"name":"pt","type":"GroupPtMap<T> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:<part>` row."},{"name":"pt:description","type":"PtValue | undefined","required":false},{"name":"pt:description:disabled","type":"PtValue | undefined","required":false},{"name":"pt:description:errors","type":"PtValue | undefined","required":false},{"name":"pt:description:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:description:loading","type":"PtValue | undefined","required":false},{"name":"pt:description:readonly","type":"PtValue | undefined","required":false},{"name":"pt:description:warnings","type":"PtValue | undefined","required":false},{"name":"pt:hint","type":"PtValue | undefined","required":false},{"name":"pt:hint:disabled","type":"PtValue | undefined","required":false},{"name":"pt:hint:errors","type":"PtValue | undefined","required":false},{"name":"pt:hint:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:hint:loading","type":"PtValue | undefined","required":false},{"name":"pt:hint:readonly","type":"PtValue | undefined","required":false},{"name":"pt:hint:warnings","type":"PtValue | undefined","required":false},{"name":"pt:icon","type":"PtValue | ((ctx: PtItemCtx<T, GroupPtState>) => PtItemResult) | undefined","required":false},{"name":"pt:icon:checked","type":"PtValue | undefined","required":false},{"name":"pt:icon:disabled","type":"PtValue | undefined","required":false},{"name":"pt:icon:errors","type":"PtValue | undefined","required":false},{"name":"pt:icon:focused","type":"PtValue | undefined","required":false},{"name":"pt:icon:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:icon:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:icon:loading","type":"PtValue | undefined","required":false},{"name":"pt:icon:readonly","type":"PtValue | undefined","required":false},{"name":"pt:icon:warnings","type":"PtValue | undefined","required":false},{"name":"pt:item","type":"PtValue | ((ctx: PtItemCtx<T, GroupPtState>) => PtItemResult) | undefined","required":false},{"name":"pt:item:checked","type":"PtValue | undefined","required":false},{"name":"pt:item:disabled","type":"PtValue | undefined","required":false},{"name":"pt:item:errors","type":"PtValue | undefined","required":false},{"name":"pt:item:focused","type":"PtValue | undefined","required":false},{"name":"pt:item:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:item:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:item:loading","type":"PtValue | undefined","required":false},{"name":"pt:item:readonly","type":"PtValue | undefined","required":false},{"name":"pt:item:warnings","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription","type":"PtValue | ((ctx: PtItemCtx<T, GroupPtState>) => PtItemResult) | undefined","required":false},{"name":"pt:itemDescription:checked","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription:disabled","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription:errors","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription:focused","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription:loading","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription:readonly","type":"PtValue | undefined","required":false},{"name":"pt:itemDescription:warnings","type":"PtValue | undefined","required":false},{"name":"pt:label","type":"PtValue | ((ctx: PtItemCtx<T, GroupPtState>) => PtItemResult) | undefined","required":false},{"name":"pt:label:checked","type":"PtValue | undefined","required":false},{"name":"pt:label:disabled","type":"PtValue | undefined","required":false},{"name":"pt:label:errors","type":"PtValue | undefined","required":false},{"name":"pt:label:focused","type":"PtValue | undefined","required":false},{"name":"pt:label:focusVisible","type":"PtValue | undefined","required":false},{"name":"pt:label:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:label:loading","type":"PtValue | undefined","required":false},{"name":"pt:label:readonly","type":"PtValue | undefined","required":false},{"name":"pt:label:warnings","type":"PtValue | undefined","required":false},{"name":"pt:legend","type":"PtValue | undefined","required":false},{"name":"pt:legend:disabled","type":"PtValue | undefined","required":false},{"name":"pt:legend:errors","type":"PtValue | undefined","required":false},{"name":"pt:legend:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:legend:loading","type":"PtValue | undefined","required":false},{"name":"pt:legend:readonly","type":"PtValue | undefined","required":false},{"name":"pt:legend:warnings","type":"PtValue | undefined","required":false},{"name":"pt:list","type":"PtValue | undefined","required":false},{"name":"pt:list:disabled","type":"PtValue | undefined","required":false},{"name":"pt:list:errors","type":"PtValue | undefined","required":false},{"name":"pt:list:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:list:loading","type":"PtValue | undefined","required":false},{"name":"pt:list:readonly","type":"PtValue | undefined","required":false},{"name":"pt:list:warnings","type":"PtValue | undefined","required":false},{"name":"pt:message","type":"PtValue | undefined","required":false},{"name":"pt:message:disabled","type":"PtValue | undefined","required":false},{"name":"pt:message:errors","type":"PtValue | undefined","required":false},{"name":"pt:message:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:message:loading","type":"PtValue | undefined","required":false},{"name":"pt:message:readonly","type":"PtValue | undefined","required":false},{"name":"pt:message:warnings","type":"PtValue | undefined","required":false},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"pt:root:disabled","type":"PtValue | undefined","required":false},{"name":"pt:root:errors","type":"PtValue | undefined","required":false},{"name":"pt:root:hasValue","type":"PtValue | undefined","required":false},{"name":"pt:root:loading","type":"PtValue | undefined","required":false},{"name":"pt:root:readonly","type":"PtValue | undefined","required":false},{"name":"pt:root:warnings","type":"PtValue | undefined","required":false},{"name":"readonly","type":"boolean | undefined","required":false,"default":"false","description":"Sets the input in a readonly state."},{"name":"reverse","type":"boolean | undefined","required":false,"default":"false","description":"Reverses the layout. Applicable in every direction the order of the label and the input is swapped."},{"name":"rules","type":"RuleExpression<any>","required":false,"description":"vee-validate rules for this field. Only inside a `BbForm`."},{"name":"selectable","type":"boolean | ((item: T) => boolean) | undefined","required":false,"default":"true","description":"Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."},{"name":"validationLabel","type":"string | undefined","required":false,"description":"The field's name in validation messages (`{field}`): \"Email is not\nvalid\". Defaults to the `label` (or `legend`), then \"This field\"; the\nfield's `name` never shows. Set it when the label is not a good noun for\na sentence (an icon-only label, a question) or is hidden. Only inside a\n`BbForm`."},{"name":"validationMode","type":"ValidationMode | undefined","required":false,"values":["aggressive","balanced","lazy","submit-only","submit-live"],"description":"When this field validates as the user works: `aggressive` (every change),\n`balanced` (on leave, then live while it shows an error), `lazy` (on\nleave), `submit-only` or `submit-live`. Unset: the `BbForm`'s\n`validation-mode`, then `formControls.validationMode` (`'balanced'`).\nOnly in a `BbForm`."},{"name":"warnings","type":"string | string[] | undefined","required":false,"description":"Warning messages under the field, a string or string array: amber, in\ntheir own `aria-live` region, and in the control's `aria-describedby`\nafter the errors. A non-empty list implies the warning state; errors win\nwhen both are set."}],"events":[{"name":"active","signature":"(): void","description":"Emitted when the group becomes active (focus/click enters it)."},{"name":"blur","signature":"(event: FocusEvent): void","description":"Emitted when one of the generated checkbox inputs loses focus.\nForwards the original DOM `FocusEvent`."},{"name":"change","signature":"(event: Event): void","description":"Emitted when an option is toggled.\nForwards the original DOM `Event` from the checkbox input."},{"name":"click","signature":"(event: MouseEvent): void","description":"Emitted when one of the generated checkbox inputs is clicked.\nForwards the original DOM `MouseEvent`."},{"name":"focus","signature":"(event: FocusEvent): void","description":"Emitted when one of the generated checkbox inputs receives focus.\nForwards the original DOM `FocusEvent`."},{"name":"inactive","signature":"(): void","description":"Emitted when focus/click moves outside the group after it was active.\nUseful for validation-on-blur flows at group level."},{"name":"input","signature":"(event: Event): void","description":"Emitted on native input events from generated checkbox inputs.\nForwards the original DOM `Event`."},{"name":"keydown","signature":"(event: KeyboardEvent): void","description":"Emitted for keyboard interaction on generated checkbox inputs.\nForwards the original DOM `KeyboardEvent`."},{"name":"mousedown","signature":"(event: MouseEvent): void","description":"Emitted when a pointing device button is pressed over a checkbox input.\nForwards the original DOM `MouseEvent`."},{"name":"mouseup","signature":"(event: MouseEvent): void","description":"Emitted when a pointing device button is released over a checkbox input.\nForwards the original DOM `MouseEvent`."},{"name":"update:modelValue","signature":"(value: any): void","description":"Emitted with the coherent next selection array whenever selection changes."}],"slots":[{"name":"append","type":"object","description":"Content rendered after the last option, inside the options container."},{"name":"description","type":"BbSwitchGroupDescriptionSlotProps","fields":["text: string","hasErrors: boolean","hasWarnings: boolean"],"description":"Replaces the description text. Provided alone (no `description` prop) it still\nrenders the description region and wires it into `aria-describedby`."},{"name":"empty","type":"{ error: unknown; }","description":"Content shown when no options are available (replaces the default \"no\ndata\" text). `error` is what the latest failed load rejected with,\nuntouched, and `null` when nothing failed — a failed load clears the\nrows, so this slot is where it shows."},{"name":"icon","type":"BbSwitchGroupIconSlotProps<T>","fields":["disabled: boolean","readonly: boolean","checked: boolean","indeterminate?: boolean","focused: boolean","focusVisible: boolean","id: string","name: string","falseValue: any","hasErrors: boolean","hasWarnings: boolean","parsedValue: string","trueValue: any","value: any","item: T","text: string"],"description":"Replaces the default switch track visual for each option. Receives the\nswitch state plus the source item and its display text."},{"name":"label","type":"BbSwitchGroupLabelSlotProps<T>","fields":["item: T","text: string","checked: boolean","description: string"],"description":"Replaces the default label text for each option."},{"name":"legend","type":"BbSwitchGroupLegendSlotProps","fields":["text: string","hasErrors: boolean","hasWarnings: boolean"],"description":"Replaces the default fieldset legend text for the group."},{"name":"loading","type":"object","description":"Content shown while options are loading (replaces the default loading text)."},{"name":"prepend","type":"object","description":"Content rendered before the first option, inside the options container."}],"exposed":[],"models":[{"name":"modelValue","type":"any"}],"cssProps":[{"name":"--gap","value":"24px","selector":".bb-switch-group__list","description":"Space between rows on one line."},{"name":"--row-gap","value":"10px","selector":".bb-switch-group__list","description":"Space between wrapped lines."},{"name":"--tile-min-width","value":"96px","selector":".bb-switch-group__list","description":"How narrow a tile may get before the tiles wrap (`tiles` only)."}],"pt":{"parts":[{"name":"root","description":"The group's container (the fieldset)."},{"name":"legend","description":"The group's heading — the fieldset `<legend>` (the `legend` prop)."},{"name":"description","description":"The muted line under the legend (the `description` prop)."},{"name":"message","description":"The errors / warnings line. A node of its own: it can show at the same time as `hint`."},{"name":"hint","description":"The helper line (the `hint` prop), shown on focus, or always with `persistent-hint`."},{"name":"list","description":"The node that lays the rows out (flex + wrap, gaps on `--gap` / `--row-gap`): `pt:list=\"grid grid-cols-3\"` re-lays them, `pt:list=\"[--gap:8px]\"` tightens them. Takes the group-wide states only."},{"name":"item","description":"One option row — a broadcast, resolved per option with its own `checked` / `disabled` / focus. Takes a per-item function."},{"name":"icon","description":"One row's drawn glyph — the default one: a consumer `icon` slot replaces it. Takes a per-item function."},{"name":"label","description":"One option's label text (the `label` slot's default). Takes a per-item function."},{"name":"itemDescription","description":"One option's muted second line, its description. Takes a per-item function."}],"states":[{"name":"hasValue","description":"Component-wide: at least one option is chosen."},{"name":"checked","description":"Per row, on `item`, `icon`, `label` and `itemDescription`: that option is chosen. Never on a field part."},{"name":"readonly","description":"Component-wide: the group is `readonly`."},{"name":"disabled","description":"Component-wide while the group is `disabled`; also per row, on the row parts of an option that is disabled on its own."},{"name":"warnings","description":"Component-wide: the group shows warnings and no errors."},{"name":"errors","description":"Component-wide: the group shows errors."},{"name":"focused","description":"Per row, on the row parts: that option's input has focus — any focus, mouse included."},{"name":"focusVisible","description":"Per row, on the row parts: that option's focus is keyboard-visible — where a focus ring belongs."},{"name":"loading","description":"Component-wide: the items are being fetched."}]},"tree":{"bindings":[{"part":"icon","target":"BbBaseSwitchIcon"}],"nodes":[{"name":"CommonField","kind":"internal","vocabulary":"BbSwitchGroup","bindings":[{"part":"root","target":"div.bb-field"},{"part":"label","target":"component"},{"part":"description","target":"span.bb-field__description"},{"part":"hint","target":"span.bb-field__hint"},{"part":"counter","target":"span.bb-field__counter"},{"part":"message","target":"div.bb-field__message"}],"cssProps":[{"name":"--ctrl-line","documented":true,"readBy":["bb-field__label","bb-field__input-wrapper"]}],"children":[{"name":"BbAsterisk","kind":"public"}]},{"name":"OptionsContainer","kind":"internal","vocabulary":"BbSwitchGroup","bindings":[{"part":"list","target":"span"},{"part":"item","target":"label"},{"part":"label","target":"span"},{"part":"itemDescription","target":"span"}]},{"name":"BbBaseSwitchIcon","kind":"public","cssProps":[{"name":"--accent","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon--errors","bb-base-switch-icon--checked","bb-base-switch-icon--indeterminate","bb-base-switch-icon--warnings","bb-base-switch-icon--disabled"]},{"name":"--bg","documented":true,"readBy":["bb-base-switch-icon"]},{"name":"--ring-color","documented":true,"readBy":["bb-base-switch-icon--focus-visible"]},{"name":"--r","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon__thumb"]},{"name":"--bw","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon__thumb"]},{"name":"--h","documented":true,"readBy":["bb-base-switch-icon"]},{"name":"--w","documented":true,"readBy":["bb-base-switch-icon"]},{"name":"--thumb","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon__thumb"]},{"name":"--inset","documented":true,"readBy":["bb-base-switch-icon","bb-base-switch-icon__thumb"]},{"name":"--travel","documented":true,"readBy":["bb-base-switch-icon__thumb"]}]}]},"css":{"classes":{"bb-switch-group":["","__empty","__item","__item--*","__item--aligned","__item--description","__item--disabled","__item--focus-visible","__item--focused","__item--input-align-*","__item--input-align-bottom","__item--input-align-center","__item--input-align-top","__item--label-align-*","__item--label-align-bottom","__item--label-align-center","__item--label-align-top","__item--reverse","__item--selected","__item--vertical","__item-description","__label","__list","__list--*","__list--errors","__list--tiles","__list--warnings","__loading"]},"locals":["--color-gray-200","--gap","--h","--hit","--row-gap","--tap-row-gap","--tile-min-width"]},"attrTargets":["div"],"removed":[{"name":"color","new":null,"since":"3.0.0-beta.15","migration":"ai/guides/migration/components/bb-checkbox-group.md","silent":true,"fix":{"kind":"manual"}},{"name":"labelPosition","new":"legendPosition","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-checkbox-group.md","silent":true,"fix":{"kind":"rename"}},{"name":"hasWarning","new":"hasWarnings","since":"3.0.0-beta.26","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"direction","new":"layout","since":"3.0.0-beta.33","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"inputDirection","new":"listLayout","since":"3.0.0-beta.33","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename","valueMap":{"horizontal":"horizontal","vertical":"vertical-stretch"}}},{"name":"noDataText","new":"emptyText","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"no-data","new":"empty","surface":"slot","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"vid","new":null,"hint":"a display name (v2: `vid=\"Email address\"`) is now `validation-label`; a field path (3.0 betas: `vid=\"address.city\"`) is now `name` (brackets for a native post: `address[city]`). `check --fix` picks by the value","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"byValue","display":"validationLabel","key":"name"}},{"name":"validateOn","new":"validationMode","hint":"an array of events became one mode (`aggressive` | `balanced` | `lazy` | `submit-only` | `submit-live`). The old defaults (`['blur']`, `['inactive']`, a toggle's `['update:modelValue', 'change', 'blur']`) are `balanced`, the new default: delete the prop. A text field on `['update:modelValue']` is `validation-mode=\"aggressive\"`. Set it once on `<BbForm validation-mode>` instead of per field","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"manual"}}],"renamed":[{"from":"labelPosition","to":"legendPosition","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-checkbox-group.md","fix":{"kind":"rename"}},{"from":"hasWarning","to":"hasWarnings","since":"3.0.0-beta.26","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"direction","to":"layout","since":"3.0.0-beta.33","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"inputDirection","to":"listLayout","since":"3.0.0-beta.33","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename","valueMap":{"horizontal":"horizontal","vertical":"vertical-stretch"}}},{"from":"noDataText","to":"emptyText","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"no-data","to":"empty","surface":"slot","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"validateOn","to":"validationMode","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"manual"}}]},
|
|
519
|
-
{"name":"BbTable","group":"Data Display","description":"Displays tabular data, configurable columns and data mapper.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbTable.md","source":"ai/source/BbTable.md","props":[{"name":"accessibleLabel","type":"((columns: MappedCell[], item: any) => string) | undefined","required":false,"description":"Function that accepts the columns and the current item as\narguments and returns a label to be used for accessibility purposes.\nThe cells arrive in RENDER order (they follow `order`, so the\nlabel reads like the row) — look a cell up by `key`, never by position."},{"name":"actionsText","type":"string | undefined","required":false,"description":"Label used in the header of the actions column."},{"name":"align","type":"\"left\" | \"center\" | \"right\" | undefined","required":false,"default":"\"left\"","description":"Text alignment of the columns."},{"name":"caption","type":"string | undefined","required":false,"description":"Caption that describes the content of the table. Used for accessibility purposes."},{"name":"columns","type":"BbTableColumn<T>[] | undefined","required":false,"default":"[]","description":"Array of definitions of how the columns should be rendered."},{"name":"compact","type":"boolean | undefined","required":false,"default":"false","description":"Adds a CSS class that applies a compact style to the component."},{"name":"dependencies","type":"unknown[] | undefined","required":false,"default":"[]","description":"Defines an array of dependencies that will trigger actions in the component upon change."},{"name":"depsDebounceTime","type":"number | undefined","required":false,"default":"0","description":"Timeout used to debounce response to changes to dependencies."},{"name":"disabled","type":"boolean | undefined","required":false,"default":"false","description":"Disables the component"},{"name":"disableSelectAll","type":"boolean | undefined","required":false,"default":"false","description":"Hides the \"Select all\" checkbox that selectable multi-row tables\ndisplay by default."},{"name":"displayCaption","type":"boolean | undefined","required":false,"default":"false","description":"Shows the caption as a visible title. Off by default: the caption is\nhidden, and screen readers still hear it as the table's name."},{"name":"emptyText","type":"string | undefined","required":false,"default":"the localized `common.emptyText` (\"No data to display\")","description":"String displayed when there are no items to display."},{"name":"enforceCoherence","type":"boolean | undefined","required":false,"default":"false","description":"After every load, prunes `modelValue`, `unselected-items`, `highlighted`\nand `expanded-items` of values whose row is gone (a single value resets\nto `null`). Never on a provider-paginated table: a page change would\nprune the other pages' selection; reconcile in the provider instead."},{"name":"expandedItems","type":"any[] | undefined","required":false,"default":"[]","description":"Used by `v-model:expandedItems`. Array of the currently expanded items —\ntoggled by the row expand control and by external writes (mirrors the\n`highlighted`/`sort` v-model surfaces). Drives the `#expand` slot rows and\ntheir `aria-expanded`/`aria-controls` wiring."},{"name":"failedText","type":"string | undefined","required":false,"default":"the localized `common.failedText` (\"Couldn't load items\")","description":"String displayed in the empty state while the latest load FAILED (the\n`items` provider threw): the twin of `emptyText` for that case."},{"name":"fixed","type":"boolean | undefined","required":false,"default":"false","description":"Splits the width equally among the columns that declare no `width`\n(each undeclared column becomes a `minmax(0, 1fr)` track)\nmaking each column take up the same amount of space."},{"name":"fixedActions","type":"boolean | undefined","required":false,"default":"false","description":"Pins the actions column (the one the `#actions` slot creates) to the\nright edge, `position: sticky`, in place. Data columns pin through\n`column.fixed`; this is the same feature for the structural column that\nhas no definition to carry it. No effect without an `#actions` slot."},{"name":"fixedFirst","type":"boolean | undefined","required":false,"default":"false","description":"Sticks the `#<key>:first` row to the top of the scrollport (under a\nstuck header)."},{"name":"fixedHeaders","type":"boolean | undefined","required":false,"default":"false","description":"Boolean that sets the headers as sticky to the top of the table."},{"name":"fixedLast","type":"boolean | undefined","required":false,"default":"false","description":"Sticks the `#<key>:last` row (a totals row) to the bottom of the\nscrollport."},{"name":"fixedSelect","type":"boolean | undefined","required":false,"default":"false","description":"Pins the selection column to the left edge, `position: sticky`, in\nplace. Data columns pin through `column.fixed`; this is the same feature\nfor the structural column that has no definition to carry it. No effect\nunless the table is `selectable`."},{"name":"headerRowClass","type":"Classes | undefined","required":false,"description":"Defines the classes to be passed to the header row."},{"name":"highlighted","type":"any","required":false,"default":"undefined","description":"Used by `v-model:highlighted`: the one row the UI is about (\"the row\nwhose details are open\"), a single item value or `null`. Opt-in: bind\n`ref(null)`, not `ref()`; unbound or `undefined`, a row click only emits\n`click:row`. The row gets `aria-current=\"true\"` and a shipped tint."},{"name":"id","type":"string | undefined","required":false,"description":"Stable id for this table's width context. When omitted a unique id is\ngenerated. Nested tables use the nearest ancestor id to inherit widths."},{"name":"inheritColumnWidths","type":"string | boolean | undefined","required":false,"description":"A nested table snaps its columns to an ancestor table's tracks: `true` =\nthe nearest ancestor, a table `id` = that ancestor (when an intermediate\ntable has a different column count). Off by default: a nested table sizes\nitself."},{"name":"interactiveWhileLoading","type":"boolean | undefined","required":false,"default":"false","description":"Keeps the header and rows interactive while loading (by default they are\n`inert`: a refetch is about to replace them). For background refreshes\nthat must not interrupt an open editor."},{"name":"items","type":"Item[] | ((context: BbTableItemsContext) => Item[] | Promise<Item[]>)","required":true,"default":"[]","description":"Rows to render: an array, or a provider called with a\n`BbTableItemsContext` (`reason`, `modelValue`, `signal`), sync or async.\nA provider fails by THROWING, never by returning `[]`: the rows clear and\n`#empty` gets the `error`. Return the page as it is."},{"name":"itemValue","type":"ItemAccessor<Item> | undefined","required":false,"description":"Defines a path that returns a property of the row to use as its value (the\nselection, `expandedItems` and row keys compare by it) or a function that\nreturns any value."},{"name":"keyboardNavigation","type":"boolean | undefined","required":false,"default":"false","description":"Opt-in keyboard navigation: the table becomes an ARIA `grid` (a\n`treegrid` with an `#expand` slot) with ONE tab stop and a roving focus\nover its cells; controls inside cells leave the tab order (Enter/F2 go\nin). Ignored with a `#tbody` slot."},{"name":"legend","type":"string | undefined","required":false,"description":"The `<legend>` of a `selectable` table (it renders as a `<fieldset>`):\nthe selection's accessible name. Falls back to `caption`, then to a\nlocalized default."},{"name":"loading","type":"boolean | undefined","required":false,"default":"false","description":"Sets the component in a loading state, usually triggering some visual styles.\n\nWith no rows yet this renders skeletons; over existing rows the rows stay\non screen (dimmed, with an indeterminate bar) rather than being replaced —\na refetch should not blank a table the user is reading."},{"name":"loadingText","type":"string | undefined","required":false,"default":"the localized `common.loadingText` (\"Loading...\")","description":"Screen-reader announcement for the loading row's `aria-live` status.\nVisually hidden — the skeleton (or the `#loading` slot) is the visible\nsignal."},{"name":"max","type":"number | undefined","required":false,"default":"Infinity","description":"Maximum number of items that can be selected."},{"name":"modelValue","type":"any","required":false,"default":"[]","description":"Used by v-model. Can be any serializable type."},{"name":"multiple","type":"boolean | undefined","required":false,"default":"true","description":"Allows the selection of multiple items."},{"name":"name","type":"string | undefined","required":false,"description":"Defines the name of the input."},{"name":"order","type":"string[] | undefined","required":false,"default":"[]","description":"Used by `v-model:order`: the column keys in render order. Declared\ncolumns it omits follow in declaration order; unknown keys stay in place.\nA `reorderable` move writes it back complete. Works unbound, like `sort`;\nnever holds `select` / `actions`."},{"name":"page","type":"string | number | undefined","required":false,"description":"Current page (from 1), for the rows' `aria-rowindex` and a `BbPagination`\npaired through `id`. Doesn't slice `items`: pass the current page's rows.\nNumeric strings are coerced."},{"name":"perPage","type":"string | number | undefined","required":false,"description":"Rows per page, for `aria-rowindex` and a paired `BbPagination`. Doesn't\nslice `items`. Unset, an array `items` infers it from its length; an\nexplicit value wins. Numeric strings are coerced."},{"name":"pt","type":"PtItemMap<BbTablePtPart, \"row\", BbTablePtState, Item> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:<part>` row."},{"name":"pt:body","type":"PtValue | undefined","required":false},{"name":"pt:body:disabled","type":"PtValue | undefined","required":false},{"name":"pt:body:empty","type":"PtValue | undefined","required":false},{"name":"pt:body:expanded","type":"PtValue | undefined","required":false},{"name":"pt:body:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:body:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:body:loading","type":"PtValue | undefined","required":false},{"name":"pt:body:selected","type":"PtValue | undefined","required":false},{"name":"pt:body:sorted","type":"PtValue | undefined","required":false},{"name":"pt:body:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:caption","type":"PtValue | undefined","required":false},{"name":"pt:caption:disabled","type":"PtValue | undefined","required":false},{"name":"pt:caption:empty","type":"PtValue | undefined","required":false},{"name":"pt:caption:expanded","type":"PtValue | undefined","required":false},{"name":"pt:caption:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:caption:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:caption:loading","type":"PtValue | undefined","required":false},{"name":"pt:caption:selected","type":"PtValue | undefined","required":false},{"name":"pt:caption:sorted","type":"PtValue | undefined","required":false},{"name":"pt:caption:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:cell","type":"PtValue | undefined","required":false},{"name":"pt:cell:disabled","type":"PtValue | undefined","required":false},{"name":"pt:cell:empty","type":"PtValue | undefined","required":false},{"name":"pt:cell:expanded","type":"PtValue | undefined","required":false},{"name":"pt:cell:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:cell:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:cell:loading","type":"PtValue | undefined","required":false},{"name":"pt:cell:selected","type":"PtValue | undefined","required":false},{"name":"pt:cell:sorted","type":"PtValue | undefined","required":false},{"name":"pt:cell:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:disabled","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:empty","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:expanded","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:loading","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:selected","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:sorted","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:disabled","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:empty","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:expanded","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:loading","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:selected","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:sorted","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:disabled","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:empty","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:expanded","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:loading","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:selected","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:sorted","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:firstRow","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:disabled","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:empty","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:expanded","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:loading","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:selected","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:sorted","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:foot","type":"PtValue | undefined","required":false},{"name":"pt:foot:disabled","type":"PtValue | undefined","required":false},{"name":"pt:foot:empty","type":"PtValue | undefined","required":false},{"name":"pt:foot:expanded","type":"PtValue | undefined","required":false},{"name":"pt:foot:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:foot:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:foot:loading","type":"PtValue | undefined","required":false},{"name":"pt:foot:selected","type":"PtValue | undefined","required":false},{"name":"pt:foot:sorted","type":"PtValue | undefined","required":false},{"name":"pt:foot:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:head","type":"PtValue | undefined","required":false},{"name":"pt:head:disabled","type":"PtValue | undefined","required":false},{"name":"pt:head:empty","type":"PtValue | undefined","required":false},{"name":"pt:head:expanded","type":"PtValue | undefined","required":false},{"name":"pt:head:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:head:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:head:loading","type":"PtValue | undefined","required":false},{"name":"pt:head:selected","type":"PtValue | undefined","required":false},{"name":"pt:head:sorted","type":"PtValue | undefined","required":false},{"name":"pt:head:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:headerRow","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:disabled","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:empty","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:expanded","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:loading","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:selected","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:sorted","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:lastRow","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:disabled","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:empty","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:expanded","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:loading","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:selected","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:sorted","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"pt:root:disabled","type":"PtValue | undefined","required":false},{"name":"pt:root:empty","type":"PtValue | undefined","required":false},{"name":"pt:root:expanded","type":"PtValue | undefined","required":false},{"name":"pt:root:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:root:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:root:loading","type":"PtValue | undefined","required":false},{"name":"pt:root:selected","type":"PtValue | undefined","required":false},{"name":"pt:root:sorted","type":"PtValue | undefined","required":false},{"name":"pt:root:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:row","type":"PtValue | ((ctx: PtItemCtx<Item, BbTablePtState>) => PtItemResult) | undefined","required":false},{"name":"pt:row:disabled","type":"PtValue | undefined","required":false},{"name":"pt:row:empty","type":"PtValue | undefined","required":false},{"name":"pt:row:expanded","type":"PtValue | undefined","required":false},{"name":"pt:row:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:row:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:row:loading","type":"PtValue | undefined","required":false},{"name":"pt:row:selected","type":"PtValue | undefined","required":false},{"name":"pt:row:sorted","type":"PtValue | undefined","required":false},{"name":"pt:row:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:disabled","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:empty","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:expanded","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:loading","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:selected","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:sorted","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:disabled","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:empty","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:expanded","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:loading","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:selected","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:sorted","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:table","type":"PtValue | undefined","required":false},{"name":"pt:table:disabled","type":"PtValue | undefined","required":false},{"name":"pt:table:empty","type":"PtValue | undefined","required":false},{"name":"pt:table:expanded","type":"PtValue | undefined","required":false},{"name":"pt:table:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:table:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:table:loading","type":"PtValue | undefined","required":false},{"name":"pt:table:selected","type":"PtValue | undefined","required":false},{"name":"pt:table:sorted","type":"PtValue | undefined","required":false},{"name":"pt:table:sortedDesc","type":"PtValue | undefined","required":false},{"name":"readonly","type":"boolean | undefined","required":false,"default":"false","description":"Sets the input in a readonly state."},{"name":"reorderable","type":"boolean | undefined","required":false,"default":"false","description":"Lets the user reorder the data columns: drag a header, or Shift+←/→ on a\nfocused header. Every move writes `v-model:order`; a column panel that\nonly writes `order` does not need it. `select` / `actions` and a custom\n`#thead` never move."},{"name":"reorderableRows","type":"boolean | undefined","required":false,"default":"false","description":"Adds a grip at the start of each row: the user drags a row, or lifts it\nwith Space / Enter and the arrow keys, and `reorder:rows` reports\n`{ item, from, to }`. The table never reorders `items`: splice it in the\nhandler."},{"name":"resizable","type":"boolean | undefined","required":false,"default":"false","description":"Lets the user resize the data columns (drag a header's trailing edge, or\nAlt+←/→; double-click resets). Each commit fires `resize:column(key,\nwidth)` once: write the width back into the column definition to keep it.\nIgnored when inheriting widths."},{"name":"rowClass","type":"BbTableRowClasses<Item> | undefined","required":false,"description":"Defines the classes to be passed to each data row. Can also be a\nfunction of the row's item for dynamic values."},{"name":"selectable","type":"boolean | ((item: Item) => boolean) | undefined","required":false,"description":"Defines whether the table is selectable.\nCan be a global boolean that affects all rows or a function\nthat accepts an item and returns a boolean that only affects that item."},{"name":"selectAll","type":"boolean | undefined","required":false,"default":"false","description":"Defines whether the \"Select all\" checkbox is checked."},{"name":"selectAllLabel","type":"string | undefined","required":false,"description":"Text of the label used by the \"Select all\" boolean."},{"name":"selectText","type":"string | undefined","required":false,"description":"Text of the header used for the radio inputs when the table is not `multiple`."},{"name":"sort","type":"BbTableSortEntry[] | undefined","required":false,"default":"[]","description":"Used by `v-model:sort`: `[columnKey, direction]` entries in priority\norder, written by the `sortable` headers and shown by them. Doesn't sort\n`items`: apply it to your data or your server query."},{"name":"tdClass","type":"ColumnClasses<Item> | undefined","required":false,"description":"Defines the classes to be passed to every data cell. Can also be a function for dynamic values."},{"name":"thClass","type":"Classes | undefined","required":false,"description":"Defines the classes to be passed to every header cell."},{"name":"totalItems","type":"string | number | undefined","required":false,"description":"Total row count, for `aria-rowcount` and a paired `BbPagination`'s page\ncount. Unset, an array `items` infers it from its length; an explicit\nvalue wins. Numeric strings are coerced."},{"name":"totalPages","type":"string | number | undefined","required":false,"description":"Seeds a paired `BbPagination`'s page count when the server reports pages,\nnot rows; the table renders nothing from it. A known total (`totalItems`)\nalways wins. Numeric strings are coerced."},{"name":"unselectedItems","type":"any[] | undefined","required":false,"default":"[]","description":"Items that are not selected."},{"name":"virtual","type":"boolean | undefined","required":false,"default":"false","description":"Windows the body: only the rows near the scrollport are mounted. Bound\nthe table's height to make it the scroller; column widths are measured\nonce, from the first rows. Ignored when inheriting widths and under a\n`#tbody` slot."}],"events":[{"name":"click:row","signature":"(event: MouseEvent, item: any): void","description":"A body row was clicked, or activated with Enter/Space under\n`keyboardNavigation`. Carries the DOM `MouseEvent` and the raw record."},{"name":"contextmenu:row","signature":"(event: MouseEvent, item: any): void","description":"A body row was right-clicked. Carries the DOM `MouseEvent` and the raw record."},{"name":"dblclick:row","signature":"(event: MouseEvent, item: any): void","description":"A body row was double-clicked. Carries the DOM `MouseEvent` and the raw record."},{"name":"hide:column","signature":"(key: string): void","description":"A column was hidden through a header slot's `hideColumn()`. Fired once;\nwrite `hidden: true` into the column definition to persist it."},{"name":"item:selected","signature":"(value: any): void","description":"The user selected one row. Carries the row's value (read through\n`itemValue`, the same value the selection v-model holds)."},{"name":"item:unselected","signature":"(value: any): void","description":"The user unselected one row. Carries the row's value, like `item:selected`."},{"name":"reorder:rows","signature":"(payload: { item: any; from: number; to: number; }): void","description":"A row was moved (`reorderable-rows`): `item` is your object, `from` /\n`to` index the `items` the table holds. Splice `items` in the handler; a\ndrop in place emits nothing."},{"name":"resize:column","signature":"(key: string, width: number | null): void","description":"A column was resized by the user (`resizable`): the new width in\npx, or `null` when the handle was double-clicked to reset the column to\nits declared width."},{"name":"update:expandedItems","signature":"(value: any[]): void","description":"Emitted with the new value whenever `v-model:expandedItems` changes."},{"name":"update:highlighted","signature":"(value: any): void","description":"Emitted with the new value whenever `v-model:highlighted` changes."},{"name":"update:modelValue","signature":"(value: any): void","description":"Emitted with the new value whenever `v-model` changes."},{"name":"update:order","signature":"(value: string[]): void","description":"Emitted with the new value whenever `v-model:order` changes."},{"name":"update:selectAll","signature":"(value: boolean): void","description":"Emitted with the new value whenever `v-model:selectAll` changes."},{"name":"update:sort","signature":"(value: BbTableSortEntry[]): void","description":"Emitted with the new value whenever `v-model:sort` changes."},{"name":"update:unselectedItems","signature":"(value: any[]): void","description":"Emitted with the new value whenever `v-model:unselectedItems` changes."}],"slots":[{"name":"actions","type":"{ expanded?: boolean | undefined; expandProps?: ExpandControllerProps | undefined; toggleExpanded?: (() => void) | undefined; highlighted?: boolean | undefined; toggleHighlighted?: (() => void) | undefined; selected?: boolean | undefined; toggleSelected?: (() => void) | undefined; item: Item; value: any; }","description":"Content rendered in the actions cell for each row. Providing this slot\nis what CREATES the actions column (there is no prop): the header cell\n(labelled by `actions-text`, replaceable through `#actions:header`) and\none cell per row appear with it, and go away with it. Pin it with\n`fixed-actions`."},{"name":"actions:header","type":"{ text: string; }","description":"Replaces the default actions header cell content."},{"name":"empty","type":"{ error: unknown; }","description":"Content shown when there are no rows and nothing is loading, inside the\ntable's own full-width cell: pass content, never a row. `error` is what\nthe latest failed load threw (`null` when none)."},{"name":"expand","type":"{ expanded: boolean; expandProps?: ExpandControllerProps | undefined; toggleExpanded: () => void; highlighted?: boolean | undefined; toggleHighlighted?: (() => void) | undefined; selected?: boolean | undefined; toggleSelected?: (() => void) | undefined; item: Item; value: any; }","description":"Full-width expandable content row rendered below each main row when expanded."},{"name":"header:append","type":"BbTableHeaderAffixSlotProps<Item>","fields":["classes?: Classes","columnKey: string","items?: Item[]","label?: string","sortable?: boolean","sortOrder?: \"asc\" | \"desc\" | null","toggleSort?: (() => void)","hideColumn?: (() => void)"],"description":"Content rendered after every data column's header cell content — the\nlabel + sort control, or the column's own `<key>:header` replacement.\nA column's `<key>:header:append` slot wins over this one for that\ncolumn; they never stack. Branch on `columnKey` for per-column output."},{"name":"header:prepend","type":"BbTableHeaderAffixSlotProps<Item>","fields":["classes?: Classes","columnKey: string","items?: Item[]","label?: string","sortable?: boolean","sortOrder?: \"asc\" | \"desc\" | null","toggleSort?: (() => void)","hideColumn?: (() => void)"],"description":"Content rendered before every data column's header cell content — the\nlabel + sort control, or the column's own `<key>:header` replacement.\nA column's `<key>:header:prepend` slot wins over this one for that\ncolumn; they never stack. Branch on `columnKey` for per-column output."},{"name":"loading","type":"{ items: Item[]; }","description":"Content shown while table rows are loading (replaces the skeleton rows)."},{"name":"select","type":"{ item: Item; value: any; checked: boolean; disabled: boolean; inputName: string; readonly: boolean; toggleSelected?: (() => void) | undefined; }","description":"Replaces the default checkbox/radio in the selection cell for each row."},{"name":"select:header","type":"{ multiple: boolean; selectAll: boolean; text: string; }","description":"Replaces the default selection header cell content (checkbox or radio label)."},{"name":"tbody","type":"object","description":"Replaces the content of the body row group (`.bb-table__body`). Use when\nyou need full control over the body markup. Provide role-complete rows —\n`<div role=\"row\">` holding one `<div role=\"cell\">` per column — never a\n`<tr>`/`<td>`. A full-width cell spans with `grid-column: 1 / -1`."},{"name":"tfoot","type":"{ columnCount: number; }","description":"Fills the footer row group (`.bb-table__foot`). Use when you need a\nfooter. Provide role-complete rows — `<div role=\"row\">` holding\n`<div role=\"cell\">` elements — never a `<tr>`/`<td>`."},{"name":"thead","type":"object","description":"Replaces the header row group's content (`.bb-table__head`). The table is\na CSS grid: provide `<div role=\"row\">` rows of `<div\nrole=\"columnheader\">` cells, never `<tr>` / `<th>`."},{"name":"<key>","type":"object","description":"One column's body cell in every row, by the column `key` through `slotKey`. Scope: `{ item, value, content, selected, expanded, highlighted, classes, sortOrder, toggleSelected, toggleExpanded, toggleHighlighted, expandProps }`.","dynamic":true},{"name":"<key>:header","type":"object","description":"One column's header content, replacing its label and the built-in sort button. Scope: `{ label, items, sortable, sortOrder, toggleSort, hideColumn, classes }`.","dynamic":true},{"name":"<key>:header:prepend","type":"BbTableHeaderAffixSlotProps<Item>","description":"Content before one column's header, keeping the sort button; beats `header:prepend` (they never stack).","dynamic":true},{"name":"<key>:header:append","type":"BbTableHeaderAffixSlotProps<Item>","description":"Content after one column's header, keeping the sort button; beats `header:append` (they never stack).","dynamic":true},{"name":"<key>:first","type":"BbTableEdgeCellSlotProps<Item>","description":"One column's cell in a row before the data rows; any such slot creates the row, aligned with the columns. Only over rows.","dynamic":true},{"name":"<key>:last","type":"BbTableEdgeCellSlotProps<Item>","description":"One column's cell in a row after the data rows (a totals row); any such slot creates that row, aligned like `<key>:first`.","dynamic":true}],"exposed":[],"models":[{"name":"expandedItems","type":"any[] | undefined"},{"name":"highlighted","type":"any"},{"name":"modelValue","type":"any"},{"name":"order","type":"string[] | undefined"},{"name":"selectAll","type":"boolean | undefined"},{"name":"sort","type":"BbTableSortEntry[] | undefined"},{"name":"unselectedItems","type":"any[] | undefined"}],"cssProps":[{"name":"--bg","value":"var(--bb-panel)","selector":".bb-table","description":"The table's surface colour. Cells are transparent at rest so the row can tint them, but anything that sticks over scrolled content — the stuck head band and pinned (`column.fixed`) cells — must be opaque, and paints this. Set it on the table (`.my-table { --bg: … }`) when the table sits on a surface that is not `--bb-panel`; a nested table re-declares its own."},{"name":"--px","value":"12px","selector":".bb-table"},{"name":"--cell-h","value":"36px","selector":".bb-table"},{"name":"--py","value":"6px","selector":".bb-table"},{"name":"--actions-spacing","value":"8px","selector":".bb-table"},{"name":"--offset-start","value":"0px","selector":".bb-table","description":"Raw structural edge offset measured by the component (the parent's select/actions track width). Default 0 keeps every calc at its base."},{"name":"--offset-end","value":"0px","selector":".bb-table"},{"name":"--offset-internal-start","value":"var(--offset-start)","selector":".bb-table","description":"Routing of that offset. By default it is \"internal\": added to the first/last cell padding and folded into the first/last column width. Swap internal↔external (set internal to 0 and external to the raw offset) to pad the whole table instead of the edge cells."},{"name":"--offset-internal-end","value":"var(--offset-end)","selector":".bb-table"},{"name":"--offset-external-start","value":"0px","selector":".bb-table"},{"name":"--offset-external-end","value":"0px","selector":".bb-table"},{"name":"--pin-l","value":"0px","selector":".bb-table","description":"Re-declared on every table: a nested table must not inherit its parent's fade or pinned edge."},{"name":"--pin-r","value":"0px","selector":".bb-table"},{"name":"--fade-l","value":"0px","selector":".bb-table"},{"name":"--fade-r","value":"0px","selector":".bb-table"},{"name":"--fade-a-l","value":"1","selector":".bb-table"},{"name":"--fade-a-r","value":"1","selector":".bb-table"},{"name":"--cue-l","value":"0px","selector":".bb-table"},{"name":"--cue-r","value":"0px","selector":".bb-table"},{"name":"--cue-w","value":"8px","selector":".bb-table"},{"name":"--cue","value":"rgb(0 0 0 / 0.1)","selector":".bb-table"},{"name":"--row-bg","value":"var(--bb-panel)","selector":".bb-table__row--lifted"}],"pt":{"parts":[{"name":"root","description":"The table's container."},{"name":"caption","description":"The visible caption (`caption` with `displayCaption`)."},{"name":"table","description":"The grid root: `role=\"table\"`, or `role=\"grid\"` with `keyboardNavigation` (`role=\"treegrid\"` with an `#expand` slot too)."},{"name":"head","description":"The header row group."},{"name":"headerRow","description":"The header row."},{"name":"cellColumnHeader","description":"Every column header cell (`role=\"columnheader\"`), the select and actions headers included — a broadcast resolved per header. Not a `<th>`: the grid is `div`s with ARIA roles."},{"name":"sortIcon","description":"A sortable column's sort arrow, resolved per header."},{"name":"body","description":"The body row group."},{"name":"row","description":"Every DATA row — a broadcast resolved per row. Expand rows and the skeleton are not parts. Also takes a per-item function, called with the row's raw item, once per rendered row: keep it cheap."},{"name":"cell","description":"Every data cell, the select and actions cells included — a broadcast resolved with its row's states (`role=\"cell\"`, `gridcell` under `keyboardNavigation`) — and the cells of the `firstRow` / `lastRow`, with no row state. Takes no function: use `tdClass` for a per-cell hook."},{"name":"firstRow","description":"The row of `#<key>:first` cells, before the data rows."},{"name":"lastRow","description":"The row of `#<key>:last` cells, after the data rows (a totals row: `pt:lastRow=\"font-semibold\"`)."},{"name":"selectIcon","description":"The selection glyph: each row's checkbox (radio with single selection) and the select-all checkbox — resolved per node. Not rendered when the `select` / `select:header` slots replace them."},{"name":"dragIcon","description":"The move glyph on the chip that follows a column drag (`reorderable`)."},{"name":"dragHandle","description":"Each row's grip button (`reorderable-rows`), resolved with its row's states. A class list or an object; no per-row function."},{"name":"foot","description":"The footer row group (the `tfoot` slot's container)."}],"states":[{"name":"empty","description":"Component-wide: there are no rows (`bb-table--empty`)."},{"name":"sorted","description":"Per node, on `cellColumnHeader` and `sortIcon`: the column is sorted, either direction (`bb-table__cell-column-header--sorted`)."},{"name":"sortedDesc","description":"Per node, on `cellColumnHeader` and `sortIcon`: sorted descending (`bb-table__cell-column-header--sorted-desc`). Ascending is `sorted` alone."},{"name":"selected","description":"Per node, on `row`, its cells and its `selectIcon`: a checked row; on the select-all glyph, every row is selected."},{"name":"indeterminate","description":"Per node, on the select-all `selectIcon`: some rows are selected, not all."},{"name":"disabled","description":"Per node, on `row`, its cells and its `selectIcon`: the row cannot be SELECTED — `selectable` rejects it, or the table is `disabled` (`bb-table__row--disabled`). It still clicks, highlights and expands. Never on a table without selection. The select-all glyph takes it from the table's `disabled`."},{"name":"expanded","description":"Per node, on `row` and its cells: the row's expand row is open (`bb-table__row--expanded`)."},{"name":"highlighted","description":"Per node, on `row` and its cells: the highlighted row."},{"name":"loading","description":"Component-wide: the table is `loading`."}]},"tree":{"bindings":[{"part":"caption","target":"div.bb-table__caption"},{"part":"dragIcon","target":"svg.bb-table__drag-icon"},{"part":"table","target":"div"},{"part":"head","target":"div.bb-table__head"},{"part":"headerRow","target":"div.bb-table__header-row"},{"part":"cellColumnHeader","target":"div.bb-table__cell-column-header"},{"part":"selectIcon","target":"BbBaseCheckboxIcon"},{"part":"sortIcon","target":"svg.bb-table__sort-icon"},{"part":"body","target":"div.bb-table__body"},{"part":"foot","target":"div.bb-table__foot"}],"nodes":[{"name":"BbBaseCheckboxIcon","kind":"public","cssProps":[{"name":"--accent","documented":false,"readBy":["bb-base-checkbox-icon","bb-base-checkbox-icon--errors","bb-base-checkbox-icon--warnings","bb-base-checkbox-icon--checked","bb-base-checkbox-icon--indeterminate"]},{"name":"--check-color","documented":false,"readBy":["bb-base-checkbox-icon__check","bb-base-checkbox-icon__indeterminate"]},{"name":"--size","documented":false,"readBy":["bb-base-checkbox-icon"]},{"name":"--r","documented":true,"readBy":["bb-base-checkbox-icon"]},{"name":"--ring-color","documented":true,"readBy":["bb-base-checkbox-icon","bb-base-checkbox-icon--focus-visible"]},{"name":"--elev","documented":true,"readBy":["bb-base-checkbox-icon","bb-base-checkbox-icon--focus-visible"]},{"name":"--bg","documented":true,"readBy":["bb-base-checkbox-icon"]},{"name":"--border-color","documented":false,"readBy":["bb-base-checkbox-icon"]}]},{"name":"BbBaseButton","kind":"public","vocabulary":"BbBaseButton","bindings":[{"part":"root","target":"RouterComponent"},{"part":"root","target":"a"},{"part":"root","target":"component"}],"children":[{"name":"RouterComponent","kind":"internal"}]}]},"css":{"classes":{"bb-sr-only":[""],"bb-table":["","--align-*","--compact","--empty","--fixed","--fixed-header","--inherit-widths","--loading","--overflow-left","--overflow-right","--pinned-left","--pinned-right","--reorderable","--resizable","--row-dragging","--selectable","--virtual","--virtual-flat","__body","__caption","__cell","__cell--*","__cell--actions","__cell--clip","__cell--edge-end","__cell--edge-start","__cell--fluid","__cell--nowrap","__cell--resized","__cell--row-drag","__cell--select","__cell-column-header","__cell-column-header--*","__cell-column-header--actions","__cell-column-header--clip","__cell-column-header--dragging","__cell-column-header--edge-end","__cell-column-header--edge-start","__cell-column-header--floored","__cell-column-header--locked","__cell-column-header--resizing","__cell-column-header--row-drag","__cell-column-header--select","__cell-column-header--sortable","__cell-column-header--sorted","__cell-column-header--sorted-desc","__drag-icon","__edge-row","__edge-row--*","__edge-row--first","__edge-row--fixed","__edge-row--last","__foot","__head","__head--dragging","__head--resizing","__header-row","__reorder-status","__row","__row--disabled","__row--drag-source","__row--expanded","__row--highlighted","__row--lifted","__row-handle","__row-handle-icon","__row-reorder-status","__select-icon","__sort-icon","__table"],"bb-table-check":["","__label","__label--disabled","__label-text"],"bb-table-column-drag":[""],"bb-table-column-ghost":[""],"bb-table-empty":["__cell","__row","__text"],"bb-table-expand":["__cell","__row","__row--highlighted"],"bb-table-header":["__content","__resizer"],"bb-table-loading":["__text"],"bb-table-placeholder":["__row","__row--pending"],"bb-table-radio":["","__label","__label--disabled","__label-text"],"bb-table-resizing":[""],"bb-table-row-drag":[""],"bb-table-row-ghost":[""],"bb-table-skeleton":["__avatar","__avatar-text","__badge","__cell","__cell--*","__cell--actions","__cell--row-drag","__cell--select","__cell-content","__image","__line","__placeholder","__row"],"bb-table-sort":["","--asc","--desc"],"bb-table-spacer":["__row"]},"locals":["--actions-spacing","--arrow-preview","--bg","--cell-h","--color-gray-200","--cue","--cue-l","--cue-r","--cue-w","--drop","--fade-a-l","--fade-a-r","--fade-l","--fade-r","--floor","--line","--offset-end","--offset-external-end","--offset-external-start","--offset-internal-end","--offset-internal-start","--offset-start","--pin-l","--pin-r","--placeholder-bars","--px","--py","--row-bg","--row-h","--stuck-head-h","--stuck-outer","--stuck-top","--ts","--virtual-row-tracks"]},"removed":[{"name":"allowSelectAll","new":"disableSelectAll","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"invert"}},{"name":"enabledWhileLoading","new":"interactiveWhileLoading","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"actions","new":null,"since":"3.0.0-beta.21","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"remove"}},{"name":"fixedColumns","new":null,"since":"3.0.0-beta.21","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"manual"}},{"name":"noDataText","new":"emptyText","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"no-data","new":"empty","surface":"slot","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:select","new":"select:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:actions","new":"actions:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:<x>:prepend","new":"<x>:header:prepend","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:<x>:append","new":"<x>:header:append","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:<x>","new":"<x>:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}}],"renamed":[{"from":"allowSelectAll","to":"disableSelectAll","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"invert"}},{"from":"enabledWhileLoading","to":"interactiveWhileLoading","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"noDataText","to":"emptyText","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"no-data","to":"empty","surface":"slot","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"header:select","to":"select:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"header:actions","to":"actions:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"header:<x>:prepend","to":"<x>:header:prepend","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"header:<x>:append","to":"<x>:header:append","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"header:<x>","to":"<x>:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}}]},
|
|
519
|
+
{"name":"BbTable","group":"Data Display","description":"Displays tabular data, configurable columns and data mapper.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbTable.md","source":"ai/source/BbTable.md","props":[{"name":"accessibleLabel","type":"((columns: MappedCell[], item: any) => string) | undefined","required":false,"description":"Function that accepts the columns and the current item as\narguments and returns a label to be used for accessibility purposes.\nThe cells arrive in RENDER order (they follow `order`, so the\nlabel reads like the row) — look a cell up by `key`, never by position."},{"name":"actionsText","type":"string | undefined","required":false,"description":"Label used in the header of the actions column."},{"name":"align","type":"\"left\" | \"center\" | \"right\" | undefined","required":false,"default":"\"left\"","description":"Text alignment of the columns."},{"name":"caption","type":"string | undefined","required":false,"description":"Caption that describes the content of the table. Used for accessibility purposes."},{"name":"columns","type":"BbTableColumn<T>[] | undefined","required":false,"default":"[]","description":"Array of definitions of how the columns should be rendered."},{"name":"compact","type":"boolean | undefined","required":false,"default":"false","description":"Adds a CSS class that applies a compact style to the component."},{"name":"dependencies","type":"unknown[] | undefined","required":false,"default":"[]","description":"Defines an array of dependencies that will trigger actions in the component upon change."},{"name":"depsDebounceTime","type":"number | undefined","required":false,"default":"0","description":"Timeout used to debounce response to changes to dependencies."},{"name":"disabled","type":"boolean | undefined","required":false,"default":"false","description":"Disables the component"},{"name":"disableSelectAll","type":"boolean | undefined","required":false,"default":"false","description":"Hides the \"Select all\" checkbox that selectable multi-row tables\ndisplay by default."},{"name":"displayCaption","type":"boolean | undefined","required":false,"default":"false","description":"Shows the caption as a visible title. Off by default: the caption is\nhidden, and screen readers still hear it as the table's name."},{"name":"emptyText","type":"string | undefined","required":false,"default":"the localized `common.emptyText` (\"No data to display\")","description":"String displayed when there are no items to display."},{"name":"enforceCoherence","type":"boolean | undefined","required":false,"default":"false","description":"After every load, prunes `modelValue`, `unselected-items`, `highlighted`\nand `expanded-items` of values whose row is gone (a single value resets\nto `null`). Never on a provider-paginated table: a page change would\nprune the other pages' selection; reconcile in the provider instead."},{"name":"expandedItems","type":"any[] | undefined","required":false,"default":"[]","description":"Used by `v-model:expandedItems`. Array of the currently expanded items —\ntoggled by the row expand control and by external writes (mirrors the\n`highlighted`/`sort` v-model surfaces). Drives the `#expand` slot rows and\ntheir `aria-expanded`/`aria-controls` wiring."},{"name":"failedText","type":"string | undefined","required":false,"default":"the localized `common.failedText` (\"Couldn't load items\")","description":"String displayed in the empty state while the latest load FAILED (the\n`items` provider threw): the twin of `emptyText` for that case."},{"name":"fixed","type":"boolean | undefined","required":false,"default":"false","description":"Splits the width equally among the columns that declare no `width`\n(each undeclared column becomes a `minmax(0, 1fr)` track)\nmaking each column take up the same amount of space."},{"name":"fixedActions","type":"boolean | undefined","required":false,"default":"false","description":"Pins the actions column (the one the `#actions` slot creates) to the\nright edge, `position: sticky`, in place. Data columns pin through\n`column.fixed`; this is the same feature for the structural column that\nhas no definition to carry it. No effect without an `#actions` slot."},{"name":"fixedFirst","type":"boolean | undefined","required":false,"default":"false","description":"Sticks the `#<key>:first` row to the top of the scrollport (under a\nstuck header)."},{"name":"fixedHeaders","type":"boolean | undefined","required":false,"default":"false","description":"Boolean that sets the headers as sticky to the top of the table."},{"name":"fixedLast","type":"boolean | undefined","required":false,"default":"false","description":"Sticks the `#<key>:last` row (a totals row) to the bottom of the\nscrollport."},{"name":"fixedSelect","type":"boolean | undefined","required":false,"default":"false","description":"Pins the selection column to the left edge, `position: sticky`, in\nplace. Data columns pin through `column.fixed`; this is the same feature\nfor the structural column that has no definition to carry it. No effect\nunless the table is `selectable`."},{"name":"headerRowClass","type":"Classes | undefined","required":false,"description":"Defines the classes to be passed to the header row."},{"name":"highlightable","type":"boolean | ((item: Item) => boolean) | undefined","required":false,"default":"undefined","description":"Which rows a click, Enter or `toggleHighlighted` may highlight: `false`\nfor none, or a function of the row's item. Unset: every row, when\n`highlighted` is bound. A value the app sets still shows on a refused row."},{"name":"highlighted","type":"any","required":false,"default":"undefined","description":"Used by `v-model:highlighted`: the one row the UI is about (\"the row\nwhose details are open\"), a single item value or `null`. Opt-in: bound,\na row click highlights; unbound, it only emits `click:row`. The row gets\n`aria-current=\"true\"` and a shipped tint."},{"name":"id","type":"string | undefined","required":false,"description":"Stable id for this table's width context. When omitted a unique id is\ngenerated. Nested tables use the nearest ancestor id to inherit widths."},{"name":"inheritColumnWidths","type":"string | boolean | undefined","required":false,"description":"A nested table snaps its columns to an ancestor table's tracks: `true` =\nthe nearest ancestor, a table `id` = that ancestor (when an intermediate\ntable has a different column count). Off by default: a nested table sizes\nitself."},{"name":"interactiveWhileLoading","type":"boolean | undefined","required":false,"default":"false","description":"Keeps the header and rows interactive while loading (by default they are\n`inert`: a refetch is about to replace them). For background refreshes\nthat must not interrupt an open editor."},{"name":"items","type":"Item[] | ((context: BbTableItemsContext) => Item[] | Promise<Item[]>)","required":true,"default":"[]","description":"Rows to render: an array, or a provider called with a\n`BbTableItemsContext` (`reason`, `modelValue`, `signal`), sync or async.\nA provider fails by THROWING, never by returning `[]`: the rows clear and\n`#empty` gets the `error`. Return the page as it is."},{"name":"itemValue","type":"ItemAccessor<Item> | undefined","required":false,"description":"Defines a path that returns a property of the row to use as its value (the\nselection, `expandedItems` and row keys compare by it) or a function that\nreturns any value."},{"name":"keyboardNavigation","type":"boolean | undefined","required":false,"default":"false","description":"Opt-in keyboard navigation: the table becomes an ARIA `grid` (a\n`treegrid` with an `#expand` slot) with ONE tab stop and a roving focus\nover its cells; controls inside cells leave the tab order (Enter/F2 go\nin). Ignored with a `#tbody` slot."},{"name":"legend","type":"string | undefined","required":false,"description":"The `<legend>` of a `selectable` table (it renders as a `<fieldset>`):\nthe selection's accessible name. Falls back to `caption`, then to a\nlocalized default."},{"name":"loading","type":"boolean | undefined","required":false,"default":"false","description":"Sets the component in a loading state, usually triggering some visual styles.\n\nWith no rows yet this renders skeletons; over existing rows the rows stay\non screen (dimmed, with an indeterminate bar) rather than being replaced —\na refetch should not blank a table the user is reading."},{"name":"loadingText","type":"string | undefined","required":false,"default":"the localized `common.loadingText` (\"Loading...\")","description":"Screen-reader announcement for the loading row's `aria-live` status.\nVisually hidden — the skeleton (or the `#loading` slot) is the visible\nsignal."},{"name":"max","type":"number | undefined","required":false,"default":"Infinity","description":"Maximum number of items that can be selected."},{"name":"modelValue","type":"any","required":false,"default":"[]","description":"Used by v-model. Can be any serializable type."},{"name":"multiple","type":"boolean | undefined","required":false,"default":"true","description":"Allows the selection of multiple items."},{"name":"name","type":"string | undefined","required":false,"description":"Defines the name of the input."},{"name":"order","type":"string[] | undefined","required":false,"default":"[]","description":"Used by `v-model:order`: the column keys in render order. Declared\ncolumns it omits follow in declaration order; unknown keys stay in place.\nA `reorderable` move writes it back complete. Works unbound, like `sort`;\nnever holds `select` / `actions`."},{"name":"page","type":"string | number | undefined","required":false,"description":"Current page (from 1), for the rows' `aria-rowindex` and a `BbPagination`\npaired through `id`. Doesn't slice `items`: pass the current page's rows.\nNumeric strings are coerced."},{"name":"perPage","type":"string | number | undefined","required":false,"description":"Rows per page, for `aria-rowindex` and a paired `BbPagination`. Doesn't\nslice `items`. Unset, an array `items` infers it from its length; an\nexplicit value wins. Numeric strings are coerced."},{"name":"pt","type":"PtItemMap<BbTablePtPart, \"row\", BbTablePtState, Item> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:<part>` row."},{"name":"pt:body","type":"PtValue | undefined","required":false},{"name":"pt:body:disabled","type":"PtValue | undefined","required":false},{"name":"pt:body:empty","type":"PtValue | undefined","required":false},{"name":"pt:body:expanded","type":"PtValue | undefined","required":false},{"name":"pt:body:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:body:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:body:loading","type":"PtValue | undefined","required":false},{"name":"pt:body:selected","type":"PtValue | undefined","required":false},{"name":"pt:body:sorted","type":"PtValue | undefined","required":false},{"name":"pt:body:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:caption","type":"PtValue | undefined","required":false},{"name":"pt:caption:disabled","type":"PtValue | undefined","required":false},{"name":"pt:caption:empty","type":"PtValue | undefined","required":false},{"name":"pt:caption:expanded","type":"PtValue | undefined","required":false},{"name":"pt:caption:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:caption:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:caption:loading","type":"PtValue | undefined","required":false},{"name":"pt:caption:selected","type":"PtValue | undefined","required":false},{"name":"pt:caption:sorted","type":"PtValue | undefined","required":false},{"name":"pt:caption:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:cell","type":"PtValue | undefined","required":false},{"name":"pt:cell:disabled","type":"PtValue | undefined","required":false},{"name":"pt:cell:empty","type":"PtValue | undefined","required":false},{"name":"pt:cell:expanded","type":"PtValue | undefined","required":false},{"name":"pt:cell:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:cell:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:cell:loading","type":"PtValue | undefined","required":false},{"name":"pt:cell:selected","type":"PtValue | undefined","required":false},{"name":"pt:cell:sorted","type":"PtValue | undefined","required":false},{"name":"pt:cell:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:disabled","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:empty","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:expanded","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:loading","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:selected","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:sorted","type":"PtValue | undefined","required":false},{"name":"pt:cellColumnHeader:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:disabled","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:empty","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:expanded","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:loading","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:selected","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:sorted","type":"PtValue | undefined","required":false},{"name":"pt:dragHandle:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:disabled","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:empty","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:expanded","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:loading","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:selected","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:sorted","type":"PtValue | undefined","required":false},{"name":"pt:dragIcon:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:firstRow","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:disabled","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:empty","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:expanded","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:loading","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:selected","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:sorted","type":"PtValue | undefined","required":false},{"name":"pt:firstRow:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:foot","type":"PtValue | undefined","required":false},{"name":"pt:foot:disabled","type":"PtValue | undefined","required":false},{"name":"pt:foot:empty","type":"PtValue | undefined","required":false},{"name":"pt:foot:expanded","type":"PtValue | undefined","required":false},{"name":"pt:foot:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:foot:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:foot:loading","type":"PtValue | undefined","required":false},{"name":"pt:foot:selected","type":"PtValue | undefined","required":false},{"name":"pt:foot:sorted","type":"PtValue | undefined","required":false},{"name":"pt:foot:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:head","type":"PtValue | undefined","required":false},{"name":"pt:head:disabled","type":"PtValue | undefined","required":false},{"name":"pt:head:empty","type":"PtValue | undefined","required":false},{"name":"pt:head:expanded","type":"PtValue | undefined","required":false},{"name":"pt:head:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:head:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:head:loading","type":"PtValue | undefined","required":false},{"name":"pt:head:selected","type":"PtValue | undefined","required":false},{"name":"pt:head:sorted","type":"PtValue | undefined","required":false},{"name":"pt:head:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:headerRow","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:disabled","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:empty","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:expanded","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:loading","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:selected","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:sorted","type":"PtValue | undefined","required":false},{"name":"pt:headerRow:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:lastRow","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:disabled","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:empty","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:expanded","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:loading","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:selected","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:sorted","type":"PtValue | undefined","required":false},{"name":"pt:lastRow:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"pt:root:disabled","type":"PtValue | undefined","required":false},{"name":"pt:root:empty","type":"PtValue | undefined","required":false},{"name":"pt:root:expanded","type":"PtValue | undefined","required":false},{"name":"pt:root:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:root:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:root:loading","type":"PtValue | undefined","required":false},{"name":"pt:root:selected","type":"PtValue | undefined","required":false},{"name":"pt:root:sorted","type":"PtValue | undefined","required":false},{"name":"pt:root:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:row","type":"PtValue | ((ctx: PtItemCtx<Item, BbTablePtState>) => PtItemResult) | undefined","required":false},{"name":"pt:row:disabled","type":"PtValue | undefined","required":false},{"name":"pt:row:empty","type":"PtValue | undefined","required":false},{"name":"pt:row:expanded","type":"PtValue | undefined","required":false},{"name":"pt:row:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:row:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:row:loading","type":"PtValue | undefined","required":false},{"name":"pt:row:selected","type":"PtValue | undefined","required":false},{"name":"pt:row:sorted","type":"PtValue | undefined","required":false},{"name":"pt:row:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:disabled","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:empty","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:expanded","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:loading","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:selected","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:sorted","type":"PtValue | undefined","required":false},{"name":"pt:selectIcon:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:disabled","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:empty","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:expanded","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:loading","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:selected","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:sorted","type":"PtValue | undefined","required":false},{"name":"pt:sortIcon:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:table","type":"PtValue | undefined","required":false},{"name":"pt:table:disabled","type":"PtValue | undefined","required":false},{"name":"pt:table:empty","type":"PtValue | undefined","required":false},{"name":"pt:table:expanded","type":"PtValue | undefined","required":false},{"name":"pt:table:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:table:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:table:loading","type":"PtValue | undefined","required":false},{"name":"pt:table:selected","type":"PtValue | undefined","required":false},{"name":"pt:table:sorted","type":"PtValue | undefined","required":false},{"name":"pt:table:sortedDesc","type":"PtValue | undefined","required":false},{"name":"readonly","type":"boolean | undefined","required":false,"default":"false","description":"Sets the input in a readonly state."},{"name":"reorderable","type":"boolean | undefined","required":false,"default":"false","description":"Lets the user reorder the data columns: drag a header, or Shift+←/→ on a\nfocused header. Every move writes `v-model:order`; a column panel that\nonly writes `order` does not need it. `select` / `actions` and a custom\n`#thead` never move."},{"name":"reorderableRows","type":"boolean | undefined","required":false,"default":"false","description":"Adds a grip at the start of each row: the user drags a row, or lifts it\nwith Space / Enter and the arrow keys, and `reorder:rows` reports\n`{ item, from, to }`. The table never reorders `items`: splice it in the\nhandler."},{"name":"resizable","type":"boolean | undefined","required":false,"default":"false","description":"Lets the user resize the data columns (drag a header's trailing edge, or\nAlt+←/→; double-click resets). Each commit fires `resize:column(key,\nwidth)` once: write the width back into the column definition to keep it.\nIgnored when inheriting widths."},{"name":"rowClass","type":"BbTableRowClasses<Item> | undefined","required":false,"description":"Defines the classes to be passed to each data row. Can also be a\nfunction of the row's item for dynamic values."},{"name":"selectable","type":"boolean | ((item: Item) => boolean) | undefined","required":false,"description":"Defines whether the table is selectable.\nCan be a global boolean that affects all rows or a function\nthat accepts an item and returns a boolean that only affects that item."},{"name":"selectAll","type":"boolean | undefined","required":false,"default":"false","description":"Defines whether the \"Select all\" checkbox is checked."},{"name":"selectAllLabel","type":"string | undefined","required":false,"description":"Text of the label used by the \"Select all\" boolean."},{"name":"selectText","type":"string | undefined","required":false,"description":"Text of the header used for the radio inputs when the table is not `multiple`."},{"name":"sort","type":"BbTableSortEntry[] | undefined","required":false,"default":"[]","description":"Used by `v-model:sort`: `[columnKey, direction]` entries in priority\norder, written by the `sortable` headers and shown by them. Doesn't sort\n`items`: apply it to your data or your server query."},{"name":"tdClass","type":"ColumnClasses<Item> | undefined","required":false,"description":"Defines the classes to be passed to every data cell. Can also be a function for dynamic values."},{"name":"thClass","type":"Classes | undefined","required":false,"description":"Defines the classes to be passed to every header cell."},{"name":"totalItems","type":"string | number | undefined","required":false,"description":"Total row count, for `aria-rowcount` and a paired `BbPagination`'s page\ncount. Unset, an array `items` infers it from its length; an explicit\nvalue wins. Numeric strings are coerced."},{"name":"totalPages","type":"string | number | undefined","required":false,"description":"Seeds a paired `BbPagination`'s page count when the server reports pages,\nnot rows; the table renders nothing from it. A known total (`totalItems`)\nalways wins. Numeric strings are coerced."},{"name":"unselectedItems","type":"any[] | undefined","required":false,"default":"[]","description":"Items that are not selected."},{"name":"virtual","type":"boolean | undefined","required":false,"default":"false","description":"Windows the body: only the rows near the scrollport are mounted. Bound\nthe table's height to make it the scroller; column widths are measured\nonce, from the first rows. Ignored when inheriting widths and under a\n`#tbody` slot."}],"events":[{"name":"click:row","signature":"(event: MouseEvent, item: any): void","description":"A body row was clicked, or activated with Enter/Space under\n`keyboardNavigation`. Carries the DOM `MouseEvent` and the raw record."},{"name":"contextmenu:row","signature":"(event: MouseEvent, item: any): void","description":"A body row was right-clicked. Carries the DOM `MouseEvent` and the raw record."},{"name":"dblclick:row","signature":"(event: MouseEvent, item: any): void","description":"A body row was double-clicked. Carries the DOM `MouseEvent` and the raw record."},{"name":"hide:column","signature":"(key: string): void","description":"A column was hidden through a header slot's `hideColumn()`. Fired once;\nwrite `hidden: true` into the column definition to persist it."},{"name":"item:selected","signature":"(value: any): void","description":"The user selected one row. Carries the row's value (read through\n`itemValue`, the same value the selection v-model holds)."},{"name":"item:unselected","signature":"(value: any): void","description":"The user unselected one row. Carries the row's value, like `item:selected`."},{"name":"reorder:rows","signature":"(payload: { item: any; from: number; to: number; }): void","description":"A row was moved (`reorderable-rows`): `item` is your object, `from` /\n`to` index the `items` the table holds. Splice `items` in the handler; a\ndrop in place emits nothing."},{"name":"resize:column","signature":"(key: string, width: number | null): void","description":"A column was resized by the user (`resizable`): the new width in\npx, or `null` when the handle was double-clicked to reset the column to\nits declared width."},{"name":"update:expandedItems","signature":"(value: any[]): void","description":"Emitted with the new value whenever `v-model:expandedItems` changes."},{"name":"update:highlighted","signature":"(value: any): void","description":"Emitted with the new value whenever `v-model:highlighted` changes."},{"name":"update:modelValue","signature":"(value: any): void","description":"Emitted with the new value whenever `v-model` changes."},{"name":"update:order","signature":"(value: string[]): void","description":"Emitted with the new value whenever `v-model:order` changes."},{"name":"update:selectAll","signature":"(value: boolean): void","description":"Emitted with the new value whenever `v-model:selectAll` changes."},{"name":"update:sort","signature":"(value: BbTableSortEntry[]): void","description":"Emitted with the new value whenever `v-model:sort` changes."},{"name":"update:unselectedItems","signature":"(value: any[]): void","description":"Emitted with the new value whenever `v-model:unselectedItems` changes."}],"slots":[{"name":"actions","type":"{ expanded?: boolean | undefined; expandProps?: ExpandControllerProps | undefined; toggleExpanded?: (() => void) | undefined; highlighted?: boolean | undefined; toggleHighlighted?: (() => void) | undefined; selected?: boolean | undefined; toggleSelected?: (() => void) | undefined; item: Item; value: any; }","description":"Content rendered in the actions cell for each row. Providing this slot\nis what CREATES the actions column (there is no prop): the header cell\n(labelled by `actions-text`, replaceable through `#actions:header`) and\none cell per row appear with it, and go away with it. Pin it with\n`fixed-actions`."},{"name":"actions:header","type":"{ text: string; }","description":"Replaces the default actions header cell content."},{"name":"empty","type":"{ error: unknown; }","description":"Content shown when there are no rows and nothing is loading, inside the\ntable's own full-width cell: pass content, never a row. `error` is what\nthe latest failed load threw (`null` when none)."},{"name":"expand","type":"{ expanded: boolean; expandProps?: ExpandControllerProps | undefined; toggleExpanded: () => void; highlighted?: boolean | undefined; toggleHighlighted?: (() => void) | undefined; selected?: boolean | undefined; toggleSelected?: (() => void) | undefined; item: Item; value: any; }","description":"Full-width expandable content row rendered below each main row when expanded."},{"name":"header:append","type":"BbTableHeaderAffixSlotProps<Item>","fields":["classes?: Classes","columnKey: string","items?: Item[]","label?: string","sortable?: boolean","sortOrder?: \"asc\" | \"desc\" | null","toggleSort?: (() => void)","hideColumn?: (() => void)"],"description":"Content rendered after every data column's header cell content — the\nlabel + sort control, or the column's own `<key>:header` replacement.\nA column's `<key>:header:append` slot wins over this one for that\ncolumn; they never stack. Branch on `columnKey` for per-column output."},{"name":"header:prepend","type":"BbTableHeaderAffixSlotProps<Item>","fields":["classes?: Classes","columnKey: string","items?: Item[]","label?: string","sortable?: boolean","sortOrder?: \"asc\" | \"desc\" | null","toggleSort?: (() => void)","hideColumn?: (() => void)"],"description":"Content rendered before every data column's header cell content — the\nlabel + sort control, or the column's own `<key>:header` replacement.\nA column's `<key>:header:prepend` slot wins over this one for that\ncolumn; they never stack. Branch on `columnKey` for per-column output."},{"name":"loading","type":"{ items: Item[]; }","description":"Content shown while table rows are loading (replaces the skeleton rows)."},{"name":"select","type":"{ item: Item; value: any; checked: boolean; disabled: boolean; inputName: string; readonly: boolean; toggleSelected?: (() => void) | undefined; }","description":"Replaces the default checkbox/radio in the selection cell for each row."},{"name":"select:header","type":"{ multiple: boolean; selectAll: boolean; text: string; }","description":"Replaces the default selection header cell content (checkbox or radio label)."},{"name":"tbody","type":"object","description":"Replaces the content of the body row group (`.bb-table__body`). Use when\nyou need full control over the body markup. Provide role-complete rows —\n`<div role=\"row\">` holding one `<div role=\"cell\">` per column — never a\n`<tr>`/`<td>`. A full-width cell spans with `grid-column: 1 / -1`."},{"name":"tfoot","type":"{ columnCount: number; }","description":"Fills the footer row group (`.bb-table__foot`). Use when you need a\nfooter. Provide role-complete rows — `<div role=\"row\">` holding\n`<div role=\"cell\">` elements — never a `<tr>`/`<td>`."},{"name":"thead","type":"object","description":"Replaces the header row group's content (`.bb-table__head`). The table is\na CSS grid: provide `<div role=\"row\">` rows of `<div\nrole=\"columnheader\">` cells, never `<tr>` / `<th>`."},{"name":"<key>","type":"object","description":"One column's body cell in every row, by the column `key` through `slotKey`. Scope: `{ item, value, content, selected, expanded, highlighted, classes, sortOrder, toggleSelected, toggleExpanded, toggleHighlighted, expandProps }`.","dynamic":true},{"name":"<key>:header","type":"object","description":"One column's header content, replacing its label and the built-in sort button. Scope: `{ label, items, sortable, sortOrder, toggleSort, hideColumn, classes }`.","dynamic":true},{"name":"<key>:header:prepend","type":"BbTableHeaderAffixSlotProps<Item>","description":"Content before one column's header, keeping the sort button; beats `header:prepend` (they never stack).","dynamic":true},{"name":"<key>:header:append","type":"BbTableHeaderAffixSlotProps<Item>","description":"Content after one column's header, keeping the sort button; beats `header:append` (they never stack).","dynamic":true},{"name":"<key>:first","type":"BbTableEdgeCellSlotProps<Item>","description":"One column's cell in a row before the data rows; any such slot creates the row, aligned with the columns. Only over rows.","dynamic":true},{"name":"<key>:last","type":"BbTableEdgeCellSlotProps<Item>","description":"One column's cell in a row after the data rows (a totals row); any such slot creates that row, aligned like `<key>:first`.","dynamic":true}],"exposed":[],"models":[{"name":"expandedItems","type":"any[] | undefined"},{"name":"highlighted","type":"any"},{"name":"modelValue","type":"any"},{"name":"order","type":"string[] | undefined"},{"name":"selectAll","type":"boolean | undefined"},{"name":"sort","type":"BbTableSortEntry[] | undefined"},{"name":"unselectedItems","type":"any[] | undefined"}],"cssProps":[{"name":"--bg","value":"var(--bb-panel)","selector":".bb-table","description":"The table's surface colour. Cells are transparent at rest so the row can tint them, but anything that sticks over scrolled content — the stuck head band and pinned (`column.fixed`) cells — must be opaque, and paints this. Set it on the table (`.my-table { --bg: … }`) when the table sits on a surface that is not `--bb-panel`; a nested table re-declares its own."},{"name":"--px","value":"12px","selector":".bb-table"},{"name":"--cell-h","value":"36px","selector":".bb-table"},{"name":"--py","value":"6px","selector":".bb-table"},{"name":"--actions-spacing","value":"8px","selector":".bb-table"},{"name":"--offset-start","value":"0px","selector":".bb-table","description":"Raw structural edge offset measured by the component (the parent's select/actions track width). Default 0 keeps every calc at its base."},{"name":"--offset-end","value":"0px","selector":".bb-table"},{"name":"--offset-internal-start","value":"var(--offset-start)","selector":".bb-table","description":"Routing of that offset. By default it is \"internal\": added to the first/last cell padding and folded into the first/last column width. Swap internal↔external (set internal to 0 and external to the raw offset) to pad the whole table instead of the edge cells."},{"name":"--offset-internal-end","value":"var(--offset-end)","selector":".bb-table"},{"name":"--offset-external-start","value":"0px","selector":".bb-table"},{"name":"--offset-external-end","value":"0px","selector":".bb-table"},{"name":"--pin-l","value":"0px","selector":".bb-table","description":"Re-declared on every table: a nested table must not inherit its parent's fade or pinned edge."},{"name":"--pin-r","value":"0px","selector":".bb-table"},{"name":"--fade-l","value":"0px","selector":".bb-table"},{"name":"--fade-r","value":"0px","selector":".bb-table"},{"name":"--fade-a-l","value":"1","selector":".bb-table"},{"name":"--fade-a-r","value":"1","selector":".bb-table"},{"name":"--cue-l","value":"0px","selector":".bb-table"},{"name":"--cue-r","value":"0px","selector":".bb-table"},{"name":"--cue-w","value":"8px","selector":".bb-table"},{"name":"--cue","value":"rgb(0 0 0 / 0.1)","selector":".bb-table"},{"name":"--row-bg","value":"var(--bb-panel)","selector":".bb-table__row--lifted"}],"pt":{"parts":[{"name":"root","description":"The table's container."},{"name":"caption","description":"The visible caption (`caption` with `displayCaption`)."},{"name":"table","description":"The grid root: `role=\"table\"`, or `role=\"grid\"` with `keyboardNavigation` (`role=\"treegrid\"` with an `#expand` slot too)."},{"name":"head","description":"The header row group."},{"name":"headerRow","description":"The header row."},{"name":"cellColumnHeader","description":"Every column header cell (`role=\"columnheader\"`), the select and actions headers included — a broadcast resolved per header. Not a `<th>`: the grid is `div`s with ARIA roles."},{"name":"sortIcon","description":"A sortable column's sort arrow, resolved per header."},{"name":"body","description":"The body row group."},{"name":"row","description":"Every DATA row — a broadcast resolved per row. Expand rows and the skeleton are not parts. Also takes a per-item function, called with the row's raw item, once per rendered row: keep it cheap."},{"name":"cell","description":"Every data cell, the select and actions cells included — a broadcast resolved with its row's states (`role=\"cell\"`, `gridcell` under `keyboardNavigation`) — and the cells of the `firstRow` / `lastRow`, with no row state. Takes no function: use `tdClass` for a per-cell hook."},{"name":"firstRow","description":"The row of `#<key>:first` cells, before the data rows."},{"name":"lastRow","description":"The row of `#<key>:last` cells, after the data rows (a totals row: `pt:lastRow=\"font-semibold\"`)."},{"name":"selectIcon","description":"The selection glyph: each row's checkbox (radio with single selection) and the select-all checkbox — resolved per node. Not rendered when the `select` / `select:header` slots replace them."},{"name":"dragIcon","description":"The move glyph on the chip that follows a column drag (`reorderable`)."},{"name":"dragHandle","description":"Each row's grip button (`reorderable-rows`), resolved with its row's states. A class list or an object; no per-row function."},{"name":"foot","description":"The footer row group (the `tfoot` slot's container)."}],"states":[{"name":"empty","description":"Component-wide: there are no rows (`bb-table--empty`)."},{"name":"sorted","description":"Per node, on `cellColumnHeader` and `sortIcon`: the column is sorted, either direction (`bb-table__cell-column-header--sorted`)."},{"name":"sortedDesc","description":"Per node, on `cellColumnHeader` and `sortIcon`: sorted descending (`bb-table__cell-column-header--sorted-desc`). Ascending is `sorted` alone."},{"name":"selected","description":"Per node, on `row`, its cells and its `selectIcon`: a checked row; on the select-all glyph, every row is selected."},{"name":"indeterminate","description":"Per node, on the select-all `selectIcon`: some rows are selected, not all."},{"name":"disabled","description":"Per node, on `row`, its cells and its `selectIcon`: the row cannot be SELECTED — `selectable` rejects it, or the table is `disabled` (`bb-table__row--disabled`). It still clicks, highlights and expands. Never on a table without selection. The select-all glyph takes it from the table's `disabled`."},{"name":"expanded","description":"Per node, on `row` and its cells: the row's expand row is open (`bb-table__row--expanded`)."},{"name":"highlighted","description":"Per node, on `row` and its cells: the highlighted row."},{"name":"loading","description":"Component-wide: the table is `loading`."}]},"tree":{"bindings":[{"part":"caption","target":"div.bb-table__caption"},{"part":"dragIcon","target":"svg.bb-table__drag-icon"},{"part":"table","target":"div"},{"part":"head","target":"div.bb-table__head"},{"part":"headerRow","target":"div.bb-table__header-row"},{"part":"cellColumnHeader","target":"div.bb-table__cell-column-header"},{"part":"selectIcon","target":"BbBaseCheckboxIcon"},{"part":"sortIcon","target":"svg.bb-table__sort-icon"},{"part":"body","target":"div.bb-table__body"},{"part":"foot","target":"div.bb-table__foot"}],"nodes":[{"name":"BbBaseCheckboxIcon","kind":"public","cssProps":[{"name":"--accent","documented":false,"readBy":["bb-base-checkbox-icon","bb-base-checkbox-icon--errors","bb-base-checkbox-icon--warnings","bb-base-checkbox-icon--checked","bb-base-checkbox-icon--indeterminate"]},{"name":"--check-color","documented":false,"readBy":["bb-base-checkbox-icon__check","bb-base-checkbox-icon__indeterminate"]},{"name":"--size","documented":false,"readBy":["bb-base-checkbox-icon"]},{"name":"--r","documented":true,"readBy":["bb-base-checkbox-icon"]},{"name":"--ring-color","documented":true,"readBy":["bb-base-checkbox-icon","bb-base-checkbox-icon--focus-visible"]},{"name":"--elev","documented":true,"readBy":["bb-base-checkbox-icon","bb-base-checkbox-icon--focus-visible"]},{"name":"--bg","documented":true,"readBy":["bb-base-checkbox-icon"]},{"name":"--border-color","documented":false,"readBy":["bb-base-checkbox-icon"]}]},{"name":"BbBaseButton","kind":"public","vocabulary":"BbBaseButton","bindings":[{"part":"root","target":"RouterComponent"},{"part":"root","target":"a"},{"part":"root","target":"component"}],"children":[{"name":"RouterComponent","kind":"internal"}]}]},"css":{"classes":{"bb-sr-only":[""],"bb-table":["","--align-*","--compact","--empty","--fixed","--fixed-header","--inherit-widths","--loading","--overflow-left","--overflow-right","--pinned-left","--pinned-right","--reorderable","--resizable","--row-dragging","--selectable","--virtual","--virtual-flat","__body","__caption","__cell","__cell--*","__cell--actions","__cell--clip","__cell--edge-end","__cell--edge-start","__cell--fluid","__cell--nowrap","__cell--resized","__cell--row-drag","__cell--select","__cell-column-header","__cell-column-header--*","__cell-column-header--actions","__cell-column-header--clip","__cell-column-header--dragging","__cell-column-header--edge-end","__cell-column-header--edge-start","__cell-column-header--floored","__cell-column-header--locked","__cell-column-header--resizing","__cell-column-header--row-drag","__cell-column-header--select","__cell-column-header--sortable","__cell-column-header--sorted","__cell-column-header--sorted-desc","__drag-icon","__edge-row","__edge-row--*","__edge-row--first","__edge-row--fixed","__edge-row--last","__foot","__head","__head--dragging","__head--resizing","__header-row","__reorder-status","__row","__row--disabled","__row--drag-source","__row--expanded","__row--highlightable","__row--highlighted","__row--lifted","__row-handle","__row-handle-icon","__row-reorder-status","__select-icon","__sort-icon","__table"],"bb-table-check":["","__label","__label--disabled","__label-text"],"bb-table-column-drag":[""],"bb-table-column-ghost":[""],"bb-table-empty":["__cell","__row","__text"],"bb-table-expand":["__cell","__row","__row--highlighted"],"bb-table-header":["__content","__resizer"],"bb-table-loading":["__text"],"bb-table-placeholder":["__row","__row--pending"],"bb-table-radio":["","__label","__label--disabled","__label-text"],"bb-table-resizing":[""],"bb-table-row-drag":[""],"bb-table-row-ghost":[""],"bb-table-skeleton":["__avatar","__avatar-text","__badge","__cell","__cell--*","__cell--actions","__cell--row-drag","__cell--select","__cell-content","__image","__line","__placeholder","__row"],"bb-table-sort":["","--asc","--desc"],"bb-table-spacer":["__row"]},"locals":["--actions-spacing","--arrow-preview","--bg","--cell-h","--color-gray-200","--cue","--cue-l","--cue-r","--cue-w","--drop","--fade-a-l","--fade-a-r","--fade-l","--fade-r","--floor","--line","--offset-end","--offset-external-end","--offset-external-start","--offset-internal-end","--offset-internal-start","--offset-start","--pin-l","--pin-r","--placeholder-bars","--px","--py","--row-bg","--row-h","--stuck-head-h","--stuck-outer","--stuck-top","--ts","--virtual-row-tracks"]},"removed":[{"name":"allowSelectAll","new":"disableSelectAll","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"invert"}},{"name":"enabledWhileLoading","new":"interactiveWhileLoading","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"actions","new":null,"since":"3.0.0-beta.21","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"remove"}},{"name":"fixedColumns","new":null,"since":"3.0.0-beta.21","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"manual"}},{"name":"noDataText","new":"emptyText","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"no-data","new":"empty","surface":"slot","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:select","new":"select:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:actions","new":"actions:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:<x>:prepend","new":"<x>:header:prepend","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:<x>:append","new":"<x>:header:append","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:<x>","new":"<x>:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","silent":true,"fix":{"kind":"rename"}}],"renamed":[{"from":"allowSelectAll","to":"disableSelectAll","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"invert"}},{"from":"enabledWhileLoading","to":"interactiveWhileLoading","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"noDataText","to":"emptyText","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"no-data","to":"empty","surface":"slot","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}},{"from":"header:select","to":"select:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"header:actions","to":"actions:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"header:<x>:prepend","to":"<x>:header:prepend","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"header:<x>:append","to":"<x>:header:append","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}},{"from":"header:<x>","to":"<x>:header","surface":"slot","migration":"ai/guides/migration/components/bb-table.md","fix":{"kind":"rename"}}]},
|
|
520
520
|
{"name":"BbTabs","group":"Navigation","description":"Switches between views of one page from a row of tabs. For the tabs and their panels in different places of the layout, use BbTabsRoot with BbTabsList and BbTabsPanels.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbTabs.md","source":"ai/source/BbTabs.md","props":[{"name":"block","type":"boolean | undefined","required":false,"default":"false","description":"Displays the component as full width."},{"name":"compact","type":"boolean | undefined","required":false,"default":"false","description":"Adds a CSS class that applies a compact style to the component."},{"name":"direction","type":"\"horizontal\" | \"vertical\" | undefined","required":false,"default":"\"horizontal\"","description":"Direction of the tabs component."},{"name":"disableAnimateX","type":"boolean | undefined","required":false,"default":"false","description":"Disables the horizontal slide transition between tab panels\n(enabled by default)."},{"name":"disableAnimateY","type":"boolean | undefined","required":false,"default":"false","description":"Disables the smooth height animation when switching between tab\npanels (enabled by default)."},{"name":"disabled","type":"boolean | undefined","required":false,"default":"false","description":"Disables the component"},{"name":"eager","type":"boolean | undefined","required":false,"default":"false","description":"Renders every tab's panel at mount and keeps it mounted, hidden while\ninactive, instead of only the active one. One tab alone: its item's\n`eager`."},{"name":"headers","type":"Record<string, string> | undefined","required":false,"description":"Additional HTTP headers forwarded to Inertia when navigation is triggered.\nOnly meaningful in an Inertia context."},{"name":"id","type":"string | undefined","required":false,"description":"The root's `id`, and the key `useBbTabsContext(id)` pairs by. Generated\nwhen omitted."},{"name":"items","type":"BbTabsItem<K>[]","required":true,"description":"Array of items that define the tabs in the component."},{"name":"manualActivation","type":"boolean | undefined","required":false,"default":"`undefined` (on when `server` is set on the strip or an item)","description":"Arrow keys (and Home / End) only move focus; Enter or Space opens the\ntab (APG manual activation, Radix `activationMode=\"manual\"`). Unset:\non when the strip or an item has `server` (else every arrow press is\na visit), off elsewhere; `href` alone does not turn it on."},{"name":"modelValue","type":"K | null | undefined","required":false,"description":"The active tab's `value`. Used by v-model."},{"name":"navigation","type":"boolean | undefined","required":false,"default":"false","description":"Synchronizes the current tab with the URL query parameter.\n\nPair it with `replace` unless a tab is genuinely a separate destination —\nsee the `replace` prop."},{"name":"onBefore","type":"(() => boolean | void) | undefined","required":false,"description":"Inertia lifecycle hook — fired just before the request is sent.\nReturn `false` to cancel the visit."},{"name":"onCancel","type":"(() => void) | undefined","required":false,"description":"Inertia lifecycle hook — fired when the request is cancelled."},{"name":"onError","type":"((errors: Record<string, string>) => void) | undefined","required":false,"description":"Inertia lifecycle hook — fired when the server returns validation errors."},{"name":"onFinish","type":"(() => void) | undefined","required":false,"description":"Inertia lifecycle hook — fired after the visit finishes (success or error)."},{"name":"only","type":"string[] | undefined","required":false,"description":"Limits which server-side props are refreshed during a partial Inertia reload.\nOnly meaningful in an Inertia context."},{"name":"onProgress","type":"((progress: { percentage: number | undefined; }) => void) | undefined","required":false,"description":"Inertia lifecycle hook — fired when upload/download progress is available."},{"name":"onStart","type":"(() => void) | undefined","required":false,"description":"Inertia lifecycle hook — fired when the request starts."},{"name":"onSuccess","type":"(() => void) | undefined","required":false,"description":"Inertia lifecycle hook — fired when the visit completes successfully."},{"name":"preserveScroll","type":"boolean | ((props: Record<string, unknown>) => boolean) | undefined","required":false,"description":"Controls whether Inertia preserves the scroll position after navigation.\nOnly meaningful in an Inertia context."},{"name":"preserveState","type":"boolean | ((props: Record<string, unknown>) => boolean) | null | undefined","required":false,"description":"Controls whether Inertia preserves the current component state after navigation.\nOnly meaningful in an Inertia context."},{"name":"pt","type":"PtItemMap<BbTabsPtPart, \"item\", BbTabsPtState, BbTabsItem<K>> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:<part>` row."},{"name":"pt:indicator","type":"PtValue | undefined","required":false},{"name":"pt:indicator:active","type":"PtValue | undefined","required":false},{"name":"pt:indicator:disabled","type":"PtValue | undefined","required":false},{"name":"pt:item","type":"PtValue | ((ctx: PtItemCtx<BbTabsItem<K>, BbTabsPtState>) => PtItemResult) | undefined","required":false},{"name":"pt:item:active","type":"PtValue | undefined","required":false},{"name":"pt:item:disabled","type":"PtValue | undefined","required":false},{"name":"pt:list","type":"PtValue | undefined","required":false},{"name":"pt:list:active","type":"PtValue | undefined","required":false},{"name":"pt:list:disabled","type":"PtValue | undefined","required":false},{"name":"pt:panel","type":"PtValue | undefined","required":false},{"name":"pt:panel:active","type":"PtValue | undefined","required":false},{"name":"pt:panel:disabled","type":"PtValue | undefined","required":false},{"name":"pt:panels","type":"PtValue | undefined","required":false},{"name":"pt:panels:active","type":"PtValue | undefined","required":false},{"name":"pt:panels:disabled","type":"PtValue | undefined","required":false},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"pt:root:active","type":"PtValue | undefined","required":false},{"name":"pt:root:disabled","type":"PtValue | undefined","required":false},{"name":"pt:wrapper","type":"PtValue | undefined","required":false},{"name":"pt:wrapper:active","type":"PtValue | undefined","required":false},{"name":"pt:wrapper:disabled","type":"PtValue | undefined","required":false},{"name":"queryKey","type":"string | undefined","required":false,"default":"\"tab\"","description":"Defines the query key used for URL-based navigation."},{"name":"replace","type":"boolean | undefined","required":false,"default":"false","description":"Replaces the history entry instead of pushing one when the tab\nchanges. Recommended with `navigation`: the query keeps the tab while\nBack leaves the page. Leave it off when a tab is a destination of its\nown (a `server` visit)."},{"name":"server","type":"boolean | undefined","required":false,"default":"false","description":"When true and in an Inertia context, triggers a real server-side Inertia\nvisit instead of a client-only `history.pushState`."},{"name":"variant","type":"keyof TabsVariantRegistry | undefined","required":false,"default":"\"pill\"","values":["none","pill","line"],"description":"Look of the tab strip: `pill` (segmented, a sliding raised pill),\n`line` (a baseline with a sliding underline) or `none` (no chrome).\nEach is a preset of the strip's tokens; register more with the vite\nplugin's `tabsVariants` and style `.bb-tabs-list--<variant>`."}],"events":[{"name":"update:modelValue","signature":"(value: K): void","description":"Emitted when the selected tab changes. Used by `v-model`."}],"slots":[{"name":"label","type":"BbTabsSlotProps<K>","fields":["current: K | null","currentIndex: number","disabled: boolean","isFirst: boolean","isLast: boolean","selected: boolean","label: string","value: K","goTo: (target: \"first\" | \"previous\" | \"next\" | \"last\") => void"],"description":"Fallback slot used for all tab labels when no per-tab `<value>:label` slot is provided."},{"name":"wrapper:append","type":"BbTabsScrollSlotProps","fields":["isScrolling: boolean","canScrollLeft: boolean","canScrollRight: boolean","scroll: (direction: \"left\" | \"right\") => void"],"description":"Content rendered after the scrollable tab label list (e.g. a right scroll arrow)."},{"name":"wrapper:prepend","type":"BbTabsScrollSlotProps","fields":["isScrolling: boolean","canScrollLeft: boolean","canScrollRight: boolean","scroll: (direction: \"left\" | \"right\") => void"],"description":"Content rendered before the scrollable tab label list (e.g. a left scroll arrow)."},{"name":"<value>","type":"BbTabsSlotProps<K>","description":"One tab's content panel, by the tab's `value` through `slotKey`; no fallback (an empty panel).","dynamic":true},{"name":"<value>:label","type":"BbTabsSlotProps<K>","description":"One tab trigger's label, by the tab's `value` through `slotKey`; beats `label`, which beats the item's `label` text.","dynamic":true}],"exposed":[],"models":[{"name":"modelValue","type":"K | null | undefined"}],"cssProps":[{"name":"--gap","value":"8px","selector":".bb-tabs"},{"name":"--list-bg","value":"color-mix(in oklab, var(--bb-text) 8%, transparent)","selector":".bb-tabs-list","description":"The strip behind the triggers"},{"name":"--list-border","value":"transparent","selector":".bb-tabs-list","description":"The strip's edge line: a baseline under the triggers (beside them when vertical), --bb-border-w thick, painted inside the strip. `pill` draws none; `line` sets it to --bb-border"},{"name":"--p","value":"3px","selector":".bb-tabs-list","description":"strip inner padding — the gutter the indicator sits in, and the scroll inset"},{"name":"--list-r","value":"var(--bb-radius)","selector":".bb-tabs-list","description":"strip corners"},{"name":"--list-h","value":"var(--bb-control-h)","selector":".bb-tabs-list","description":"strip min height"},{"name":"--fs","value":"var(--bb-fs)","selector":".bb-tabs-list","description":"trigger label size"},{"name":"--trigger-gap","value":"0px","selector":".bb-tabs-list","description":"space between triggers"},{"name":"--trigger-px","value":"10px","selector":".bb-tabs-list","description":"trigger side padding"},{"name":"--trigger-r","value":"calc(var(--list-r) - var(--p))","selector":".bb-tabs-list","description":"Trigger corners, concentric inside --list-r"},{"name":"--trigger-min-h","value":"calc(var(--list-h) - var(--p) * 2)","selector":".bb-tabs-list","description":"Trigger height inside the padded strip"},{"name":"--list-fg","value":"var(--bb-text-muted)","selector":".bb-tabs-list","description":"inactive trigger label"},{"name":"--hover-fg","value":"var(--bb-text)","selector":".bb-tabs-list","description":"hovered trigger label"},{"name":"--active-fg","value":"var(--bb-text)","selector":".bb-tabs-list","description":"active trigger label"},{"name":"--active-fw","value":"500","selector":".bb-tabs-list","description":"active trigger label weight (inactive labels are 500)"},{"name":"--indicator-bg","value":"var(--bb-panel)","selector":".bb-tabs-list","description":"the indicator's fill"},{"name":"--indicator-border","value":"color-mix(in oklab, var(--bb-text) 8%, transparent)","selector":".bb-tabs-list","description":"The indicator's edge"},{"name":"--indicator-r","value":"var(--trigger-r)","selector":".bb-tabs-list","description":"The indicator's corners — the pill's, concentric inside --list-r"},{"name":"--indicator-h","value":"initial","selector":".bb-tabs-list","description":"The indicator's thickness: its height, its width on a vertical strip. `initial` fills the whole trigger box — the pill; a bar is `2px`, on the trigger's bottom edge (side edge when vertical)"},{"name":"--indicator-inset","value":"0px","selector":".bb-tabs-list","description":"Inset of the indicator from the trigger box — shrinks the pill; a bar keeps its thickness, shortens by it at both ends and floats it above the edge"},{"name":"--elev","value":"var(--bb-elev)","selector":".bb-tabs-list","description":"The theme's resting lift, composed UNDER the indicator's own shadow. Two names because they are two decisions: `--elev` is what the language lifts every plate by, `--indicator-shadow` is this component's own."},{"name":"--indicator-shadow","value":"var(--bb-shadow-sm)","selector":".bb-tabs-list","description":"Indicator lift, painted on top of --elev — the theme's selected-segment lift, so it holds in dark (a literal black 6% vanished there)."},{"name":"--transition-duration","value":"var(--bb-transition-slow)","selector":".bb-tabs-panels"},{"name":"--gap","value":"30px","selector":".bb-tabs-panels"},{"name":"--max-w","value":"initial","selector":".bb-tabs-panels","description":"The strip-width knob must not percolate into panel content: nested tabs rendered inside a panel start with a clean slate"}],"pt":{"parts":[{"name":"root","description":"The tabs' outer element, around the strip and the panels."},{"name":"wrapper","description":"The strip's outer element: the `wrapper:prepend` slot, the triggers, the `wrapper:append` slot. `BbTabsList`'s root in a split layout."},{"name":"list","description":"The `role=\"tablist\"` row the triggers sit in — it scrolls when they overflow, and the indicator slides inside it."},{"name":"item","description":"One tab trigger — a broadcast resolved per tab with its own `active` / `disabled`. Also takes a per-item function, called with the tab's descriptor."},{"name":"indicator","description":"The marker sliding under the active trigger: the pill, or the bar of the `line` variant. Its position and size are measured."},{"name":"panels","description":"The element around the panels. `BbTabsPanels`'s root in a split layout."},{"name":"panel","description":"One tab panel — a broadcast; `panel:active` is the panel on show. Takes no function."}],"states":[{"name":"disabled","description":"On every part while the whole tabs is `disabled`; per node on `item`: a tab that is disabled."},{"name":"active","description":"Per node, on `item` and `panel`: the selected tab's trigger and its shown panel."}]},"tree":{"forwards":[{"to":"BbTabsList","mapping":"passthrough.forwardInstance(LIST_PARTS)"},{"to":"BbTabsPanels","mapping":"passthrough.forwardInstance(PANELS_PARTS)"}],"nodes":[{"name":"BbTabsList","kind":"public","vocabulary":"BbTabs","bindings":[{"part":"list","target":"ul.bb-tabs-list__list"},{"part":"indicator","target":"li.bb-tabs-list__indicator"},{"part":"item","target":"BbBaseButton"}],"children":[{"name":"BbBaseButton","kind":"public","vocabulary":"BbBaseButton","bindings":[{"part":"root","target":"RouterComponent"},{"part":"root","target":"a"},{"part":"root","target":"component"}],"children":[{"name":"RouterComponent","kind":"internal"}]}]},{"name":"BbTabsPanels","kind":"public","vocabulary":"BbTabs","bindings":[{"part":"panel","target":"section.bb-tabs__panel"}]}]},"css":{"classes":{"bb-tabs":["","--*","--block","--compact","--disabled","--vertical","__panel","__panel--shown","__trigger-content","__trigger-label"]},"locals":["--active-fg","--active-fw","--color-gray-200","--elev","--eq","--fs","--gap","--height","--hover-fg","--indicator-bg","--indicator-border","--indicator-h","--indicator-inset","--indicator-r","--indicator-shadow","--left","--list-bg","--list-border","--list-fg","--list-h","--list-r","--max-w","--p","--top","--transition-duration","--trigger-gap","--trigger-min-h","--trigger-px","--trigger-r","--width"]},"attrTargets":["div"],"removed":[{"name":"animateX","new":"disableAnimateX","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"invert"}},{"name":"animateY","new":"disableAnimateY","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"invert"}},{"name":"querykey","new":"queryKey","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:prepend","new":"wrapper:prepend","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:append","new":"wrapper:append","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"rename"}},{"name":"label:<x>","new":"<x>:label","surface":"slot","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}},{"name":"items[].key","new":"items[].value","surface":"item","hint":"a tab's identity: what `v-model` holds and its `#<value>` / `#<value>:label` slots; `check --fix` renames it","since":"3.0.0-beta.49","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}}],"renamed":[{"from":"animateX","to":"disableAnimateX","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-tabs.md","fix":{"kind":"invert"}},{"from":"animateY","to":"disableAnimateY","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-tabs.md","fix":{"kind":"invert"}},{"from":"querykey","to":"queryKey","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-tabs.md","fix":{"kind":"rename"}},{"from":"header:prepend","to":"wrapper:prepend","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","fix":{"kind":"rename"}},{"from":"header:append","to":"wrapper:append","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","fix":{"kind":"rename"}},{"from":"label:<x>","to":"<x>:label","surface":"slot","migration":"ai/guides/migration/components/bb-tabs.md","fix":{"kind":"rename"}}]},
|
|
521
521
|
{"name":"BbTabsList","group":"Navigation","description":"The trigger strip of a split BbTabsRoot layout (renders the tab buttons only).","referenceOnly":false,"hasGuide":false,"contract":"ai/BbTabsList.md","source":"ai/source/BbTabsList.md","props":[{"name":"pt","type":"PtItemMap<BbTabsListPtPart, \"item\", BbTabsPtState, BbTabsItem<string>> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:<part>` row."},{"name":"pt:indicator","type":"PtValue | undefined","required":false},{"name":"pt:indicator:active","type":"PtValue | undefined","required":false},{"name":"pt:indicator:disabled","type":"PtValue | undefined","required":false},{"name":"pt:item","type":"PtValue | ((ctx: PtItemCtx<BbTabsItem<string>, BbTabsPtState>) => PtItemResult) | undefined","required":false},{"name":"pt:item:active","type":"PtValue | undefined","required":false},{"name":"pt:item:disabled","type":"PtValue | undefined","required":false},{"name":"pt:list","type":"PtValue | undefined","required":false},{"name":"pt:list:active","type":"PtValue | undefined","required":false},{"name":"pt:list:disabled","type":"PtValue | undefined","required":false},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"pt:root:active","type":"PtValue | undefined","required":false},{"name":"pt:root:disabled","type":"PtValue | undefined","required":false},{"name":"variant","type":"keyof TabsVariantRegistry | undefined","required":false,"values":["none","pill","line"],"description":"Look of this strip — the `variant` of the owning `BbTabs` / `BbTabsRoot`\nunless set here. See `BbTabsProps.variant` for the values."}],"events":[],"slots":[{"name":"label","type":"BbTabsSlotProps<string>","fields":["current: K | null","currentIndex: number","disabled: boolean","isFirst: boolean","isLast: boolean","selected: boolean","label: string","value: K","goTo: (target: \"first\" | \"previous\" | \"next\" | \"last\") => void"],"description":"Fallback slot used for all tab labels when no per-tab `<value>:label` slot is provided."},{"name":"wrapper:append","type":"BbTabsScrollSlotProps","fields":["isScrolling: boolean","canScrollLeft: boolean","canScrollRight: boolean","scroll: (direction: \"left\" | \"right\") => void"],"description":"Content rendered after the scrollable tab label list (e.g. a right scroll arrow)."},{"name":"wrapper:prepend","type":"BbTabsScrollSlotProps","fields":["isScrolling: boolean","canScrollLeft: boolean","canScrollRight: boolean","scroll: (direction: \"left\" | \"right\") => void"],"description":"Content rendered before the scrollable tab label list (e.g. a left scroll arrow)."},{"name":"<value>:label","type":"BbTabsSlotProps<K>","description":"One tab trigger's label, by the tab's `value` through `slotKey`; beats `label`, which beats the item's `label` text.","dynamic":true}],"exposed":[],"models":[],"cssProps":[{"name":"--gap","value":"8px","selector":".bb-tabs"},{"name":"--list-bg","value":"color-mix(in oklab, var(--bb-text) 8%, transparent)","selector":".bb-tabs-list","description":"The strip behind the triggers"},{"name":"--list-border","value":"transparent","selector":".bb-tabs-list","description":"The strip's edge line: a baseline under the triggers (beside them when vertical), --bb-border-w thick, painted inside the strip. `pill` draws none; `line` sets it to --bb-border"},{"name":"--p","value":"3px","selector":".bb-tabs-list","description":"strip inner padding — the gutter the indicator sits in, and the scroll inset"},{"name":"--list-r","value":"var(--bb-radius)","selector":".bb-tabs-list","description":"strip corners"},{"name":"--list-h","value":"var(--bb-control-h)","selector":".bb-tabs-list","description":"strip min height"},{"name":"--fs","value":"var(--bb-fs)","selector":".bb-tabs-list","description":"trigger label size"},{"name":"--trigger-gap","value":"0px","selector":".bb-tabs-list","description":"space between triggers"},{"name":"--trigger-px","value":"10px","selector":".bb-tabs-list","description":"trigger side padding"},{"name":"--trigger-r","value":"calc(var(--list-r) - var(--p))","selector":".bb-tabs-list","description":"Trigger corners, concentric inside --list-r"},{"name":"--trigger-min-h","value":"calc(var(--list-h) - var(--p) * 2)","selector":".bb-tabs-list","description":"Trigger height inside the padded strip"},{"name":"--list-fg","value":"var(--bb-text-muted)","selector":".bb-tabs-list","description":"inactive trigger label"},{"name":"--hover-fg","value":"var(--bb-text)","selector":".bb-tabs-list","description":"hovered trigger label"},{"name":"--active-fg","value":"var(--bb-text)","selector":".bb-tabs-list","description":"active trigger label"},{"name":"--active-fw","value":"500","selector":".bb-tabs-list","description":"active trigger label weight (inactive labels are 500)"},{"name":"--indicator-bg","value":"var(--bb-panel)","selector":".bb-tabs-list","description":"the indicator's fill"},{"name":"--indicator-border","value":"color-mix(in oklab, var(--bb-text) 8%, transparent)","selector":".bb-tabs-list","description":"The indicator's edge"},{"name":"--indicator-r","value":"var(--trigger-r)","selector":".bb-tabs-list","description":"The indicator's corners — the pill's, concentric inside --list-r"},{"name":"--indicator-h","value":"initial","selector":".bb-tabs-list","description":"The indicator's thickness: its height, its width on a vertical strip. `initial` fills the whole trigger box — the pill; a bar is `2px`, on the trigger's bottom edge (side edge when vertical)"},{"name":"--indicator-inset","value":"0px","selector":".bb-tabs-list","description":"Inset of the indicator from the trigger box — shrinks the pill; a bar keeps its thickness, shortens by it at both ends and floats it above the edge"},{"name":"--elev","value":"var(--bb-elev)","selector":".bb-tabs-list","description":"The theme's resting lift, composed UNDER the indicator's own shadow. Two names because they are two decisions: `--elev` is what the language lifts every plate by, `--indicator-shadow` is this component's own."},{"name":"--indicator-shadow","value":"var(--bb-shadow-sm)","selector":".bb-tabs-list","description":"Indicator lift, painted on top of --elev — the theme's selected-segment lift, so it holds in dark (a literal black 6% vanished there)."},{"name":"--transition-duration","value":"var(--bb-transition-slow)","selector":".bb-tabs-panels"},{"name":"--gap","value":"30px","selector":".bb-tabs-panels"},{"name":"--max-w","value":"initial","selector":".bb-tabs-panels","description":"The strip-width knob must not percolate into panel content: nested tabs rendered inside a panel start with a clean slate"}],"pt":{"parts":[{"name":"root","description":"The strip's outer element: the `wrapper:prepend` slot, the triggers, the `wrapper:append` slot (`BbTabs`'s `wrapper`)."},{"name":"list","description":"The `role=\"tablist\"` row the triggers sit in."},{"name":"item","description":"One tab trigger, per tab with its own `active` / `disabled`. Also takes a per-item function, called with the tab's descriptor."},{"name":"indicator","description":"The marker sliding under the active trigger."}],"states":[{"name":"disabled","description":"On every part while the whole tabs is `disabled`; per node on `item`: a tab that is disabled."},{"name":"active","description":"Per node, on `item` and `panel`: the selected tab's trigger and its shown panel."}]},"tree":{"bindings":[{"part":"list","target":"ul.bb-tabs-list__list"},{"part":"indicator","target":"li.bb-tabs-list__indicator"},{"part":"item","target":"BbBaseButton"}],"nodes":[{"name":"BbBaseButton","kind":"public","vocabulary":"BbBaseButton","bindings":[{"part":"root","target":"RouterComponent"},{"part":"root","target":"a"},{"part":"root","target":"component"}],"children":[{"name":"RouterComponent","kind":"internal"}]}]},"css":{"classes":{"bb-tabs-list":["","--*","--block","--compact","--disabled","--line","--none","--vertical","__append","__indicator","__item","__item--active","__list","__list--measuring","__list--no-transition","__prepend"]},"locals":["--active-fg","--active-fw","--color-gray-200","--elev","--eq","--fs","--gap","--height","--hover-fg","--indicator-bg","--indicator-border","--indicator-h","--indicator-inset","--indicator-r","--indicator-shadow","--left","--list-bg","--list-border","--list-fg","--list-h","--list-r","--max-w","--p","--top","--transition-duration","--trigger-gap","--trigger-min-h","--trigger-px","--trigger-r","--width"]},"attrTargets":["div"],"removed":[{"name":"header:prepend","new":"wrapper:prepend","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"rename"}},{"name":"header:append","new":"wrapper:append","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"rename"}},{"name":"label:<x>","new":"<x>:label","surface":"slot","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}}],"renamed":[{"from":"header:prepend","to":"wrapper:prepend","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","fix":{"kind":"rename"}},{"from":"header:append","to":"wrapper:append","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","fix":{"kind":"rename"}},{"from":"label:<x>","to":"<x>:label","surface":"slot","migration":"ai/guides/migration/components/bb-tabs.md","fix":{"kind":"rename"}}]},
|
|
522
522
|
{"name":"BbTabsPanels","group":"Navigation","description":"The panel host of a split BbTabsRoot layout (renders the tab content only).","referenceOnly":false,"hasGuide":false,"contract":"ai/BbTabsPanels.md","source":"ai/source/BbTabsPanels.md","props":[{"name":"pt","type":"PtMap<BbTabsPanelsPtPart, BbTabsPtState> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:<part>` row."},{"name":"pt:panel","type":"PtValue | undefined","required":false},{"name":"pt:panel:active","type":"PtValue | undefined","required":false},{"name":"pt:panel:disabled","type":"PtValue | undefined","required":false},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"pt:root:active","type":"PtValue | undefined","required":false},{"name":"pt:root:disabled","type":"PtValue | undefined","required":false}],"events":[],"slots":[{"name":"<value>","type":"BbTabsSlotProps<K>","description":"One tab's content panel, by the tab's `value` through `slotKey`; no fallback (an empty panel).","dynamic":true}],"exposed":[],"models":[],"cssProps":[{"name":"--gap","value":"8px","selector":".bb-tabs"},{"name":"--list-bg","value":"color-mix(in oklab, var(--bb-text) 8%, transparent)","selector":".bb-tabs-list","description":"The strip behind the triggers"},{"name":"--list-border","value":"transparent","selector":".bb-tabs-list","description":"The strip's edge line: a baseline under the triggers (beside them when vertical), --bb-border-w thick, painted inside the strip. `pill` draws none; `line` sets it to --bb-border"},{"name":"--p","value":"3px","selector":".bb-tabs-list","description":"strip inner padding — the gutter the indicator sits in, and the scroll inset"},{"name":"--list-r","value":"var(--bb-radius)","selector":".bb-tabs-list","description":"strip corners"},{"name":"--list-h","value":"var(--bb-control-h)","selector":".bb-tabs-list","description":"strip min height"},{"name":"--fs","value":"var(--bb-fs)","selector":".bb-tabs-list","description":"trigger label size"},{"name":"--trigger-gap","value":"0px","selector":".bb-tabs-list","description":"space between triggers"},{"name":"--trigger-px","value":"10px","selector":".bb-tabs-list","description":"trigger side padding"},{"name":"--trigger-r","value":"calc(var(--list-r) - var(--p))","selector":".bb-tabs-list","description":"Trigger corners, concentric inside --list-r"},{"name":"--trigger-min-h","value":"calc(var(--list-h) - var(--p) * 2)","selector":".bb-tabs-list","description":"Trigger height inside the padded strip"},{"name":"--list-fg","value":"var(--bb-text-muted)","selector":".bb-tabs-list","description":"inactive trigger label"},{"name":"--hover-fg","value":"var(--bb-text)","selector":".bb-tabs-list","description":"hovered trigger label"},{"name":"--active-fg","value":"var(--bb-text)","selector":".bb-tabs-list","description":"active trigger label"},{"name":"--active-fw","value":"500","selector":".bb-tabs-list","description":"active trigger label weight (inactive labels are 500)"},{"name":"--indicator-bg","value":"var(--bb-panel)","selector":".bb-tabs-list","description":"the indicator's fill"},{"name":"--indicator-border","value":"color-mix(in oklab, var(--bb-text) 8%, transparent)","selector":".bb-tabs-list","description":"The indicator's edge"},{"name":"--indicator-r","value":"var(--trigger-r)","selector":".bb-tabs-list","description":"The indicator's corners — the pill's, concentric inside --list-r"},{"name":"--indicator-h","value":"initial","selector":".bb-tabs-list","description":"The indicator's thickness: its height, its width on a vertical strip. `initial` fills the whole trigger box — the pill; a bar is `2px`, on the trigger's bottom edge (side edge when vertical)"},{"name":"--indicator-inset","value":"0px","selector":".bb-tabs-list","description":"Inset of the indicator from the trigger box — shrinks the pill; a bar keeps its thickness, shortens by it at both ends and floats it above the edge"},{"name":"--elev","value":"var(--bb-elev)","selector":".bb-tabs-list","description":"The theme's resting lift, composed UNDER the indicator's own shadow. Two names because they are two decisions: `--elev` is what the language lifts every plate by, `--indicator-shadow` is this component's own."},{"name":"--indicator-shadow","value":"var(--bb-shadow-sm)","selector":".bb-tabs-list","description":"Indicator lift, painted on top of --elev — the theme's selected-segment lift, so it holds in dark (a literal black 6% vanished there)."},{"name":"--transition-duration","value":"var(--bb-transition-slow)","selector":".bb-tabs-panels"},{"name":"--gap","value":"30px","selector":".bb-tabs-panels"},{"name":"--max-w","value":"initial","selector":".bb-tabs-panels","description":"The strip-width knob must not percolate into panel content: nested tabs rendered inside a panel start with a clean slate"}],"pt":{"parts":[{"name":"root","description":"The element around the panels (`BbTabs`'s `panels`)."},{"name":"panel","description":"One tab panel — a broadcast; `panel:active` is the panel on show. Takes no function."}],"states":[{"name":"disabled","description":"On every part while the whole tabs is `disabled`; per node on `item`: a tab that is disabled."},{"name":"active","description":"Per node, on `item` and `panel`: the selected tab's trigger and its shown panel."}]},"css":{"classes":{"bb-tabs-panels":[""]},"locals":["--active-fg","--active-fw","--color-gray-200","--elev","--eq","--fs","--gap","--height","--hover-fg","--indicator-bg","--indicator-border","--indicator-h","--indicator-inset","--indicator-r","--indicator-shadow","--left","--list-bg","--list-border","--list-fg","--list-h","--list-r","--max-w","--p","--top","--transition-duration","--trigger-gap","--trigger-min-h","--trigger-px","--trigger-r","--width"]},"attrTargets":["div"]},
|