[{"data":1,"prerenderedAt":805},["ShallowReactive",2],{"locale-alternates":3,"docs-nav-en":124,"api-BbTable":352,"page-en-\u002Fcomponents\u002Fbb-table\u002Fapi":364},{"\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-checkbox":20,"\u002Fen\u002Fcomponents\u002Fbb-checkbox":21,"\u002Fit\u002Fcomponenti\u002Fbb-checkbox-group":22,"\u002Fen\u002Fcomponents\u002Fbb-checkbox-group":23,"\u002Fit\u002Fcomponenti\u002Fbb-collapsible":24,"\u002Fen\u002Fcomponents\u002Fbb-collapsible":25,"\u002Fit\u002Fcomponenti\u002Fbb-color-input":26,"\u002Fen\u002Fcomponents\u002Fbb-color-input":27,"\u002Fit\u002Fcomponenti\u002Fbb-color-palette":28,"\u002Fen\u002Fcomponents\u002Fbb-color-palette":29,"\u002Fit\u002Fcomponenti\u002Fbb-confirm":30,"\u002Fen\u002Fcomponents\u002Fbb-confirm":31,"\u002Fit\u002Fcomponenti\u002Fbb-date-picker":32,"\u002Fen\u002Fcomponents\u002Fbb-date-picker":33,"\u002Fit\u002Fcomponenti\u002Fbb-date-picker-input":34,"\u002Fen\u002Fcomponents\u002Fbb-date-picker-input":35,"\u002Fit\u002Fcomponenti\u002Fbb-dialog":36,"\u002Fen\u002Fcomponents\u002Fbb-dialog":37,"\u002Fit\u002Fcomponenti\u002Fbb-dropdown":38,"\u002Fen\u002Fcomponents\u002Fbb-dropdown":39,"\u002Fit\u002Fcomponenti\u002Fbb-dropdown-button":40,"\u002Fen\u002Fcomponents\u002Fbb-dropdown-button":41,"\u002Fit\u002Fcomponenti\u002Fbb-dropzone":42,"\u002Fen\u002Fcomponents\u002Fbb-dropzone":43,"\u002Fit\u002Fcomponenti\u002Fbb-form":44,"\u002Fen\u002Fcomponents\u002Fbb-form":45,"\u002Fit\u002Fcomponenti\u002Fbb-icon":46,"\u002Fen\u002Fcomponents\u002Fbb-icon":47,"\u002Fit\u002Fcomponenti\u002Fbb-indicator":48,"\u002Fen\u002Fcomponents\u002Fbb-indicator":49,"\u002Fit\u002Fcomponenti\u002Fbb-number-input":50,"\u002Fen\u002Fcomponents\u002Fbb-number-input":51,"\u002Fit\u002Fcomponenti\u002Fbb-off-canvas":52,"\u002Fen\u002Fcomponents\u002Fbb-off-canvas":53,"\u002Fit\u002Fcomponenti\u002Fbb-pagination":54,"\u002Fen\u002Fcomponents\u002Fbb-pagination":55,"\u002Fit\u002Fcomponenti\u002Fbb-popover":56,"\u002Fen\u002Fcomponents\u002Fbb-popover":57,"\u002Fit\u002Fcomponenti\u002Fbb-progress":58,"\u002Fen\u002Fcomponents\u002Fbb-progress":59,"\u002Fit\u002Fcomponenti\u002Fbb-radio":60,"\u002Fen\u002Fcomponents\u002Fbb-radio":61,"\u002Fit\u002Fcomponenti\u002Fbb-radio-group":62,"\u002Fen\u002Fcomponents\u002Fbb-radio-group":63,"\u002Fit\u002Fcomponenti\u002Fbb-rating":64,"\u002Fen\u002Fcomponents\u002Fbb-rating":65,"\u002Fit\u002Fcomponenti\u002Fbb-select":66,"\u002Fen\u002Fcomponents\u002Fbb-select":67,"\u002Fit\u002Fcomponenti\u002Fbb-select-popover":68,"\u002Fen\u002Fcomponents\u002Fbb-select-popover":69,"\u002Fit\u002Fcomponenti\u002Fbb-slider":70,"\u002Fen\u002Fcomponents\u002Fbb-slider":71,"\u002Fit\u002Fcomponenti\u002Fbb-smooth-height":72,"\u002Fen\u002Fcomponents\u002Fbb-smooth-height":73,"\u002Fit\u002Fcomponenti\u002Fbb-spinner":74,"\u002Fen\u002Fcomponents\u002Fbb-spinner":75,"\u002Fit\u002Fcomponenti\u002Fbb-switch":76,"\u002Fen\u002Fcomponents\u002Fbb-switch":77,"\u002Fit\u002Fcomponenti\u002Fbb-switch-group":78,"\u002Fen\u002Fcomponents\u002Fbb-switch-group":79,"\u002Fit\u002Fcomponenti\u002Fbb-table":80,"\u002Fen\u002Fcomponents\u002Fbb-table":81,"\u002Fit\u002Fcomponenti\u002Fbb-tabs":82,"\u002Fen\u002Fcomponents\u002Fbb-tabs":83,"\u002Fit\u002Fcomponenti\u002Fbb-tag":84,"\u002Fen\u002Fcomponents\u002Fbb-tag":85,"\u002Fit\u002Fcomponenti\u002Fbb-text-input":86,"\u002Fen\u002Fcomponents\u002Fbb-text-input":87,"\u002Fit\u002Fcomponenti\u002Fbb-textarea":88,"\u002Fen\u002Fcomponents\u002Fbb-textarea":89,"\u002Fit\u002Fcomponenti\u002Fbb-time-picker":90,"\u002Fen\u002Fcomponents\u002Fbb-time-picker":91,"\u002Fit\u002Fcomponenti\u002Fbb-time-picker-input":92,"\u002Fen\u002Fcomponents\u002Fbb-time-picker-input":93,"\u002Fit\u002Fcomponenti\u002Fbb-toast":94,"\u002Fen\u002Fcomponents\u002Fbb-toast":95,"\u002Fit\u002Fcomponenti\u002Fbb-tooltip":96,"\u002Fen\u002Fcomponents\u002Fbb-tooltip":97,"\u002Fit\u002Fcomponenti\u002Fbb-tree":98,"\u002Fen\u002Fcomponents\u002Fbb-tree":99,"\u002Fit\u002Fguide\u002Fai-agents":100,"\u002Fen\u002Fguides\u002Fai-agents":101,"\u002Fit\u002Fguide\u002Fcoherence":102,"\u002Fen\u002Fguides\u002Fcoherence":103,"\u002Fit\u002Fguide\u002Fdesign-language":104,"\u002Fen\u002Fguides\u002Fdesign-language":105,"\u002Fit\u002Fguide\u002Fdesign-tokens":106,"\u002Fen\u002Fguides\u002Fdesign-tokens":107,"\u002Fit\u002Fguide\u002Ffetching-data":108,"\u002Fen\u002Fguides\u002Ffetching-data":109,"\u002Fit\u002Fguide\u002Ficons":110,"\u002Fen\u002Fguides\u002Ficons":111,"\u002Fit\u002Fguide\u002Finertia":112,"\u002Fen\u002Fguides\u002Finertia":113,"\u002Fit\u002Fguide\u002Finstallation":114,"\u002Fen\u002Fguides\u002Finstallation":115,"\u002Fit\u002Fguide\u002Fmigration":116,"\u002Fen\u002Fguides\u002Fmigration":117,"\u002Fit\u002Fguide\u002Fnuxt":118,"\u002Fen\u002Fguides\u002Fnuxt":119,"\u002Fit\u002Fguide\u002Foptions-and-items":120,"\u002Fen\u002Fguides\u002Foptions-and-items":121,"\u002Fit\u002Fguide\u002Fvalidated-forms":122,"\u002Fen\u002Fguides\u002Fvalidated-forms":123},"\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-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-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\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\u002Fvalidated-forms","\u002Fit\u002Fguide\u002Fvalidated-forms",[125,136,145,166,178,220,253,286,307,328,340,346],{"label":126,"entries":127},"Getting started",[128,132],{"title":129,"path":130,"order":131},"Installation","\u002Fguides\u002Finstallation",1,{"title":133,"path":134,"order":135},"Migrating from v2","\u002Fguides\u002Fmigration",2,{"label":137,"entries":138},"Design system",[139,142],{"title":140,"path":141,"order":131},"Design tokens","\u002Fguides\u002Fdesign-tokens",{"title":143,"path":144,"order":135},"Design language","\u002Fguides\u002Fdesign-language",{"label":146,"entries":147},"Playbooks",[148,151,154,158,162],{"title":149,"path":150,"order":131},"Options and items","\u002Fguides\u002Foptions-and-items",{"title":152,"path":153,"order":135},"Fetching data","\u002Fguides\u002Ffetching-data",{"title":155,"path":156,"order":157},"Coherence","\u002Fguides\u002Fcoherence",3,{"title":159,"path":160,"order":161},"Validated forms","\u002Fguides\u002Fvalidated-forms",4,{"title":163,"path":164,"order":165},"Icons","\u002Fguides\u002Ficons",5,{"label":167,"entries":168},"Ecosystem",[169,172,175],{"title":170,"path":171,"order":131},"Inertia and Laravel","\u002Fguides\u002Finertia",{"title":173,"path":174,"order":135},"Nuxt","\u002Fguides\u002Fnuxt",{"title":176,"path":177,"order":157},"AI agents","\u002Fguides\u002Fai-agents",{"label":179,"entries":180},"Inputs",[181,184,187,190,193,196,200,204,208,212,216],{"title":182,"path":183,"component":182,"order":131},"BbBaseButton","\u002Fcomponents\u002Fbb-base-button",{"title":185,"path":186,"component":185,"order":135},"BbButton","\u002Fcomponents\u002Fbb-button",{"title":188,"path":189,"component":188,"order":157},"BbColorInput","\u002Fcomponents\u002Fbb-color-input",{"title":191,"path":192,"component":191,"order":161},"BbDatePickerInput","\u002Fcomponents\u002Fbb-date-picker-input",{"title":194,"path":195,"component":194,"order":165},"BbDropzone","\u002Fcomponents\u002Fbb-dropzone",{"title":197,"path":198,"component":197,"order":199},"BbForm","\u002Fcomponents\u002Fbb-form",6,{"title":201,"path":202,"component":201,"order":203},"BbNumberInput","\u002Fcomponents\u002Fbb-number-input",7,{"title":205,"path":206,"component":205,"order":207},"BbTag","\u002Fcomponents\u002Fbb-tag",8,{"title":209,"path":210,"component":209,"order":211},"BbTextarea","\u002Fcomponents\u002Fbb-textarea",9,{"title":213,"path":214,"component":213,"order":215},"BbTextInput","\u002Fcomponents\u002Fbb-text-input",10,{"title":217,"path":218,"component":217,"order":219},"BbTimePickerInput","\u002Fcomponents\u002Fbb-time-picker-input",11,{"label":221,"entries":222},"Selection",[223,226,229,232,235,238,241,244,247,250],{"title":224,"path":225,"component":224,"order":131},"BbCheckbox","\u002Fcomponents\u002Fbb-checkbox",{"title":227,"path":228,"component":227,"order":135},"BbCheckboxGroup","\u002Fcomponents\u002Fbb-checkbox-group",{"title":230,"path":231,"component":230,"order":157},"BbRadio","\u002Fcomponents\u002Fbb-radio",{"title":233,"path":234,"component":233,"order":161},"BbRadioGroup","\u002Fcomponents\u002Fbb-radio-group",{"title":236,"path":237,"component":236,"order":165},"BbRating","\u002Fcomponents\u002Fbb-rating",{"title":239,"path":240,"component":239,"order":199},"BbSelect","\u002Fcomponents\u002Fbb-select",{"title":242,"path":243,"component":242,"order":203},"BbSelectPopover","\u002Fcomponents\u002Fbb-select-popover",{"title":245,"path":246,"component":245,"order":207},"BbSlider","\u002Fcomponents\u002Fbb-slider",{"title":248,"path":249,"component":248,"order":211},"BbSwitch","\u002Fcomponents\u002Fbb-switch",{"title":251,"path":252,"component":251,"order":215},"BbSwitchGroup","\u002Fcomponents\u002Fbb-switch-group",{"label":254,"entries":255},"Overlay",[256,259,262,265,268,271,274,277,280,283],{"title":257,"path":258,"component":257,"order":131},"BbColorPalette","\u002Fcomponents\u002Fbb-color-palette",{"title":260,"path":261,"component":260,"order":135},"BbConfirm","\u002Fcomponents\u002Fbb-confirm",{"title":263,"path":264,"component":263,"order":157},"BbDatePicker","\u002Fcomponents\u002Fbb-date-picker",{"title":266,"path":267,"component":266,"order":161},"BbDialog","\u002Fcomponents\u002Fbb-dialog",{"title":269,"path":270,"component":269,"order":165},"BbDropdown","\u002Fcomponents\u002Fbb-dropdown",{"title":272,"path":273,"component":272,"order":199},"BbDropdownButton","\u002Fcomponents\u002Fbb-dropdown-button",{"title":275,"path":276,"component":275,"order":203},"BbOffCanvas","\u002Fcomponents\u002Fbb-off-canvas",{"title":278,"path":279,"component":278,"order":207},"BbPopover","\u002Fcomponents\u002Fbb-popover",{"title":281,"path":282,"component":281,"order":211},"BbTimePicker","\u002Fcomponents\u002Fbb-time-picker",{"title":284,"path":285,"component":284,"order":215},"BbTooltip","\u002Fcomponents\u002Fbb-tooltip",{"label":287,"entries":288},"Navigation",[289,292,295,298,301,304],{"title":290,"path":291,"component":290,"order":131},"BbAccordion","\u002Fcomponents\u002Fbb-accordion",{"title":293,"path":294,"component":293,"order":135},"BbBreadcrumbs","\u002Fcomponents\u002Fbb-breadcrumbs",{"title":296,"path":297,"component":296,"order":157},"BbCollapsible","\u002Fcomponents\u002Fbb-collapsible",{"title":299,"path":300,"component":299,"order":161},"BbPagination","\u002Fcomponents\u002Fbb-pagination",{"title":302,"path":303,"component":302,"order":165},"BbTabs","\u002Fcomponents\u002Fbb-tabs",{"title":305,"path":306,"component":305,"order":199},"BbTree","\u002Fcomponents\u002Fbb-tree",{"label":308,"entries":309},"Feedback",[310,313,316,319,322,325],{"title":311,"path":312,"component":311,"order":131},"BbAlert","\u002Fcomponents\u002Fbb-alert",{"title":314,"path":315,"component":314,"order":135},"BbBadge","\u002Fcomponents\u002Fbb-badge",{"title":317,"path":318,"component":317,"order":157},"BbIndicator","\u002Fcomponents\u002Fbb-indicator",{"title":320,"path":321,"component":320,"order":161},"BbProgress","\u002Fcomponents\u002Fbb-progress",{"title":323,"path":324,"component":323,"order":165},"BbSpinner","\u002Fcomponents\u002Fbb-spinner",{"title":326,"path":327,"component":326,"order":199},"BbToast","\u002Fcomponents\u002Fbb-toast",{"label":329,"entries":330},"Data Display",[331,334,337],{"title":332,"path":333,"component":332,"order":131},"BbAvatar","\u002Fcomponents\u002Fbb-avatar",{"title":335,"path":336,"component":335,"order":135},"BbIcon","\u002Fcomponents\u002Fbb-icon",{"title":338,"path":339,"component":338,"order":157},"BbTable","\u002Fcomponents\u002Fbb-table",{"label":341,"entries":342},"Layout & Utility",[343],{"title":344,"path":345,"component":344,"order":131},"BbSmoothHeight","\u002Fcomponents\u002Fbb-smooth-height",{"label":347,"entries":348},"Other",[349],{"title":350,"path":351,"component":350,"order":131},"BbAsterisk","\u002Fcomponents\u002Fbb-asterisk",{"name":338,"slug":353,"group":329,"description":354,"entrypoint":355,"docs":356,"props":359,"models":620,"events":634,"slots":681,"exposed":751,"pt":752,"validated":364,"migration":780},"bb-table","Displays tabular data, configurable columns and data mapper.","bitboss-ui",{"contract":357,"source":358},"ai\u002FBbTable.md","ai\u002Fsource\u002FBbTable.md",[360,368,372,377,382,388,393,397,402,405,409,412,417,421,424,427,430,435,439,443,448,452,455,461,465,470,474,479,483,487,490,494,497,502,506,510,513,517,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,553,555,557,559,561,563,565,567,570,573,576,581,585,588,592,595,599,603,606,610,613,616],{"name":361,"type":362,"required":363,"default":364,"description":365,"note":366,"demo":367},"accessibleLabel","((columns: MappedCell[], item: any) => string) | undefined",false,null,"Function that accepts the columns and the current item as\narguments and returns a label to be used for accessibility purposes.\nThe cells arrive in RENDER order (they follow `order`, so the\nlabel reads like the row) — look a cell up by `key`, never by position.","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":369,"type":370,"required":363,"default":364,"description":371,"note":364,"demo":364},"actionsText","string | undefined","Label used in the header of the actions column.",{"name":373,"type":374,"required":363,"default":375,"description":376,"note":364,"demo":364},"align","\"left\" | \"center\" | \"right\" | undefined","\"left\"","Text alignment of the columns.",{"name":378,"type":370,"required":363,"default":364,"description":379,"note":380,"demo":381},"caption","Caption that describes the content of the table. Used for accessibility purposes.","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":383,"type":384,"required":363,"default":385,"description":386,"note":387,"demo":383},"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`) and styling (`thClass`, `tdClass`, `rowClass`). `actions` and `select` are not columns: the `#actions` slot creates the actions column and `selectable` the selection one, so a column with either key only adds a stray data cell. Pin a column with `fixed: 'left' | 'right'` on its definition.",{"name":389,"type":390,"required":363,"default":391,"description":392,"note":364,"demo":364},"compact","boolean | undefined","false","Adds a CSS class that applies a compact style to the component.",{"name":394,"type":395,"required":363,"default":385,"description":396,"note":364,"demo":364},"dependencies","unknown[] | undefined","Defines an array of dependencies that will trigger actions in the component upon change.",{"name":398,"type":399,"required":363,"default":400,"description":401,"note":364,"demo":364},"depsDebounceTime","number | undefined","0","Timeout used to debounce response to changes to dependencies.",{"name":403,"type":390,"required":363,"default":391,"description":404,"note":364,"demo":364},"disabled","Disables the component",{"name":406,"type":390,"required":363,"default":391,"description":407,"note":408,"demo":367},"disableSelectAll","Hides the \"Select all\" checkbox that selectable multi-row tables\ndisplay 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":410,"type":390,"required":363,"default":391,"description":411,"note":364,"demo":364},"displayCaption","Boolean that defines whether to display or hide the caption.\nBy default is true and the caption is hidden.",{"name":413,"type":390,"required":363,"default":391,"description":414,"note":415,"demo":416},"enforceCoherence","After every load (initial, `dependencies` refetch or a change of the\n`items` array) prunes the row-keyed models of values whose row is no\nlonger in the result set: `modelValue`, `unselected-items`,\n`highlighted` and `expanded-items`. Values whose rows are still present\nsurvive. Single-value models (`modelValue` without `multiple`, and\n`highlighted`, which is always single) reset to `null`.\n\nDo **not** enable it on paginated tables where the page feeds\n`dependencies`: every page turn is a refetch, so state held on rows of\nother pages (the `select-all` + `unselected-items` pattern, cross-page\nselections) would be pruned. Reconcile in the items provider instead.","Leave it off on any table whose page turn goes through `dependencies` — every page is a refetch, so a cross-page selection would be pruned away. Reconcile in the provider instead, which receives the current selection for exactly this reason.","fetching",{"name":418,"type":419,"required":363,"default":385,"description":420,"note":364,"demo":364},"expandedItems","any[] | undefined","Used by `v-model:expandedItems`. Array of the currently expanded items —\ntoggled by the row expand control and by external writes (mirrors the\n`highlighted`\u002F`sort` v-model surfaces). Drives the `#expand` slot rows and\ntheir `aria-expanded`\u002F`aria-controls` wiring.",{"name":422,"type":390,"required":363,"default":391,"description":423,"note":364,"demo":364},"fixed","Splits the width equally among the columns that declare no `width`\n(each undeclared column becomes a `minmax(0, 1fr)` track)\nmaking each column take up the same amount of space.",{"name":425,"type":390,"required":363,"default":391,"description":426,"note":364,"demo":364},"fixedActions","Pins the actions column (the one the `#actions` slot creates) to the\nright edge, `position: sticky`, in place. Data columns pin through\n`column.fixed`; this is the same feature for the structural column that\nhas no definition to carry it. No effect without an `#actions` slot.",{"name":428,"type":390,"required":363,"default":391,"description":429,"note":364,"demo":364},"fixedHeaders","Boolean that sets the headers as sticky to the top of the table.",{"name":431,"type":390,"required":363,"default":391,"description":432,"note":433,"demo":434},"fixedSelect","Pins the selection column to the left edge, `position: sticky`, in\nplace. Data columns pin through `column.fixed`; this is the same feature\nfor the structural column that has no definition to carry it. No effect\nunless the table is `selectable`.","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":436,"type":437,"required":363,"default":364,"description":438,"note":364,"demo":364},"headerRowClass","Classes | undefined","Defines the classes to be passed to the header row.",{"name":440,"type":441,"required":363,"default":364,"description":442,"note":364,"demo":364},"highlighted","any","Used by `v-model:highlighted`. A parallel, UI-intent state to selection —\ntypically \"the row whose details are open\". A single item value (or\n`null`) — highlight is single by design.\n\n**Opt-in, and `undefined` is the opt-out.** Leave it unbound and the whole\nmechanic is off: clicking a row emits `click:row` and nothing else — no\nclass, no `aria-current`, no internal state. Bind it and clicking a row\ntoggles it. The value itself is the switch: `undefined` means \"never\ninitialised\", `null` means \"initialised and currently empty\", so bind\n`ref(null)` rather than `ref()` — a bound-but-`undefined` model warns in\ndev and stays off. A value seeded through\n`useBbTableContext(id, { highlighted })` counts as bound the same way.\n\nA highlighted row gets `aria-current=\"true\"` and the\n`bb-table-data__row--highlighted` class, which the shipped stylesheet\npaints with a neutral fill plus a brand accent bar; override the whole\nlook with `rowClass`.\nHighlight: a parallel, UI-intent state to selection (\"the row whose details\nare open\"). Always a single value or `null`. Purely\nmechanical — highlighted rows only get a class and `aria-current`, no\nshipped styling.",{"name":444,"type":370,"required":363,"default":364,"description":445,"note":446,"demo":447},"id","Stable id for this table's width context. When omitted a unique id is\ngenerated. Nested tables use the nearest ancestor id to inherit widths.","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.","external-control",{"name":449,"type":450,"required":363,"default":364,"description":451,"note":364,"demo":364},"inheritColumnWidths","string | boolean | undefined","Opt a nested table into inheriting its column widths from an ancestor\ntable's matching tracks (accounting for `select`\u002F`actions` columns). This\nalso makes the parent's tracks authoritative, so it is **off by default** — a nested\ntable renders independently unless you ask for alignment.\n- `false` (the default): do not inherit; size independently.\n- `true`: inherit from the nearest ancestor table.\n- a table id (string): inherit from the specific ancestor in the chain with\n  that id rather than the immediate parent. Use this when an intermediate\n  table has a different column count, so the extra columns would otherwise\n  misalign against it.",{"name":453,"type":390,"required":363,"default":391,"description":454,"note":364,"demo":364},"interactiveWhileLoading","Keeps the table interactive while it is loading. The header and the rows are\n`inert` while loading by default — a refetch is about to replace the rows,\nso editing, selecting or sorting them races the incoming data. This escape\nhatch exists for tables that must stay usable during background refreshes\n(e.g. a poll that must not interrupt an open editor).\n\nThe loading announcement is never inert, so the busy state is always\nconveyed.",{"name":456,"type":457,"required":458,"default":385,"description":459,"note":460,"demo":381},"items","Item[] | ((prefill: boolean, modelValue?: any) => Item[] | Promise\u003CItem[]>)",true,"Rows to render, or a fetcher that returns them.","Pass rows or a provider. Put filters and sort in `dependencies`; the table debounces, reports loading and discards stale responses.",{"name":462,"type":463,"required":363,"default":364,"description":364,"note":464,"demo":381},"itemValue","ItemAccessor\u003CItem> | undefined","Stable row identity as a path or function. Set it before adding selection, expansion or highlight so those models survive refetches.",{"name":466,"type":390,"required":363,"default":391,"description":467,"note":468,"demo":469},"keyboardNavigation","Opt-in keyboard navigation with a roving tabindex: the body is one tab\nstop, ArrowUp\u002FArrowDown move the focused row (Home\u002FEnd jump), and\nEnter\u002FSpace activate it through the same path as a mouse click (highlight\ntoggle + `click:row`). Focus and highlight stay independent — moving does\nnot highlight until committed. Focused rows show the standard focus ring.","Screen readers in browse mode intercept the arrow keys, so a reader takes the usual focus-mode step before the roving tabindex responds. Pair it with a bound `highlighted` (or a `row-class`) so the cursor is visible as well as announced.","row-interaction",{"name":471,"type":370,"required":363,"default":364,"description":472,"note":473,"demo":367},"legend","Text content of the `\u003Clegend>` a `selectable` table renders (it becomes\na `\u003Cfieldset>`, and the legend is that fieldset's accessible name).\nOmit it and the table falls back to `caption`, then to a localized\ndefault — the fieldset always ends up with SOME accessible name — but\na specific `legend` describes the selection better than either fallback.","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":475,"type":390,"required":363,"default":391,"description":476,"note":477,"demo":478},"loading","Sets the component in a loading state, usually triggering some visual styles.\n\nWith no rows yet this renders skeletons; over existing rows the rows stay\non screen (dimmed, with an indeterminate bar) rather than being replaced —\na refetch should not blank a table the user is reading.","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.","states",{"name":480,"type":370,"required":363,"default":481,"description":482,"note":364,"demo":364},"loadingText","the localized `common.loadingText` (\"Loading...\")","Screen-reader announcement for the loading row's `aria-live` status.\nVisually hidden — the skeleton (or the `#loading` slot) is the visible\nsignal.",{"name":484,"type":399,"required":363,"default":485,"description":486,"note":364,"demo":364},"max","Infinity","Maximum number of items that can be selected.",{"name":488,"type":441,"required":363,"default":385,"description":489,"note":364,"demo":364},"modelValue","Used by v-model. Can be any serializable type.",{"name":491,"type":390,"required":363,"default":492,"description":493,"note":364,"demo":364},"multiple","true","Allows the selection of multiple items.",{"name":495,"type":370,"required":363,"default":364,"description":496,"note":364,"demo":364},"name","Defines the name of the input.",{"name":498,"type":370,"required":363,"default":499,"description":500,"note":501,"demo":478},"noDataText","the localized `common.noDataText` (\"No data to display\")","String displayed when there are no items to display.","Also the place to explain a failed fetch: there is no `error-text` prop and no table-level error state, so a rejected provider is yours to surface — through this text or the `#no-data` slot.",{"name":503,"type":504,"required":363,"default":385,"description":505,"note":364,"demo":364},"order","string[] | undefined","Used by `v-model:order`. Ordered array of column keys — the render\norder of the data columns. Keys listed here render first, in this order;\ndeclared columns it omits follow, in declaration order (so a column added\nto `columns` later renders last); a `hidden` column keeps its slot\nwithout rendering, and keys that match no declared column render\nnothing but are PRESERVED in place on every write. The header drag \u002F\nkeyboard reorder of `reorderable` writes it back complete (every\ndeclared key present, hidden ones included, duplicates dropped — first\noccurrence wins) with exactly the moved column relocated: every other\nkey keeps its relative order, and a drop that changes nothing emits\nnothing. Works uncontrolled when unbound, exactly like `sort`. The\n`select` and `actions` columns are structural and never part of it.",{"name":507,"type":508,"required":363,"default":364,"description":509,"note":364,"demo":364},"page","string | number | undefined","Current page number starting from 1, used for accessibility purposes.\nAlso flows into the shared table context, so a `BbPagination` paired\nthrough `id` reads it as the current page. Numeric strings are coerced\n(server pagination fields often arrive as strings), exactly like\n`BbPagination`'s equivalent props.",{"name":511,"type":508,"required":363,"default":364,"description":512,"note":364,"demo":364},"perPage","Number of items per page, used for accessibility purposes. Also flows\ninto the shared table context read by a `BbPagination` paired through\n`id`. When omitted, an array `items` table infers it from\n`items.length`; an explicit value (or a context write) always wins over\nthat inference. Numeric strings are coerced, exactly like\n`BbPagination`'s `per-page`.",{"name":514,"type":515,"required":363,"default":364,"description":516,"note":364,"demo":364},"pt","PtItemMap\u003CBbTablePtPart, \"row\", BbTablePtState, Item> | undefined","Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:\u003Cpart>` row.",{"name":518,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:body","PtValue | undefined",{"name":521,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:body:highlighted",{"name":523,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:body:loading",{"name":525,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:body:selected",{"name":527,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:cell",{"name":529,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:cell:highlighted",{"name":531,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:cell:loading",{"name":533,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:cell:selected",{"name":535,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:head",{"name":537,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:head:highlighted",{"name":539,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:head:loading",{"name":541,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:head:selected",{"name":543,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:root",{"name":545,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:root:highlighted",{"name":547,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:root:loading",{"name":549,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:root:selected",{"name":551,"type":552,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:row","PtValue | ((ctx: PtItemCtx\u003CItem, BbTablePtState>) => PtItemResult) | undefined",{"name":554,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:row:highlighted",{"name":556,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:row:loading",{"name":558,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:row:selected",{"name":560,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:table",{"name":562,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:table:highlighted",{"name":564,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:table:loading",{"name":566,"type":519,"required":363,"default":364,"description":364,"note":364,"demo":364},"pt:table:selected",{"name":568,"type":390,"required":363,"default":391,"description":569,"note":364,"demo":364},"readonly","Sets the input in a readonly state.",{"name":571,"type":390,"required":363,"default":391,"description":572,"note":364,"demo":364},"reorderable","Lets the user reorder the data columns: drag a header cell (AG Grid style —\nthe column moves live under the pointer and a chip with its label follows)\nor, from the keyboard, use each header's reorder handle (ArrowLeft \u002F\nArrowRight move the column one slot, Home \u002F End to the ends). Every move\nwrites `v-model:order`. Not needed by an external control (a column\npanel) that only writes `order`. The `select` \u002F `actions` columns and\na custom `#thead` are never draggable.",{"name":574,"type":390,"required":363,"default":391,"description":575,"note":364,"demo":364},"resizable","Lets the user resize the data columns of a root table: drag the handle on\na header's trailing edge (the column follows live, the width commits on\nrelease), or press Alt + ArrowLeft \u002F ArrowRight on the focused header;\ndouble-click the handle to go back to the declared width. Each commit\nfires `resize:column(key, width)` once. `column.width` stays the single declared\ntruth: a resized width is an override the table keeps until that\ncolumn's `width` changes — write the reported width back into your\ncolumn definition to persist it. Ignored on a table that inherits its\nwidths from a parent.",{"name":577,"type":578,"required":363,"default":364,"description":579,"note":580,"demo":383},"rowClass","BbTableRowClasses\u003CItem> | undefined","Defines the classes to be passed to each data row. Can also be a\nfunction of the row's item for dynamic values.","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":583,"required":363,"default":364,"description":584,"note":364,"demo":364},"selectable","boolean | ((item: Item) => boolean) | undefined","Defines whether the table is selectable.\nCan be a global boolean that affects all rows or a function\nthat accepts an item and returns a boolean that only affects that item.",{"name":586,"type":390,"required":363,"default":391,"description":587,"note":364,"demo":364},"selectAll","Defines whether the \"Select all\" checkbox is checked.",{"name":589,"type":370,"required":363,"default":364,"description":590,"note":591,"demo":367},"selectAllLabel","Text of the label used by the \"Select all\" boolean.","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":593,"type":370,"required":363,"default":364,"description":594,"note":364,"demo":364},"selectText","Text of the header used for the radio inputs when the table is not `multiple`.",{"name":596,"type":597,"required":363,"default":385,"description":598,"note":364,"demo":364},"sort","BbTableSortEntry[] | undefined","Used by `v-model:sort`. Ordered array of `[columnKey, direction]`\nentries, one per actively sorted column. Bidirectional: the header\nbuttons of `sortable` columns update it, and external writes update the\nheader indicators. The table does not sort its items — apply the model\nto your own data source.",{"name":600,"type":601,"required":363,"default":364,"description":602,"note":364,"demo":364},"tdClass","ColumnClasses\u003CItem> | undefined","Defines the classes to be passed to every data cell. Can also be a function for dynamic values.",{"name":604,"type":437,"required":363,"default":364,"description":605,"note":364,"demo":364},"thClass","Defines the classes to be passed to every header cell.",{"name":607,"type":508,"required":363,"default":364,"description":608,"note":609,"demo":416},"totalItems","Total number of items there is. Also flows into the shared table\ncontext, where a `BbPagination` paired through `id` derives its page\ncount from it. When omitted, an array `items` table infers it from\n`items.length`; an explicit value (or a context write) always wins over\nthat inference. Numeric strings are coerced, exactly like\n`BbPagination`'s `total-items`.","Pass it with `page` and `per-page` so the table can announce the whole result set: `aria-rowcount` (now `totalItems + 1`, the header row counts) and each row's absolute `aria-rowindex`.",{"name":611,"type":508,"required":363,"default":364,"description":612,"note":364,"demo":364},"totalPages","Seeds the page count shown by a `BbPagination` paired through `id`. A\nshortcut for when the server reports a page count rather than a row\ncount: the table renders nothing from it, it only flows into the shared\ntable context. A known total always wins — when `totalItems` (or a\ncontext write) provides one, the page count is derived from it and this\nseed is ignored. Numeric strings are coerced, exactly like\n`BbPagination`'s `total-pages`.",{"name":614,"type":419,"required":363,"default":385,"description":615,"note":364,"demo":364},"unselectedItems","Items that are not selected.",{"name":617,"type":390,"required":363,"default":391,"description":618,"note":619,"demo":434},"virtual","Windows the body: only the rows in (and just around) the vertical\nscrollport are mounted, so a client-side dataset of any size scrolls at\na constant cost. The table itself is the scroller as soon as you bound\nits height (`max-height` \u002F `height`, or a flex item with\n`min-height: 0`); left unbounded, the nearest scrolling ancestor or the\npage scrolls it. The header sticks to that scroller. Column widths are\nmeasured once from the first rendered batch and then hold — later rows\nnever widen them. Expand rows and nested tables stay fully rendered\ninside their row (a nested table is never windowed); the row that owns\nfocus stays mounted even when scrolled out of view. Ignored by a table\nthat inherits its widths from a parent, 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`.",[621,624,626,628,630,631,633],{"name":418,"type":419,"note":622,"demo":623},"Holds the open rows by `item-value`. Without `item-value` expansion is keyed by object identity and every refetch closes every row.","expand",{"name":440,"type":441,"note":625,"demo":469},"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":488,"type":441,"note":627,"demo":367},"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":503,"type":504,"note":629,"demo":364},"Bind it without `reorderable` when a column panel owns the order. Keys matching no declared column render nothing but keep their position, so hide a column by filtering `columns` — never the order array — and it returns exactly where it was.",{"name":586,"type":390,"note":364,"demo":364},{"name":596,"type":597,"note":632,"demo":381},"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":614,"type":419,"note":364,"demo":364},[635,639,642,645,649,652,655,660,663,666,669,672,675,678],{"name":636,"signature":637,"description":364,"note":638,"demo":469},"click:row","(e: \"click:row\", event: MouseEvent, item: any): void","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":640,"signature":641,"description":364,"note":364,"demo":364},"contextmenu:row","(e: \"contextmenu:row\", event: MouseEvent, item: any): void",{"name":643,"signature":644,"description":364,"note":364,"demo":364},"dblclick:row","(e: \"dblclick:row\", event: MouseEvent, item: any): void",{"name":646,"signature":647,"description":648,"note":364,"demo":364},"hide:column","(e: \"hide:column\", key: string): void","A column was hidden from its header (a `#header:\u003Ckey>` \u002F\n`#header:\u003Ckey>:append` control calling the slot's `hideColumn()`). Fired once;\nthe table keeps the column hidden for the mount, or until the column's\n`hidden` flag changes — write `hidden: true` into the definition to\npersist it, `hidden: false` (a column panel) to show it again.",{"name":650,"signature":651,"description":364,"note":364,"demo":364},"item:selected","(e: \"item:selected\", value: any): void",{"name":653,"signature":654,"description":364,"note":364,"demo":364},"item:unselected","(e: \"item:unselected\", value: any): void",{"name":656,"signature":657,"description":658,"note":659,"demo":364},"resize:column","(e: \"resize:column\", key: string, width: number | null): void","A column was resized by the user (`resizable`): the new width in\npx, or `null` when the handle was double-clicked to reset the column to\nits declared width.","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":661,"signature":662,"description":364,"note":364,"demo":364},"update:expandedItems","(e: \"update:expandedItems\", value: any[]): void",{"name":664,"signature":665,"description":364,"note":364,"demo":364},"update:highlighted","(e: \"update:highlighted\", value: any): void",{"name":667,"signature":668,"description":364,"note":364,"demo":364},"update:modelValue","(e: \"update:modelValue\", value: any): void",{"name":670,"signature":671,"description":364,"note":364,"demo":364},"update:order","(e: \"update:order\", value: string[]): void",{"name":673,"signature":674,"description":364,"note":364,"demo":364},"update:selectAll","(e: \"update:selectAll\", value: boolean): void",{"name":676,"signature":677,"description":364,"note":364,"demo":364},"update:sort","(e: \"update:sort\", value: BbTableSortEntry[]): void",{"name":679,"signature":680,"description":364,"note":364,"demo":364},"update:unselectedItems","(e: \"update:unselectedItems\", value: any[]): void",[682,688,692,696,701,705,708,712,716,720,724,728,732,737,742,747],{"name":683,"type":684,"description":685,"note":686,"demo":687},"\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` normalized — lowercased, every run of non-word characters folded to `_` — so `unitPrice` is `#unitprice`. Build names in code with `slotKey`, never a hand copy of the rule. Keep the column in `columns`: it still supplies the label, alignment and width.","cells",{"name":689,"type":690,"description":691,"note":364,"demo":364},"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 rendered in the actions cell for each row. Providing this slot\nis what CREATES the actions column (there is no prop): the header cell\n(labelled by `actions-text`, replaceable through `#header:actions`) and\none cell per row appear with it, and go away with it. Pin it with\n`fixed-actions`.",{"name":623,"type":693,"description":694,"note":695,"demo":623},"{ 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":697,"type":684,"description":698,"note":699,"demo":700},"header:\u003Ckey>","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 `header:\u003Ckey>:prepend` \u002F `:append`.","sorting",{"name":702,"type":703,"description":704,"note":364,"demo":687},"header:\u003Ckey>:append","BbTableHeaderAffixSlotProps\u003CItem>","Content after one column's header, keeping the sort button; beats `header:append` (they never stack).",{"name":706,"type":703,"description":707,"note":364,"demo":687},"header:\u003Ckey>:prepend","Content before one column's header, keeping the sort button; beats `header:prepend` (they never stack).",{"name":709,"type":710,"description":711,"note":364,"demo":364},"header:actions","{ text: string; }","Replaces the default actions header cell content.",{"name":713,"type":703,"description":714,"note":715,"demo":687},"header:append","Content rendered after every data column's header cell content — the\nlabel + sort control, or the column's own `header:\u003Ckey>` replacement.\nA column's `header:\u003Ckey>:append` slot wins over this one for that\ncolumn; 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 `#header:\u003Ckey>` 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":717,"type":703,"description":718,"note":719,"demo":687},"header:prepend","Content rendered before every data column's header cell content — the\nlabel + sort control, or the column's own `header:\u003Ckey>` replacement.\nA column's `header:\u003Ckey>:prepend` slot wins over this one for that\ncolumn; 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":721,"type":722,"description":723,"note":364,"demo":364},"header:select","{ multiple: boolean; selectAll: boolean; text: string; }","Replaces the default selection header cell content (checkbox or radio label).",{"name":475,"type":725,"description":726,"note":727,"demo":478},"{ 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":729,"type":684,"description":730,"note":731,"demo":478},"no-data","Content shown when the items list is empty and not loading. It fills the\ntable's own full-width empty-state cell (it already spans the\nselection\u002Factions columns), so provide the *content* — a message, an\nillustration, a \"clear filters\" button — never a row\u002Fcell of your own.","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":733,"type":734,"description":735,"note":736,"demo":367},"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":738,"type":684,"description":739,"note":740,"demo":741},"tbody","Replaces the content of the body row group (`.bb-table__body`). Use when\nyou need full control over the body markup. Provide role-complete rows —\n`\u003Cdiv role=\"row\">` holding one `\u003Cdiv role=\"cell\">` per column — never a\n`\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":743,"type":744,"description":745,"note":746,"demo":741},"tfoot","{ columnCount: number; }","Fills the footer row group (`.bb-table__foot`). Use when you need a\nfooter. Provide role-complete rows — `\u003Cdiv role=\"row\">` holding\n`\u003Cdiv role=\"cell\">` elements — never a `\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`. Nothing lints the roles — a row group of plain `\u003Cdiv>`s renders correctly and is invisible to a screen reader.",{"name":748,"type":684,"description":749,"note":750,"demo":741},"thead","Replaces the content of the header row group (`.bb-table__head`). Use when\nyou need full control over the header markup. The table is a CSS grid,\nnot a `\u003Ctable>`: provide role-complete rows — `\u003Cdiv role=\"row\">` holding\none `\u003Cdiv role=\"columnheader\">` per column — and never a `\u003Ctr>`\u002F`\u003Cth>`.\nRows are subgrid rows, so each cell lands on the matching column track.","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":753,"states":772},[754,757,760,763,766,769],{"name":755,"description":756},"root","The table's container.",{"name":758,"description":759},"table","The grid (`role=\"table\"`).",{"name":761,"description":762},"head","The header row group. Header cells are not a part — they keep `thClass`.",{"name":764,"description":765},"body","The body row group.",{"name":767,"description":768},"row","Every DATA row — a broadcast resolved per row. Expand rows and the skeleton are not parts. Also takes a per-item function, called with the row's raw item, once per rendered row: keep it cheap.",{"name":770,"description":771},"cell","Every data cell, the select and actions cells included — a broadcast resolved with its row's states. Takes no function: use `tdClass` for a per-cell hook.",[773,775,777],{"name":440,"description":774},"Per node, on `row` and its cells: the highlighted row.",{"name":475,"description":776},"Component-wide: the table is `loading`.",{"name":778,"description":779},"selected","Per node, on `row` and its cells: a checked row.",{"removed":781,"renamed":800},[782,787,792,796],{"name":689,"replacedBy":364,"since":783,"migration":784,"silent":458,"fix":785},"3.0.0-beta.21","ai\u002Fguides\u002Fmigration\u002Fcomponents\u002Fbb-table.md",{"kind":786},"remove",{"name":788,"replacedBy":406,"since":789,"migration":784,"silent":458,"fix":790},"allowSelectAll","3.0.0-unreleased",{"kind":791},"invert",{"name":793,"replacedBy":453,"since":789,"migration":784,"silent":458,"fix":794},"enabledWhileLoading",{"kind":795},"rename",{"name":797,"replacedBy":364,"since":783,"migration":784,"silent":458,"fix":798},"fixedColumns",{"kind":799},"manual",[801,803],{"from":788,"to":406,"since":789,"migration":784,"fix":802},{"kind":791},{"from":793,"to":453,"since":789,"migration":784,"fix":804},{"kind":795},1790062846732]