[{"data":1,"prerenderedAt":1275},["ShallowReactive",2],{"locale-alternates":3,"docs-nav-en":124,"api-none":352,"page-en-\u002Fcomponents\u002Fbb-tabs":353,"pt-showcase-BbTabs":1075},{"\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",null,{"id":354,"title":302,"body":355,"component":302,"description":1058,"extension":1059,"group":287,"meta":1060,"navigation":1061,"order":165,"path":303,"sections":1062,"seo":1072,"stem":1073,"__hash__":1074},"docs_en\u002Fcomponents\u002Fbb-tabs.md",{"type":356,"value":357,"toc":1047},"minimark",[358,417,420,428,435,439,446,453,459,462,465,468,471,477,480,483,493,527,538,548,567,573,576,579,590,596,599,602,612,632,647,653,658,661,678,689,695,713,725,740,746,749,752,762,772,775,781,784,816,822,836,839,854,857,860,874,880,899,920,1032,1038,1043],[359,360,361,374],"when",{},[362,363,364,365,368,369,373],"p",{},"Use ",[366,367,302],"code",{}," to divide ",[370,371,372],"strong",{},"one"," screen into peer sections a reader flips between\nwithout leaving the page: a project's Overview, Activity, Members. Exactly one is\nvisible at a time.",[375,376,378],"template",{"v-slot:else":377},"",[379,380,381,390,397,404,411,414],"ul",{},[382,383,384,389],"li",{},[385,386,387],"a",{"href":4},[366,388,290],{},", if the reader may want two\nsections open at once",[382,391,392,396],{},[385,393,394],{"href":24},[366,395,296],{},", if there is one region and\nthe trigger belongs somewhere else",[382,398,399,403],{},[385,400,401],{"href":16},[366,402,293],{},", if it is hierarchy",[382,405,406,410],{},[385,407,408],{"href":54},[366,409,299],{},", if you are paging a result set",[382,412,413],{},"A wizard, if they are steps in a flow",[382,415,416],{},"A page of their own, if the sections are genuinely separate destinations",[362,418,419],{},"Keep labels short. If the strip regularly overflows, split the page instead.",[421,422,424],"h2",{"id":423},"default",[425,426,427],"span",{},"Default",[362,429,430,431,434],{},"Pass ",[366,432,433],{},"items",", bind the active key, and give every key a slot. That slot is the\npane.",[436,437],"demo",{"name":438},"BbTabs\u002FBasic",[362,440,441,442,445],{},"Without ",[366,443,444],{},"v-model",", the first enabled tab is selected. If every tab is disabled,\nthe strip stays inert.",[447,448,450],"migration",{"title":449},"BbTab → BbTabs",[362,451,452],{},"The tag changed, so the compiler tells you here. The old type names survive as\ndeprecated re-exports. Everything else that changed is a silent rename, flagged\nin the section where you meet it.",[421,454,456],{"id":455},"keyboard",[425,457,458],{},"Keyboard and roles",[362,460,461],{},"A tab strip is one widget with one tab stop, not three buttons in a row.",[436,463],{"name":464},"BbTabs\u002FKeyboard",[362,466,467],{},"The component wires the tab roles and relationships. Tab enters the strip once;\narrow keys move and select, Home and End jump to the edges, and Tab continues\nto the active pane. Disabled items remain visible and are skipped.",[362,469,470],{},"Because arrowing selects, do not fetch on every activation without caching.",[421,472,474],{"id":473},"labels",[425,475,476],{},"Rich labels",[362,478,479],{},"A label can carry more than text: a count, a status dot, an icon.",[436,481],{"name":482},"BbTabs\u002FLabels",[362,484,364,485,488,489,492],{},[366,486,487],{},"label:\u003Ckey>"," for one tab and ",[366,490,491],{},"label"," for every tab. Keep these slots\npresentational: a nested button or link creates an invalid interactive control.",[362,494,495,496,499,500,503,504,507,508,511,512,507,515,518,519,521,522,526],{},"Slot names are ",[370,497,498],{},"normalized",": spaces and punctuation become ",[366,501,502],{},"_"," and everything\nis lowercased. ",[366,505,506],{},"inReview"," becomes ",[366,509,510],{},"inreview",", ",[366,513,514],{},"In Review",[366,516,517],{},"in_review",".\nThe key and the ",[366,520,444],{}," value stay raw; only slots, DOM ids and\n",[385,523,525],{"href":524},"#navigation","the URL"," use the slug.",[362,528,529,530,533,534,537],{},"For generated items, import ",[366,531,532],{},"slotKey"," and write ",[366,535,536],{},"#[slotKey(item.key)]",".",[447,539,541],{"title":540},"the label slot names changed",[362,542,543,544,547],{},"In v2 the per-tab label slot was ",[366,545,546],{},"#label-\u003Ckey>"," and the pane slot was the raw\nkey. A slot whose name no longer matches renders nothing and reports nothing.",[549,550,554],"pre",{"className":551,"code":552,"language":553,"meta":377,"style":377},"language-diff shiki shiki-themes github-light-high-contrast github-dark-high-contrast","- \u003Ctemplate #label-in-review=\"{ item }\">…\u003C\u002Ftemplate>\n+ \u003Ctemplate #label:in_review=\"{ text }\">…\u003C\u002Ftemplate>\n","diff",[366,555,556,562],{"__ignoreMap":377},[425,557,559],{"class":558,"line":131},"line",[425,560,561],{},"- \u003Ctemplate #label-in-review=\"{ item }\">…\u003C\u002Ftemplate>\n",[425,563,564],{"class":558,"line":135},[425,565,566],{},"+ \u003Ctemplate #label:in_review=\"{ text }\">…\u003C\u002Ftemplate>\n",[421,568,570],{"id":569},"panes",[425,571,572],{},"When a pane renders",[362,574,575],{},"Only the active pane is mounted. Switching away unmounts it, and switching back\nmounts it fresh.",[436,577],{"name":578},"BbTabs\u002FEagerPane",[362,580,581,582,585,586,589],{},"Inactive panes unmount, so local form, scroll, and chart state is lost. Keep\nthat state in the parent or set ",[366,583,584],{},"eager"," on the affected item. An eager pane also\nappears in server-rendered HTML, but still uses ",[366,587,588],{},"display: none"," while inactive.",[421,591,593],{"id":592},"animation",[425,594,595],{},"Switch animation",[362,597,598],{},"Switching animates on two axes: the panes slide horizontally, and the container\nanimates its height between panes of different size.",[436,600],{"name":601},"BbTabs\u002FNoAnimation",[362,603,604,607,608,611],{},[366,605,606],{},"disable-animate-x"," removes the slide. ",[366,609,610],{},"disable-animate-y"," removes height\nanimation, which helps when panes run their own transitions or virtualization.\nReduced-motion preferences are respected automatically.",[447,613,615],{"title":614},"animateX \u002F animateY inverted",[362,616,617,618,621,622,507,625,627,628,631],{},"The compiler cannot see this one. A bare ",[366,619,620],{},"animate-x"," was already the default and\nsimply goes; an ",[366,623,624],{},":animate-y=\"false\"",[366,626,610],{},". Left as they\nare, both fall into ",[366,629,630],{},"$attrs"," and land on the root element as plain attributes, so\nthe animation you switched off comes back. A development build warns by name; a\nproduction build does not.",[549,633,635],{"className":551,"code":634,"language":553,"meta":377,"style":377},"- \u003CBbTab :items=\"items\" animate-x :animate-y=\"false\" \u002F>\n+ \u003CBbTabs :items=\"items\" disable-animate-y \u002F>\n",[366,636,637,642],{"__ignoreMap":377},[425,638,639],{"class":558,"line":131},[425,640,641],{},"- \u003CBbTab :items=\"items\" animate-x :animate-y=\"false\" \u002F>\n",[425,643,644],{"class":558,"line":135},[425,645,646],{},"+ \u003CBbTabs :items=\"items\" disable-animate-y \u002F>\n",[421,648,650],{"id":649},"navigation",[425,651,652],{},"The active tab in the URL",[362,654,655,657],{},[366,656,649],{}," keeps the active tab in the URL query, which makes it deep-linkable\nand lets it survive a reload.",[436,659],{"name":660},"BbTabs\u002FUrlSync",[362,662,663,666,667,670,671,673,674,677],{},[366,664,665],{},"query-key"," names the parameter and defaults to ",[366,668,669],{},"tab",". Pair ",[366,672,649],{}," with\n",[366,675,676],{},"replace",", or every tab change adds a browser-history entry.",[362,679,680,681,684,685,688],{},"The URL carries the normalized slug, never the raw key. The component\nround-trips this itself; what breaks is anything ",[370,682,683],{},"else"," reading that parameter.\nA server matching ",[366,686,687],{},"?tab="," against camelCase keys silently never matches. Compare\nagainst the normalized form, or keep URL-synced tab keys lowercase.",[362,690,691,692,694],{},"Prerendered HTML contains the fallback tab because no query exists at build\ntime. Choose a useful fallback and mark deep-linked content ",[366,693,584],{}," when it must\nappear in that HTML.",[362,696,697,698,701,702,705,706,709,710,712],{},"For Inertia navigation, add ",[366,699,700],{},"href"," to items and ",[366,703,704],{},"server"," for ",[366,707,708],{},"router.visit",".\nPoint ",[366,711,665],{}," at the parameter your links already use.",[447,714,716],{"title":715},"querykey → queryKey",[362,717,718,719,721,722,724],{},"The all-lowercase spelling type-checks, falls through to ",[366,720,630],{},", and the URL\nsync quietly moves to the default ",[366,723,687],{},". A development build warns; a\nproduction build does not. v2 deep links carrying a raw value also fall back to\nthe default tab. Add a redirect if those links matter.",[549,726,728],{"className":551,"code":727,"language":553,"meta":377,"style":377},"- \u003CBbTab :items=\"items\" navigation querykey=\"section\" \u002F>\n+ \u003CBbTabs :items=\"items\" navigation query-key=\"section\" replace \u002F>\n",[366,729,730,735],{"__ignoreMap":377},[425,731,732],{"class":558,"line":131},[425,733,734],{},"- \u003CBbTab :items=\"items\" navigation querykey=\"section\" \u002F>\n",[425,736,737],{"class":558,"line":135},[425,738,739],{},"+ \u003CBbTabs :items=\"items\" navigation query-key=\"section\" replace \u002F>\n",[421,741,743],{"id":742},"layout",[425,744,745],{},"Width, direction and overflow",[362,747,748],{},"The strip has three shapes and one behaviour when it runs out of room.",[436,750],{"name":751},"BbTabs\u002FBlockStrip",[362,753,754,757,758,761],{},[366,755,756],{},"block"," makes horizontal triggers equal width. ",[366,759,760],{},"compact"," aligns the strip with\ncompact fields.",[447,763,765],{"title":764},"block replaces your full-width class",[362,766,767,768,771],{},"Delete the class your v2 project used for full width. A leftover rule can\noverride ",[366,769,770],{},"--block"," without warning.",[436,773],{"name":774},"BbTabs\u002FVertical",[362,776,777,780],{},[366,778,779],{},"direction=\"vertical\""," stacks triggers beside the panes. Horizontal strips\nscroll when needed and keep the active trigger in view.",[436,782],{"name":783},"BbTabs\u002FScrollArrows",[362,785,786,789,790,793,794,511,797,511,800,803,804,807,808,811,812,815],{},[366,787,788],{},"header:prepend"," and ",[366,791,792],{},"header:append"," render before and after the scrollable list,\noutside it. Each receives ",[366,795,796],{},"canScrollLeft",[366,798,799],{},"canScrollRight",[366,801,802],{},"isScrolling"," and a\n",[366,805,806],{},"scroll('left' | 'right')"," callback that pages the strip by about 80% of its\nwidth. Bind each arrow's ",[366,809,810],{},"disabled"," to the matching flag. These buttons are your\nmarkup, so an icon-only arrow needs an ",[366,813,814],{},"aria-label"," you write yourself.",[421,817,819],{"id":818},"composition",[425,820,821],{},"Splitting the strip from the panes",[362,823,824,825,829,830,832,833,537],{},"When the layout needs arbitrary markup ",[826,827,828],"em",{},"between"," the triggers and the panes, swap\n",[366,831,302],{}," for the renderless ",[366,834,835],{},"BbTabsRoot",[436,837],{"name":838},"BbTabs\u002FSplitLayout",[362,840,841,843,844,789,847,850,851,853],{},[366,842,835],{}," owns the same state while ",[366,845,846],{},"BbTabsList",[366,848,849],{},"BbTabsPanes"," can sit\nanywhere below it. Use plain ",[366,852,302],{}," when the strip sits directly over its\npanes.",[362,855,856],{},"To steer a group from outside its tree, there is a composable instead:",[436,858],{"name":859},"BbTabs\u002FRemoteControl",[362,861,862,865,866,869,870,873],{},[366,863,864],{},"useBbTabsContext(id)"," controls a mounted group from outside its tree. Pass an\nexplicit matching ",[366,867,868],{},"id","; generated ids are not addressable. The registry is\nclient-only, so wait for ",[366,871,872],{},"isReady"," before calling the handle.",[421,875,877],{"id":876},"styling",[425,878,879],{},"Styling the strip",[362,881,882,883,886,887,890,891,894,895,898],{},"Global tokens set the scale. Set strip-specific variables such as ",[366,884,885],{},"--list-bg",",\n",[366,888,889],{},"--trigger-px",", and ",[366,892,893],{},"--pill-bg"," directly on ",[366,896,897],{},".bb-tabs-list","; ancestor values\nlose to the component defaults.",[447,900,902],{"title":901},"every class was renamed",[362,903,904,905,908,909,912,913,915,916,919],{},"Nothing warns: your old rules simply stop matching and the shipped styling shows\nthrough. The single block ",[366,906,907],{},".bb-tab"," became three: ",[366,910,911],{},".bb-tabs"," on the root,\n",[366,914,897],{}," on the strip, ",[366,917,918],{},".bb-tabs-panes"," on the pane wrapper.",[921,922,923,936],"table",{},[924,925,926],"thead",{},[927,928,929,933],"tr",{},[930,931,932],"th",{},"v2",[930,934,935],{},"v3",[937,938,939,950,961,973,985,997,1009,1020],"tbody",{},[927,940,941,946],{},[942,943,944],"td",{},[366,945,907],{},[942,947,948],{},[366,949,911],{},[927,951,952,957],{},[942,953,954],{},[366,955,956],{},".bb-tab__label-boundary",[942,958,959],{},[366,960,897],{},[927,962,963,968],{},[942,964,965],{},[366,966,967],{},".bb-tab__label-container",[942,969,970],{},[366,971,972],{},".bb-tabs-list__tablist",[927,974,975,980],{},[942,976,977],{},[366,978,979],{},".bb-tab__btn",[942,981,982],{},[366,983,984],{},".bb-tabs__trigger",[927,986,987,992],{},[942,988,989],{},[366,990,991],{},".bb-tab__btn--active",[942,993,994],{},[366,995,996],{},".bb-tabs__trigger--active",[927,998,999,1004],{},[942,1000,1001],{},[366,1002,1003],{},".bb-tab__label",[942,1005,1006],{},[366,1007,1008],{},".bb-tabs__trigger-label",[927,1010,1011,1016],{},[942,1012,1013],{},[366,1014,1015],{},".bb-tab__panes-container",[942,1017,1018],{},[366,1019,918],{},[927,1021,1022,1027],{},[942,1023,1024],{},[366,1025,1026],{},".bb-tab__pane",[942,1028,1029],{},[366,1030,1031],{},".bb-tabs__pane",[362,1033,1034,1037],{},[366,1035,1036],{},"rg -n 'bb-tab(__|--)|\\.bb-tab\\b'"," finds every v2 name and no v3 one.",[362,1039,1040,1041,537],{},"The list wrapper can also contain prepend and append slots, so replace broad\nchild selectors with ",[366,1042,972],{},[1044,1045,1046],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":377,"searchDepth":157,"depth":157,"links":1048},[1049,1050,1051,1052,1053,1054,1055,1056,1057],{"id":423,"depth":135,"text":427},{"id":455,"depth":135,"text":458},{"id":473,"depth":135,"text":476},{"id":569,"depth":135,"text":572},{"id":592,"depth":135,"text":595},{"id":649,"depth":135,"text":652},{"id":742,"depth":135,"text":745},{"id":818,"depth":135,"text":821},{"id":876,"depth":135,"text":879},"Peer views of one subject behind a strip of triggers, with the active tab in the URL.","md",{},true,[1063,1064,1065,1066,1067,1068,1069,1070,1071],{"id":423,"title":427},{"id":455,"title":458},{"id":473,"title":476},{"id":569,"title":572},{"id":592,"title":595},{"id":649,"title":652},{"id":742,"title":745},{"id":818,"title":821},{"id":876,"title":879},{"title":302,"description":1058},"components\u002Fbb-tabs","EUDflcy2A1UaKlI-vL5zzpNli8-rn5pUXdyu3sQthpU",{"name":302,"slug":1076,"group":287,"description":1077,"entrypoint":1078,"docs":1079,"props":1082,"models":1208,"events":1210,"slots":1216,"exposed":1235,"pt":1236,"validated":352,"migration":1253},"bb-tabs","Switches between tabbed content views (shadcn-like strip; the co-located BbTabsRoot \u002F BbTabsList \u002F BbTabsPanes exports enable split layouts).","bitboss-ui",{"contract":1080,"source":1081},"ai\u002FBbTabs.md","ai\u002Fsource\u002FBbTabs.md",[1083,1089,1092,1098,1102,1106,1109,1112,1116,1120,1124,1129,1132,1136,1140,1144,1147,1151,1155,1158,1161,1165,1169,1173,1176,1179,1181,1183,1185,1187,1189,1191,1193,1198,1201,1203],{"name":756,"type":1084,"required":1085,"default":1086,"description":1087,"note":1088,"demo":742},"boolean | undefined",false,"false","Displays the component as full width.","Full width with equal-width triggers, measured from the widest so they stay even once the strip overflows. Horizontal only. It replaces the full-width class most v2 projects wrote for themselves — delete yours, or the two fight over the same declarations with nothing to say which won.",{"name":760,"type":1084,"required":1085,"default":1086,"description":1090,"note":1091,"demo":742},"Adds a CSS class that applies a compact style to the component.","Drops the whole scale one notch — a 28px strip with smaller text and padding — so it lines up with compact fields.",{"name":1093,"type":1094,"required":1085,"default":1095,"description":1096,"note":1097,"demo":742},"direction","\"horizontal\" | \"vertical\" | undefined","\"horizontal\"","Direction of the tabs component.","A vertical strip becomes a column beside the panes and answers Up\u002FDown as well as Left\u002FRight. It also reads a `--max-w` custom property to cap its width, which is the only knob that works from an ancestor.",{"name":1099,"type":1084,"required":1085,"default":1086,"description":1100,"note":1101,"demo":592},"disableAnimateX","Disables the horizontal slide transition between tab panels\n(enabled by default).","Inverted from v2's `animateX`, which defaulted to `true`. A leftover `:animate-x=\"false\"` type-checks, falls into `$attrs` and lands on the root as a plain attribute, so the slide comes back; dev warns by name, production does not.",{"name":1103,"type":1084,"required":1085,"default":1086,"description":1104,"note":1105,"demo":592},"disableAnimateY","Disables the smooth height animation when switching between tab\npanels (enabled by default).","Inverted from v2's `animateY`, the same way as `disableAnimateX`. Reach for it when a pane hosts its own transitions or virtualized content that fights the height measurement.",{"name":810,"type":1084,"required":1085,"default":1086,"description":1107,"note":1108,"demo":455},"Disables the component","Disables the whole group: every trigger goes disabled and keyboard navigation is inert. For a single unreachable tab, set `disabled` on its `items` entry instead — it stays visible, is skipped by the arrows, and can never be the default selection.",{"name":584,"type":1084,"required":1085,"default":1086,"description":1110,"note":1111,"demo":569},"Prevents rendering content before it's made visible.","Mounts every pane from the first render and keeps it mounted, hidden while inactive; a lazy pane unmounts on every switch away and loses its state. Prefer the per-item form (`{ key, label, eager: true }`) when only one pane needs it — an eager pane costs its render on every page load. It never leaks to assistive technology: an inactive pane is `display: none` either way.",{"name":1113,"type":1114,"required":1085,"default":352,"description":1115,"note":352,"demo":352},"headers","Record\u003Cstring, string> | undefined","Additional HTTP headers forwarded to Inertia when navigation is triggered.\nOnly meaningful in an Inertia context.",{"name":868,"type":1117,"required":1085,"default":352,"description":1118,"note":1119,"demo":818},"string | undefined","The identifier of the component.","Also the address for `useBbTabsContext(id)`, which is how a banner or a page header outside the tabs steers them. Generated ids are not addressable, so pass one when anything outside the tree needs to reach the group.",{"name":433,"type":1121,"required":1061,"default":352,"description":1122,"note":1123,"demo":423},"BbTabsItem\u003CK>[]","Array of items that define the tabs in the component.","Each entry carries its own `disabled`, `eager`, `href`, `server` and Inertia options, and item values always win over the component-level ones. The `key` stays raw everywhere you write it — `v-model`, the item itself — but slot names, DOM ids and the URL all use the normalized slug: lowercased, with every run of non-word characters folded to `_`.",{"name":1125,"type":1126,"required":1085,"default":352,"description":1127,"note":1128,"demo":423},"modelValue","K | null | undefined","The current tab key. Used by v-model.","The raw item key, never the normalized slug. Leave it unbound (or `null`) and the first enabled tab is selected for you; if every tab is disabled the strip renders with no selection rather than throwing.",{"name":649,"type":1084,"required":1085,"default":1086,"description":1130,"note":1131,"demo":649},"Synchronizes the current tab with the URL query parameter.\n\nPair it with `replace` unless a tab is genuinely a separate destination —\nsee the `replace` prop.","Makes the strip a writer of the URL query. Pair it with `replace` unless a tab is a destination of its own, and remember that a prerendered page is built with no query at all: the static HTML always carries the fallback tab, and the URL only takes over once the page is in the browser.",{"name":1133,"type":1134,"required":1085,"default":352,"description":1135,"note":352,"demo":352},"onBefore","(() => boolean | void) | undefined","Inertia lifecycle hook — fired just before the request is sent.\nReturn `false` to cancel the visit.",{"name":1137,"type":1138,"required":1085,"default":352,"description":1139,"note":352,"demo":352},"onCancel","(() => void) | undefined","Inertia lifecycle hook — fired when the request is cancelled.",{"name":1141,"type":1142,"required":1085,"default":352,"description":1143,"note":352,"demo":352},"onError","((errors: Record\u003Cstring, string>) => void) | undefined","Inertia lifecycle hook — fired when the server returns validation errors.",{"name":1145,"type":1138,"required":1085,"default":352,"description":1146,"note":352,"demo":352},"onFinish","Inertia lifecycle hook — fired after the visit finishes (success or error).",{"name":1148,"type":1149,"required":1085,"default":352,"description":1150,"note":352,"demo":352},"only","string[] | undefined","Limits which server-side props are refreshed during a partial Inertia reload.\nOnly meaningful in an Inertia context.",{"name":1152,"type":1153,"required":1085,"default":352,"description":1154,"note":352,"demo":352},"onProgress","((progress: { percentage: number | undefined; }) => void) | undefined","Inertia lifecycle hook — fired when upload\u002Fdownload progress is available.",{"name":1156,"type":1138,"required":1085,"default":352,"description":1157,"note":352,"demo":352},"onStart","Inertia lifecycle hook — fired when the request starts.",{"name":1159,"type":1138,"required":1085,"default":352,"description":1160,"note":352,"demo":352},"onSuccess","Inertia lifecycle hook — fired when the visit completes successfully.",{"name":1162,"type":1163,"required":1085,"default":352,"description":1164,"note":352,"demo":352},"preserveScroll","boolean | ((props: Record\u003Cstring, unknown>) => boolean) | undefined","Controls whether Inertia preserves the scroll position after navigation.\nOnly meaningful in an Inertia context.",{"name":1166,"type":1167,"required":1085,"default":352,"description":1168,"note":352,"demo":352},"preserveState","boolean | ((props: Record\u003Cstring, unknown>) => boolean) | null | undefined","Controls whether Inertia preserves the current component state after navigation.\nOnly meaningful in an Inertia context.",{"name":1170,"type":1171,"required":1085,"default":352,"description":1172,"note":352,"demo":352},"pt","PtItemMap\u003CBbTabsPtPart, \"item\", BbTabsPtState, BbTabsItem\u003CK>> | undefined","Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. See the `pt:\u003Cpart>` row.",{"name":1174,"type":1175,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:item","PtValue | ((ctx: PtItemCtx\u003CBbTabsItem\u003CK>, BbTabsPtState>) => PtItemResult) | undefined",{"name":1177,"type":1178,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:item:active","PtValue | undefined",{"name":1180,"type":1178,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:item:disabled",{"name":1182,"type":1178,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:panel",{"name":1184,"type":1178,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:panel:active",{"name":1186,"type":1178,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:panel:disabled",{"name":1188,"type":1178,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:root",{"name":1190,"type":1178,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:root:active",{"name":1192,"type":1178,"required":1085,"default":352,"description":352,"note":352,"demo":352},"pt:root:disabled",{"name":1194,"type":1117,"required":1085,"default":1195,"description":1196,"note":1197,"demo":649},"queryKey","\"tab\"","Defines the query key used for URL-based navigation.","Spelled `querykey` in v2. The all-lowercase form type-checks, falls through to `$attrs` and the sync silently moves to the default `?tab=`. The value written is the normalized slug, not the key, so anything else reading the parameter — a server, an analytics filter — must compare against the slug.",{"name":676,"type":1084,"required":1085,"default":1086,"description":1199,"note":1200,"demo":649},"Replaces history rather than pushing it when changing tab.\n\nRecommended default whenever `navigation` is on: the query keeps the\nactive tab (deep-linkable, survives reload) while Back still returns to\nthe page the user came from, instead of undoing one tab click at a time.\nLeave it off only when a tab is a destination of its own — typically a\n`server` visit whose content the user should be able to go Back to.","Effectively required alongside `navigation`: without it every tab click is a history entry, so Back walks the reader through their clicks instead of leaving the page.",{"name":704,"type":1084,"required":1085,"default":1086,"description":1202,"note":352,"demo":352},"When true and in an Inertia context, triggers a real server-side Inertia\nvisit instead of a client-only `history.pushState`.",{"name":1204,"type":1205,"required":1085,"default":1206,"description":1207,"note":352,"demo":352},"variant","keyof TabsVariantRegistry | undefined","\"pill\"","Look of the tab strip. `pill` is the segmented strip — a muted rounded\nbar with a raised pill sliding under the active trigger; `line` puts\nthe triggers on a thin baseline with a sliding underline (on the side\nedge when `direction=\"vertical\"`); `none` keeps behaviour and structure\nwith no chrome, for fully custom designs through `pt` and classes.\n\nEvery look is a preset of the strip's tokens (`--list-bg`,\n`--indicator-bg`, `--indicator-h`, `--active-fg`, …). Register more via\nthe vite plugin `tabsVariants` option and style\n`.bb-tabs-list--\u003Cvariant>` with the same tokens. The class lands on the\nstrip (`BbTabsList`), which can also take its own `variant` on the split\nlayout.",[1209],{"name":1125,"type":1126,"note":352,"demo":423},[1211],{"name":1212,"signature":1213,"description":1214,"note":1215,"demo":423},"update:modelValue","(e: \"update:modelValue\", value: K): void","Emitted when the selected tab changes. Used by `v-model`.","The whole event surface. It also fires once on mount when the component resolves a key the parent never set — from the URL query or the first-enabled fallback — so a binding starts aligned.",[1217,1222,1226,1229,1232],{"name":1218,"type":1219,"description":1220,"note":1221,"demo":569},"\u003Ckey>","BbTabsSlotProps\u003CK>","One tab's content pane, by the tab `key` through `slotKey`; no fallback (an empty pane).","The pane. Its name is the normalized key (`billing-info` is `#billing_info`); with `items` generated, write `#[slotKey(item.key)]` rather than restating the rule. Only the active pane is mounted unless the pane is `eager`.",{"name":792,"type":1223,"description":1224,"note":1225,"demo":742},"BbTabsScrollSlotProps","Content rendered after the scrollable tab label list (e.g. a right scroll arrow).","The trailing counterpart of `header:prepend`. Bind each arrow to `canScrollLeft` \u002F `canScrollRight` so it dims at the ends of the strip.",{"name":788,"type":1223,"description":1227,"note":1228,"demo":742},"Content rendered before the scrollable tab label list (e.g. a left scroll arrow).","Rendered outside the scrollable list, so it stays put while the strip moves. The buttons are your markup, which means an icon-only arrow needs an `aria-label` you write.",{"name":491,"type":1219,"description":1230,"note":1231,"demo":473},"Fallback slot used for all tab labels when no per-tab `label:\u003Ckey>` slot is provided.","The fallback for every trigger; a `label:\u003Ckey>` slot beats it for that one tab. Keep it presentational: the trigger is already the control, so a nested button or link is invalid and steals the click.",{"name":487,"type":1219,"description":1233,"note":1234,"demo":473},"One tab trigger's label, by the tab `key` through `slotKey`; beats `label`, which beats the item's `label` text.","The key is normalized: `inReview` is `#label:inreview`, `In Review` is `#label:in_review`. Presentation only, like `label`.",[],{"parts":1237,"states":1247},[1238,1241,1244],{"name":1239,"description":1240},"root","The tabs' outer element. The strip and the sliding pill are not parts.",{"name":1242,"description":1243},"item","One tab trigger — a broadcast resolved per tab with its own `active` \u002F `disabled`. Also takes a per-item function, called with the tab's descriptor.",{"name":1245,"description":1246},"panel","One tab pane — a broadcast; `panel:active` is the pane on show. Takes no function.",[1248,1251],{"name":1249,"description":1250},"active","Per node, on `item` and `panel`: the selected tab's trigger and its shown pane.",{"name":810,"description":1252},"Per node, on `item` only: a tab that is disabled.",{"removed":1254,"renamed":1268},[1255,1261,1264],{"name":1256,"replacedBy":1099,"since":1257,"migration":1258,"silent":1061,"fix":1259},"animateX","3.0.0-unreleased","ai\u002Fguides\u002Fmigration\u002Fcomponents\u002Fbb-tabs.md",{"kind":1260},"invert",{"name":1262,"replacedBy":1103,"since":1257,"migration":1258,"silent":1061,"fix":1263},"animateY",{"kind":1260},{"name":1265,"replacedBy":1194,"since":1257,"migration":1258,"silent":1061,"fix":1266},"querykey",{"kind":1267},"rename",[1269,1271,1273],{"from":1256,"to":1099,"since":1257,"migration":1258,"fix":1270},{"kind":1260},{"from":1262,"to":1103,"since":1257,"migration":1258,"fix":1272},{"kind":1260},{"from":1265,"to":1194,"since":1257,"migration":1258,"fix":1274},{"kind":1267},1790005165898]