[{"data":1,"prerenderedAt":916},["ShallowReactive",2],{"locale-alternates":3,"docs-nav-en":134,"api-BbTable":377,"page-en-\u002Fcomponents\u002Fbb-table\u002Fapi":389},{"\u002Fit\u002Fcomponenti\u002Fbb-accordion":4,"\u002Fen\u002Fcomponents\u002Fbb-accordion":5,"\u002Fit\u002Fcomponenti\u002Fbb-alert":6,"\u002Fen\u002Fcomponents\u002Fbb-alert":7,"\u002Fit\u002Fcomponenti\u002Fbb-asterisk":8,"\u002Fen\u002Fcomponents\u002Fbb-asterisk":9,"\u002Fit\u002Fcomponenti\u002Fbb-avatar":10,"\u002Fen\u002Fcomponents\u002Fbb-avatar":11,"\u002Fit\u002Fcomponenti\u002Fbb-badge":12,"\u002Fen\u002Fcomponents\u002Fbb-badge":13,"\u002Fit\u002Fcomponenti\u002Fbb-base-button":14,"\u002Fen\u002Fcomponents\u002Fbb-base-button":15,"\u002Fit\u002Fcomponenti\u002Fbb-breadcrumbs":16,"\u002Fen\u002Fcomponents\u002Fbb-breadcrumbs":17,"\u002Fit\u002Fcomponenti\u002Fbb-button":18,"\u002Fen\u002Fcomponents\u002Fbb-button":19,"\u002Fit\u002Fcomponenti\u002Fbb-calendar":20,"\u002Fen\u002Fcomponents\u002Fbb-calendar":21,"\u002Fit\u002Fcomponenti\u002Fbb-checkbox":22,"\u002Fen\u002Fcomponents\u002Fbb-checkbox":23,"\u002Fit\u002Fcomponenti\u002Fbb-checkbox-group":24,"\u002Fen\u002Fcomponents\u002Fbb-checkbox-group":25,"\u002Fit\u002Fcomponenti\u002Fbb-collapsible":26,"\u002Fen\u002Fcomponents\u002Fbb-collapsible":27,"\u002Fit\u002Fcomponenti\u002Fbb-color-input":28,"\u002Fen\u002Fcomponents\u002Fbb-color-input":29,"\u002Fit\u002Fcomponenti\u002Fbb-color-palette":30,"\u002Fen\u002Fcomponents\u002Fbb-color-palette":31,"\u002Fit\u002Fcomponenti\u002Fbb-confirm":32,"\u002Fen\u002Fcomponents\u002Fbb-confirm":33,"\u002Fit\u002Fcomponenti\u002Fbb-date-picker":34,"\u002Fen\u002Fcomponents\u002Fbb-date-picker":35,"\u002Fit\u002Fcomponenti\u002Fbb-date-picker-input":36,"\u002Fen\u002Fcomponents\u002Fbb-date-picker-input":37,"\u002Fit\u002Fcomponenti\u002Fbb-dialog":38,"\u002Fen\u002Fcomponents\u002Fbb-dialog":39,"\u002Fit\u002Fcomponenti\u002Fbb-dropdown":40,"\u002Fen\u002Fcomponents\u002Fbb-dropdown":41,"\u002Fit\u002Fcomponenti\u002Fbb-dropdown-button":42,"\u002Fen\u002Fcomponents\u002Fbb-dropdown-button":43,"\u002Fit\u002Fcomponenti\u002Fbb-dropzone":44,"\u002Fen\u002Fcomponents\u002Fbb-dropzone":45,"\u002Fit\u002Fcomponenti\u002Fbb-form":46,"\u002Fen\u002Fcomponents\u002Fbb-form":47,"\u002Fit\u002Fcomponenti\u002Fbb-hover-card":48,"\u002Fen\u002Fcomponents\u002Fbb-hover-card":49,"\u002Fit\u002Fcomponenti\u002Fbb-icon":50,"\u002Fen\u002Fcomponents\u002Fbb-icon":51,"\u002Fit\u002Fcomponenti\u002Fbb-indicator":52,"\u002Fen\u002Fcomponents\u002Fbb-indicator":53,"\u002Fit\u002Fcomponenti\u002Fbb-number-input":54,"\u002Fen\u002Fcomponents\u002Fbb-number-input":55,"\u002Fit\u002Fcomponenti\u002Fbb-off-canvas":56,"\u002Fen\u002Fcomponents\u002Fbb-off-canvas":57,"\u002Fit\u002Fcomponenti\u002Fbb-pagination":58,"\u002Fen\u002Fcomponents\u002Fbb-pagination":59,"\u002Fit\u002Fcomponenti\u002Fbb-popover":60,"\u002Fen\u002Fcomponents\u002Fbb-popover":61,"\u002Fit\u002Fcomponenti\u002Fbb-progress":62,"\u002Fen\u002Fcomponents\u002Fbb-progress":63,"\u002Fit\u002Fcomponenti\u002Fbb-radio":64,"\u002Fen\u002Fcomponents\u002Fbb-radio":65,"\u002Fit\u002Fcomponenti\u002Fbb-radio-group":66,"\u002Fen\u002Fcomponents\u002Fbb-radio-group":67,"\u002Fit\u002Fcomponenti\u002Fbb-rating":68,"\u002Fen\u002Fcomponents\u002Fbb-rating":69,"\u002Fit\u002Fcomponenti\u002Fbb-select":70,"\u002Fen\u002Fcomponents\u002Fbb-select":71,"\u002Fit\u002Fcomponenti\u002Fbb-select-popover":72,"\u002Fen\u002Fcomponents\u002Fbb-select-popover":73,"\u002Fit\u002Fcomponenti\u002Fbb-slider":74,"\u002Fen\u002Fcomponents\u002Fbb-slider":75,"\u002Fit\u002Fcomponenti\u002Fbb-smooth-height":76,"\u002Fen\u002Fcomponents\u002Fbb-smooth-height":77,"\u002Fit\u002Fcomponenti\u002Fbb-spinner":78,"\u002Fen\u002Fcomponents\u002Fbb-spinner":79,"\u002Fit\u002Fcomponenti\u002Fbb-switch":80,"\u002Fen\u002Fcomponents\u002Fbb-switch":81,"\u002Fit\u002Fcomponenti\u002Fbb-switch-group":82,"\u002Fen\u002Fcomponents\u002Fbb-switch-group":83,"\u002Fit\u002Fcomponenti\u002Fbb-table":84,"\u002Fen\u002Fcomponents\u002Fbb-table":85,"\u002Fit\u002Fcomponenti\u002Fbb-tabs":86,"\u002Fen\u002Fcomponents\u002Fbb-tabs":87,"\u002Fit\u002Fcomponenti\u002Fbb-tag":88,"\u002Fen\u002Fcomponents\u002Fbb-tag":89,"\u002Fit\u002Fcomponenti\u002Fbb-text-input":90,"\u002Fen\u002Fcomponents\u002Fbb-text-input":91,"\u002Fit\u002Fcomponenti\u002Fbb-textarea":92,"\u002Fen\u002Fcomponents\u002Fbb-textarea":93,"\u002Fit\u002Fcomponenti\u002Fbb-time-picker":94,"\u002Fen\u002Fcomponents\u002Fbb-time-picker":95,"\u002Fit\u002Fcomponenti\u002Fbb-time-picker-input":96,"\u002Fen\u002Fcomponents\u002Fbb-time-picker-input":97,"\u002Fit\u002Fcomponenti\u002Fbb-toast":98,"\u002Fen\u002Fcomponents\u002Fbb-toast":99,"\u002Fit\u002Fcomponenti\u002Fbb-tooltip":100,"\u002Fen\u002Fcomponents\u002Fbb-tooltip":101,"\u002Fit\u002Fcomponenti\u002Fbb-tree":102,"\u002Fen\u002Fcomponents\u002Fbb-tree":103,"\u002Fit\u002Fguide\u002Fadoption-checklist":104,"\u002Fen\u002Fguides\u002Fadoption-checklist":105,"\u002Fit\u002Fguide\u002Fai-agents":106,"\u002Fen\u002Fguides\u002Fai-agents":107,"\u002Fit\u002Fguide\u002Fcoherence":108,"\u002Fen\u002Fguides\u002Fcoherence":109,"\u002Fit\u002Fguide\u002Fdesign-language":110,"\u002Fen\u002Fguides\u002Fdesign-language":111,"\u002Fit\u002Fguide\u002Fdesign-tokens":112,"\u002Fen\u002Fguides\u002Fdesign-tokens":113,"\u002Fit\u002Fguide\u002Ffetching-data":114,"\u002Fen\u002Fguides\u002Ffetching-data":115,"\u002Fit\u002Fguide\u002Ficons":116,"\u002Fen\u002Fguides\u002Ficons":117,"\u002Fit\u002Fguide\u002Finertia":118,"\u002Fen\u002Fguides\u002Finertia":119,"\u002Fit\u002Fguide\u002Finstallation":120,"\u002Fen\u002Fguides\u002Finstallation":121,"\u002Fit\u002Fguide\u002Fmigration":122,"\u002Fen\u002Fguides\u002Fmigration":123,"\u002Fit\u002Fguide\u002Fnuxt":124,"\u002Fen\u002Fguides\u002Fnuxt":125,"\u002Fit\u002Fguide\u002Foptions-and-items":126,"\u002Fen\u002Fguides\u002Foptions-and-items":127,"\u002Fit\u002Fguide\u002Fpassthrough":128,"\u002Fen\u002Fguides\u002Fpassthrough":129,"\u002Fit\u002Fguide\u002Fpreset-components":130,"\u002Fen\u002Fguides\u002Fpreset-components":131,"\u002Fit\u002Fguide\u002Fvalidated-forms":132,"\u002Fen\u002Fguides\u002Fvalidated-forms":133},"\u002Fen\u002Fcomponents\u002Fbb-accordion","\u002Fit\u002Fcomponenti\u002Fbb-accordion","\u002Fen\u002Fcomponents\u002Fbb-alert","\u002Fit\u002Fcomponenti\u002Fbb-alert","\u002Fen\u002Fcomponents\u002Fbb-asterisk","\u002Fit\u002Fcomponenti\u002Fbb-asterisk","\u002Fen\u002Fcomponents\u002Fbb-avatar","\u002Fit\u002Fcomponenti\u002Fbb-avatar","\u002Fen\u002Fcomponents\u002Fbb-badge","\u002Fit\u002Fcomponenti\u002Fbb-badge","\u002Fen\u002Fcomponents\u002Fbb-base-button","\u002Fit\u002Fcomponenti\u002Fbb-base-button","\u002Fen\u002Fcomponents\u002Fbb-breadcrumbs","\u002Fit\u002Fcomponenti\u002Fbb-breadcrumbs","\u002Fen\u002Fcomponents\u002Fbb-button","\u002Fit\u002Fcomponenti\u002Fbb-button","\u002Fen\u002Fcomponents\u002Fbb-calendar","\u002Fit\u002Fcomponenti\u002Fbb-calendar","\u002Fen\u002Fcomponents\u002Fbb-checkbox","\u002Fit\u002Fcomponenti\u002Fbb-checkbox","\u002Fen\u002Fcomponents\u002Fbb-checkbox-group","\u002Fit\u002Fcomponenti\u002Fbb-checkbox-group","\u002Fen\u002Fcomponents\u002Fbb-collapsible","\u002Fit\u002Fcomponenti\u002Fbb-collapsible","\u002Fen\u002Fcomponents\u002Fbb-color-input","\u002Fit\u002Fcomponenti\u002Fbb-color-input","\u002Fen\u002Fcomponents\u002Fbb-color-palette","\u002Fit\u002Fcomponenti\u002Fbb-color-palette","\u002Fen\u002Fcomponents\u002Fbb-confirm","\u002Fit\u002Fcomponenti\u002Fbb-confirm","\u002Fen\u002Fcomponents\u002Fbb-date-picker","\u002Fit\u002Fcomponenti\u002Fbb-date-picker","\u002Fen\u002Fcomponents\u002Fbb-date-picker-input","\u002Fit\u002Fcomponenti\u002Fbb-date-picker-input","\u002Fen\u002Fcomponents\u002Fbb-dialog","\u002Fit\u002Fcomponenti\u002Fbb-dialog","\u002Fen\u002Fcomponents\u002Fbb-dropdown","\u002Fit\u002Fcomponenti\u002Fbb-dropdown","\u002Fen\u002Fcomponents\u002Fbb-dropdown-button","\u002Fit\u002Fcomponenti\u002Fbb-dropdown-button","\u002Fen\u002Fcomponents\u002Fbb-dropzone","\u002Fit\u002Fcomponenti\u002Fbb-dropzone","\u002Fen\u002Fcomponents\u002Fbb-form","\u002Fit\u002Fcomponenti\u002Fbb-form","\u002Fen\u002Fcomponents\u002Fbb-hover-card","\u002Fit\u002Fcomponenti\u002Fbb-hover-card","\u002Fen\u002Fcomponents\u002Fbb-icon","\u002Fit\u002Fcomponenti\u002Fbb-icon","\u002Fen\u002Fcomponents\u002Fbb-indicator","\u002Fit\u002Fcomponenti\u002Fbb-indicator","\u002Fen\u002Fcomponents\u002Fbb-number-input","\u002Fit\u002Fcomponenti\u002Fbb-number-input","\u002Fen\u002Fcomponents\u002Fbb-off-canvas","\u002Fit\u002Fcomponenti\u002Fbb-off-canvas","\u002Fen\u002Fcomponents\u002Fbb-pagination","\u002Fit\u002Fcomponenti\u002Fbb-pagination","\u002Fen\u002Fcomponents\u002Fbb-popover","\u002Fit\u002Fcomponenti\u002Fbb-popover","\u002Fen\u002Fcomponents\u002Fbb-progress","\u002Fit\u002Fcomponenti\u002Fbb-progress","\u002Fen\u002Fcomponents\u002Fbb-radio","\u002Fit\u002Fcomponenti\u002Fbb-radio","\u002Fen\u002Fcomponents\u002Fbb-radio-group","\u002Fit\u002Fcomponenti\u002Fbb-radio-group","\u002Fen\u002Fcomponents\u002Fbb-rating","\u002Fit\u002Fcomponenti\u002Fbb-rating","\u002Fen\u002Fcomponents\u002Fbb-select","\u002Fit\u002Fcomponenti\u002Fbb-select","\u002Fen\u002Fcomponents\u002Fbb-select-popover","\u002Fit\u002Fcomponenti\u002Fbb-select-popover","\u002Fen\u002Fcomponents\u002Fbb-slider","\u002Fit\u002Fcomponenti\u002Fbb-slider","\u002Fen\u002Fcomponents\u002Fbb-smooth-height","\u002Fit\u002Fcomponenti\u002Fbb-smooth-height","\u002Fen\u002Fcomponents\u002Fbb-spinner","\u002Fit\u002Fcomponenti\u002Fbb-spinner","\u002Fen\u002Fcomponents\u002Fbb-switch","\u002Fit\u002Fcomponenti\u002Fbb-switch","\u002Fen\u002Fcomponents\u002Fbb-switch-group","\u002Fit\u002Fcomponenti\u002Fbb-switch-group","\u002Fen\u002Fcomponents\u002Fbb-table","\u002Fit\u002Fcomponenti\u002Fbb-table","\u002Fen\u002Fcomponents\u002Fbb-tabs","\u002Fit\u002Fcomponenti\u002Fbb-tabs","\u002Fen\u002Fcomponents\u002Fbb-tag","\u002Fit\u002Fcomponenti\u002Fbb-tag","\u002Fen\u002Fcomponents\u002Fbb-text-input","\u002Fit\u002Fcomponenti\u002Fbb-text-input","\u002Fen\u002Fcomponents\u002Fbb-textarea","\u002Fit\u002Fcomponenti\u002Fbb-textarea","\u002Fen\u002Fcomponents\u002Fbb-time-picker","\u002Fit\u002Fcomponenti\u002Fbb-time-picker","\u002Fen\u002Fcomponents\u002Fbb-time-picker-input","\u002Fit\u002Fcomponenti\u002Fbb-time-picker-input","\u002Fen\u002Fcomponents\u002Fbb-toast","\u002Fit\u002Fcomponenti\u002Fbb-toast","\u002Fen\u002Fcomponents\u002Fbb-tooltip","\u002Fit\u002Fcomponenti\u002Fbb-tooltip","\u002Fen\u002Fcomponents\u002Fbb-tree","\u002Fit\u002Fcomponenti\u002Fbb-tree","\u002Fen\u002Fguides\u002Fadoption-checklist","\u002Fit\u002Fguide\u002Fadoption-checklist","\u002Fen\u002Fguides\u002Fai-agents","\u002Fit\u002Fguide\u002Fai-agents","\u002Fen\u002Fguides\u002Fcoherence","\u002Fit\u002Fguide\u002Fcoherence","\u002Fen\u002Fguides\u002Fdesign-language","\u002Fit\u002Fguide\u002Fdesign-language","\u002Fen\u002Fguides\u002Fdesign-tokens","\u002Fit\u002Fguide\u002Fdesign-tokens","\u002Fen\u002Fguides\u002Ffetching-data","\u002Fit\u002Fguide\u002Ffetching-data","\u002Fen\u002Fguides\u002Ficons","\u002Fit\u002Fguide\u002Ficons","\u002Fen\u002Fguides\u002Finertia","\u002Fit\u002Fguide\u002Finertia","\u002Fen\u002Fguides\u002Finstallation","\u002Fit\u002Fguide\u002Finstallation","\u002Fen\u002Fguides\u002Fmigration","\u002Fit\u002Fguide\u002Fmigration","\u002Fen\u002Fguides\u002Fnuxt","\u002Fit\u002Fguide\u002Fnuxt","\u002Fen\u002Fguides\u002Foptions-and-items","\u002Fit\u002Fguide\u002Foptions-and-items","\u002Fen\u002Fguides\u002Fpassthrough","\u002Fit\u002Fguide\u002Fpassthrough","\u002Fen\u002Fguides\u002Fpreset-components","\u002Fit\u002Fguide\u002Fpreset-components","\u002Fen\u002Fguides\u002Fvalidated-forms","\u002Fit\u002Fguide\u002Fvalidated-forms",[135,150,162,186,198,242,275,311,332,353,365,371],{"label":136,"entries":137},"Getting started",[138,142,146],{"title":139,"path":140,"order":141},"Installation","\u002Fguides\u002Finstallation",1,{"title":143,"path":144,"order":145},"Migrating from v2","\u002Fguides\u002Fmigration",2,{"title":147,"path":148,"order":149},"Adoption checklist","\u002Fguides\u002Fadoption-checklist",3,{"label":151,"entries":152},"Design system",[153,156,159],{"title":154,"path":155,"order":141},"Design tokens","\u002Fguides\u002Fdesign-tokens",{"title":157,"path":158,"order":145},"Design language","\u002Fguides\u002Fdesign-language",{"title":160,"path":161,"order":149},"Passthrough","\u002Fguides\u002Fpassthrough",{"label":163,"entries":164},"Playbooks",[165,168,171,174,178,182],{"title":166,"path":167,"order":141},"Options and items","\u002Fguides\u002Foptions-and-items",{"title":169,"path":170,"order":145},"Fetching data","\u002Fguides\u002Ffetching-data",{"title":172,"path":173,"order":149},"Coherence","\u002Fguides\u002Fcoherence",{"title":175,"path":176,"order":177},"Validated forms","\u002Fguides\u002Fvalidated-forms",4,{"title":179,"path":180,"order":181},"Icons","\u002Fguides\u002Ficons",5,{"title":183,"path":184,"order":185},"Preset components","\u002Fguides\u002Fpreset-components",6,{"label":187,"entries":188},"Ecosystem",[189,192,195],{"title":190,"path":191,"order":141},"Inertia and Laravel","\u002Fguides\u002Finertia",{"title":193,"path":194,"order":145},"Nuxt","\u002Fguides\u002Fnuxt",{"title":196,"path":197,"order":149},"AI agents","\u002Fguides\u002Fai-agents",{"label":199,"entries":200},"Inputs",[201,204,207,210,213,216,219,222,226,230,234,238],{"title":202,"path":203,"component":202,"order":141},"BbBaseButton","\u002Fcomponents\u002Fbb-base-button",{"title":205,"path":206,"component":205,"order":145},"BbButton","\u002Fcomponents\u002Fbb-button",{"title":208,"path":209,"component":208,"order":149},"BbCalendar","\u002Fcomponents\u002Fbb-calendar",{"title":211,"path":212,"component":211,"order":149},"BbColorInput","\u002Fcomponents\u002Fbb-color-input",{"title":214,"path":215,"component":214,"order":177},"BbDatePickerInput","\u002Fcomponents\u002Fbb-date-picker-input",{"title":217,"path":218,"component":217,"order":181},"BbDropzone","\u002Fcomponents\u002Fbb-dropzone",{"title":220,"path":221,"component":220,"order":185},"BbForm","\u002Fcomponents\u002Fbb-form",{"title":223,"path":224,"component":223,"order":225},"BbNumberInput","\u002Fcomponents\u002Fbb-number-input",7,{"title":227,"path":228,"component":227,"order":229},"BbTag","\u002Fcomponents\u002Fbb-tag",8,{"title":231,"path":232,"component":231,"order":233},"BbTextarea","\u002Fcomponents\u002Fbb-textarea",9,{"title":235,"path":236,"component":235,"order":237},"BbTextInput","\u002Fcomponents\u002Fbb-text-input",10,{"title":239,"path":240,"component":239,"order":241},"BbTimePickerInput","\u002Fcomponents\u002Fbb-time-picker-input",11,{"label":243,"entries":244},"Selection",[245,248,251,254,257,260,263,266,269,272],{"title":246,"path":247,"component":246,"order":141},"BbCheckbox","\u002Fcomponents\u002Fbb-checkbox",{"title":249,"path":250,"component":249,"order":145},"BbCheckboxGroup","\u002Fcomponents\u002Fbb-checkbox-group",{"title":252,"path":253,"component":252,"order":149},"BbRadio","\u002Fcomponents\u002Fbb-radio",{"title":255,"path":256,"component":255,"order":177},"BbRadioGroup","\u002Fcomponents\u002Fbb-radio-group",{"title":258,"path":259,"component":258,"order":181},"BbRating","\u002Fcomponents\u002Fbb-rating",{"title":261,"path":262,"component":261,"order":185},"BbSelect","\u002Fcomponents\u002Fbb-select",{"title":264,"path":265,"component":264,"order":225},"BbSelectPopover","\u002Fcomponents\u002Fbb-select-popover",{"title":267,"path":268,"component":267,"order":229},"BbSlider","\u002Fcomponents\u002Fbb-slider",{"title":270,"path":271,"component":270,"order":233},"BbSwitch","\u002Fcomponents\u002Fbb-switch",{"title":273,"path":274,"component":273,"order":237},"BbSwitchGroup","\u002Fcomponents\u002Fbb-switch-group",{"label":276,"entries":277},"Overlay",[278,281,284,287,290,293,296,299,302,305,308],{"title":279,"path":280,"component":279,"order":141},"BbColorPalette","\u002Fcomponents\u002Fbb-color-palette",{"title":282,"path":283,"component":282,"order":145},"BbConfirm","\u002Fcomponents\u002Fbb-confirm",{"title":285,"path":286,"component":285,"order":149},"BbDatePicker","\u002Fcomponents\u002Fbb-date-picker",{"title":288,"path":289,"component":288,"order":177},"BbDialog","\u002Fcomponents\u002Fbb-dialog",{"title":291,"path":292,"component":291,"order":181},"BbDropdown","\u002Fcomponents\u002Fbb-dropdown",{"title":294,"path":295,"component":294,"order":185},"BbDropdownButton","\u002Fcomponents\u002Fbb-dropdown-button",{"title":297,"path":298,"component":297,"order":225},"BbHoverCard","\u002Fcomponents\u002Fbb-hover-card",{"title":300,"path":301,"component":300,"order":225},"BbOffCanvas","\u002Fcomponents\u002Fbb-off-canvas",{"title":303,"path":304,"component":303,"order":229},"BbPopover","\u002Fcomponents\u002Fbb-popover",{"title":306,"path":307,"component":306,"order":233},"BbTimePicker","\u002Fcomponents\u002Fbb-time-picker",{"title":309,"path":310,"component":309,"order":237},"BbTooltip","\u002Fcomponents\u002Fbb-tooltip",{"label":312,"entries":313},"Navigation",[314,317,320,323,326,329],{"title":315,"path":316,"component":315,"order":141},"BbAccordion","\u002Fcomponents\u002Fbb-accordion",{"title":318,"path":319,"component":318,"order":145},"BbBreadcrumbs","\u002Fcomponents\u002Fbb-breadcrumbs",{"title":321,"path":322,"component":321,"order":149},"BbCollapsible","\u002Fcomponents\u002Fbb-collapsible",{"title":324,"path":325,"component":324,"order":177},"BbPagination","\u002Fcomponents\u002Fbb-pagination",{"title":327,"path":328,"component":327,"order":181},"BbTabs","\u002Fcomponents\u002Fbb-tabs",{"title":330,"path":331,"component":330,"order":185},"BbTree","\u002Fcomponents\u002Fbb-tree",{"label":333,"entries":334},"Feedback",[335,338,341,344,347,350],{"title":336,"path":337,"component":336,"order":141},"BbAlert","\u002Fcomponents\u002Fbb-alert",{"title":339,"path":340,"component":339,"order":145},"BbBadge","\u002Fcomponents\u002Fbb-badge",{"title":342,"path":343,"component":342,"order":149},"BbIndicator","\u002Fcomponents\u002Fbb-indicator",{"title":345,"path":346,"component":345,"order":177},"BbProgress","\u002Fcomponents\u002Fbb-progress",{"title":348,"path":349,"component":348,"order":181},"BbSpinner","\u002Fcomponents\u002Fbb-spinner",{"title":351,"path":352,"component":351,"order":185},"BbToast","\u002Fcomponents\u002Fbb-toast",{"label":354,"entries":355},"Data Display",[356,359,362],{"title":357,"path":358,"component":357,"order":141},"BbAvatar","\u002Fcomponents\u002Fbb-avatar",{"title":360,"path":361,"component":360,"order":145},"BbIcon","\u002Fcomponents\u002Fbb-icon",{"title":363,"path":364,"component":363,"order":149},"BbTable","\u002Fcomponents\u002Fbb-table",{"label":366,"entries":367},"Layout & Utility",[368],{"title":369,"path":370,"component":369,"order":141},"BbSmoothHeight","\u002Fcomponents\u002Fbb-smooth-height",{"label":372,"entries":373},"Other",[374],{"title":375,"path":376,"component":375,"order":141},"BbAsterisk","\u002Fcomponents\u002Fbb-asterisk",{"name":363,"slug":378,"group":354,"description":379,"entrypoint":380,"docs":381,"props":384,"models":619,"events":632,"slots":689,"exposed":767,"pt":768,"validated":389,"migration":849},"bb-table","Displays tabular data, configurable columns and data mapper.","bitboss-ui",{"contract":382,"source":383},"ai\u002FBbTable.md","ai\u002Fsource\u002FBbTable.md",[385,393,397,402,407,413,418,422,427,430,434,437,443,448,452,456,459,462,465,468,471,476,480,484,488,492,496,499,505,510,515,519,523,527,531,534,538,541,544,548,552,555,559,564,567,570,573,576,581,584,587,591,594,598,602,605,609,612,615],{"name":386,"type":387,"required":388,"default":389,"description":390,"note":391,"demo":392},"accessibleLabel","((columns: MappedCell[], item: any) => string) | undefined",false,null,"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.","Called with the mapped cells in render order, so look a cell up by `key` rather than by position — `order` and `reorderable` both move them.","selection",{"name":394,"type":395,"required":388,"default":389,"description":396,"note":389,"demo":389},"actionsText","string | undefined","Label used in the header of the actions column.",{"name":398,"type":399,"required":388,"default":400,"description":401,"note":389,"demo":389},"align","\"left\" | \"center\" | \"right\" | undefined","\"left\"","Text alignment of the columns.",{"name":403,"type":395,"required":388,"default":389,"description":404,"note":405,"demo":406},"caption","Caption describing the table's content, for accessibility.","The table's accessible name, and the fallback name of the `\u003Cfieldset>` a selectable table renders. Visually hidden unless `display-caption` is set. In v3 it is a `\u003Cdiv>` before the grid root rather than a `\u003Ccaption>` inside it.","default",{"name":408,"type":409,"required":388,"default":410,"description":411,"note":412,"demo":408},"columns","BbTableColumn\u003CT>[] | undefined","[]","Array of definitions of how the columns should be rendered.","Write these as `BbTableColumn\u003CYourItem>[]`. A column carries extraction (`key`, dot paths allowed), formatting (`formatter`, `placeholder`, `formatOnNull`), presentation (`label`, `align`, `width`, `skeleton`), `rowHeader` for the column that names each row, and styling (`thClass`, `tdClass`, `rowClass`). `actions` and `select` are not columns: the `#actions` slot creates the actions column and `selectable` the selection one. A column keyed like one of the table's own slots (`actions`, `select`, `expand`, `empty`…) collides with that slot. Pin with `fixed: 'left' | 'right'`, hide with `hidden`, lock against reordering with `reorderable: false`.",{"name":414,"type":415,"required":388,"default":416,"description":417,"note":389,"demo":389},"compact","boolean | undefined","false","Adds a CSS class that applies a compact style to the component.",{"name":419,"type":420,"required":388,"default":410,"description":421,"note":389,"demo":389},"dependencies","unknown[] | undefined","Defines an array of dependencies that will trigger actions in the component upon change.",{"name":423,"type":424,"required":388,"default":425,"description":426,"note":389,"demo":389},"depsDebounceTime","number | undefined","0","Timeout used to debounce response to changes to dependencies.",{"name":428,"type":415,"required":388,"default":416,"description":429,"note":389,"demo":389},"disabled","Disables the component",{"name":431,"type":415,"required":388,"default":416,"description":432,"note":433,"demo":392},"disableSelectAll","Hides the \"Select all\" checkbox that selectable multi-row tables display by default.","Replaces v2's `allow-select-all`, with the polarity inverted: `allow-select-all=\"false\"` becomes `disable-select-all`. The old name lands in `$attrs` and does nothing, so the change is silent.",{"name":435,"type":415,"required":388,"default":416,"description":436,"note":389,"demo":389},"displayCaption","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":438,"type":395,"required":388,"default":439,"description":440,"note":441,"demo":442},"emptyText","the localized `common.emptyText` (\"No data to display\")","Text shown when there are no items.","Also the place to explain a failed fetch: there is no `error-text` prop and no table-level error state, and a provider that rejects keeps the previous rows on screen. Catch the error in the provider, keep the reason in a ref, return `[]`, and show it through this text or the `#empty` slot.","states",{"name":444,"type":415,"required":388,"default":416,"description":445,"note":446,"demo":447},"enforceCoherence","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.","Leave it off on any provider-paginated table (`items` is a function): every page turn is a load, so a cross-page selection would be pruned away. Reconcile in the provider instead, which receives the current selection for exactly this reason.","pages",{"name":449,"type":450,"required":388,"default":410,"description":451,"note":389,"demo":389},"expandedItems","any[] | undefined","Used by `v-model:expandedItems`: the expanded items, toggled by the row expand control and by external writes, like the `highlighted` \u002F `sort` v-models. Drives the `#expand` rows and their `aria-expanded` \u002F `aria-controls` wiring.",{"name":453,"type":395,"required":388,"default":454,"description":455,"note":389,"demo":389},"failedText","the localized `common.failedText` (\"Couldn't load items\")","String displayed in the empty state while the latest load FAILED (the `items` provider threw): the twin of `emptyText` for that case.",{"name":457,"type":415,"required":388,"default":416,"description":458,"note":389,"demo":389},"fixed","Gives the columns that declare no `width` an equal share of the width (a `minmax(0, 1fr)` track each).",{"name":460,"type":415,"required":388,"default":416,"description":461,"note":389,"demo":389},"fixedActions","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":463,"type":415,"required":388,"default":416,"description":464,"note":389,"demo":389},"fixedFirst","Sticks the `#\u003Ckey>:first` row to the top of the scrollport (under a stuck header).",{"name":466,"type":415,"required":388,"default":416,"description":467,"note":389,"demo":389},"fixedHeaders","Sticks the headers to the top of the table.",{"name":469,"type":415,"required":388,"default":416,"description":470,"note":389,"demo":389},"fixedLast","Sticks the `#\u003Ckey>:last` row (a totals row) to the bottom of the scrollport.",{"name":472,"type":415,"required":388,"default":416,"description":473,"note":474,"demo":475},"fixedSelect","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`.","Pinned cells are opaque and paint the table's `--bg` local, so a table on a surface that is not `--bb-panel` needs that one custom property set or the pinned column reads as a white hole. The same applies to `fixed-actions` and to any `column.fixed`.","wide-tables",{"name":477,"type":478,"required":388,"default":389,"description":479,"note":389,"demo":389},"headerRowClass","Classes | undefined","Classes for the header row.",{"name":481,"type":482,"required":388,"default":389,"description":483,"note":389,"demo":389},"highlightable","boolean | ((item: Item) => boolean) | undefined","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":485,"type":486,"required":388,"default":389,"description":487,"note":389,"demo":389},"highlighted","any","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":489,"type":395,"required":388,"default":389,"description":490,"note":491,"demo":447},"id","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.","The rendezvous key for `useBbTableContext(id)` and for a `BbPagination` with a matching `table-id`. A typo does not error — it creates a second, unattached state node, so a toolbar that \"works\" while the table ignores it is almost always a misspelled id.",{"name":493,"type":494,"required":388,"default":389,"description":495,"note":389,"demo":389},"inheritColumnWidths","string | boolean | undefined","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":497,"type":415,"required":388,"default":416,"description":498,"note":389,"demo":389},"interactiveWhileLoading","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":500,"type":501,"required":502,"default":410,"description":503,"note":504,"demo":406},"items","Item[] | ((context: BbTableItemsContext) => Item[] | Promise\u003CItem[]>)",true,"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.","Pass rows or a provider. Put filters and sort in `dependencies`; the table debounces, reports loading and discards stale responses.",{"name":506,"type":507,"required":388,"default":389,"description":508,"note":509,"demo":406},"itemValue","ItemAccessor\u003CItem> | undefined","The row's value, as a property path or a function returning any value; the selection, `expandedItems` and row keys compare by it.","Stable row identity as a path or function. Set it before adding selection, expansion or highlight so those models survive refetches.",{"name":511,"type":415,"required":388,"default":416,"description":512,"note":513,"demo":514},"keyboardNavigation","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\u002FF2 go in). Ignored with a `#tbody` slot.","Makes the table an ARIA grid (a treegrid with `#expand`): one tab stop, focus moves between cells, Enter\u002FSpace open the row, Enter\u002FF2 step into a cell's controls. Controls inside cells leave the tab order while it is on. Ignored under a `#tbody` slot.","rows",{"name":516,"type":395,"required":388,"default":389,"description":517,"note":518,"demo":392},"legend","The `\u003Clegend>` of a `selectable` table (it renders as a `\u003Cfieldset>`): the selection's accessible name. Falls back to `caption`, then to a localized default.","Only rendered by a `selectable` table. Say what the selection is for (\"select invoices to export\") — that is what makes it worth more than the `caption` fallback.",{"name":520,"type":415,"required":388,"default":416,"description":521,"note":522,"demo":442},"loading","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.","With rows already on screen this no longer blanks the table: the rows stay, dimmed, under a progress bar, and the header and rows go `inert` unless you set `interactive-while-loading`. Skeletons appear only when there is nothing to keep.",{"name":524,"type":395,"required":388,"default":525,"description":526,"note":389,"demo":389},"loadingText","the localized `common.loadingText` (\"Loading...\")","Screen-reader announcement for the loading row's `aria-live` status. Visually hidden — the skeleton (or the `#loading` slot) is the visible signal.",{"name":528,"type":424,"required":388,"default":529,"description":530,"note":389,"demo":389},"max","Infinity","Maximum number of items that can be selected.",{"name":532,"type":486,"required":388,"default":410,"description":533,"note":389,"demo":389},"modelValue","Used by v-model. Can be any serializable type.",{"name":535,"type":415,"required":388,"default":536,"description":537,"note":389,"demo":389},"multiple","true","Allows the selection of multiple items.",{"name":539,"type":415,"required":388,"default":416,"description":540,"note":389,"demo":389},"multiSort","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":542,"type":395,"required":388,"default":389,"description":543,"note":389,"demo":389},"name","Defines the name of the input.",{"name":545,"type":546,"required":388,"default":410,"description":547,"note":389,"demo":389},"order","string[] | undefined","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` \u002F `actions`.",{"name":549,"type":550,"required":388,"default":389,"description":551,"note":389,"demo":389},"page","string | number | undefined","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":553,"type":550,"required":388,"default":389,"description":554,"note":389,"demo":389},"perPage","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":556,"type":557,"required":388,"default":389,"description":558,"note":389,"demo":389},"pt","PtItemMap\u003CBbTablePtPart, \"row\" | \"expand\", BbTablePtState, Item> | undefined","Passthrough, object form: the same keys as the `pt:*` attributes without the prefix. See the `pt:\u003Cpart>` row.",{"name":560,"type":561,"required":388,"default":389,"description":562,"note":389,"demo":563},"pt:\u003Cpart>","PtValue | ((ctx: PtItemCtx\u003CItem, BbTablePtState>) => PtItemResult) | undefined","Passthrough, attribute form: one attribute per part, `pt:\u003Cpart>`, and per part and state, `pt:\u003Cpart>:\u003Cstate>`. Parts: `body`, `caption`, `cell`, `cellColumnHeader`, `dragHandle`, `dragIcon`, `expand`, `firstRow`, `foot`, `head`, `headerRow`, `lastRow`, `root`, `row`, `selectIcon`, `sortIcon`, `table`. States: `disabled`, `empty`, `expanded`, `highlighted`, `indeterminate`, `loading`, `placeholder`, `selected`, `sorted`, `sortedDesc`, `value`.","passthrough",{"name":565,"type":415,"required":388,"default":416,"description":566,"note":389,"demo":389},"readonly","Sets the input in a readonly state.",{"name":568,"type":415,"required":388,"default":416,"description":569,"note":389,"demo":389},"reorderable","Lets the user reorder the data columns: drag a header, or Shift+←\u002F→ on a focused header. Every move writes `v-model:order`; a column panel that only writes `order` does not need it. `select` \u002F `actions` and a custom `#thead` never move.",{"name":571,"type":415,"required":388,"default":416,"description":572,"note":389,"demo":389},"reorderableRows","Adds a drag handle at the start of each row: the user drags a row, or lifts it with Space \u002F Enter and the arrow keys, and `reorder:rows` reports `{ item, from, to }`. The table never reorders `items`: splice it in the handler.",{"name":574,"type":415,"required":388,"default":416,"description":575,"note":389,"demo":389},"resizable","Lets the user resize the data columns (drag a header's trailing edge, or Alt+←\u002F→; 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":577,"type":578,"required":388,"default":389,"description":579,"note":580,"demo":408},"rowClass","BbTableRowClasses\u003CItem> | undefined","Classes for each data row, or a function of the row's item.","The column-level `rowClass` field is new in v3 and accepts a plain string, so a leftover per-column class of that name now type-checks and lands on the whole row. Check your column definitions when you upgrade.",{"name":582,"type":482,"required":388,"default":389,"description":583,"note":389,"demo":389},"selectable","Makes rows selectable: a boolean for every row, or a function of the row's item deciding for that row.",{"name":585,"type":415,"required":388,"default":416,"description":586,"note":389,"demo":389},"selectAll","Whether the \"Select all\" checkbox is checked.",{"name":588,"type":395,"required":388,"default":389,"description":589,"note":590,"demo":392},"selectAllLabel","Label of the \"Select all\" checkbox.","Select-all is the \"everything across every page\" affordance: while it is on, `modelValue` stays empty and the exclusions accumulate in `unselected-items`. Read those two, never infer the selection from `modelValue`.",{"name":592,"type":395,"required":388,"default":389,"description":593,"note":389,"demo":389},"selectText","Header text of the radio column when the table is not `multiple`.",{"name":595,"type":596,"required":388,"default":410,"description":597,"note":389,"demo":389},"sort","BbTableSortEntry[] | undefined","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":599,"type":600,"required":388,"default":389,"description":601,"note":389,"demo":389},"tdClass","ColumnClasses\u003CItem> | undefined","Classes for every data cell, or a function of `(content, key, item)`.",{"name":603,"type":478,"required":388,"default":389,"description":604,"note":389,"demo":389},"thClass","Classes for every header cell.",{"name":606,"type":550,"required":388,"default":389,"description":607,"note":608,"demo":447},"totalItems","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.","Pass it with `page` and `per-page` so the table can announce the whole result set: `aria-rowcount` (`totalItems` plus the header row, any `#tfoot` rows and the open expand rows) and each row's absolute `aria-rowindex`.",{"name":610,"type":550,"required":388,"default":389,"description":611,"note":389,"demo":389},"totalPages","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":613,"type":450,"required":388,"default":410,"description":614,"note":389,"demo":389},"unselectedItems","Items that are not selected.",{"name":616,"type":415,"required":388,"default":416,"description":617,"note":618,"demo":475},"virtual","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.","Bound the height of the table or of an ancestor, or the page becomes the scroller. Columns are measured once from the first batch and then hold, and their cells clip with an ellipsis instead of wrapping — a column that must wrap needs a declared `width`.",[620,622,624,626,628,629,631],{"name":449,"type":450,"note":621,"demo":514},"Holds the open rows by `item-value`. Without `item-value` expansion is keyed by object identity and every refetch closes every row.",{"name":485,"type":486,"note":623,"demo":514},"Bind `ref(null)`, not `ref()`. The value is the switch: `undefined` leaves the whole highlight mechanic off (and warns in dev), `null` turns it on with nothing highlighted.",{"name":532,"type":486,"note":625,"demo":392},"Holds row values resolved through `item-value`, or whole records without it. In multiple mode it must already be an array on the first render, or the table throws.",{"name":545,"type":546,"note":627,"demo":389},"Bind it without `reorderable` when a column panel owns the order; `useBbTableContext(id).order` reads and writes it from anywhere, and `[]` restores the declared order. Hide a column with its `hidden` flag, never by filtering the order array, and it returns exactly where it was. A column with `reorderable: false` stays at its declared slot whatever the array says.",{"name":585,"type":415,"note":389,"demo":389},{"name":595,"type":596,"note":630,"demo":406},"The array order is the sort priority. The table reports it and never applies it: sort your own array, or forward it to the server as `orderBy` and refetch through `dependencies`.",{"name":613,"type":450,"note":389,"demo":389},[633,638,641,644,648,652,655,659,664,668,671,674,678,682,686],{"name":634,"signature":635,"description":636,"note":637,"demo":514},"click:row","(event: MouseEvent, item: any): void","A body row was clicked, or activated with Enter\u002FSpace under `keyboardNavigation`. Carries the DOM `MouseEvent` and the raw record.","The payload is `(event, item)` — your raw record. v2 passed the table's internal row wrapper plus a trailing `selected` boolean; both are gone. Use it for side effects, not for navigation: a row that opens a record should contain a real link.",{"name":639,"signature":635,"description":640,"note":389,"demo":389},"contextmenu:row","A body row was right-clicked. Carries the DOM `MouseEvent` and the raw record.",{"name":642,"signature":635,"description":643,"note":389,"demo":389},"dblclick:row","A body row was double-clicked. Carries the DOM `MouseEvent` and the raw record.",{"name":645,"signature":646,"description":647,"note":389,"demo":389},"hide:column","(key: string): void","A column was hidden through a header slot's `hideColumn()`. Fired once; write `hidden: true` into the column definition to persist it.",{"name":649,"signature":650,"description":651,"note":389,"demo":389},"item:selected","(value: any): void","The user selected one row. Carries the row's value (read through `itemValue`, the same value the selection v-model holds).",{"name":653,"signature":650,"description":654,"note":389,"demo":389},"item:unselected","The user unselected one row. Carries the row's value, like `item:selected`.",{"name":656,"signature":657,"description":658,"note":389,"demo":389},"reorder:rows","(payload: { item: any; from: number; to: number; }): void","A row was moved (`reorderable-rows`): `item` is your object, `from` \u002F `to` index the `items` the table holds. Splice `items` in the handler; a drop in place emits nothing.",{"name":660,"signature":661,"description":662,"note":663,"demo":389},"resize:column","(key: string, width: number | null): void","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.","Fires once per committed resize, with `null` after a double-click reset. There is no width model on purpose: write the reported width back into your column definition, which always outranks a user override.",{"name":665,"signature":666,"description":667,"note":389,"demo":389},"update:expandedItems","(value: any[]): void","Emitted with the new value whenever `v-model:expandedItems` changes.",{"name":669,"signature":650,"description":670,"note":389,"demo":389},"update:highlighted","Emitted with the new value whenever `v-model:highlighted` changes.",{"name":672,"signature":650,"description":673,"note":389,"demo":389},"update:modelValue","Emitted with the new value whenever `v-model` changes.",{"name":675,"signature":676,"description":677,"note":389,"demo":389},"update:order","(value: string[]): void","Emitted with the new value whenever `v-model:order` changes.",{"name":679,"signature":680,"description":681,"note":389,"demo":389},"update:selectAll","(value: boolean): void","Emitted with the new value whenever `v-model:selectAll` changes.",{"name":683,"signature":684,"description":685,"note":389,"demo":389},"update:sort","(value: BbTableSortEntry[]): void","Emitted with the new value whenever `v-model:sort` changes.",{"name":687,"signature":666,"description":688,"note":389,"demo":389},"update:unselectedItems","Emitted with the new value whenever `v-model:unselectedItems` changes.",[690,695,699,704,708,711,714,718,722,727,732,736,740,744,749,753,758,763],{"name":691,"type":692,"description":693,"note":694,"demo":408},"\u003Ckey>","object","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 }`.","The name is the column `key` in kebab-case: `unitPrice` and `unit_price` are both `#unit-price`, `address.city` is `#address-city`. For accents or punctuation write `#[slotKey('…')]`, and build names in code with `slotKey`, never a hand copy of the rule. Scope `value` is the row's value, not the cell's. Keep the column in `columns`: it still supplies the label, alignment and width.",{"name":696,"type":697,"description":698,"note":389,"demo":389},"\u003Ckey>:first","BbTableEdgeCellSlotProps\u003CItem>","One column's cell in a row before the data rows; any such slot creates the row, aligned with the columns. Only over rows.",{"name":700,"type":692,"description":701,"note":702,"demo":703},"\u003Ckey>:header","One column's header content, replacing its label and the built-in sort button. Scope: `{ label, items, sortable, sortOrder, toggleSort, hideColumn, classes }`.","Replaces the header and the built-in sort button with it. To add beside the label and keep sorting, use `\u003Ckey>:header:prepend` \u002F `:append`.","sorting",{"name":705,"type":706,"description":707,"note":389,"demo":408},"\u003Ckey>:header:append","BbTableHeaderAffixSlotProps\u003CItem>","Content after one column's header, keeping the sort button; beats `header:append` (they never stack).",{"name":709,"type":706,"description":710,"note":389,"demo":408},"\u003Ckey>:header:prepend","Content before one column's header, keeping the sort button; beats `header:prepend` (they never stack).",{"name":712,"type":697,"description":713,"note":389,"demo":389},"\u003Ckey>:last","One column's cell in a row after the data rows (a totals row); any such slot creates that row, aligned like `\u003Ckey>:first`.",{"name":715,"type":716,"description":717,"note":389,"demo":389},"actions","{ 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; }","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":719,"type":720,"description":721,"note":389,"demo":389},"actions:header","{ text: string; }","Replaces the default actions header cell content.",{"name":723,"type":724,"description":725,"note":726,"demo":442},"empty","{ error: unknown; }","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).","Fills the table's own full-width cell, already centred and already spanning every column. Pass content, not a row — v2 handed this slot the whole `\u003Ctr>`, and a hand-rolled row here is now table markup inside a grid.",{"name":728,"type":729,"description":730,"note":731,"demo":514},"expand","{ expanded: boolean; expandProps?: ExpandControllerProps | undefined; toggleExpanded: () => void; highlighted?: boolean | undefined; toggleHighlighted?: (() => void) | undefined; selected?: boolean | undefined; toggleSelected?: (() => void) | undefined; item: Item; value: any; }","Full-width expandable content row rendered below each main row when expanded.","One full-width row below its record. `expandProps`, `expanded` and `toggleExpanded` also reach every per-column cell slot, so the toggle can live in the identity column instead of the actions column.",{"name":733,"type":706,"description":734,"note":735,"demo":408},"header:append","Content after every data column's header content (the label + sort control, or its own `\u003Ckey>:header` replacement). A column's `\u003Ckey>:header:append` wins over this for that column; they never stack. Branch on `columnKey` for per-column output.","Renders after the column's existing header content, so the built-in sort button survives — which a full `#\u003Ckey>:header` replacement does not. The table-wide form applies to every data column and never to the select or actions cells; a per-column affix wins over it and the two never stack.",{"name":737,"type":706,"description":738,"note":739,"demo":408},"header:prepend","Content before every data column's header content (the label + sort control, or its own `\u003Ckey>:header` replacement). A column's `\u003Ckey>:header:prepend` wins over this for that column; they never stack. Branch on `columnKey` for per-column output.","The mirror of `header:append`, rendered before the column's existing header content. A column key that normalizes to `prepend` or `append` shadows these table-wide names: the table-wide reading wins, and dev builds warn.",{"name":520,"type":741,"description":742,"note":743,"demo":442},"{ items: Item[]; }","Content shown while table rows are loading (replaces the skeleton rows).","Replaces the skeleton, so it follows the skeleton's rule: first load only. A refetch over existing rows keeps them and shows the built-in progress bar instead, which this slot cannot change.",{"name":745,"type":746,"description":747,"note":748,"demo":392},"select","{ item: Item; value: any; checked: boolean; disabled: boolean; inputName: string; readonly: boolean; toggleSelected?: (() => void) | undefined; }","Replaces the default checkbox\u002Fradio in the selection cell for each row.","Replaces a row's checkbox or radio while keeping the table's selection path. This is the supported way to change the control — rebuilding selection with your own checkbox in a cell slot is not.",{"name":750,"type":751,"description":752,"note":389,"demo":389},"select:header","{ multiple: boolean; selectAll: boolean; text: string; }","Replaces the default selection header cell content (checkbox or radio label).",{"name":754,"type":692,"description":755,"note":756,"demo":757},"tbody","Replaces the content of the body row group (`.bb-table__body`), for full control of the body markup. Provide role-complete rows (`\u003Cdiv role=\"row\">` with one `\u003Cdiv role=\"cell\">` per column), never `\u003Ctr>`\u002F`\u003Ctd>`. A full-width cell spans with `grid-column: 1 \u002F -1`.","Role-complete `\u003Cdiv role=\"row\">` rows of `\u003Cdiv role=\"cell\">`. Taking over the body switches off `virtual`, which has no rows of its own to window.","styling",{"name":759,"type":760,"description":761,"note":762,"demo":757},"tfoot","{ columnCount: number; }","Fills the footer row group (`.bb-table__foot`) for footers that are not column-shaped (a note, pagination). Column-aligned totals go in `#\u003Ckey>:last` (`#\u003Ckey>:first` for a row before the data). Role-complete rows (`\u003Cdiv role=\"row\">` of `\u003Cdiv role=\"cell\">`), never `\u003Ctr>`\u002F`\u003Ctd>`.","The markup you pass is grid markup: `\u003Cdiv role=\"row\">` holding `\u003Cdiv role=\"cell\">`, spanning with `grid-column` and `aria-colspan` rather than `colspan`. The table numbers these rows after the body (`aria-rowindex`) and counts them in `aria-rowcount`, so leave the index off. Nothing lints the roles — a row group of plain `\u003Cdiv>`s renders correctly and is invisible to a screen reader.",{"name":764,"type":692,"description":765,"note":766,"demo":757},"thead","Replaces the header row group's content (`.bb-table__head`). The table is a CSS grid: provide `\u003Cdiv role=\"row\">` rows of `\u003Cdiv role=\"columnheader\">` cells, never `\u003Ctr>` \u002F `\u003Cth>`.","Role-complete rows of `\u003Cdiv role=\"columnheader\">`. The table measures its tracks off the header cells, so a custom header over an empty table publishes no tracks and a nested table cannot inherit from it until rows arrive.",[],{"parts":769,"states":819},[770,773,775,778,781,784,787,790,793,796,799,801,804,807,810,813,816],{"name":771,"description":772},"root","The table's container.",{"name":403,"description":774},"The visible caption (`caption` with `displayCaption`).",{"name":776,"description":777},"table","The grid root: `role=\"table\"`, or `role=\"grid\"` with `keyboardNavigation` (`role=\"treegrid\"` with an `#expand` slot too).",{"name":779,"description":780},"head","The header row group.",{"name":782,"description":783},"headerRow","The header row.",{"name":785,"description":786},"cellColumnHeader","Every column header cell (`role=\"columnheader\"`), the select and actions headers included — a broadcast resolved per header. Not a `\u003Cth>`: the grid is `div`s with ARIA roles.",{"name":788,"description":789},"sortIcon","A sortable column's sort arrow, resolved per header.",{"name":791,"description":792},"body","The body row group.",{"name":794,"description":795},"row","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":797,"description":798},"cell","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` \u002F `lastRow`, with no row state. Takes no function: use `tdClass` for a per-cell hook.",{"name":728,"description":800},"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":802,"description":803},"firstRow","The row of `#\u003Ckey>:first` cells, before the data rows.",{"name":805,"description":806},"lastRow","The row of `#\u003Ckey>:last` cells, after the data rows (a totals row: `pt:lastRow=\"font-semibold\"`).",{"name":808,"description":809},"selectIcon","The selection glyph: each row's checkbox (radio with single selection) and the select-all checkbox — resolved per node. Not rendered when the `select` \u002F `select:header` slots replace them.",{"name":811,"description":812},"dragIcon","The move glyph on the chip that follows a column drag (`reorderable`).",{"name":814,"description":815},"dragHandle","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":817,"description":818},"foot","The footer row group (the `tfoot` slot's container).",[820,822,824,827,829,832,834,837,840,843,846],{"name":428,"description":821},"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":723,"description":823},"Component-wide: there are no rows (`bb-table--empty`).",{"name":825,"description":826},"expanded","Per node, on `row`, its cells and its `expand`: the row's expand row is open (`bb-table__row--expanded`).",{"name":485,"description":828},"Per node, on `row`, its cells and its `expand`: the highlighted row.",{"name":830,"description":831},"indeterminate","Per node, on the select-all `selectIcon`: some rows are selected, not all.",{"name":520,"description":833},"Component-wide: the table is `loading`.",{"name":835,"description":836},"placeholder","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":838,"description":839},"selected","Per node, on `row`, its cells, its `expand` and its `selectIcon`: a checked row; on the select-all glyph, every row is selected.",{"name":841,"description":842},"sorted","Per node, on `cellColumnHeader` and `sortIcon`: the column is sorted, either direction (`bb-table__cell-column-header--sorted`).",{"name":844,"description":845},"sortedDesc","Per node, on `cellColumnHeader` and `sortIcon`: sorted descending (`bb-table__cell-column-header--sorted-desc`). Ascending is `sorted` alone.",{"name":847,"description":848},"value","Per node, on a DATA `cell`: the formatter \u002F placeholder pipeline produced a value (not `null` \u002F `undefined`), slot cells included (`bb-table__cell--value`). Not on the select, drag or actions cells.",{"removed":850,"renamed":897},[851,857,862,866,870,875,879,883,886,889,894],{"name":715,"surface":852,"replacedBy":389,"hint":389,"since":853,"migration":854,"silent":502,"fix":855},"prop","3.0.0-beta.21","ai\u002Fguides\u002Fmigration\u002Fcomponents\u002Fbb-table.md",{"kind":856},"remove",{"name":858,"surface":852,"replacedBy":431,"hint":389,"since":859,"migration":854,"silent":502,"fix":860},"allowSelectAll","3.0.0-alpha.1",{"kind":861},"invert",{"name":863,"surface":852,"replacedBy":497,"hint":389,"since":859,"migration":854,"silent":502,"fix":864},"enabledWhileLoading",{"kind":865},"rename",{"name":867,"surface":852,"replacedBy":389,"hint":389,"since":853,"migration":854,"silent":502,"fix":868},"fixedColumns",{"kind":869},"manual",{"name":871,"surface":872,"replacedBy":873,"hint":389,"since":389,"migration":854,"silent":502,"fix":874},"header:\u003Cx>","slot","\u003Cx>:header",{"kind":865},{"name":876,"surface":872,"replacedBy":877,"hint":389,"since":389,"migration":854,"silent":502,"fix":878},"header:\u003Cx>:append","\u003Cx>:header:append",{"kind":865},{"name":880,"surface":872,"replacedBy":881,"hint":389,"since":389,"migration":854,"silent":502,"fix":882},"header:\u003Cx>:prepend","\u003Cx>:header:prepend",{"kind":865},{"name":884,"surface":872,"replacedBy":719,"hint":389,"since":389,"migration":854,"silent":502,"fix":885},"header:actions",{"kind":865},{"name":887,"surface":872,"replacedBy":750,"hint":389,"since":389,"migration":854,"silent":502,"fix":888},"header:select",{"kind":865},{"name":890,"surface":872,"replacedBy":723,"hint":389,"since":891,"migration":892,"silent":502,"fix":893},"no-data","3.0.0-beta.41","ai\u002Fguides\u002Fmigration\u002Fv2-to-v3.md",{"kind":865},{"name":895,"surface":852,"replacedBy":438,"hint":389,"since":891,"migration":892,"silent":502,"fix":896},"noDataText",{"kind":865},[898,900,902,904,906,908,910,912,914],{"from":858,"to":431,"surface":852,"since":859,"migration":854,"fix":899},{"kind":861},{"from":863,"to":497,"surface":852,"since":859,"migration":854,"fix":901},{"kind":865},{"from":871,"to":873,"surface":872,"since":389,"migration":854,"fix":903},{"kind":865},{"from":876,"to":877,"surface":872,"since":389,"migration":854,"fix":905},{"kind":865},{"from":880,"to":881,"surface":872,"since":389,"migration":854,"fix":907},{"kind":865},{"from":884,"to":719,"surface":872,"since":389,"migration":854,"fix":909},{"kind":865},{"from":887,"to":750,"surface":872,"since":389,"migration":854,"fix":911},{"kind":865},{"from":890,"to":723,"surface":872,"since":891,"migration":892,"fix":913},{"kind":865},{"from":895,"to":438,"surface":852,"since":891,"migration":892,"fix":915},{"kind":865},1793055154165]