bitboss-ui 3.0.0-beta.62 → 3.0.0-beta.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/BbConfirm.md +46 -22
- package/dist/ai/BbForm.md +66 -4
- package/dist/ai/BbHost.md +11 -13
- package/dist/ai/BbPtScope.md +6 -4
- package/dist/ai/BbTable.md +65 -5
- package/dist/ai/changelog.json +28 -4
- package/dist/ai/components.json +5 -5
- package/dist/ai/composables/useConfirm.md +8 -5
- package/dist/ai/guides/agent-contract.md +3 -2
- package/dist/ai/guides/migration/components/bb-host.md +4 -2
- package/dist/ai/guides/migration/components/use-confirm.md +15 -15
- package/dist/ai/guides/migration/v2-to-v3.md +9 -0
- package/dist/ai/guides/passthrough.md +57 -57
- package/dist/ai/guides/validated-forms.md +5 -0
- package/dist/ai/helpers/inertia/manifest.json +1 -1
- package/dist/ai/manifest/components/BbHost.tree.json +1 -2
- package/dist/ai/manifest/components/BbTable.json +2 -0
- package/dist/ai/manifest/index.json +2 -2
- package/dist/ai/manifest/types.advanced.json +1 -1
- package/dist/ai/source/BbConfirm.md +33 -21
- package/dist/ai/source/BbConfirmPortal.md +7 -16
- package/dist/ai/source/BbHost.md +3 -3
- package/dist/ai/source/BbTable.md +37 -9
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +83 -74
- package/dist/components/BbConfirm/BbConfirmHost.d.ts +10 -0
- package/dist/components/BbConfirm/BbConfirmHost.js +32 -0
- package/dist/components/BbConfirm/BbConfirmPortal.vue_vue_type_script_setup_true_lang.js +8 -12
- package/dist/components/BbConfirm/confirmEntry.d.ts +4 -0
- package/dist/components/BbConfirm/confirmEntry.js +4 -0
- package/dist/components/BbConfirm/types.d.ts +2 -2
- package/dist/components/BbHost/BbHost.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +426 -380
- package/dist/components/BbTable/BbTableDataRow.js +17 -12
- package/dist/components/BbTable/BbTableSelectToggle.d.ts +1 -1
- package/dist/components/BbTable/types.d.ts +14 -3
- package/dist/components/BbTable/types.js +2 -0
- package/dist/composables/useBbFormContext.d.ts +7 -3
- package/dist/composables/useConfirm.d.ts +327 -33
- package/dist/composables/useConfirm.js +93 -71
- package/dist/llms-full.txt +295 -129
- package/dist/llms-medium.txt +3 -2
- package/dist/styles.css +1 -1
- package/dist/types/passthrough.d.ts +1 -1
- package/dist/types/ptComponentMap.d.ts +1 -1
- 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.63",
|
|
5
|
+
"generatedAt": "2026-10-22T21:18:03.397Z",
|
|
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. An api type named <component>Props (BbOffCanvasProps) is that component's props: read its component entry.",
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
{"name":"BbColorPaletteEvents","usage":"wrapper","component":null,"usedBy":[]},
|
|
291
291
|
{"name":"BbColorPaletteProps","usage":"wrapper","component":null,"usedBy":[]},
|
|
292
292
|
{"name":"BbColorPaletteSlots","usage":"wrapper","component":null,"usedBy":[]},
|
|
293
|
-
{"name":"BbConfirmMessage","usage":"advanced","component":null,"usedBy":[],"definition":"type BbConfirmMessage = { actions?: false | readonly ConfirmButtonConfig[]; autoClose?: boolean; dismissAsNo?: boolean; no?: false | string | ConfirmButtonConfig; yes?: false | string | ConfirmButtonConfig; focusTarget?: string; fullscreen?: boolean | 'mobile'; hideClose?: boolean; persistent?: boolean; portal?: Component | string; data?: Record<string, any>; returning?: boolean; size?: keyof BbDialogSizes; text?: string; variant?: ConfirmVariantType; duration?: number; title?: string; };"},
|
|
293
|
+
{"name":"BbConfirmMessage","usage":"advanced","component":null,"usedBy":[],"definition":"type BbConfirmMessage = { actions?: false | readonly ConfirmButtonConfig[]; autoClose?: boolean; dismissAsNo?: boolean; no?: false | string | ConfirmButtonConfig; yes?: false | string | ConfirmButtonConfig; focusTarget?: string; fullscreen?: boolean | 'mobile'; hideClose?: boolean; persistent?: boolean; portal?: Component | string; data?: Record<string, any>; returning?: boolean; size?: keyof BbDialogSizes; stack?: string; text?: string; variant?: ConfirmVariantType; duration?: number; title?: string; };"},
|
|
294
294
|
{"name":"BbConfirmPortalSlotProps","usage":"api","component":"BbConfirm","usedBy":[{"component":"BbConfirmPortal","surface":"slot","name":"default"}],"definition":"type BbConfirmPortalSlotProps<P = any> = { data: P; yes: () => void; no: () => void; };"},
|
|
295
295
|
{"name":"BbDateDirectiveValue","usage":"advanced","component":null,"usedBy":[],"definition":"type BbDateDirectiveValue = BbDateDirectiveSingle | BbDateDirectiveRange | BbDateDirectiveMultiple;","members":{"BbDateDirectiveSingle":["eager?: boolean","transitionDuration?: number","disabled?: boolean","step?: number","time?: string | string[] | null","label?: string","type?: DatePickerType","readonly?: boolean","floating?: boolean","placement?: Placement","adaptive?: boolean","offCanvasProps?: Partial<BbOffCanvasProps>","offset?: number","padding?: number","max?: string","anchor?: ElementOrComponentRef","selectable?: ((date: string) => boolean)","boundary?: ElementOrComponentRefOrSelector","disableFlip?: boolean","activeSegment?: BbCalendarSegment","seconds?: boolean","ampm?: boolean","min?: string","firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6","utc?: boolean","range?: false","multiple?: false","modelValue: string | null","onUpdate:modelValue?: ((value: string | null) => void)","onUpdate:time?: ((value: string | null) => void)"],"BbDateDirectiveRange":["eager?: boolean","transitionDuration?: number","disabled?: boolean","step?: number","time?: string | string[] | null","label?: string","type?: DatePickerType","readonly?: boolean","floating?: boolean","placement?: Placement","adaptive?: boolean","offCanvasProps?: Partial<BbOffCanvasProps>","offset?: number","padding?: number","max?: string","anchor?: ElementOrComponentRef","selectable?: ((date: string) => boolean)","boundary?: ElementOrComponentRefOrSelector","disableFlip?: boolean","activeSegment?: BbCalendarSegment","seconds?: boolean","ampm?: boolean","min?: string","firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6","utc?: boolean","range: true","multiple?: false","modelValue: string[] | null","onUpdate:modelValue?: ((value: string[]) => void)","onUpdate:time?: ((value: string[]) => void)"],"BbDateDirectiveMultiple":["eager?: boolean","transitionDuration?: number","disabled?: boolean","step?: number","time?: string | string[] | null","label?: string","type?: DatePickerType","readonly?: boolean","floating?: boolean","placement?: Placement","adaptive?: boolean","offCanvasProps?: Partial<BbOffCanvasProps>","offset?: number","padding?: number","max?: string","anchor?: ElementOrComponentRef","selectable?: ((date: string) => boolean)","boundary?: ElementOrComponentRefOrSelector","disableFlip?: boolean","activeSegment?: BbCalendarSegment","seconds?: boolean","ampm?: boolean","min?: string","firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6","utc?: boolean","multiple: true","range?: false","modelValue: string[]","onUpdate:modelValue?: ((value: string[]) => void)","onUpdate:time?: ((value: string | string[] | null) => void)"]}},
|
|
296
296
|
{"name":"BbDatePickerEvents","usage":"wrapper","component":"BbDatePicker","usedBy":[]},
|
|
@@ -519,7 +519,7 @@
|
|
|
519
519
|
{"name":"BbDropdownGroup","group":"Overlay","description":"Renderless v-model companion for a group declared in BbDropdown.items, bound by id.","referenceOnly":false,"hasGuide":false,"contract":"ai/BbDropdownGroup.md","source":"ai/source/BbDropdownGroup.md","props":[{"name":"id","type":"string","required":true,"description":"Identifier of the group to bind to — must match the `id` of a group declared in the host `BbDropdown`'s `items`."},{"name":"modelValue","type":"any","required":false,"description":"The group's selection: one value for a single group, an array for a `multiple` one. Read by the owning BbDropdown through the group's `id`."}],"events":[{"name":"item:selected","signature":"(value: any): void","description":"The user picked a row, at the click, a pick you then refuse included — with the row's value (its `item-value` for pipeline groups, else its `value`), symmetric with `BbTable`. Your own `v-model` changes fire none."},{"name":"item:unselected","signature":"(value: any): void","description":"The user unpicked a row (or a single pick replaced it), with its resolved value."},{"name":"update:modelValue","signature":"(value: any): void","description":"The value a user change asks for (a pick, a chip ×, a coherence prune). With a listener the group is controlled: the rows tick when you write the value, and ignoring it leaves them as they are."}],"slots":[{"name":"default","type":"{}"}],"exposed":[],"models":[{"name":"modelValue","type":"any"}]},
|
|
520
520
|
{"name":"BbDropzone","group":"Inputs","description":"Supports drag-and-drop file input flows.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbDropzone.md","source":"ai/source/BbDropzone.md","props":[{"name":"accept","type":"string[] | undefined","required":false,"description":"File filter: MIME types (`'image/png'`), wildcards (`'image/*'`), extensions (`'.png'`) or bare tokens (`'png'`, upgraded to the extension and its MIME type from the lazily imported `mime` database; files that arrive earlier wait for it)."},{"name":"autofocus","type":"Booleanish | undefined","required":false,"description":"Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field."},{"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 array, in an `aria-live=\"polite\"` region and first in the control's `aria-describedby`, so they are re-read when it regains focus."},{"name":"formless","type":"boolean | undefined","required":false,"default":"false","description":"Keep this control out of the enclosing `BbForm` entirely: not submitted, not dirty, not reset, not validated. For a control that is not form data (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. It 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. Same chrome as errors with `--bb-warn`; errors take priority."},{"name":"id","type":"string | undefined","required":false,"description":"The `id` of the native control; the label's `for` and the description and message ids derive from it. Generated when omitted."},{"name":"maxFiles","type":"number | undefined","required":false,"description":"Maximum number of acceptable files."},{"name":"maxSize","type":"number | undefined","required":false,"description":"Max size of the files in bytes."},{"name":"modelValue","type":"File | File[] | null | undefined","required":false,"description":"Used by v-model."},{"name":"multiple","type":"boolean | undefined","required":false,"default":"false","description":"Allows the selection of multiple items."},{"name":"name","type":"string | undefined","required":false,"description":"Defines the name of the input."},{"name":"pt","type":"PtMap<BbDropzonePtPart, BbDropzonePtState> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes without the prefix. See the `pt:<part>` row."},{"name":"pt:content","type":"PtValue | undefined","required":false},{"name":"pt:content:active","type":"PtValue | undefined","required":false},{"name":"pt:content:disabled","type":"PtValue | undefined","required":false},{"name":"pt:content:errors","type":"PtValue | undefined","required":false},{"name":"pt:content:readonly","type":"PtValue | undefined","required":false},{"name":"pt:content:warnings","type":"PtValue | undefined","required":false},{"name":"pt:message","type":"PtValue | undefined","required":false},{"name":"pt:message:active","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: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:active","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: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":"Shows the files; the user cannot change them: drop, the file picker and the `open()` slot prop do nothing, yet the input stays focusable and a `name`d zone still submits its files (unlike `disabled`). Your slot renders the list: hide your remove buttons with the slot's `readonly`."},{"name":"rules","type":"RuleExpression<File | File[] | null>","required":false,"description":"vee-validate rules for this field. Only inside a `BbForm`."},{"name":"tag","type":"LayoutTag | undefined","required":false,"default":"\"div\"","values":["div","span"],"description":"Element rendered as the component's wrapper."},{"name":"validationLabel","type":"string | undefined","required":false,"description":"The field's name in validation messages (`{field}`): \"Email is not valid\". Defaults to the `label` (or `legend`), then \"This field\"; never the `name`. Set it when the label is hidden or reads badly in a sentence (icon-only, a question). `BbForm` only."},{"name":"validationMode","type":"ValidationMode | undefined","required":false,"values":["aggressive","balanced","lazy","submit-only","submit-live"],"description":"When the field validates: `aggressive` (each change), `balanced` (on leave, then live while in error), `lazy` (on leave), `submit-only`, `submit-live`. Unset: the `BbForm`'s `validation-mode`, then `formControls.validationMode` (`'balanced'`). `BbForm` only."},{"name":"warnings","type":"string | string[] | undefined","required":false,"description":"Warning messages under the dropzone, a string or string array: amber, in their own `aria-live` region, and in the control's `aria-describedby` after the errors. A non-empty list implies the warning state; errors win when both are set."}],"events":[{"name":"blur","signature":"(event: FocusEvent): void","description":"Emitted when the file input loses focus. Forwards the original DOM `FocusEvent`."},{"name":"error","signature":"(errors: DropZoneError[]): void","description":"Emitted once per drop or pick that rejected any file, AFTER that gesture's `update:modelValue` (if any): all its rejections (size, type, uniqueness, max count), in file order. A clean drop emits none: clear your messages on `update:modelValue`, set them here."},{"name":"focus","signature":"(event: FocusEvent): void","description":"Emitted when the file input receives focus. Forwards the original DOM `FocusEvent`."},{"name":"update:modelValue","signature":"(value: File | File[] | null): void","description":"Emitted when the selected files change. Payload is the new file or file array."}],"slots":[{"name":"default","type":"BbDropzoneDefaultSlotProps","fields":["dragging: boolean","focused: boolean","id: string","labelId: string","open: () => void","readonly: boolean"],"description":"The drop zone area content. Renders inside the `<label>` that captures drag and file input events. It is a region, not a label: its text does not name the input unless you mark one node with the `labelId` slot prop."}],"exposed":[],"models":[{"name":"modelValue","type":"File | File[] | null | undefined"}],"pt":{"parts":[{"name":"root","description":"The zone."},{"name":"content","description":"The drop region: the label that wraps the file input and your slot."},{"name":"message","description":"The errors / warnings region that holds a message — one part, on whichever is showing (errors win); an empty region never gets it."}],"states":[{"name":"readonly","description":"Component-wide: the zone is `readonly` — the files stay shown and submitted, the input stays focusable, nothing can be added."},{"name":"disabled","description":"Component-wide: the zone is `disabled`."},{"name":"warnings","description":"Component-wide: the zone shows warnings and no errors."},{"name":"errors","description":"Component-wide: the zone shows errors."},{"name":"active","description":"Component-wide: a drag is over the zone."}]},"tree":{"bindings":[{"part":"content","target":"label.bb-dropzone__content"},{"part":"message","target":"span.bb-dropzone__message"}],"nodes":[{"name":"BbSmoothHeight","kind":"public"}]},"css":{"classes":{"bb-dropzone":["","--disabled","--dragging","--errors","--focused","--readonly","--warnings","__content","__error","__errors","__message","__submittable-input","__submittable-label","__warning","__warnings"]},"locals":["--color-gray-200"]},"removed":[{"name":"hasWarning","new":"hasWarnings","since":"3.0.0-beta.26","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":"validateOn","to":"validationMode","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"manual"}}]},
|
|
521
521
|
{"name":"BbForm","group":"Inputs","description":"Form host for the form controls inside it: owns the vee-validate form (useForm), validates every field on submit, and emits `submit` with the collected values only when the form is valid. `schema` takes any Standard Schema (Zod, Valibot, ArkType, Yup) as it is; a failed submit focuses the first invalid field on screen and emits `invalid`. Server errors (a 422): `setErrors(errors)` from the slot or `useBbFormContext(id)` puts each on its field.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbForm.md","source":"ai/source/BbForm.md","props":[{"name":"disableSubmitLock","type":"boolean | undefined","required":false,"default":"false","description":"Keeps the fields editable while a `@submit` promise is pending (by default every joined field is read-only until it settles; a `@submit` that returns nothing never locks). Submit buttons spin either way."},{"name":"fieldErrors","type":"Record<string, unknown> | null | undefined","required":false,"description":"Server validation errors by field path (Inertia's `form.errors`, a Laravel 422 body), shown on their fields while they are in the object. They never block a submit; a key no field has is in `unmatchedErrors`. A one-off message: `setErrors`."},{"name":"id","type":"string | undefined","required":false,"description":"Lets anything outside the form read and drive it through `useBbFormContext(id)` (a dialog footer, a toolbar, a leave guard). It is also the `<form>`'s id, so `<button form=\"id\" type=\"submit\">` outside it submits it."},{"name":"keepValuesOnUnmount","type":"boolean | Ref<boolean, boolean> | undefined","required":false,"description":"Keep a field's value (and its place in `@submit`) when it unmounts — the `v-if` wizard step you left, a collapsed section. Off, an unmounted field drops out of the values."},{"name":"model","type":"Record<string, any> | undefined","required":false,"description":"The object the fields edit in place (`reactive()`, a `ref`, Pinia state, Inertia `useForm()`): bind it one way, `:model`, never `v-model`. A field without its own `v-model` reads and writes the value at its `name` path. Nothing is written on mount."},{"name":"schema","type":"MaybeRef<S | undefined>","required":false,"description":"One Standard Schema for the form (Zod, Valibot, ArkType, Yup, Joi, Effect), passed as is. An issue lands on the field whose `name` is its path; `@submit` gets the typed output. Set it at mount (a `computed` may change it); per-field `rules` are then ignored."},{"name":"validationMode","type":"ValidationMode | undefined","required":false,"description":"When the fields inside validate as the user works: `aggressive`, `balanced`, `lazy`, `submit-only` or `submit-live` (see `ValidationMode`). A field's own `validation-mode` wins. Unset: the app's `formControls.validationMode` (default `'balanced'`)."}],"events":[{"name":"invalid","signature":"(payload: BbFormInvalidPayload): void","description":"Fired when a submit fails validation, after the form has focused the first invalid field that is on screen. `errors` also holds paths with no field showing, so a wizard can jump to the step that has one."},{"name":"submit","signature":"(values: BbFormSubmitValues<S>, meta: BbFormSubmitMeta): void","description":"Fired only when every field passes. Carries the values — with a schema, its parsed OUTPUT (transforms and coercions applied), typed from it."}],"slots":[{"name":"default","type":"{ touched: boolean; dirty: boolean; valid: boolean; pending: boolean; initialValues?: Partial<GenericObject> | undefined; errors: Record<string, string[]>; fields: Record<string, BbFormFieldEntry>; isSubmitting: boolean; removeField: (path: string) => void; resetForm: (state?: Partial<FormState<GenericObject>> | undefined, opts?: Partial<ResetFormOpts> | undefined) => void; setErrors: (serverErrors: BbFormServerErrors, options?: BbFormSetErrorsOptions) => void; snapshot: (next?: Record<string, unknown> | undefined) => void; submitCount: number; unmatchedErrors: Record<string, string[]>; validate: (opts?: Partial<ValidationOptions> | undefined) => Promise<FormValidationResult<GenericObject, GenericObject>>; values: GenericObject; }"}],"exposed":[{"name":"$el","type":"HTMLFormElement | null","description":"The rendered element."}],"models":[],"attrTargets":["form"],"removed":[{"name":"modelValue","new":"model","since":"3.0.0-beta.42","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"rename"}}],"renamed":[{"from":"modelValue","to":"model","since":"3.0.0-beta.42","migration":"ai/guides/migration/v2-to-v3.md","fix":{"kind":"rename"}}]},
|
|
522
|
-
{"name":"BbHost","group":"Overlay","description":"Renders confirm() and toast(); one, at the app root.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbHost.md","source":"ai/source/BbHost.md","props":[],"events":[],"slots":[],"exposed":[],"models":[],"tree":{"nodes":[{"name":"BbConfirm","kind":"internal","vocabulary":"BbConfirm","bindings":[{"part":"text","target":"div.bb-confirm__text"},{"part":"action","target":"BbButton"}],"forwards":[{"to":"BbDialog","mapping":"passthrough.forward(DIALOG_PARTS, BB_DIALOG_PT.states)"}],"children":[{"name":"BbDialog","kind":"public","vocabulary":"BbDialog","bindings":[{"part":"header","target":"div.bb-dialog__header"},{"part":"title","target":"span.bb-dialog__title"},{"part":"description","target":"p.bb-dialog__description"},{"part":"close","target":"CloseButton"},{"part":"content","target":"div.bb-dialog__content"},{"part":"footer","target":"div.bb-dialog__footer"}],"forwards":[{"to":"BbOffCanvas","mapping":"{ root: 'root', header: 'header', title: 'title', description: 'description', content: 'content', footer: 'footer', close: 'close', sheet: 'root', }"}],"cssProps":[{"name":"--px","documented":true,"readBy":["bb-dialog__header","bb-close-button","bb-dialog__content","bb-dialog__footer"]},{"name":"--py","documented":false,"readBy":["bb-dialog__header","bb-close-button","bb-dialog__content","bb-dialog__footer"]},{"name":"--page-padding","documented":false,"readBy":["bb-dialog","bb-dialog--fullscreen"]},{"name":"--transition-timing-function","documented":false,"readBy":["bb-dialog","bb-dialog--fullscreen"]},{"name":"--bg","documented":false,"readBy":["bb-dialog"]},{"name":"--fg","documented":false,"readBy":["bb-dialog"]},{"name":"--close-size","documented":true,"readBy":["bb-close-button"]},{"name":"--gap","documented":false,"readBy":["bb-dialog__footer"]}],"children":[{"name":"CloseButton","kind":"internal","cssProps":[{"name":"--size","documented":true,"readBy":["bb-close-button"]},{"name":"--p","documented":true,"readBy":["bb-close-button"]}]},{"name":"BbOffCanvas","kind":"public","vocabulary":"BbOffCanvas","bindings":[{"part":"header","target":"div.bb-offcanvas__header"},{"part":"title","target":"span.bb-offcanvas__title"},{"part":"description","target":"p.bb-offcanvas__description"},{"part":"close","target":"CloseButton"},{"part":"content","target":"div.bb-offcanvas__content"},{"part":"footer","target":"div.bb-offcanvas__footer"}],"cssProps":[{"name":"--translate-x","documented":false,"readBy":["bb-offcanvas"]},{"name":"--translate-y","documented":false,"readBy":["bb-offcanvas"]},{"name":"--translate","documented":false,"readBy":["bb-offcanvas"]},{"name":"--stack-x","documented":true,"readBy":["bb-offcanvas"]},{"name":"--stack-y","documented":false,"readBy":["bb-offcanvas"]},{"name":"--snap-y","documented":true,"readBy":["bb-offcanvas","bb-offcanvas__footer","bb-offcanvas--snap","bb-offcanvas--bottom"]},{"name":"--snap-floor","documented":false,"readBy":["bb-offcanvas__footer"]},{"name":"--stack-fill","documented":true,"readBy":["bb-offcanvas","bb-offcanvas--right","bb-offcanvas--left","bb-offcanvas--top","bb-offcanvas--bottom"]},{"name":"--stack-transition-duration","documented":true,"readBy":["bb-offcanvas"]},{"name":"--px","documented":true,"readBy":["bb-offcanvas__header","bb-close-button","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--py","documented":false,"readBy":["bb-offcanvas__footer","bb-offcanvas__content","bb-offcanvas__header","bb-close-button"]},{"name":"--handle-w","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--handle-h","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--handle-bg","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--transition-timing-function","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--open"]},{"name":"--bg","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--snap","bb-offcanvas--bottom"]},{"name":"--fg","documented":false,"readBy":["bb-offcanvas"]},{"name":"--safe-top","documented":true,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--right","bb-offcanvas--top","bb-offcanvas--fullscreen"]},{"name":"--safe-right","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--right","bb-offcanvas--top","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--safe-bottom","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--right","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--safe-left","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--top","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--inset-top","documented":false,"readBy":["bb-offcanvas__content","bb-offcanvas__header"]},{"name":"--inset-right","documented":false,"readBy":["bb-offcanvas__header","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--inset-bottom","documented":false,"readBy":["bb-offcanvas__footer","bb-offcanvas__content"]},{"name":"--inset-left","documented":false,"readBy":["bb-offcanvas__header","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--close-size","documented":true,"readBy":["bb-close-button"]},{"name":"--gap","documented":false,"readBy":["bb-offcanvas__footer"]}],"children":[{"name":"CloseButton","kind":"internal","repeated":true,"cssProps":[{"name":"--size","documented":true,"readBy":["bb-close-button"]},{"name":"--p","documented":true,"readBy":["bb-close-button"]}]}]}]},{"name":"BbButton","kind":"public","vocabulary":"BbButton","bindings":[{"part":"root","target":"BbBaseButton"},{"part":"spinner","target":"BbSpinner"},{"part":"icon","target":"BbIcon"},{"part":"text","target":"span.bb-button__text"}],"cssProps":[{"name":"--h-xs","documented":true,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--icon-size-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--px-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--fs-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--r-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--gap-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--h-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--icon-size-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--px-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--fs-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--r-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--gap-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--h-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--icon-size-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--px-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--fs-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--r-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--gap-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--h-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--icon-size-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--px-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--fs-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--r-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--gap-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--h-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--icon-size-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--px-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--fs-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--r-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--gap-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--h-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--icon-size-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--px-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--fs-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--r-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--gap-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--h","documented":true,"readBy":["bb-button","bb-button--icon"]},{"name":"--icon-size","documented":true,"readBy":["bb-button__text","bb-spinner","bb-button__icon","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--px","documented":true,"readBy":["bb-button","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--fs","documented":true,"readBy":["bb-button"]},{"name":"--r","documented":true,"readBy":["bb-button"]},{"name":"--gap","documented":true,"readBy":["bb-button","bb-button__text","bb-spinner"]},{"name":"--bg","documented":true,"readBy":["bb-button"]},{"name":"--bg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg","documented":true,"readBy":["bb-button"]},{"name":"--border-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-size","documented":true,"readBy":["bb-button"]},{"name":"--bw","documented":true,"readBy":["bb-button"]},{"name":"--fg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--fg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--border-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--opacity-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--elev-tier","documented":true,"readBy":["bb-button--primary","bb-button--secondary","bb-button--outline","bb-button--destructive"]},{"name":"--elev","documented":true,"readBy":["bb-button"]}],"children":[{"name":"BbIcon","kind":"public","cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-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"}]},{"name":"BbSpinner","kind":"public","children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]}]}]}]},{"name":"BbToast","kind":"internal","cssProps":[{"name":"--gap","documented":true,"readBy":["bb-toast__panel"]},{"name":"--offset","documented":true,"readBy":["bb-toast--top-left","bb-toast--top-center","bb-toast--top-right","bb-toast--bottom-left","bb-toast--bottom-center","bb-toast--bottom-right","bb-toast"]},{"name":"--width","documented":true,"readBy":["bb-toast"]},{"name":"--lift","documented":true,"readBy":["bb-toast__panel","bb-toast__panel--mounted","bb-toast__panel--removed"]},{"name":"--stack-y","documented":true,"readBy":["bb-toast__panel"]},{"name":"--stack-scale","documented":true,"readBy":["bb-toast__panel"]},{"name":"--enter-y","documented":true,"readBy":["bb-toast__panel"]},{"name":"--swipe-amount","documented":true,"readBy":["bb-toast__panel"]},{"name":"--z","documented":true,"readBy":["bb-toast__panel"]},{"name":"--r","documented":true,"readBy":["bb-toast__panel"]},{"name":"--ring-size","documented":true,"readBy":["bb-toast__close"]},{"name":"--bg","documented":true,"readBy":["bb-toast__panel","bb-toast__close"]},{"name":"--border-color","documented":true,"readBy":["bb-toast__panel"]},{"name":"--fg","documented":true,"readBy":["bb-toast__panel","bb-toast__title","bb-toast__text","bb-toast__close"]},{"name":"--icon-color","documented":true,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]}],"children":[{"name":"BbToastRegion","kind":"internal","vocabulary":"BbToast","bindings":[{"part":"root","target":"ol.bb-toast"}],"children":[{"name":"BbToastMessage","kind":"internal","children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"BbSpinner","kind":"public","repeated":true},{"name":"BbButton","kind":"public","repeated":true,"cssProps":[{"name":"--h-xs","documented":true,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--icon-size-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--px-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--fs-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--r-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--gap-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--h-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--icon-size-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--px-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--fs-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--r-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--gap-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--h-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--icon-size-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--px-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--fs-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--r-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--gap-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--h-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--icon-size-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--px-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--fs-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--r-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--gap-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--h-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--icon-size-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--px-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--fs-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--r-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--gap-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--h-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--icon-size-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--px-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--fs-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--r-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--gap-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--h","documented":true,"readBy":["bb-button","bb-button--icon"]},{"name":"--icon-size","documented":true,"readBy":["bb-button__text","bb-spinner","bb-button__icon","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--px","documented":true,"readBy":["bb-button","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--fs","documented":true,"readBy":["bb-button"]},{"name":"--r","documented":true,"readBy":["bb-button"]},{"name":"--gap","documented":true,"readBy":["bb-button","bb-button__text","bb-spinner"]},{"name":"--bg","documented":true,"readBy":["bb-button"]},{"name":"--bg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg","documented":true,"readBy":["bb-button"]},{"name":"--border-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-size","documented":true,"readBy":["bb-button"]},{"name":"--bw","documented":true,"readBy":["bb-button"]},{"name":"--fg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--fg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--border-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--opacity-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--elev-tier","documented":true,"readBy":["bb-button--primary","bb-button--secondary","bb-button--outline","bb-button--destructive"]},{"name":"--elev","documented":true,"readBy":["bb-button"]}]}]}]}]}]}},
|
|
522
|
+
{"name":"BbHost","group":"Overlay","description":"Renders confirm() and toast(); one, at the app root.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbHost.md","source":"ai/source/BbHost.md","props":[],"events":[],"slots":[],"exposed":[],"models":[],"tree":{"nodes":[{"name":"BbToast","kind":"internal","cssProps":[{"name":"--gap","documented":true,"readBy":["bb-toast__panel"]},{"name":"--offset","documented":true,"readBy":["bb-toast--top-left","bb-toast--top-center","bb-toast--top-right","bb-toast--bottom-left","bb-toast--bottom-center","bb-toast--bottom-right","bb-toast"]},{"name":"--width","documented":true,"readBy":["bb-toast"]},{"name":"--lift","documented":true,"readBy":["bb-toast__panel","bb-toast__panel--mounted","bb-toast__panel--removed"]},{"name":"--stack-y","documented":true,"readBy":["bb-toast__panel"]},{"name":"--stack-scale","documented":true,"readBy":["bb-toast__panel"]},{"name":"--enter-y","documented":true,"readBy":["bb-toast__panel"]},{"name":"--swipe-amount","documented":true,"readBy":["bb-toast__panel"]},{"name":"--z","documented":true,"readBy":["bb-toast__panel"]},{"name":"--r","documented":true,"readBy":["bb-toast__panel"]},{"name":"--ring-size","documented":true,"readBy":["bb-toast__close"]},{"name":"--bg","documented":true,"readBy":["bb-toast__panel","bb-toast__close"]},{"name":"--border-color","documented":true,"readBy":["bb-toast__panel"]},{"name":"--fg","documented":true,"readBy":["bb-toast__panel","bb-toast__title","bb-toast__text","bb-toast__close"]},{"name":"--icon-color","documented":true,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]},{"name":"--icon-color","documented":false,"readBy":["bb-toast__icon"]}],"children":[{"name":"BbToastRegion","kind":"internal","vocabulary":"BbToast","bindings":[{"part":"root","target":"ol.bb-toast"}],"children":[{"name":"BbToastMessage","kind":"internal","children":[{"name":"BbIcon","kind":"public","cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"BbSpinner","kind":"public","children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]}]},{"name":"BbButton","kind":"public","vocabulary":"BbButton","bindings":[{"part":"root","target":"BbBaseButton"},{"part":"spinner","target":"BbSpinner"},{"part":"icon","target":"BbIcon"},{"part":"text","target":"span.bb-button__text"}],"cssProps":[{"name":"--h-xs","documented":true,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--icon-size-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--px-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--fs-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--r-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--gap-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--h-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--icon-size-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--px-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--fs-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--r-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--gap-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--h-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--icon-size-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--px-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--fs-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--r-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--gap-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--h-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--icon-size-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--px-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--fs-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--r-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--gap-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--h-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--icon-size-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--px-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--fs-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--r-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--gap-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--h-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--icon-size-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--px-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--fs-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--r-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--gap-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--h","documented":true,"readBy":["bb-button","bb-button--icon"]},{"name":"--icon-size","documented":true,"readBy":["bb-button__text","bb-spinner","bb-button__icon","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--px","documented":true,"readBy":["bb-button","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--fs","documented":true,"readBy":["bb-button"]},{"name":"--r","documented":true,"readBy":["bb-button"]},{"name":"--gap","documented":true,"readBy":["bb-button","bb-button__text","bb-spinner"]},{"name":"--bg","documented":true,"readBy":["bb-button"]},{"name":"--bg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg","documented":true,"readBy":["bb-button"]},{"name":"--border-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-size","documented":true,"readBy":["bb-button"]},{"name":"--bw","documented":true,"readBy":["bb-button"]},{"name":"--fg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--fg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--border-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--opacity-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--elev-tier","documented":true,"readBy":["bb-button--primary","bb-button--secondary","bb-button--outline","bb-button--destructive"]},{"name":"--elev","documented":true,"readBy":["bb-button"]}],"children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-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"}]},{"name":"BbSpinner","kind":"public","repeated":true}]}]}]}]}]}},
|
|
523
523
|
{"name":"BbHoverCard","group":"Overlay","description":"A rich preview card that opens on hover or keyboard focus (a person, an event, a link) — BbPopover's panel without the click; may hold commands that also exist elsewhere; also the v-bb-hover-card directive.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbHoverCard.md","source":"ai/source/BbHoverCard.md","props":[{"name":"activator","type":"ElementOrComponentRef | undefined","required":false,"description":"External activator element or component ref. When provided, the activator slot is not rendered and the hover / focus listeners are attached programmatically to the referenced element."},{"name":"boundary","type":"ElementOrComponentRefOrSelector | undefined","required":false,"description":"Constrains the card within a bounding element: it stays inside it alongside its trigger (sideways for a card above or below); away from the trigger it may pass the edge, and it flips at the viewport only. Accepts an HTMLElement, a Vue component ref, or a CSS selector string."},{"name":"delay","type":"number | undefined","required":false,"default":"350","description":"Milliseconds the pointer (or keyboard focus) rests on the activator before the card shows; longer than BbTooltip's, so passing over does not open it. Closing has a fixed grace (guide § Timing and the safe zone)."},{"name":"disabled","type":"boolean | undefined","required":false,"default":"false","description":"Disables the component. Disabling an open card closes it."},{"name":"eager","type":"boolean | undefined","required":false,"default":"false","description":"Renders the card's content at mount instead of on the first open."},{"name":"id","type":"string | undefined","required":false,"description":"The activator's id (the card is `bbhc_<id>`, and is labelled by it once it holds a control). Generated when omitted."},{"name":"modelValue","type":"boolean | undefined","required":false,"default":"false","description":"Used by v-model to open / close the card. A card with no `v-model` starts closed and is driven by hover and keyboard focus."},{"name":"offset","type":"number | undefined","required":false,"default":"4","description":"Space the floating container will maintain from the activator."},{"name":"padding","type":"number | undefined","required":false,"default":"10","description":"Minimum empty space to keep from the edge of the page."},{"name":"placement","type":"Placement | undefined","required":false,"default":"\"bottom\"","values":["top","bottom","left","right","top-start","top-end","right-start","right-end","bottom-start","bottom-end","left-start","left-end"],"description":"Position of the card relative to the activator."},{"name":"pt","type":"PtMap<BbHoverCardPtPart, \"open\"> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes without the prefix. See the `pt:<part>` row."},{"name":"pt:content","type":"PtValue | undefined","required":false},{"name":"pt:content:open","type":"PtValue | undefined","required":false},{"name":"pt:footer","type":"PtValue | undefined","required":false},{"name":"pt:footer:open","type":"PtValue | undefined","required":false},{"name":"pt:header","type":"PtValue | undefined","required":false},{"name":"pt:header:open","type":"PtValue | undefined","required":false},{"name":"pt:panel","type":"PtValue | undefined","required":false},{"name":"pt:panel:open","type":"PtValue | undefined","required":false},{"name":"pt:root","type":"PtValue | undefined","required":false},{"name":"pt:root:open","type":"PtValue | undefined","required":false},{"name":"scrollable","type":"boolean | undefined","required":false,"default":"false","description":"Caps the card height to the available viewport space and enables internal scrolling."},{"name":"transitionDuration","type":"number | undefined","required":false,"default":"250","description":"How long the transition has to last in milliseconds."},{"name":"width","type":"string | number | undefined","required":false,"description":"Width of the card. Accepts pixels or percentage (relative to activator width)."}],"events":[{"name":"hidden","signature":"(): void","description":"Emitted after the card is fully closed."},{"name":"hide","signature":"(): void","description":"Emitted as soon as the card starts to close (model becomes false)."},{"name":"show","signature":"(): void","description":"Emitted as soon as the card starts to open (model becomes true)."},{"name":"shown","signature":"(): void","description":"Emitted after the card is fully opened. Focus never moves on open."},{"name":"update:modelValue","signature":"(value: boolean): void","description":"Emitted with the new value whenever `v-model` changes."}],"slots":[{"name":"activator","type":"BbHoverCardActivatorSlotProps","fields":["disabled: boolean","open: boolean","placement: Placement","props: { 'aria-expanded'?: boolean | undefined; 'aria-controls'?: string | undefined; id: string; ref: (reference: unknown) => void; onPointerenter: (event: PointerEvent) => void; onPointerleave: (event: PointerEvent) => void; onFocusin: (event: FocusEvent) => void; onFocusout: (event: FocusEvent) => void; onKeydown: (event: KeyboardEvent) => void; onPointerdown: (event: PointerEvent) => void; onContextmenu: (event: MouseEvent) => void; }"],"description":"The element the card describes. Spread `props` onto it; it must be focusable (a link or a button) so a keyboard user can open the card too."},{"name":"default","type":"BbHoverCardDefaultSlotProps","fields":["close: () => void","disabled: boolean","open: boolean","placement: Placement"],"description":"The card body."},{"name":"footer","type":"BbHoverCardDefaultSlotProps","fields":["close: () => void","disabled: boolean","open: boolean","placement: Placement"],"description":"Content pinned to the bottom of the card, outside the scroll region."},{"name":"header","type":"BbHoverCardDefaultSlotProps","fields":["close: () => void","disabled: boolean","open: boolean","placement: Placement"],"description":"Content pinned to the top of the card, outside the scroll region."}],"exposed":[],"models":[{"name":"modelValue","type":"boolean | undefined"}],"pt":{"parts":[{"name":"root","description":"The floating element — an invisible positioning wrapper; a `class` on the component lands here, and so does `role=\"group\"` once the card holds a control."},{"name":"panel","description":"The surface you see — the bordered box that paints the card and lays out its bands."},{"name":"header","description":"The header band."},{"name":"content","description":"The body band."},{"name":"footer","description":"The footer band."}],"states":[{"name":"open","description":"Component-wide: the card is open."}]},"tree":{"bindings":[{"part":"panel","target":"CommonPopover"},{"part":"root","target":"CommonPopover"},{"part":"header","target":"span.bb-hover-card__header"},{"part":"content","target":"span.bb-hover-card__content"},{"part":"footer","target":"span.bb-hover-card__footer"}],"nodes":[{"name":"CommonPopover","kind":"internal"}]},"css":{"classes":{"bb-hover-card":["","__content","__footer","__header","__panel","__panel--scrollable"]},"locals":["--color-gray-200","--max-h"]},"attrTargets":["root"]},
|
|
524
524
|
{"name":"BbHoverCardPortal","group":"Overlay","description":"Registers named slot content that `v-bb-hover-card=\"'name'\"` (or `{ portal: 'name' }`) renders in the card; slot `{ data, close }`.","referenceOnly":false,"hasGuide":false,"contract":"ai/BbHoverCardPortal.md","source":"ai/source/BbHoverCardPortal.md","props":[{"name":"name","type":"string","required":true,"description":"The name a `v-bb-hover-card` passes as its value (`\"'name'\"`) or as `portal: 'name'`."}],"events":[],"slots":[{"name":"default","type":"BbHoverCardPortalSlotProps","fields":["data: P","close: () => void"],"description":"The card's body. `data` is the directive's `data`; `close` closes the card."}],"exposed":[],"models":[]},
|
|
525
525
|
{"name":"BbIcon","group":"Data Display","description":"Renders an icon either from the local icon folder or from a provider.","referenceOnly":false,"hasGuide":true,"contract":"ai/BbIcon.md","source":"ai/source/BbIcon.md","props":[{"name":"icon","type":"string","required":true,"description":"Name of a registered icon to use, or a full raw `<svg>` string (e.g. an SVG file imported with `?raw`)."},{"name":"label","type":"string | undefined","required":false,"description":"Label of the icon for accessibility."},{"name":"pt","type":"PtMap<\"root\", never> | undefined","required":false,"description":"Passthrough, object form: `{ root: '…' }`. 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":[],"cssProps":[{"name":"--w","value":"initial","selector":".bb-icon","description":"`--w` is set inline by BbIcon from the size prop. The `initial` default seals it: without it an ancestor's `--w` (e.g. a dropdown's width bridge) would inherit in and size the icon. The `--size` indirection stays so higher-specificity rules (e.g. `.bb-badge .bb-icon`) can re-point it."},{"name":"--size","value":"var(--w)","selector":".bb-icon"}],"pt":{"parts":[{"name":"root","description":"The `<svg>` itself; a `class` on the component lands here too. It is `pointer-events: none`, so a pointer listener here never fires."}],"states":[]},"css":{"classes":{"bb-icon":[""]},"locals":["--color-gray-200","--size","--w"]},"attrTargets":["svg"],"removed":[{"name":"color","new":null,"since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-icon.md","silent":true,"fix":{"kind":"manual"}},{"name":"type","new":"icon","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-icon.md","silent":false,"fix":{"kind":"rename"}}],"renamed":[{"from":"type","to":"icon","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-icon.md","fix":{"kind":"rename"}}]},
|
|
@@ -541,7 +541,7 @@
|
|
|
541
541
|
{"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 `role=\"status\"` element containing this text rendered `bb-sr-only`, so screen readers announce the loading state. When omitted the markup is unchanged 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 without 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"}}]},
|
|
542
542
|
{"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":"Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field."},{"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 `--bb-label-spacing-y-compact`, so tune a compact field's label gap with the `-compact` token, not the base one. The same meaning as on the checkbox, radio and switch groups."},{"name":"description","type":"string | undefined","required":false,"description":"Text between the label and the input. Unlike the hint it is always visible; it joins the input's `aria-describedby` after any `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 array, in an `aria-live=\"polite\"` region and first in the control'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, not dirty, not reset, not validated. For a control that is not form data (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. It 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. Same 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 and 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 `inputPosition`, the horizontal one. Omitted, the control's first line meets 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 `labelPosition`, the horizontal one. Omitted, the label's first line meets the control's."},{"name":"labelPosition","type":"\"left\" | \"center\" | \"right\" | undefined","required":false,"description":"Sets the text alignment of the label."},{"name":"layout","type":"Responsive<FieldLayout> | undefined","required":false,"default":"\"auto\"","description":"How label and input sit together: `'vertical'`, `'horizontal'` (50/50), `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a per-breakpoint map (`{ default: 'vertical', md: '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 without 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 input 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 valid\". Defaults to the `label` (or `legend`), then \"This field\"; never the `name`. Set it when the label is hidden or reads badly in a sentence (icon-only, a question). `BbForm` only."},{"name":"validationMode","type":"ValidationMode | undefined","required":false,"values":["aggressive","balanced","lazy","submit-only","submit-live"],"description":"When the field validates: `aggressive` (each change), `balanced` (on leave, then live while in error), `lazy` (on leave), `submit-only`, `submit-live`. Unset: the `BbForm`'s `validation-mode`, then `formControls.validationMode` (`'balanced'`). `BbForm` only."},{"name":"warnings","type":"string | string[] | undefined","required":false,"description":"Warning messages under the field, a string or array: amber, in their own `aria-live` region and in the control's `aria-describedby` after the errors. Non-empty turns on the warning state; errors win when both are set."}],"events":[{"name":"blur","signature":"(event: FocusEvent): void","description":"Emitted when the native input loses focus. Forwards the original DOM `FocusEvent`."},{"name":"change","signature":"(event: Event): void","description":"Emitted when the switch checked state changes. Forwards the original DOM `Event` from the input."},{"name":"click","signature":"(event: MouseEvent): void","description":"Emitted when the input receives a click interaction. Forwards the original DOM `MouseEvent`."},{"name":"focus","signature":"(event: FocusEvent): void","description":"Emitted when the native input gains focus. Forwards the original DOM `FocusEvent`."},{"name":"input","signature":"(event: Event): void","description":"Emitted on native input events from the switch input. Forwards the original DOM `Event`."},{"name":"keydown","signature":"(event: KeyboardEvent): void","description":"Emitted for keyboard interaction on the input. Forwards the original DOM `KeyboardEvent`."},{"name":"mousedown","signature":"(event: MouseEvent): void","description":"Emitted when a pointing device button is pressed over the input. Forwards the original DOM `MouseEvent`."},{"name":"mouseup","signature":"(event: MouseEvent): void","description":"Emitted when a pointing device button is released over the input. Forwards 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 renders 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 switch state plus the label text."},{"name":"label","type":"BbSwitchLabelSlotProps","fields":["showAsterisk?: boolean","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","--ly-x"]},"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"}}]},
|
|
543
543
|
{"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":"Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field."},{"name":"compact","type":"boolean | undefined","required":false,"default":"false","description":"Compact density. Swaps `--bb-label-spacing-y` for `--bb-label-spacing-y-compact`, so tune a compact group's label gap with the `-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":"Text between the label and the input. Unlike the hint it is always visible; it joins the input's `aria-describedby` after any `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 model values the options no longer contain (a single value resets to `null`). A failed load never prunes."},{"name":"errors","type":"string | string[] | undefined","required":false,"description":"Error messages under the field, a string or array, in an `aria-live=\"polite\"` region and first in the control'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 `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, not dirty, not reset, not validated. For a control that is not form data (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. It 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. Same 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 input) while keeping it accessible to screen readers. Does 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 and 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 `inputPosition`, the horizontal one. Omitted, the control's first line meets 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 the middle of the label plus its description. Omitted, it sits on the label'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 as 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: `'auto'`, `'vertical'`, `'horizontal'`, `'label-fill'`, `'input-fill'`, or 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 line under the label (it may wrap; announced as the option's description). An object of paths or getters, or a function of the item; nothing 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), in 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 `BbCheckboxGroupItemsContext` (`BbSwitchGroupItemsContext` on a switch group) (`reason`, `modelValue`, `signal`), sync or async. A provider fails by THROWING, never by returning `[]`: the rows clear and `#empty` gets 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 `labelPosition`, the horizontal one. Omitted, the label's first line meets the control's."},{"name":"layout","type":"Responsive<FieldLayout> | undefined","required":false,"description":"How label and input sit together: `'vertical'`, `'horizontal'` (50/50), `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a per-breakpoint map (`{ default: 'vertical', md: '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; `'inside'` overlays the legend inside the fieldset border. Floating mode is not supported for option groups (checkbox, radio or switch) — 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), `'vertical'` (stacked), `'vertical-stretch'` (stacked, as wide as the list) or `'tiles'` (equal boxes; `--tile-min-width` on `pt:list` sets the narrowest)."},{"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. When true, `modelValue` must be an array. When 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 without 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. Can be a global boolean that affects all options or a function that accepts an item and returns a boolean that only affects that item. Non-selectable options are rendered disabled."},{"name":"validationLabel","type":"string | undefined","required":false,"description":"The field's name in validation messages (`{field}`): \"Email is not valid\". Defaults to the `label` (or `legend`), then \"This field\"; never the `name`. Set it when the label is hidden or reads badly in a sentence (icon-only, a question). `BbForm` only."},{"name":"validationMode","type":"ValidationMode | undefined","required":false,"values":["aggressive","balanced","lazy","submit-only","submit-live"],"description":"When the field validates: `aggressive` (each change), `balanced` (on leave, then live while in error), `lazy` (on leave), `submit-only`, `submit-live`. Unset: the `BbForm`'s `validation-mode`, then `formControls.validationMode` (`'balanced'`). `BbForm` only."},{"name":"warnings","type":"string | string[] | undefined","required":false,"description":"Warning messages under the field, a string or array: amber, in their own `aria-live` region and in the control's `aria-describedby` after the errors. Non-empty turns on the warning state; errors win when 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 switch inputs loses focus. Forwards the original DOM `FocusEvent`."},{"name":"change","signature":"(event: Event): void","description":"Emitted when an option is toggled. Forwards the original DOM `Event` from the switch input."},{"name":"click","signature":"(event: MouseEvent): void","description":"Emitted when one of the generated switch inputs is clicked. Forwards the original DOM `MouseEvent`."},{"name":"focus","signature":"(event: FocusEvent): void","description":"Emitted when one of the generated switch inputs receives focus. Forwards the original DOM `FocusEvent`."},{"name":"inactive","signature":"(): void","description":"Emitted when focus/click moves outside the group after it was active. Useful for validation-on-blur flows at group level."},{"name":"input","signature":"(event: Event): void","description":"Emitted on native input events from generated switch inputs. Forwards the original DOM `Event`."},{"name":"keydown","signature":"(event: KeyboardEvent): void","description":"Emitted for keyboard interaction on generated switch inputs. Forwards the original DOM `KeyboardEvent`."},{"name":"mousedown","signature":"(event: MouseEvent): void","description":"Emitted when a pointing device button is pressed over a switch input. Forwards the original DOM `MouseEvent`."},{"name":"mouseup","signature":"(event: MouseEvent): void","description":"Emitted when a pointing device button is released over a switch input. Forwards 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 renders 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 data\" text). `error` is what the latest failed load rejected with, untouched, and `null` when nothing failed — a failed load clears the rows, 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 switch 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":["showAsterisk?: boolean","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","--ly-lj","--ly-ls","--ly-x","--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"}}]},
|
|
544
|
-
{"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":"The label of each row's selection checkbox, from `(columns, item)`. Unset: the row's name in the locale's select template (its `rowHeader` cells, else its first column: \"Select INV-1041\"). The cells arrive in render order: look one 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 describing the table's content, for accessibility."},{"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 display 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 hidden, 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":"Text shown when there are no items."},{"name":"enforceCoherence","type":"boolean | undefined","required":false,"default":"false","description":"After every load, prunes `modelValue`, `unselected-items`, `highlighted` and `expanded-items` of values whose row is gone (a single value resets to `null`). Never on a provider-paginated table: a page change would prune the other pages' selection; reconcile in the provider instead."},{"name":"expandedItems","type":"any[] | undefined","required":false,"default":"[]","description":"Used by `v-model:expandedItems`: the expanded items, toggled by the row expand control and by external writes, like the `highlighted` / `sort` v-models. Drives the `#expand` rows and their `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 `items` provider threw): the twin of `emptyText` for that case."},{"name":"fixed","type":"boolean | undefined","required":false,"default":"false","description":"Gives the columns that declare no `width` an equal share of the width (a `minmax(0, 1fr)` track each)."},{"name":"fixedActions","type":"boolean | undefined","required":false,"default":"false","description":"Pins the actions column (the one the `#actions` slot creates) to the right edge, `position: sticky`, in place. It has no column definition, so this is its `column.fixed`. 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 stuck header)."},{"name":"fixedHeaders","type":"boolean | undefined","required":false,"default":"false","description":"Sticks the headers 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 scrollport."},{"name":"fixedSelect","type":"boolean | undefined","required":false,"default":"false","description":"Pins the selection column to the left edge, `position: sticky`, in place. It has no column definition, so this is its `column.fixed`. No effect unless the table is `selectable`."},{"name":"headerRowClass","type":"Classes | undefined","required":false,"description":"Classes for 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` for none, or a function of the row's item. Unset: every row, when `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 (say, whose details are open), a single item value or `null`. Opt-in: bound, a row click highlights; unbound, it only emits `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 generated. Nested tables use the nearest ancestor id to inherit widths."},{"name":"inheritColumnWidths","type":"string | boolean | undefined","required":false,"description":"Snaps a nested table's columns to an ancestor table's tracks: `true` = the nearest one, a table `id` = that one (when a table in between has a different column count). Off by default: a nested table sizes itself."},{"name":"interactiveWhileLoading","type":"boolean | undefined","required":false,"default":"false","description":"Keeps the header and rows interactive while loading (by default they are `inert`: a refetch is about to replace them). For background refreshes that 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 `BbTableItemsContext` (`reason`, `modelValue`, `signal`), sync or async. A provider fails by THROWING, never by returning `[]`: the rows clear and `#empty` gets the `error`. Return the page as it is."},{"name":"itemValue","type":"ItemAccessor<Item> | undefined","required":false,"description":"The row's value, as a property path or a function returning any value; the selection, `expandedItems` and row keys compare by it."},{"name":"keyboardNavigation","type":"boolean | undefined","required":false,"default":"false","description":"Opt-in keyboard navigation: the table becomes an ARIA `grid` (`treegrid` with an `#expand` slot) with ONE tab stop and roving focus over its cells. Controls in cells leave the tab order (Enter/F2 go in). Ignored with a `#tbody` slot."},{"name":"legend","type":"string | undefined","required":false,"description":"The `<legend>` of a `selectable` table (it renders as a `<fieldset>`): the selection's accessible name. Falls back to `caption`, then to a localized default."},{"name":"loading","type":"boolean | undefined","required":false,"default":"false","description":"Loading state: skeletons with no rows yet, else the rows stay on screen, dimmed, under an indeterminate bar. A refetch never blanks 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. Visually hidden — the skeleton (or the `#loading` slot) is the visible signal."},{"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":"multiSort","type":"boolean | undefined","required":false,"default":"false","description":"A plain click on a sortable header adds the column to the sort, as Shift+click always does. Off, a plain click makes the sort that column alone."},{"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. Columns it omits follow in declaration order; unknown keys stay put. A `reorderable` move writes it back complete. Works unbound, like `sort`; never holds `select` / `actions`."},{"name":"page","type":"string | number | undefined","required":false,"description":"Current page (from 1), for the rows' `aria-rowindex` and a `BbPagination` paired through `id`. Doesn't slice `items`: pass the current page's rows. Numeric strings are coerced."},{"name":"perPage","type":"string | number | undefined","required":false,"description":"Rows per page, for `aria-rowindex` and a paired `BbPagination`. Doesn't slice `items`. Unset, an array `items` infers it from its length. Numeric strings are coerced."},{"name":"pt","type":"PtItemMap<BbTablePtPart, \"row\" | \"expand\", BbTablePtState, Item> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes without 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:expand","type":"PtValue | ((ctx: PtItemCtx<Item, BbTablePtState>) => PtItemResult) | undefined","required":false},{"name":"pt:expand:disabled","type":"PtValue | undefined","required":false},{"name":"pt:expand:empty","type":"PtValue | undefined","required":false},{"name":"pt:expand:expanded","type":"PtValue | undefined","required":false},{"name":"pt:expand:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:expand:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:expand:loading","type":"PtValue | undefined","required":false},{"name":"pt:expand:selected","type":"PtValue | undefined","required":false},{"name":"pt:expand:sorted","type":"PtValue | undefined","required":false},{"name":"pt:expand: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 focused header. Every move writes `v-model:order`; a column panel that only writes `order` does not need it. `select` / `actions` and a custom `#thead` never move."},{"name":"reorderableRows","type":"boolean | undefined","required":false,"default":"false","description":"Adds a drag handle at the start of each row: the user drags a row, or lifts it with Space / Enter and the arrow keys, and `reorder:rows` reports `{ item, from, to }`. The table never reorders `items`: splice it in the handler."},{"name":"resizable","type":"boolean | undefined","required":false,"default":"false","description":"Lets the user resize the data columns (drag a header's trailing edge, or Alt+←/→; double-click resets). Each commit fires `resize:column(key, width)` once: write the width back into the column definition to keep it. Ignored when inheriting widths."},{"name":"rowClass","type":"BbTableRowClasses<Item> | undefined","required":false,"description":"Classes for each data row, or a function of the row's item."},{"name":"selectable","type":"boolean | ((item: Item) => boolean) | undefined","required":false,"description":"Makes rows selectable: a boolean for every row, or a function of the row's item deciding for that row."},{"name":"selectAll","type":"boolean | undefined","required":false,"default":"false","description":"Whether the \"Select all\" checkbox is checked."},{"name":"selectAllLabel","type":"string | undefined","required":false,"description":"Label of the \"Select all\" checkbox."},{"name":"selectText","type":"string | undefined","required":false,"description":"Header text of the radio column 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 order, written by the `sortable` headers and shown by them. Doesn't sort `items`: apply it to your data or your server query."},{"name":"tdClass","type":"ColumnClasses<Item> | undefined","required":false,"description":"Classes for every data cell, or a function of `(content, key, item)`."},{"name":"thClass","type":"Classes | undefined","required":false,"description":"Classes for every header cell."},{"name":"totalItems","type":"string | number | undefined","required":false,"description":"Total row count, for `aria-rowcount` and a paired `BbPagination`'s page count. Unset, an array `items` infers it from its length. 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, not rows; the table renders nothing from it. A known total (`totalItems`) always 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 the table's height to make it the scroller; column widths are measured once, from the first rows. Ignored when inheriting widths and under a `#tbody` slot."}],"events":[{"name":"click:row","signature":"(event: MouseEvent, item: any): void","description":"A body row was clicked, or activated with Enter/Space under `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; write `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 `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` / `to` index the `items` the table holds. Splice `items` in the handler; a drop in place emits nothing."},{"name":"resize:column","signature":"(key: string, width: number | null): void","description":"The user resized a column (`resizable`): the new width in px, or `null` after a double-click on the handle reset it to its 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 of each row's actions cell; this slot CREATES the actions column (there is no prop). The header cell (labelled by `actions-text`, replaceable through `#actions:header`) and one cell per row come and go with it. Pin it with `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 table's own full-width cell: pass content, never a row. `error` is what the 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?: ((event?: MouseEvent | KeyboardEvent | undefined) => void)","hideColumn?: (() => void)"],"description":"Content after every data column's header content (the label + sort control, or its own `<key>:header` replacement). A column's `<key>:header:append` wins over this for that column; 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?: ((event?: MouseEvent | KeyboardEvent | undefined) => void)","hideColumn?: (() => void)"],"description":"Content before every data column's header content (the label + sort control, or its own `<key>:header` replacement). A column's `<key>:header:prepend` wins over this for that column; 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`), for full control of the body markup. Provide role-complete rows (`<div role=\"row\">` with one `<div role=\"cell\">` per column), never `<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`) for footers that are not column-shaped (a note, pagination). Column-aligned totals go in `#<key>:last` (`#<key>:first` for a row before the data). Role-complete rows (`<div role=\"row\">` of `<div role=\"cell\">`), never `<tr>`/`<td>`."},{"name":"thead","type":"object","description":"Replaces the header row group's content (`.bb-table__head`). The table is a CSS grid: provide `<div role=\"row\">` rows of `<div role=\"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":"--ig","value":"0px","selector":".bb-table","description":"Nested indent locals (see `indentAnchor` in BbTable.vue): the step lands on ONE cell's leading padding. Reset on every table so a parent's step never inherits into a child's cells; the modifier picks the anchor."},{"name":"--is","value":"0px","selector":".bb-table"},{"name":"--ic","value":"0px","selector":".bb-table"},{"name":"--depth","value":"0","selector":".bb-table","description":"Nesting depth (0 at the root) and the parent-region floors of the own structural tracks, both set inline by the component on nested tables; declared here so a parent's values never inherit into a child."},{"name":"--min-g","value":"0px","selector":".bb-table"},{"name":"--min-s","value":"0px","selector":".bb-table"},{"name":"--min-a","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. The skeleton is not a part, and an expand row is styled through `expand`. 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":"expand","description":"The cell under an open row that holds the `#expand` slot and spans every column — resolved with its data row's `selected`, `highlighted` and `expanded` (always on: the cell exists only while its row is open). Not a `cell`, so `pt:cell` never reaches it: a rule taken off the cells (`pt:cell=\"border-b-0\"`) needs `pt:expand=\"border-b-0\"` too. Also takes a per-item function, called with the open row's raw item."},{"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 drag handle 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, its `expand` 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`, its cells and its `expand`: the row's expand row is open (`bb-table__row--expanded`)."},{"name":"highlighted","description":"Per node, on `row`, its cells and its `expand`: 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":true,"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":true,"readBy":["bb-base-checkbox-icon__check","bb-base-checkbox-icon__indeterminate"]},{"name":"--size","documented":true,"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":true,"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","--indent-*","--inherit-widths","--loading","--overflow-left","--overflow-right","--pinned-left","--pinned-right","--reorderable","--resizable","--row-dragging","--row-grabbing","--rows-reorderable","--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","__cell-column-header--wrap","__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","__content","__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","--depth","--drop","--fade-a-l","--fade-a-r","--fade-l","--fade-r","--floor","--ic","--ig","--indent","--is","--line","--min-a","--min-g","--min-s","--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","--vw"]},"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"}}]},
|
|
544
|
+
{"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":"The label of each row's selection checkbox, from `(columns, item)`. Unset: the row's name in the locale's select template (its `rowHeader` cells, else its first column: \"Select INV-1041\"). The cells arrive in render order: look one 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 describing the table's content, for accessibility."},{"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 display 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 hidden, 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":"Text shown when there are no items."},{"name":"enforceCoherence","type":"boolean | undefined","required":false,"default":"false","description":"After every load, prunes `modelValue`, `unselected-items`, `highlighted` and `expanded-items` of values whose row is gone (a single value resets to `null`). Never on a provider-paginated table: a page change would prune the other pages' selection; reconcile in the provider instead."},{"name":"expandedItems","type":"any[] | undefined","required":false,"default":"[]","description":"Used by `v-model:expandedItems`: the expanded items, toggled by the row expand control and by external writes, like the `highlighted` / `sort` v-models. Drives the `#expand` rows and their `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 `items` provider threw): the twin of `emptyText` for that case."},{"name":"fixed","type":"boolean | undefined","required":false,"default":"false","description":"Gives the columns that declare no `width` an equal share of the width (a `minmax(0, 1fr)` track each)."},{"name":"fixedActions","type":"boolean | undefined","required":false,"default":"false","description":"Pins the actions column (the one the `#actions` slot creates) to the right edge, `position: sticky`, in place. It has no column definition, so this is its `column.fixed`. 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 stuck header)."},{"name":"fixedHeaders","type":"boolean | undefined","required":false,"default":"false","description":"Sticks the headers 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 scrollport."},{"name":"fixedSelect","type":"boolean | undefined","required":false,"default":"false","description":"Pins the selection column to the left edge, `position: sticky`, in place. It has no column definition, so this is its `column.fixed`. No effect unless the table is `selectable`."},{"name":"headerRowClass","type":"Classes | undefined","required":false,"description":"Classes for 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` for none, or a function of the row's item. Unset: every row, when `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 (say, whose details are open), a single item value or `null`. Opt-in: bound, a row click highlights; unbound, it only emits `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 generated. Nested tables use the nearest ancestor id to inherit widths."},{"name":"inheritColumnWidths","type":"string | boolean | undefined","required":false,"description":"Snaps a nested table's columns to an ancestor table's tracks: `true` = the nearest one, a table `id` = that one (when a table in between has a different column count). Off by default: a nested table sizes itself."},{"name":"interactiveWhileLoading","type":"boolean | undefined","required":false,"default":"false","description":"Keeps the header and rows interactive while loading (by default they are `inert`: a refetch is about to replace them). For background refreshes that 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 `BbTableItemsContext` (`reason`, `modelValue`, `signal`), sync or async. A provider fails by THROWING, never by returning `[]`: the rows clear and `#empty` gets the `error`. Return the page as it is."},{"name":"itemValue","type":"ItemAccessor<Item> | undefined","required":false,"description":"The row's value, as a property path or a function returning any value; the selection, `expandedItems` and row keys compare by it."},{"name":"keyboardNavigation","type":"boolean | undefined","required":false,"default":"false","description":"Opt-in keyboard navigation: the table becomes an ARIA `grid` (`treegrid` with an `#expand` slot) with ONE tab stop and roving focus over its cells. Controls in cells leave the tab order (Enter/F2 go in). Ignored with a `#tbody` slot."},{"name":"legend","type":"string | undefined","required":false,"description":"The `<legend>` of a `selectable` table (it renders as a `<fieldset>`): the selection's accessible name. Falls back to `caption`, then to a localized default."},{"name":"loading","type":"boolean | undefined","required":false,"default":"false","description":"Loading state: skeletons with no rows yet, else the rows stay on screen, dimmed, under an indeterminate bar. A refetch never blanks 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. Visually hidden — the skeleton (or the `#loading` slot) is the visible signal."},{"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":"multiSort","type":"boolean | undefined","required":false,"default":"false","description":"A plain click on a sortable header adds the column to the sort, as Shift+click always does. Off, a plain click makes the sort that column alone."},{"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. Columns it omits follow in declaration order; unknown keys stay put. A `reorderable` move writes it back complete. Works unbound, like `sort`; never holds `select` / `actions`."},{"name":"page","type":"string | number | undefined","required":false,"description":"Current page (from 1), for the rows' `aria-rowindex` and a `BbPagination` paired through `id`. Doesn't slice `items`: pass the current page's rows. Numeric strings are coerced."},{"name":"perPage","type":"string | number | undefined","required":false,"description":"Rows per page, for `aria-rowindex` and a paired `BbPagination`. Doesn't slice `items`. Unset, an array `items` infers it from its length. Numeric strings are coerced."},{"name":"pt","type":"PtItemMap<BbTablePtPart, \"row\" | \"expand\", BbTablePtState, Item> | undefined","required":false,"description":"Passthrough, object form: the same keys as the `pt:*` attributes without 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:placeholder","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:body:value","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:placeholder","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:caption:value","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:placeholder","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:cell:value","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:placeholder","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:cellColumnHeader:value","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:placeholder","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:dragHandle:value","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:placeholder","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:dragIcon:value","type":"PtValue | undefined","required":false},{"name":"pt:expand","type":"PtValue | ((ctx: PtItemCtx<Item, BbTablePtState>) => PtItemResult) | undefined","required":false},{"name":"pt:expand:disabled","type":"PtValue | undefined","required":false},{"name":"pt:expand:empty","type":"PtValue | undefined","required":false},{"name":"pt:expand:expanded","type":"PtValue | undefined","required":false},{"name":"pt:expand:highlighted","type":"PtValue | undefined","required":false},{"name":"pt:expand:indeterminate","type":"PtValue | undefined","required":false},{"name":"pt:expand:loading","type":"PtValue | undefined","required":false},{"name":"pt:expand:placeholder","type":"PtValue | undefined","required":false},{"name":"pt:expand:selected","type":"PtValue | undefined","required":false},{"name":"pt:expand:sorted","type":"PtValue | undefined","required":false},{"name":"pt:expand:sortedDesc","type":"PtValue | undefined","required":false},{"name":"pt:expand:value","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:placeholder","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:firstRow:value","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:placeholder","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:foot:value","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:placeholder","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:head:value","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:placeholder","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:headerRow:value","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:placeholder","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:lastRow:value","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:placeholder","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:root:value","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:placeholder","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:row:value","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:placeholder","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:selectIcon:value","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:placeholder","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:sortIcon:value","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:placeholder","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":"pt:table:value","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 focused header. Every move writes `v-model:order`; a column panel that only writes `order` does not need it. `select` / `actions` and a custom `#thead` never move."},{"name":"reorderableRows","type":"boolean | undefined","required":false,"default":"false","description":"Adds a drag handle at the start of each row: the user drags a row, or lifts it with Space / Enter and the arrow keys, and `reorder:rows` reports `{ item, from, to }`. The table never reorders `items`: splice it in the handler."},{"name":"resizable","type":"boolean | undefined","required":false,"default":"false","description":"Lets the user resize the data columns (drag a header's trailing edge, or Alt+←/→; double-click resets). Each commit fires `resize:column(key, width)` once: write the width back into the column definition to keep it. Ignored when inheriting widths."},{"name":"rowClass","type":"BbTableRowClasses<Item> | undefined","required":false,"description":"Classes for each data row, or a function of the row's item."},{"name":"selectable","type":"boolean | ((item: Item) => boolean) | undefined","required":false,"description":"Makes rows selectable: a boolean for every row, or a function of the row's item deciding for that row."},{"name":"selectAll","type":"boolean | undefined","required":false,"default":"false","description":"Whether the \"Select all\" checkbox is checked."},{"name":"selectAllLabel","type":"string | undefined","required":false,"description":"Label of the \"Select all\" checkbox."},{"name":"selectText","type":"string | undefined","required":false,"description":"Header text of the radio column 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 order, written by the `sortable` headers and shown by them. Doesn't sort `items`: apply it to your data or your server query."},{"name":"tdClass","type":"ColumnClasses<Item> | undefined","required":false,"description":"Classes for every data cell, or a function of `(content, key, item)`."},{"name":"thClass","type":"Classes | undefined","required":false,"description":"Classes for every header cell."},{"name":"totalItems","type":"string | number | undefined","required":false,"description":"Total row count, for `aria-rowcount` and a paired `BbPagination`'s page count. Unset, an array `items` infers it from its length. 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, not rows; the table renders nothing from it. A known total (`totalItems`) always 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 the table's height to make it the scroller; column widths are measured once, from the first rows. Ignored when inheriting widths and under a `#tbody` slot."}],"events":[{"name":"click:row","signature":"(event: MouseEvent, item: any): void","description":"A body row was clicked, or activated with Enter/Space under `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; write `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 `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` / `to` index the `items` the table holds. Splice `items` in the handler; a drop in place emits nothing."},{"name":"resize:column","signature":"(key: string, width: number | null): void","description":"The user resized a column (`resizable`): the new width in px, or `null` after a double-click on the handle reset it to its 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 of each row's actions cell; this slot CREATES the actions column (there is no prop). The header cell (labelled by `actions-text`, replaceable through `#actions:header`) and one cell per row come and go with it. Pin it with `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 table's own full-width cell: pass content, never a row. `error` is what the 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?: ((event?: MouseEvent | KeyboardEvent | undefined) => void)","hideColumn?: (() => void)"],"description":"Content after every data column's header content (the label + sort control, or its own `<key>:header` replacement). A column's `<key>:header:append` wins over this for that column; 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?: ((event?: MouseEvent | KeyboardEvent | undefined) => void)","hideColumn?: (() => void)"],"description":"Content before every data column's header content (the label + sort control, or its own `<key>:header` replacement). A column's `<key>:header:prepend` wins over this for that column; 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`), for full control of the body markup. Provide role-complete rows (`<div role=\"row\">` with one `<div role=\"cell\">` per column), never `<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`) for footers that are not column-shaped (a note, pagination). Column-aligned totals go in `#<key>:last` (`#<key>:first` for a row before the data). Role-complete rows (`<div role=\"row\">` of `<div role=\"cell\">`), never `<tr>`/`<td>`."},{"name":"thead","type":"object","description":"Replaces the header row group's content (`.bb-table__head`). The table is a CSS grid: provide `<div role=\"row\">` rows of `<div role=\"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":"--ig","value":"0px","selector":".bb-table","description":"Nested indent locals (see `indentAnchor` in BbTable.vue): the step lands on ONE cell's leading padding. Reset on every table so a parent's step never inherits into a child's cells; the modifier picks the anchor."},{"name":"--is","value":"0px","selector":".bb-table"},{"name":"--ic","value":"0px","selector":".bb-table"},{"name":"--depth","value":"0","selector":".bb-table","description":"Nesting depth (0 at the root) and the parent-region floors of the own structural tracks, both set inline by the component on nested tables; declared here so a parent's values never inherit into a child."},{"name":"--min-g","value":"0px","selector":".bb-table"},{"name":"--min-s","value":"0px","selector":".bb-table"},{"name":"--min-a","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. The skeleton is not a part, and an expand row is styled through `expand`. 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":"expand","description":"The cell under an open row that holds the `#expand` slot and spans every column — resolved with its data row's `selected`, `highlighted` and `expanded` (always on: the cell exists only while its row is open). Not a `cell`, so `pt:cell` never reaches it: a rule taken off the cells (`pt:cell=\"border-b-0\"`) needs `pt:expand=\"border-b-0\"` too. Also takes a per-item function, called with the open row's raw item."},{"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 drag handle 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":"value","description":"Per node, on a DATA `cell`: the formatter / placeholder pipeline produced a value (not `null` / `undefined`), slot cells included (`bb-table__cell--value`). Not on the select, drag or actions cells."},{"name":"placeholder","description":"Per node, on a DATA `cell`: the value was empty and the column's `placeholder` shows instead, whatever its text (`bb-table__cell--placeholder`). A cell with an empty value and no `placeholder` has neither state."},{"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, its `expand` 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`, its cells and its `expand`: the row's expand row is open (`bb-table__row--expanded`)."},{"name":"highlighted","description":"Per node, on `row`, its cells and its `expand`: 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":true,"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":true,"readBy":["bb-base-checkbox-icon__check","bb-base-checkbox-icon__indeterminate"]},{"name":"--size","documented":true,"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":true,"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","--indent-*","--inherit-widths","--loading","--overflow-left","--overflow-right","--pinned-left","--pinned-right","--reorderable","--resizable","--row-dragging","--row-grabbing","--rows-reorderable","--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","__cell-column-header--wrap","__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","__content","__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","--depth","--drop","--fade-a-l","--fade-a-r","--fade-l","--fade-r","--floor","--ic","--ig","--indent","--is","--line","--min-a","--min-g","--min-s","--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","--vw"]},"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"}}]},
|
|
545
545
|
{"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 (enabled by default)."},{"name":"disableAnimateY","type":"boolean | undefined","required":false,"default":"false","description":"Disables the smooth height animation when switching between tab panels (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 inactive, instead of only the active one. One tab alone: its item's `eager`."},{"name":"headers","type":"Record<string, string> | undefined","required":false,"description":"Additional HTTP headers forwarded to Inertia when navigation is triggered. Only 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 when 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 tab (APG manual activation, Radix `activationMode=\"manual\"`). Unset: on when the strip or an item has `server` (else every arrow press is a 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 — see the `replace` prop."},{"name":"onBefore","type":"(() => boolean | void) | undefined","required":false,"description":"Inertia lifecycle hook — fired just before the request is sent. Return `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. Only 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. Only 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. Only 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 without 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 changes. Recommended with `navigation`: the query keeps the tab while Back leaves the page. Leave it off when a tab is a destination of its own (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 visit 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), `line` (a baseline with a sliding underline) or `none` (no chrome). Each is a preset of the strip's tokens; register more with the vite plugin'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","--no-panels","--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"}}]},
|
|
546
546
|
{"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 without 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` unless 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"}}]},
|
|
547
547
|
{"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 without 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"]},
|