[{"data":1,"prerenderedAt":2164},["ShallowReactive",2],{"locale-alternates":3,"docs-nav-en":134,"api-none":377,"page-en-\u002Fguides\u002Fai-agents":378},{"\u002Fit\u002Fcomponenti\u002Fbb-accordion":4,"\u002Fen\u002Fcomponents\u002Fbb-accordion":5,"\u002Fit\u002Fcomponenti\u002Fbb-alert":6,"\u002Fen\u002Fcomponents\u002Fbb-alert":7,"\u002Fit\u002Fcomponenti\u002Fbb-asterisk":8,"\u002Fen\u002Fcomponents\u002Fbb-asterisk":9,"\u002Fit\u002Fcomponenti\u002Fbb-avatar":10,"\u002Fen\u002Fcomponents\u002Fbb-avatar":11,"\u002Fit\u002Fcomponenti\u002Fbb-badge":12,"\u002Fen\u002Fcomponents\u002Fbb-badge":13,"\u002Fit\u002Fcomponenti\u002Fbb-base-button":14,"\u002Fen\u002Fcomponents\u002Fbb-base-button":15,"\u002Fit\u002Fcomponenti\u002Fbb-breadcrumbs":16,"\u002Fen\u002Fcomponents\u002Fbb-breadcrumbs":17,"\u002Fit\u002Fcomponenti\u002Fbb-button":18,"\u002Fen\u002Fcomponents\u002Fbb-button":19,"\u002Fit\u002Fcomponenti\u002Fbb-calendar":20,"\u002Fen\u002Fcomponents\u002Fbb-calendar":21,"\u002Fit\u002Fcomponenti\u002Fbb-checkbox":22,"\u002Fen\u002Fcomponents\u002Fbb-checkbox":23,"\u002Fit\u002Fcomponenti\u002Fbb-checkbox-group":24,"\u002Fen\u002Fcomponents\u002Fbb-checkbox-group":25,"\u002Fit\u002Fcomponenti\u002Fbb-collapsible":26,"\u002Fen\u002Fcomponents\u002Fbb-collapsible":27,"\u002Fit\u002Fcomponenti\u002Fbb-color-input":28,"\u002Fen\u002Fcomponents\u002Fbb-color-input":29,"\u002Fit\u002Fcomponenti\u002Fbb-color-palette":30,"\u002Fen\u002Fcomponents\u002Fbb-color-palette":31,"\u002Fit\u002Fcomponenti\u002Fbb-confirm":32,"\u002Fen\u002Fcomponents\u002Fbb-confirm":33,"\u002Fit\u002Fcomponenti\u002Fbb-date-picker":34,"\u002Fen\u002Fcomponents\u002Fbb-date-picker":35,"\u002Fit\u002Fcomponenti\u002Fbb-date-picker-input":36,"\u002Fen\u002Fcomponents\u002Fbb-date-picker-input":37,"\u002Fit\u002Fcomponenti\u002Fbb-dialog":38,"\u002Fen\u002Fcomponents\u002Fbb-dialog":39,"\u002Fit\u002Fcomponenti\u002Fbb-dropdown":40,"\u002Fen\u002Fcomponents\u002Fbb-dropdown":41,"\u002Fit\u002Fcomponenti\u002Fbb-dropdown-button":42,"\u002Fen\u002Fcomponents\u002Fbb-dropdown-button":43,"\u002Fit\u002Fcomponenti\u002Fbb-dropzone":44,"\u002Fen\u002Fcomponents\u002Fbb-dropzone":45,"\u002Fit\u002Fcomponenti\u002Fbb-form":46,"\u002Fen\u002Fcomponents\u002Fbb-form":47,"\u002Fit\u002Fcomponenti\u002Fbb-hover-card":48,"\u002Fen\u002Fcomponents\u002Fbb-hover-card":49,"\u002Fit\u002Fcomponenti\u002Fbb-icon":50,"\u002Fen\u002Fcomponents\u002Fbb-icon":51,"\u002Fit\u002Fcomponenti\u002Fbb-indicator":52,"\u002Fen\u002Fcomponents\u002Fbb-indicator":53,"\u002Fit\u002Fcomponenti\u002Fbb-number-input":54,"\u002Fen\u002Fcomponents\u002Fbb-number-input":55,"\u002Fit\u002Fcomponenti\u002Fbb-off-canvas":56,"\u002Fen\u002Fcomponents\u002Fbb-off-canvas":57,"\u002Fit\u002Fcomponenti\u002Fbb-pagination":58,"\u002Fen\u002Fcomponents\u002Fbb-pagination":59,"\u002Fit\u002Fcomponenti\u002Fbb-popover":60,"\u002Fen\u002Fcomponents\u002Fbb-popover":61,"\u002Fit\u002Fcomponenti\u002Fbb-progress":62,"\u002Fen\u002Fcomponents\u002Fbb-progress":63,"\u002Fit\u002Fcomponenti\u002Fbb-radio":64,"\u002Fen\u002Fcomponents\u002Fbb-radio":65,"\u002Fit\u002Fcomponenti\u002Fbb-radio-group":66,"\u002Fen\u002Fcomponents\u002Fbb-radio-group":67,"\u002Fit\u002Fcomponenti\u002Fbb-rating":68,"\u002Fen\u002Fcomponents\u002Fbb-rating":69,"\u002Fit\u002Fcomponenti\u002Fbb-select":70,"\u002Fen\u002Fcomponents\u002Fbb-select":71,"\u002Fit\u002Fcomponenti\u002Fbb-select-popover":72,"\u002Fen\u002Fcomponents\u002Fbb-select-popover":73,"\u002Fit\u002Fcomponenti\u002Fbb-slider":74,"\u002Fen\u002Fcomponents\u002Fbb-slider":75,"\u002Fit\u002Fcomponenti\u002Fbb-smooth-height":76,"\u002Fen\u002Fcomponents\u002Fbb-smooth-height":77,"\u002Fit\u002Fcomponenti\u002Fbb-spinner":78,"\u002Fen\u002Fcomponents\u002Fbb-spinner":79,"\u002Fit\u002Fcomponenti\u002Fbb-switch":80,"\u002Fen\u002Fcomponents\u002Fbb-switch":81,"\u002Fit\u002Fcomponenti\u002Fbb-switch-group":82,"\u002Fen\u002Fcomponents\u002Fbb-switch-group":83,"\u002Fit\u002Fcomponenti\u002Fbb-table":84,"\u002Fen\u002Fcomponents\u002Fbb-table":85,"\u002Fit\u002Fcomponenti\u002Fbb-tabs":86,"\u002Fen\u002Fcomponents\u002Fbb-tabs":87,"\u002Fit\u002Fcomponenti\u002Fbb-tag":88,"\u002Fen\u002Fcomponents\u002Fbb-tag":89,"\u002Fit\u002Fcomponenti\u002Fbb-text-input":90,"\u002Fen\u002Fcomponents\u002Fbb-text-input":91,"\u002Fit\u002Fcomponenti\u002Fbb-textarea":92,"\u002Fen\u002Fcomponents\u002Fbb-textarea":93,"\u002Fit\u002Fcomponenti\u002Fbb-time-picker":94,"\u002Fen\u002Fcomponents\u002Fbb-time-picker":95,"\u002Fit\u002Fcomponenti\u002Fbb-time-picker-input":96,"\u002Fen\u002Fcomponents\u002Fbb-time-picker-input":97,"\u002Fit\u002Fcomponenti\u002Fbb-toast":98,"\u002Fen\u002Fcomponents\u002Fbb-toast":99,"\u002Fit\u002Fcomponenti\u002Fbb-tooltip":100,"\u002Fen\u002Fcomponents\u002Fbb-tooltip":101,"\u002Fit\u002Fcomponenti\u002Fbb-tree":102,"\u002Fen\u002Fcomponents\u002Fbb-tree":103,"\u002Fit\u002Fguide\u002Fadoption-checklist":104,"\u002Fen\u002Fguides\u002Fadoption-checklist":105,"\u002Fit\u002Fguide\u002Fai-agents":106,"\u002Fen\u002Fguides\u002Fai-agents":107,"\u002Fit\u002Fguide\u002Fcoherence":108,"\u002Fen\u002Fguides\u002Fcoherence":109,"\u002Fit\u002Fguide\u002Fdesign-language":110,"\u002Fen\u002Fguides\u002Fdesign-language":111,"\u002Fit\u002Fguide\u002Fdesign-tokens":112,"\u002Fen\u002Fguides\u002Fdesign-tokens":113,"\u002Fit\u002Fguide\u002Ffetching-data":114,"\u002Fen\u002Fguides\u002Ffetching-data":115,"\u002Fit\u002Fguide\u002Ficons":116,"\u002Fen\u002Fguides\u002Ficons":117,"\u002Fit\u002Fguide\u002Finertia":118,"\u002Fen\u002Fguides\u002Finertia":119,"\u002Fit\u002Fguide\u002Finstallation":120,"\u002Fen\u002Fguides\u002Finstallation":121,"\u002Fit\u002Fguide\u002Fmigration":122,"\u002Fen\u002Fguides\u002Fmigration":123,"\u002Fit\u002Fguide\u002Fnuxt":124,"\u002Fen\u002Fguides\u002Fnuxt":125,"\u002Fit\u002Fguide\u002Foptions-and-items":126,"\u002Fen\u002Fguides\u002Foptions-and-items":127,"\u002Fit\u002Fguide\u002Fpassthrough":128,"\u002Fen\u002Fguides\u002Fpassthrough":129,"\u002Fit\u002Fguide\u002Fpreset-components":130,"\u002Fen\u002Fguides\u002Fpreset-components":131,"\u002Fit\u002Fguide\u002Fvalidated-forms":132,"\u002Fen\u002Fguides\u002Fvalidated-forms":133},"\u002Fen\u002Fcomponents\u002Fbb-accordion","\u002Fit\u002Fcomponenti\u002Fbb-accordion","\u002Fen\u002Fcomponents\u002Fbb-alert","\u002Fit\u002Fcomponenti\u002Fbb-alert","\u002Fen\u002Fcomponents\u002Fbb-asterisk","\u002Fit\u002Fcomponenti\u002Fbb-asterisk","\u002Fen\u002Fcomponents\u002Fbb-avatar","\u002Fit\u002Fcomponenti\u002Fbb-avatar","\u002Fen\u002Fcomponents\u002Fbb-badge","\u002Fit\u002Fcomponenti\u002Fbb-badge","\u002Fen\u002Fcomponents\u002Fbb-base-button","\u002Fit\u002Fcomponenti\u002Fbb-base-button","\u002Fen\u002Fcomponents\u002Fbb-breadcrumbs","\u002Fit\u002Fcomponenti\u002Fbb-breadcrumbs","\u002Fen\u002Fcomponents\u002Fbb-button","\u002Fit\u002Fcomponenti\u002Fbb-button","\u002Fen\u002Fcomponents\u002Fbb-calendar","\u002Fit\u002Fcomponenti\u002Fbb-calendar","\u002Fen\u002Fcomponents\u002Fbb-checkbox","\u002Fit\u002Fcomponenti\u002Fbb-checkbox","\u002Fen\u002Fcomponents\u002Fbb-checkbox-group","\u002Fit\u002Fcomponenti\u002Fbb-checkbox-group","\u002Fen\u002Fcomponents\u002Fbb-collapsible","\u002Fit\u002Fcomponenti\u002Fbb-collapsible","\u002Fen\u002Fcomponents\u002Fbb-color-input","\u002Fit\u002Fcomponenti\u002Fbb-color-input","\u002Fen\u002Fcomponents\u002Fbb-color-palette","\u002Fit\u002Fcomponenti\u002Fbb-color-palette","\u002Fen\u002Fcomponents\u002Fbb-confirm","\u002Fit\u002Fcomponenti\u002Fbb-confirm","\u002Fen\u002Fcomponents\u002Fbb-date-picker","\u002Fit\u002Fcomponenti\u002Fbb-date-picker","\u002Fen\u002Fcomponents\u002Fbb-date-picker-input","\u002Fit\u002Fcomponenti\u002Fbb-date-picker-input","\u002Fen\u002Fcomponents\u002Fbb-dialog","\u002Fit\u002Fcomponenti\u002Fbb-dialog","\u002Fen\u002Fcomponents\u002Fbb-dropdown","\u002Fit\u002Fcomponenti\u002Fbb-dropdown","\u002Fen\u002Fcomponents\u002Fbb-dropdown-button","\u002Fit\u002Fcomponenti\u002Fbb-dropdown-button","\u002Fen\u002Fcomponents\u002Fbb-dropzone","\u002Fit\u002Fcomponenti\u002Fbb-dropzone","\u002Fen\u002Fcomponents\u002Fbb-form","\u002Fit\u002Fcomponenti\u002Fbb-form","\u002Fen\u002Fcomponents\u002Fbb-hover-card","\u002Fit\u002Fcomponenti\u002Fbb-hover-card","\u002Fen\u002Fcomponents\u002Fbb-icon","\u002Fit\u002Fcomponenti\u002Fbb-icon","\u002Fen\u002Fcomponents\u002Fbb-indicator","\u002Fit\u002Fcomponenti\u002Fbb-indicator","\u002Fen\u002Fcomponents\u002Fbb-number-input","\u002Fit\u002Fcomponenti\u002Fbb-number-input","\u002Fen\u002Fcomponents\u002Fbb-off-canvas","\u002Fit\u002Fcomponenti\u002Fbb-off-canvas","\u002Fen\u002Fcomponents\u002Fbb-pagination","\u002Fit\u002Fcomponenti\u002Fbb-pagination","\u002Fen\u002Fcomponents\u002Fbb-popover","\u002Fit\u002Fcomponenti\u002Fbb-popover","\u002Fen\u002Fcomponents\u002Fbb-progress","\u002Fit\u002Fcomponenti\u002Fbb-progress","\u002Fen\u002Fcomponents\u002Fbb-radio","\u002Fit\u002Fcomponenti\u002Fbb-radio","\u002Fen\u002Fcomponents\u002Fbb-radio-group","\u002Fit\u002Fcomponenti\u002Fbb-radio-group","\u002Fen\u002Fcomponents\u002Fbb-rating","\u002Fit\u002Fcomponenti\u002Fbb-rating","\u002Fen\u002Fcomponents\u002Fbb-select","\u002Fit\u002Fcomponenti\u002Fbb-select","\u002Fen\u002Fcomponents\u002Fbb-select-popover","\u002Fit\u002Fcomponenti\u002Fbb-select-popover","\u002Fen\u002Fcomponents\u002Fbb-slider","\u002Fit\u002Fcomponenti\u002Fbb-slider","\u002Fen\u002Fcomponents\u002Fbb-smooth-height","\u002Fit\u002Fcomponenti\u002Fbb-smooth-height","\u002Fen\u002Fcomponents\u002Fbb-spinner","\u002Fit\u002Fcomponenti\u002Fbb-spinner","\u002Fen\u002Fcomponents\u002Fbb-switch","\u002Fit\u002Fcomponenti\u002Fbb-switch","\u002Fen\u002Fcomponents\u002Fbb-switch-group","\u002Fit\u002Fcomponenti\u002Fbb-switch-group","\u002Fen\u002Fcomponents\u002Fbb-table","\u002Fit\u002Fcomponenti\u002Fbb-table","\u002Fen\u002Fcomponents\u002Fbb-tabs","\u002Fit\u002Fcomponenti\u002Fbb-tabs","\u002Fen\u002Fcomponents\u002Fbb-tag","\u002Fit\u002Fcomponenti\u002Fbb-tag","\u002Fen\u002Fcomponents\u002Fbb-text-input","\u002Fit\u002Fcomponenti\u002Fbb-text-input","\u002Fen\u002Fcomponents\u002Fbb-textarea","\u002Fit\u002Fcomponenti\u002Fbb-textarea","\u002Fen\u002Fcomponents\u002Fbb-time-picker","\u002Fit\u002Fcomponenti\u002Fbb-time-picker","\u002Fen\u002Fcomponents\u002Fbb-time-picker-input","\u002Fit\u002Fcomponenti\u002Fbb-time-picker-input","\u002Fen\u002Fcomponents\u002Fbb-toast","\u002Fit\u002Fcomponenti\u002Fbb-toast","\u002Fen\u002Fcomponents\u002Fbb-tooltip","\u002Fit\u002Fcomponenti\u002Fbb-tooltip","\u002Fen\u002Fcomponents\u002Fbb-tree","\u002Fit\u002Fcomponenti\u002Fbb-tree","\u002Fen\u002Fguides\u002Fadoption-checklist","\u002Fit\u002Fguide\u002Fadoption-checklist","\u002Fen\u002Fguides\u002Fai-agents","\u002Fit\u002Fguide\u002Fai-agents","\u002Fen\u002Fguides\u002Fcoherence","\u002Fit\u002Fguide\u002Fcoherence","\u002Fen\u002Fguides\u002Fdesign-language","\u002Fit\u002Fguide\u002Fdesign-language","\u002Fen\u002Fguides\u002Fdesign-tokens","\u002Fit\u002Fguide\u002Fdesign-tokens","\u002Fen\u002Fguides\u002Ffetching-data","\u002Fit\u002Fguide\u002Ffetching-data","\u002Fen\u002Fguides\u002Ficons","\u002Fit\u002Fguide\u002Ficons","\u002Fen\u002Fguides\u002Finertia","\u002Fit\u002Fguide\u002Finertia","\u002Fen\u002Fguides\u002Finstallation","\u002Fit\u002Fguide\u002Finstallation","\u002Fen\u002Fguides\u002Fmigration","\u002Fit\u002Fguide\u002Fmigration","\u002Fen\u002Fguides\u002Fnuxt","\u002Fit\u002Fguide\u002Fnuxt","\u002Fen\u002Fguides\u002Foptions-and-items","\u002Fit\u002Fguide\u002Foptions-and-items","\u002Fen\u002Fguides\u002Fpassthrough","\u002Fit\u002Fguide\u002Fpassthrough","\u002Fen\u002Fguides\u002Fpreset-components","\u002Fit\u002Fguide\u002Fpreset-components","\u002Fen\u002Fguides\u002Fvalidated-forms","\u002Fit\u002Fguide\u002Fvalidated-forms",[135,150,162,186,198,242,275,311,332,353,365,371],{"label":136,"entries":137},"Getting started",[138,142,146],{"title":139,"path":140,"order":141},"Installation","\u002Fguides\u002Finstallation",1,{"title":143,"path":144,"order":145},"Migrating from v2","\u002Fguides\u002Fmigration",2,{"title":147,"path":148,"order":149},"Adoption checklist","\u002Fguides\u002Fadoption-checklist",3,{"label":151,"entries":152},"Design system",[153,156,159],{"title":154,"path":155,"order":141},"Design tokens","\u002Fguides\u002Fdesign-tokens",{"title":157,"path":158,"order":145},"Design language","\u002Fguides\u002Fdesign-language",{"title":160,"path":161,"order":149},"Passthrough","\u002Fguides\u002Fpassthrough",{"label":163,"entries":164},"Playbooks",[165,168,171,174,178,182],{"title":166,"path":167,"order":141},"Options and items","\u002Fguides\u002Foptions-and-items",{"title":169,"path":170,"order":145},"Fetching data","\u002Fguides\u002Ffetching-data",{"title":172,"path":173,"order":149},"Coherence","\u002Fguides\u002Fcoherence",{"title":175,"path":176,"order":177},"Validated forms","\u002Fguides\u002Fvalidated-forms",4,{"title":179,"path":180,"order":181},"Icons","\u002Fguides\u002Ficons",5,{"title":183,"path":184,"order":185},"Preset components","\u002Fguides\u002Fpreset-components",6,{"label":187,"entries":188},"Ecosystem",[189,192,195],{"title":190,"path":191,"order":141},"Inertia and Laravel","\u002Fguides\u002Finertia",{"title":193,"path":194,"order":145},"Nuxt","\u002Fguides\u002Fnuxt",{"title":196,"path":197,"order":149},"AI agents","\u002Fguides\u002Fai-agents",{"label":199,"entries":200},"Inputs",[201,204,207,210,213,216,219,222,226,230,234,238],{"title":202,"path":203,"component":202,"order":141},"BbBaseButton","\u002Fcomponents\u002Fbb-base-button",{"title":205,"path":206,"component":205,"order":145},"BbButton","\u002Fcomponents\u002Fbb-button",{"title":208,"path":209,"component":208,"order":149},"BbCalendar","\u002Fcomponents\u002Fbb-calendar",{"title":211,"path":212,"component":211,"order":149},"BbColorInput","\u002Fcomponents\u002Fbb-color-input",{"title":214,"path":215,"component":214,"order":177},"BbDatePickerInput","\u002Fcomponents\u002Fbb-date-picker-input",{"title":217,"path":218,"component":217,"order":181},"BbDropzone","\u002Fcomponents\u002Fbb-dropzone",{"title":220,"path":221,"component":220,"order":185},"BbForm","\u002Fcomponents\u002Fbb-form",{"title":223,"path":224,"component":223,"order":225},"BbNumberInput","\u002Fcomponents\u002Fbb-number-input",7,{"title":227,"path":228,"component":227,"order":229},"BbTag","\u002Fcomponents\u002Fbb-tag",8,{"title":231,"path":232,"component":231,"order":233},"BbTextarea","\u002Fcomponents\u002Fbb-textarea",9,{"title":235,"path":236,"component":235,"order":237},"BbTextInput","\u002Fcomponents\u002Fbb-text-input",10,{"title":239,"path":240,"component":239,"order":241},"BbTimePickerInput","\u002Fcomponents\u002Fbb-time-picker-input",11,{"label":243,"entries":244},"Selection",[245,248,251,254,257,260,263,266,269,272],{"title":246,"path":247,"component":246,"order":141},"BbCheckbox","\u002Fcomponents\u002Fbb-checkbox",{"title":249,"path":250,"component":249,"order":145},"BbCheckboxGroup","\u002Fcomponents\u002Fbb-checkbox-group",{"title":252,"path":253,"component":252,"order":149},"BbRadio","\u002Fcomponents\u002Fbb-radio",{"title":255,"path":256,"component":255,"order":177},"BbRadioGroup","\u002Fcomponents\u002Fbb-radio-group",{"title":258,"path":259,"component":258,"order":181},"BbRating","\u002Fcomponents\u002Fbb-rating",{"title":261,"path":262,"component":261,"order":185},"BbSelect","\u002Fcomponents\u002Fbb-select",{"title":264,"path":265,"component":264,"order":225},"BbSelectPopover","\u002Fcomponents\u002Fbb-select-popover",{"title":267,"path":268,"component":267,"order":229},"BbSlider","\u002Fcomponents\u002Fbb-slider",{"title":270,"path":271,"component":270,"order":233},"BbSwitch","\u002Fcomponents\u002Fbb-switch",{"title":273,"path":274,"component":273,"order":237},"BbSwitchGroup","\u002Fcomponents\u002Fbb-switch-group",{"label":276,"entries":277},"Overlay",[278,281,284,287,290,293,296,299,302,305,308],{"title":279,"path":280,"component":279,"order":141},"BbColorPalette","\u002Fcomponents\u002Fbb-color-palette",{"title":282,"path":283,"component":282,"order":145},"BbConfirm","\u002Fcomponents\u002Fbb-confirm",{"title":285,"path":286,"component":285,"order":149},"BbDatePicker","\u002Fcomponents\u002Fbb-date-picker",{"title":288,"path":289,"component":288,"order":177},"BbDialog","\u002Fcomponents\u002Fbb-dialog",{"title":291,"path":292,"component":291,"order":181},"BbDropdown","\u002Fcomponents\u002Fbb-dropdown",{"title":294,"path":295,"component":294,"order":185},"BbDropdownButton","\u002Fcomponents\u002Fbb-dropdown-button",{"title":297,"path":298,"component":297,"order":225},"BbHoverCard","\u002Fcomponents\u002Fbb-hover-card",{"title":300,"path":301,"component":300,"order":225},"BbOffCanvas","\u002Fcomponents\u002Fbb-off-canvas",{"title":303,"path":304,"component":303,"order":229},"BbPopover","\u002Fcomponents\u002Fbb-popover",{"title":306,"path":307,"component":306,"order":233},"BbTimePicker","\u002Fcomponents\u002Fbb-time-picker",{"title":309,"path":310,"component":309,"order":237},"BbTooltip","\u002Fcomponents\u002Fbb-tooltip",{"label":312,"entries":313},"Navigation",[314,317,320,323,326,329],{"title":315,"path":316,"component":315,"order":141},"BbAccordion","\u002Fcomponents\u002Fbb-accordion",{"title":318,"path":319,"component":318,"order":145},"BbBreadcrumbs","\u002Fcomponents\u002Fbb-breadcrumbs",{"title":321,"path":322,"component":321,"order":149},"BbCollapsible","\u002Fcomponents\u002Fbb-collapsible",{"title":324,"path":325,"component":324,"order":177},"BbPagination","\u002Fcomponents\u002Fbb-pagination",{"title":327,"path":328,"component":327,"order":181},"BbTabs","\u002Fcomponents\u002Fbb-tabs",{"title":330,"path":331,"component":330,"order":185},"BbTree","\u002Fcomponents\u002Fbb-tree",{"label":333,"entries":334},"Feedback",[335,338,341,344,347,350],{"title":336,"path":337,"component":336,"order":141},"BbAlert","\u002Fcomponents\u002Fbb-alert",{"title":339,"path":340,"component":339,"order":145},"BbBadge","\u002Fcomponents\u002Fbb-badge",{"title":342,"path":343,"component":342,"order":149},"BbIndicator","\u002Fcomponents\u002Fbb-indicator",{"title":345,"path":346,"component":345,"order":177},"BbProgress","\u002Fcomponents\u002Fbb-progress",{"title":348,"path":349,"component":348,"order":181},"BbSpinner","\u002Fcomponents\u002Fbb-spinner",{"title":351,"path":352,"component":351,"order":185},"BbToast","\u002Fcomponents\u002Fbb-toast",{"label":354,"entries":355},"Data Display",[356,359,362],{"title":357,"path":358,"component":357,"order":141},"BbAvatar","\u002Fcomponents\u002Fbb-avatar",{"title":360,"path":361,"component":360,"order":145},"BbIcon","\u002Fcomponents\u002Fbb-icon",{"title":363,"path":364,"component":363,"order":149},"BbTable","\u002Fcomponents\u002Fbb-table",{"label":366,"entries":367},"Layout & Utility",[368],{"title":369,"path":370,"component":369,"order":141},"BbSmoothHeight","\u002Fcomponents\u002Fbb-smooth-height",{"label":372,"entries":373},"Other",[374],{"title":375,"path":376,"component":375,"order":141},"BbAsterisk","\u002Fcomponents\u002Fbb-asterisk",null,{"id":379,"title":196,"body":380,"component":377,"description":2151,"extension":2152,"group":187,"meta":2153,"navigation":1339,"order":149,"path":197,"sections":2154,"seo":2161,"stem":2162,"__hash__":2163},"docs_en\u002Fguides\u002Fai-agents.md",{"type":381,"value":382,"toc":2143},"minimark",[383,387,390,406,409,417,420,448,471,483,489,496,519,522,554,561,588,613,631,634,650,656,671,674,694,697,734,737,761,764,794,797,817,829,838,844,858,943,946,954,957,1255,1278,1281,1376,1401,1439,1445,1452,1551,1558,1599,1613,1681,1684,1743,1757,1780,1785,1796,1814,1980,1990,1996,2121,2130,2139],[384,385,386],"p",{},"Most component libraries leave a coding agent to guess. It reads a prop name off\na blog post from two majors ago and writes markup that looks plausible. The\nmistake surfaces at runtime, or never: an unknown prop in Vue is an\nattribute.",[384,388,389],{},"bitboss-ui ships four things instead:",[391,392,393,397,400,403],"ul",{},[394,395,396],"li",{},"a knowledge base written for agents",[394,398,399],{},"a manifest of every component's real surface",[394,401,402],{},"a check that validates your markup and stylesheets against that manifest",[394,404,405],{},"an MCP server your agent can query directly",[384,407,408],{},"One command sets up all of it.",[410,411,413],"h2",{"id":412},"why",[414,415,416],"span",{},"Why this exists",[384,418,419],{},"Three failure modes cost the most, and each has a tool aimed at it.",[384,421,422,426,427,431,432,435,436,439,440,443,444,447],{},[423,424,425],"strong",{},"Invented props."," An agent writes ",[428,429,430],"code",{},"color=\"primary\""," because every other library\nhas one. v3 removed ",[428,433,434],{},"color"," from checkboxes, radios, switches, sliders, ratings, avatars, icons and spinners. Nothing throws; the attribute\nlands on the DOM node and does nothing. The same goes for names borrowed from\nelsewhere: ",[428,437,438],{},"toast.success()",", ",[428,441,442],{},"v-model:open"," on a dialog, ",[428,445,446],{},"variant=\"danger\"",".",[384,449,450,453,454,439,457,439,460,463,464,467,468,470],{},[423,451,452],{},"Stale API."," Training data is full of v2 and of earlier 3.0 betas.\n",[428,455,456],{},"showClose",[428,458,459],{},"allowWriting",[428,461,462],{},"noDataText"," and ",[428,465,466],{},"type"," on ",[428,469,360],{}," all read as\ncurrent and are all wrong.",[384,472,473,476,477,479,480,482],{},[423,474,475],{},"Right component, wrong situation."," ",[428,478,227],{}," and a multiple ",[428,481,261],{}," look\ninterchangeable until you notice one is for values the user invents.",[410,484,486],{"id":485},"setup",[414,487,488],{},"Point your agent at it",[384,490,491,492,495],{},"Run one command in the app, after installing ",[428,493,494],{},"bitboss-ui",":",[497,498,503],"pre",{"className":499,"code":500,"language":501,"meta":502,"style":502},"language-bash shiki shiki-themes github-light-high-contrast github-dark-high-contrast","npx bitboss-ui ai-init\n","bash","",[428,504,505],{"__ignoreMap":502},[414,506,508,512,516],{"class":507,"line":141},"line",[414,509,511],{"class":510},"soyes","npx",[414,513,515],{"class":514},"sT6z2"," bitboss-ui",[414,517,518],{"class":514}," ai-init\n",[384,520,521],{},"It does four things. It writes a pointer to the knowledge base for every\nassistant the project might use, so an agent finds the rules without being told:",[391,523,524,530,536,542,548],{},[394,525,526,529],{},[428,527,528],{},"AGENTS.md",", for Cursor, Codex and most other agents. The command adds a marked fragment and leaves the rest of the file alone.",[394,531,532,535],{},[428,533,534],{},".cursor\u002Frules\u002Fbitboss-ui.mdc",", for Cursor.",[394,537,538,541],{},[428,539,540],{},".github\u002Fcopilot-instructions.md",", for GitHub Copilot, again as a marked fragment.",[394,543,544,547],{},[428,545,546],{},".claude\u002Fskills\u002Fbitboss-ui\u002FSKILL.md",", for Claude Code.",[394,549,550,553],{},[428,551,552],{},".windsurf\u002Frules\u002Fbitboss-ui.md",", for Windsurf.",[384,555,556,557,560],{},"It sets ",[428,558,559],{},"vueCompilerOptions.checkUnknownComponents: true"," in your tsconfig, so\na mistyped or removed component is a type error (in Nuxt it tells you where to\nset it instead).",[384,562,563,564,569,570,439,573,576,577,580,581,463,584,587],{},"It registers the ",[565,566,568],"a",{"href":567},"#mcp","MCP server"," in ",[428,571,572],{},".mcp.json",[428,574,575],{},".cursor\u002Fmcp.json"," and\n",[428,578,579],{},".vscode\u002Fmcp.json",". And it installs the server's two dependencies,\n",[428,582,583],{},"@modelcontextprotocol\u002Fsdk",[428,585,586],{},"zod",", as dev dependencies, using the package\nmanager your lockfile names.",[384,589,590,591,593,594,439,596,439,599,602,603,463,606,608,609,612],{},"Every write is idempotent and merges rather than overwrites: your own lines in\n",[428,592,528],{}," and the other MCP servers you have configured survive. Some starters\n(Laravel's vue starter kit) git-ignore ",[428,595,528],{},[428,597,598],{},"CLAUDE.md",[428,600,601],{},".claude",",\n",[428,604,605],{},".cursor",[428,607,572],{},"; un-ignore them, or your teammates never get the pointers. Re-run it\nafter every upgrade, so the pointers name the version you have. ",[428,610,611],{},"--update"," is an\nalias that reads better in a script:",[497,614,616],{"className":499,"code":615,"language":501,"meta":502,"style":502},"npx bitboss-ui ai-init --update\n",[428,617,618],{"__ignoreMap":502},[414,619,620,622,624,627],{"class":507,"line":141},[414,621,511],{"class":510},[414,623,515],{"class":514},[414,625,626],{"class":514}," ai-init",[414,628,630],{"class":629},"s-5SL"," --update\n",[384,632,633],{},"To write the pointers only, with no MCP config and no install, opt out:",[497,635,637],{"className":499,"code":636,"language":501,"meta":502,"style":502},"npx bitboss-ui ai-init --no-mcp\n",[428,638,639],{"__ignoreMap":502},[414,640,641,643,645,647],{"class":507,"line":141},[414,642,511],{"class":510},[414,644,515],{"class":514},[414,646,626],{"class":514},[414,648,649],{"class":629}," --no-mcp\n",[410,651,653],{"id":652},"knowledge-base",[414,654,655],{},"What the agent reads",[384,657,658,659,662,663,666,667,670],{},"The knowledge base lives at ",[428,660,661],{},"node_modules\u002Fbitboss-ui\u002Fdist\u002Fai\u002F",", exported as\n",[428,664,665],{},"bitboss-ui\u002Fai",". It is a hop map, not one large document. The agent opens the router, then\n",[423,668,669],{},"one"," contract or recipe, and loads a few kilobytes instead of the whole\ncatalogue.",[384,672,673],{},"The route an agent takes:",[391,675,676,682,688],{},[394,677,678,681],{},[428,679,680],{},"guides\u002Fai-router.md",": start here. Which file to open next, in what order.",[394,683,684,687],{},[428,685,686],{},"guides\u002Fagent-contract.md",": the hard rules, before any code is written.",[394,689,690,693],{},[428,691,692],{},"guides\u002Fcomponent-picker.md",": which component fits a need, and the markup that means one already exists.",[384,695,696],{},"One contract per thing:",[391,698,699,712,728],{},[394,700,701,704,705,463,708,711],{},[428,702,703],{},"\u003CComponent>.md",": one per component, with props, events, slots, ",[428,706,707],{},"v-model",[428,709,710],{},"pt"," parts.",[394,713,714,717,718,439,721,724,725,447],{},[428,715,716],{},"composables\u002F\u003Cname>.md",": one per composable, such as ",[428,719,720],{},"useToast",[428,722,723],{},"useConfirm"," or ",[428,726,727],{},"useBbFormField",[394,729,730,733],{},[428,731,732],{},"source\u002F\u003CComponent>.md",": the component's full implementation (template, types, CSS). Only for rebuilding chrome the library does not ship.",[384,735,736],{},"Data for scripts and tools:",[391,738,739,745,755],{},[394,740,741,744],{},[428,742,743],{},"components.json",": the machine-readable API surface of every component, plus the public types.",[394,746,747,750,751,754],{},[428,748,749],{},"design-tokens.json",": the ",[428,752,753],{},"--bb-*"," tokens as data, covering colours, radius, type and spacing.",[394,756,757,760],{},[428,758,759],{},"changelog.json",": every breaking change since v2, with the version that shipped it.",[384,762,763],{},"Playbooks and the rest:",[391,765,766,772,778,788],{},[394,767,768,771],{},[428,769,770],{},"guides\u002F*.md",": cross-cutting playbooks on coherence, options and items, forms, passthrough.",[394,773,774,777],{},[428,775,776],{},"recipes\u002F{vue,nuxt,inertia}\u002F",": whole-page shapes, one file per platform.",[394,779,780,783,784,787],{},[428,781,782],{},"guides\u002Fmigration\u002F",": the v2 upgrade, the class renames between 3.0 betas, and ",[428,785,786],{},"v3-beta-tooling.md"," for scripts that parse these files.",[394,789,790,793],{},[428,791,792],{},"index.md",": the full catalogue. A last resort, not a first stop.",[384,795,796],{},"If the agent can only fetch URLs, the same knowledge base is hosted. Give it one\nof these:",[391,798,799,805,811],{},[394,800,801,804],{},[428,802,803],{},"https:\u002F\u002Fllms-bitboss-ui.bitboss.it\u002Fdist\u002Fllms-medium.txt",": about 260 KB, the\nrules, setup, component picker, design language and catalogue in one request.\nFetch this one if the agent takes only one.",[394,806,807,810],{},[428,808,809],{},"https:\u002F\u002Fllms-bitboss-ui.bitboss.it\u002Fllms.txt",": a 27 KB index of every\ndocument.",[394,812,813,816],{},[428,814,815],{},"https:\u002F\u002Fllms-bitboss-ui.bitboss.it\u002Fdist\u002Fllms-full.txt",": everything\nconcatenated, about 6 MB, for bulk ingestion only.",[384,818,819,820,602,823,463,826,447],{},"Installed, the three files resolve as ",[428,821,822],{},"bitboss-ui\u002Fllms.txt",[428,824,825],{},"bitboss-ui\u002Fllms-medium.txt",[428,827,828],{},"bitboss-ui\u002Fllms-full.txt",[384,830,831,833,834,837],{},[428,832,743],{}," is not a side artifact. ",[423,835,836],{},"Every API table on this site is\ngenerated from it."," The guides around the tables are written by hand, but the\nsurface you read here comes from the file an agent reads.",[410,839,841],{"id":840},"check",[414,842,843],{},"Checking the markup",[384,845,846,847,850,851,463,854,857],{},"The check validates ",[428,848,849],{},"Bb*"," markup in your ",[428,852,853],{},".vue",[428,855,856],{},".md"," files against the\ninstalled manifest, not against a copy of the rules. You are checked against the\nversion you actually have:",[497,859,861],{"className":499,"code":860,"language":501,"meta":502,"style":502},"# every .vue and .md below this directory\nnpx bitboss-ui check\n# one directory; prefer it to a quoted glob\nnpx bitboss-ui check src\n# only the files git reports changed: the fast loop after an edit\nnpx bitboss-ui check --changed\n# findings as JSON, for a CI annotation step\nnpx bitboss-ui check --json\n# also list what the app still builds by hand (report-only)\nnpx bitboss-ui check --idioms\n",[428,862,863,869,878,883,895,900,911,916,927,932],{"__ignoreMap":502},[414,864,865],{"class":507,"line":141},[414,866,868],{"class":867},"sLBg1","# every .vue and .md below this directory\n",[414,870,871,873,875],{"class":507,"line":145},[414,872,511],{"class":510},[414,874,515],{"class":514},[414,876,877],{"class":514}," check\n",[414,879,880],{"class":507,"line":149},[414,881,882],{"class":867},"# one directory; prefer it to a quoted glob\n",[414,884,885,887,889,892],{"class":507,"line":177},[414,886,511],{"class":510},[414,888,515],{"class":514},[414,890,891],{"class":514}," check",[414,893,894],{"class":514}," src\n",[414,896,897],{"class":507,"line":181},[414,898,899],{"class":867},"# only the files git reports changed: the fast loop after an edit\n",[414,901,902,904,906,908],{"class":507,"line":185},[414,903,511],{"class":510},[414,905,515],{"class":514},[414,907,891],{"class":514},[414,909,910],{"class":629}," --changed\n",[414,912,913],{"class":507,"line":225},[414,914,915],{"class":867},"# findings as JSON, for a CI annotation step\n",[414,917,918,920,922,924],{"class":507,"line":229},[414,919,511],{"class":510},[414,921,515],{"class":514},[414,923,891],{"class":514},[414,925,926],{"class":629}," --json\n",[414,928,929],{"class":507,"line":233},[414,930,931],{"class":867},"# also list what the app still builds by hand (report-only)\n",[414,933,934,936,938,940],{"class":507,"line":237},[414,935,511],{"class":510},[414,937,515],{"class":514},[414,939,891],{"class":514},[414,941,942],{"class":629}," --idioms\n",[384,944,945],{},"A finding names the file, the line and the fix:",[497,947,952],{"className":948,"code":950,"language":951,"meta":502},[949],"language-text","[bitboss-ui] check FAILED — 2 finding(s) across 1 file(s):\n\n  src\u002FCustomerForm.vue\n    ✗ line 6: prop `color` is not in BbButton's API\n    ✗ line 7: prop `show-close` was removed from BbDialog; use `hideClose`\n      hint: ai\u002Fguides\u002Fmigration\u002Fcomponents\u002Fbb-dialog.md\n","text",[428,953,950],{"__ignoreMap":502},[384,955,956],{},"It exits non-zero on findings, which makes it a CI step. It also exits non-zero\nwhen an explicit path matches nothing, so a typo in a CI path cannot validate\nzero files and pass. What it reports, grouped:",[958,959,960,973],"table",{},[961,962,963],"thead",{},[964,965,966,970],"tr",{},[967,968,969],"th",{},"Area",[967,971,972],{},"Findings",[974,975,976,1005,1025,1092,1127,1180,1206,1235],"tbody",{},[964,977,978,982],{},[979,980,981],"td",{},"Markup",[979,983,984,985,987,988,991,992,467,995,997,998,724,1001,1004],{},"unknown or removed props, ",[428,986,707],{}," targets, events and slots; a variant from another library (",[428,989,990],{},"unknown-variant",": ",[428,993,994],{},"danger",[428,996,336],{},"); ",[428,999,1000],{},"href",[428,1002,1003],{},"method"," on a component that ignores them",[964,1006,1007,1010],{},[979,1008,1009],{},"Accessibility",[979,1011,1012,1013,724,1015,1017,1018,1020,1021,1024],{},"an icon-only ",[428,1014,205],{},[428,1016,339],{},", or a ",[428,1019,345],{},", with no accessible name (",[428,1022,1023],{},"nameless-control",")",[964,1026,1027,1030],{},[979,1028,1029],{},"Items",[979,1031,1032,1033,1036,1037,1040,1041,1043,1044,1047,1048,1051,1052,1054,1055,1058,1059,1062,1063,1054,1066,1047,1068,1071,1072,1047,1075,1078,1079,1047,1082,1085,1086,1088,1089,1024],{},"object ",[428,1034,1035],{},"items"," with neither a ",[428,1038,1039],{},"label"," nor a ",[428,1042,951],{}," key and no ",[428,1045,1046],{},"item-text"," (",[428,1049,1050],{},"object-items-without-text","); an ",[428,1053,1046],{}," \u002F ",[428,1056,1057],{},"item-value"," that restates the default (",[428,1060,1061],{},"redundant-item-accessor",", a warning); a dropdown, tab or breadcrumb item still spelled ",[428,1064,1065],{},"key",[428,1067,951],{},[428,1069,1070],{},"renamed-item-field","); a dropdown row in a selectable group with no ",[428,1073,1074],{},"value",[428,1076,1077],{},"missing-value",") or a selectable group with no ",[428,1080,1081],{},"id",[428,1083,1084],{},"missing-id","); a ",[428,1087,363],{}," column keyed like one of its own slots (",[428,1090,1091],{},"reserved-key",[964,1093,1094,1097],{},[979,1095,1096],{},"Forms",[979,1098,1099,1101,1102,1047,1104,1107,1108,1111,1112,1115,1116,439,1119,1122,1123,1126],{},[428,1100,707],{}," on a ",[428,1103,220],{},[428,1105,1106],{},"form-v-model",": it takes ",[428,1109,1110],{},":model","); two fields on one path, a row in a ",[428,1113,1114],{},"v-for"," with no ",[428,1117,1118],{},"name",[428,1120,1121],{},"rules"," a ",[428,1124,1125],{},"schema"," will ignore, a string rule nothing registers",[964,1128,1129,1132],{},[979,1130,1131],{},"Integration",[979,1133,1134,1135,1137,1138,1141,1142,1144,1145,1085,1148,1150,1151,1047,1154,1085,1157,1101,1159,1162,1163,1166,1167,1085,1170,1054,1173,1176,1177,1024],{},"a ",[428,1136,849],{}," tag the file never imports, which renders empty (",[428,1139,1140],{},"unimported-component","); a trigger in a ",[428,1143,291],{},"'s default slot, which opens nothing (",[428,1146,1147],{},"dropdown-default-slot",[428,1149,321],{}," toggle with no ",[428,1152,1153],{},"aria-expanded",[428,1155,1156],{},"collapsible-trigger-aria",[428,1158,707],{},[428,1160,1161],{},"reactive()"," const (",[428,1164,1165],{},"reactive-v-model","); a portal name nothing declares (",[428,1168,1169],{},"unknown-portal",[428,1171,1172],{},"v-bb-dialog",[428,1174,1175],{},"v-bb-off-canvas"," or context id no dialog declares (",[428,1178,1179],{},"unknown-dialog",[964,1181,1182,1185],{},[979,1183,1184],{},"Your components",[979,1186,1187,1188,1191,1192,1195,1196,724,1199,1201,1202,1205],{},"a wrapper that declares ",[428,1189,1190],{},"Bb*Props"," and never passes some of them on (",[428,1193,1194],{},"wrapper-drops-props","): a caller's ",[428,1197,1198],{},"disabled",[428,1200,710],{}," goes nowhere; ",[565,1203,183],{"href":1204},"\u002Fen\u002Fguides\u002Fpreset-components#wrapper"," shows the fix",[964,1207,1208,1211],{},[979,1209,1210],{},"Stylesheets",[979,1212,1213,1214,1217,1218,439,1221,1224,1225,439,1228,1231,1232],{},"a selector on a ",[428,1215,1216],{},".bb-*"," class the library no longer renders (",[428,1219,1220],{},"unknown-class",[428,1222,1223],{},"renamed-class","), a token or local nothing reads (",[428,1226,1227],{},"inert-token",[428,1229,1230],{},"inert-local","), a hand-imported ",[428,1233,1234],{},"styles.css",[964,1236,1237,1240],{},[979,1238,1239],{},"Imports",[979,1241,1242,1243,1246,1247,1250,1251,1254],{},"the retired ",[428,1244,1245],{},"bitboss-ui\u002Fvalidated"," entrypoint, an import from inside ",[428,1248,1249],{},"dist\u002F",", a ",[428,1252,1253],{},"Pt*"," type the package does not export",[384,1256,1257,1260,1261,1263,1264,1266,1267,463,1270,1273,1274,1277],{},[428,1258,1259],{},"npx bitboss-ui check --fix"," applies the automatic migrations to your ",[428,1262,853],{},"\nfiles first (renamed props, slots and ",[428,1265,710],{}," keys, inverted booleans, retired\nimports), then reports what is left for you. It needs ",[428,1268,1269],{},"eslint",[428,1271,1272],{},"vue-eslint-parser"," installed. The\ncheck respects ",[428,1275,1276],{},"eslint-disable"," comments, so a finding you silenced on purpose\ndoes not fail CI.",[384,1279,1280],{},"Around an upgrade, judge your code against the new version before you install\nit, then list what broke since the version you were on:",[497,1282,1284],{"className":499,"code":1283,"language":501,"meta":502,"style":502},"# before installing: which of your files the new version breaks\nnpm pack bitboss-ui@beta && tar -xzf bitboss-ui-*.tgz\nnpx bitboss-ui check --manifest package\u002Fdist\u002Fai\u002Fcomponents.json\n\n# after installing: every break since the version you had\n# (the one npm ls bitboss-ui printed before the upgrade)\nnpx bitboss-ui changelog --since \u003Cold-version>\n",[428,1285,1286,1291,1321,1335,1341,1346,1351],{"__ignoreMap":502},[414,1287,1288],{"class":507,"line":141},[414,1289,1290],{"class":867},"# before installing: which of your files the new version breaks\n",[414,1292,1293,1296,1299,1302,1306,1309,1312,1315,1318],{"class":507,"line":145},[414,1294,1295],{"class":510},"npm",[414,1297,1298],{"class":514}," pack",[414,1300,1301],{"class":514}," bitboss-ui@beta",[414,1303,1305],{"class":1304},"suds8"," && ",[414,1307,1308],{"class":510},"tar",[414,1310,1311],{"class":629}," -xzf",[414,1313,1314],{"class":514}," bitboss-ui-",[414,1316,1317],{"class":629},"*",[414,1319,1320],{"class":514},".tgz\n",[414,1322,1323,1325,1327,1329,1332],{"class":507,"line":149},[414,1324,511],{"class":510},[414,1326,515],{"class":514},[414,1328,891],{"class":514},[414,1330,1331],{"class":629}," --manifest",[414,1333,1334],{"class":514}," package\u002Fdist\u002Fai\u002Fcomponents.json\n",[414,1336,1337],{"class":507,"line":177},[414,1338,1340],{"emptyLinePlaceholder":1339},true,"\n",[414,1342,1343],{"class":507,"line":181},[414,1344,1345],{"class":867},"# after installing: every break since the version you had\n",[414,1347,1348],{"class":507,"line":185},[414,1349,1350],{"class":867},"# (the one npm ls bitboss-ui printed before the upgrade)\n",[414,1352,1353,1355,1357,1360,1363,1367,1370,1373],{"class":507,"line":225},[414,1354,511],{"class":510},[414,1356,515],{"class":514},[414,1358,1359],{"class":514}," changelog",[414,1361,1362],{"class":629}," --since",[414,1364,1366],{"class":1365},"sHUrx"," \u003C",[414,1368,1369],{"class":514},"old-versio",[414,1371,1372],{"class":1304},"n",[414,1374,1375],{"class":1365},">\n",[384,1377,1378,1379,1382,1383,1385,1386,1389,1390,1393,1394,569,1397,1400],{},"Do not name your own components ",[428,1380,1381],{},"Bb…","; use your app's prefix. If you already\nhave one, the check leaves it alone when it can see it is yours (imported from a\nlocal file, or a ",[428,1384,853],{}," in your ",[428,1387,1388],{},"components\u002F"," directories) and prints a single\n",[428,1391,1392],{},"local-bb-component"," warning. ",[428,1395,1396],{},"allowComponents",[428,1398,1399],{},"package.json"," is only for a\ncomponent registered globally, where no import shows:",[497,1402,1406],{"className":1403,"code":1404,"filename":1399,"language":1405,"meta":502,"style":502},"language-json shiki shiki-themes github-light-high-contrast github-dark-high-contrast","{\n    \"bitboss-ui\": { \"allowComponents\": [\"BbRichEditor\"] }\n}\n","json",[428,1407,1408,1413,1434],{"__ignoreMap":502},[414,1409,1410],{"class":507,"line":141},[414,1411,1412],{"class":1304},"{\n",[414,1414,1415,1419,1422,1425,1428,1431],{"class":507,"line":145},[414,1416,1418],{"class":1417},"sne4z","    \"bitboss-ui\"",[414,1420,1421],{"class":1304},": { ",[414,1423,1424],{"class":1417},"\"allowComponents\"",[414,1426,1427],{"class":1304},": [",[414,1429,1430],{"class":514},"\"BbRichEditor\"",[414,1432,1433],{"class":1304},"] }\n",[414,1435,1436],{"class":507,"line":149},[414,1437,1438],{"class":1304},"}\n",[410,1440,1442],{"id":1441},"mcp",[414,1443,1444],{},"The MCP server",[384,1446,1447,1448,1451],{},"The MCP server answers the same questions as the files in ",[428,1449,1450],{},"dist\u002Fai\u002F",", as tool\ncalls: an agent asks for one component or one list of changes instead of\nopening files.",[958,1453,1454,1464],{},[961,1455,1456],{},[964,1457,1458,1461],{},[967,1459,1460],{},"Tool",[967,1462,1463],{},"Answers",[974,1465,1466,1476,1492,1508,1521,1531,1541],{},[964,1467,1468,1473],{},[979,1469,1470],{},[428,1471,1472],{},"search_docs",[979,1474,1475],{},"\"How do I…\": the guide or component section that answers it, old names included",[964,1477,1478,1486],{},[979,1479,1480,439,1483],{},[428,1481,1482],{},"search_components",[428,1484,1485],{},"get_component",[979,1487,1488,1489,1491],{},"The catalogue, then one component: every prop, event, slot and ",[428,1490,710],{}," part. Also resolves type names and renamed v2 or beta names",[964,1493,1494,1505],{},[979,1495,1496,439,1499,439,1502],{},[428,1497,1498],{},"get_guide",[428,1500,1501],{},"list_guides",[428,1503,1504],{},"get_composable",[979,1506,1507],{},"A playbook or a composable's contract",[964,1509,1510,1518],{},[979,1511,1512,439,1515],{},[428,1513,1514],{},"list_recipes",[428,1516,1517],{},"get_recipe",[979,1519,1520],{},"Whole-page shapes for Vue, Nuxt and Inertia",[964,1522,1523,1528],{},[979,1524,1525],{},[428,1526,1527],{},"list_tokens",[979,1529,1530],{},"The design tokens and their values",[964,1532,1533,1538],{},[979,1534,1535],{},[428,1536,1537],{},"list_changes",[979,1539,1540],{},"The breaking changes between two versions, class renames included",[964,1542,1543,1548],{},[979,1544,1545],{},[428,1546,1547],{},"validate",[979,1549,1550],{},"The markup check, on a snippet",[384,1552,1553,1554,1557],{},"You never start the server yourself. ",[428,1555,1556],{},"ai-init"," registers it, and the harness\nlaunches it on demand. Restart the harness once after the first run so it picks\nthe server up. Each harness gets an entry in its own format:",[958,1559,1560,1570],{},[961,1561,1562],{},[964,1563,1564,1567],{},[967,1565,1566],{},"File",[967,1568,1569],{},"Harness",[974,1571,1572,1581,1590],{},[964,1573,1574,1578],{},[979,1575,1576],{},[428,1577,572],{},[979,1579,1580],{},"Claude Code",[964,1582,1583,1587],{},[979,1584,1585],{},[428,1586,575],{},[979,1588,1589],{},"Cursor",[964,1591,1592,1596],{},[979,1593,1594],{},[428,1595,579],{},[979,1597,1598],{},"VS Code and Copilot",[384,1600,1601,1602,1605,1606,1608,1609,1612],{},"The entry runs the installed binary, ",[428,1603,1604],{},"node node_modules\u002Fbitboss-ui\u002Fbin\u002Fbitboss-ui.mjs mcp",",\nnot ",[428,1607,511],{},". That way it cannot fetch anything from the registry and always answers\nfrom the version in your ",[428,1610,1611],{},"node_modules",". The path is relative to the project, so\ncommit these files and the server works for your teammates too:",[497,1614,1616],{"className":1403,"code":1615,"filename":572,"language":1405,"meta":502,"style":502},"{\n    \"mcpServers\": {\n        \"bitboss-ui\": {\n            \"command\": \"node\",\n            \"args\": [\"node_modules\u002Fbitboss-ui\u002Fbin\u002Fbitboss-ui.mjs\", \"mcp\"]\n        }\n    }\n}\n",[428,1617,1618,1622,1630,1637,1649,1667,1672,1677],{"__ignoreMap":502},[414,1619,1620],{"class":507,"line":141},[414,1621,1412],{"class":1304},[414,1623,1624,1627],{"class":507,"line":145},[414,1625,1626],{"class":1417},"    \"mcpServers\"",[414,1628,1629],{"class":1304},": {\n",[414,1631,1632,1635],{"class":507,"line":149},[414,1633,1634],{"class":1417},"        \"bitboss-ui\"",[414,1636,1629],{"class":1304},[414,1638,1639,1642,1644,1647],{"class":507,"line":177},[414,1640,1641],{"class":1417},"            \"command\"",[414,1643,991],{"class":1304},[414,1645,1646],{"class":514},"\"node\"",[414,1648,602],{"class":1304},[414,1650,1651,1654,1656,1659,1661,1664],{"class":507,"line":181},[414,1652,1653],{"class":1417},"            \"args\"",[414,1655,1427],{"class":1304},[414,1657,1658],{"class":514},"\"node_modules\u002Fbitboss-ui\u002Fbin\u002Fbitboss-ui.mjs\"",[414,1660,439],{"class":1304},[414,1662,1663],{"class":514},"\"mcp\"",[414,1665,1666],{"class":1304},"]\n",[414,1668,1669],{"class":507,"line":185},[414,1670,1671],{"class":1304},"        }\n",[414,1673,1674],{"class":507,"line":225},[414,1675,1676],{"class":1304},"    }\n",[414,1678,1679],{"class":507,"line":229},[414,1680,1438],{"class":1304},[384,1682,1683],{},"Three things to know:",[391,1685,1686,1707,1723],{},[394,1687,1688,1691,1692,1695,1696,1699,1700,1702,1703,1706],{},[423,1689,1690],{},"Windsurf is not registered",": it reads one global config in your home\ndirectory, and a project command should not edit that. Add the entry to\n",[428,1693,1694],{},"~\u002F.codeium\u002Fwindsurf\u002Fmcp_config.json"," yourself, with the absolute path to this\nproject's ",[428,1697,1698],{},"node_modules\u002Fbitboss-ui\u002Fbin\u002Fbitboss-ui.mjs",". ",[428,1701,1556],{}," still writes\nthe ",[428,1704,1705],{},".windsurf\u002Frules"," pointer.",[394,1708,1709,476,1712,576,1714,1716,1717,1719,1720,1722],{},[423,1710,1711],{},"The two dependencies are optional peers.",[428,1713,583],{},[428,1715,586],{}," weigh about 12 MB, so installing ",[428,1718,494],{}," never pulls them in.\n",[428,1721,1556],{}," installs them; if that fails, it prints the command and writes the\nconfig files anyway.",[394,1724,1725,1728,1729,1731,1732,1735,1736,1739,1740,447],{},[423,1726,1727],{},"You can skip the server and lose no knowledge."," It only reads\n",[428,1730,661],{},", and ",[428,1733,1734],{},"npx bitboss-ui check"," runs without\nthe peers. If the project cannot take new dependencies, run\n",[428,1737,1738],{},"ai-init --no-mcp"," and point the agent at ",[428,1741,1742],{},"dist\u002Fai\u002Fguides\u002Fai-router.md",[384,1744,1745,1746,1749,1750,1752,1753,1756],{},"In a Vite or Nuxt app, the plugin can register the server instead: pass\n",[428,1747,1748],{},"mcp: true"," and the dev server writes the same three files on boot. It never\ninstalls anything, so run ",[428,1751,1556],{}," once for the peers. See\n",[565,1754,139],{"href":1755},"\u002Fen\u002Fguides\u002Finstallation#options"," for the option.",[497,1758,1763],{"className":1759,"code":1760,"filename":1761,"language":1762,"meta":502,"style":502},"language-ts shiki shiki-themes github-light-high-contrast github-dark-high-contrast","bitbossUi({ mcp: true });\n","vite.config.ts","ts",[428,1764,1765],{"__ignoreMap":502},[414,1766,1767,1771,1774,1777],{"class":507,"line":141},[414,1768,1770],{"class":1769},"sKwhi","bitbossUi",[414,1772,1773],{"class":1304},"({ mcp: ",[414,1775,1776],{"class":629},"true",[414,1778,1779],{"class":1304}," });\n",[410,1781,1782],{"id":1269},[414,1783,1784],{},"Catching it in the editor",[384,1786,1787,1788,1791,1792,1795],{},"The library ships an ESLint plugin, so the same manifest checks run while typing\nrather than at review. The recommended preset is an array: spread it. It parses\n",[428,1789,1790],{},"\u003Cscript setup lang=\"ts\">"," once ",[428,1793,1794],{},"@typescript-eslint\u002Fparser"," is installed.",[497,1797,1799],{"className":499,"code":1798,"language":501,"meta":502,"style":502},"npm i -D @typescript-eslint\u002Fparser\n",[428,1800,1801],{"__ignoreMap":502},[414,1802,1803,1805,1808,1811],{"class":507,"line":141},[414,1804,1295],{"class":510},[414,1806,1807],{"class":514}," i",[414,1809,1810],{"class":629}," -D",[414,1812,1813],{"class":514}," @typescript-eslint\u002Fparser\n",[497,1815,1820],{"className":1816,"code":1817,"filename":1818,"language":1819,"meta":502,"style":502},"language-js shiki shiki-themes github-light-high-contrast github-dark-high-contrast","import vue from 'eslint-plugin-vue';\nimport tsParser from '@typescript-eslint\u002Fparser';\nimport bitbossUi from 'bitboss-ui\u002Feslint-plugin';\n\nexport default [\n    ...vue.configs['flat\u002Frecommended'],\n    { files: ['**\u002F*.ts'], languageOptions: { parser: tsParser } },\n    {\n        files: ['**\u002F*.vue'],\n        languageOptions: { parserOptions: { parser: tsParser } },\n    },\n    ...bitbossUi.configs.recommended,\n];\n","eslint.config.js","js",[428,1821,1822,1839,1853,1867,1871,1882,1904,1926,1931,1943,1950,1955,1973],{"__ignoreMap":502},[414,1823,1824,1827,1830,1833,1836],{"class":507,"line":141},[414,1825,1826],{"class":1365},"import",[414,1828,1829],{"class":1304}," vue ",[414,1831,1832],{"class":1365},"from",[414,1834,1835],{"class":514}," 'eslint-plugin-vue'",[414,1837,1838],{"class":1304},";\n",[414,1840,1841,1843,1846,1848,1851],{"class":507,"line":145},[414,1842,1826],{"class":1365},[414,1844,1845],{"class":1304}," tsParser ",[414,1847,1832],{"class":1365},[414,1849,1850],{"class":514}," '@typescript-eslint\u002Fparser'",[414,1852,1838],{"class":1304},[414,1854,1855,1857,1860,1862,1865],{"class":507,"line":149},[414,1856,1826],{"class":1365},[414,1858,1859],{"class":1304}," bitbossUi ",[414,1861,1832],{"class":1365},[414,1863,1864],{"class":514}," 'bitboss-ui\u002Feslint-plugin'",[414,1866,1838],{"class":1304},[414,1868,1869],{"class":507,"line":177},[414,1870,1340],{"emptyLinePlaceholder":1339},[414,1872,1873,1876,1879],{"class":507,"line":181},[414,1874,1875],{"class":1365},"export",[414,1877,1878],{"class":1365}," default",[414,1880,1881],{"class":510}," [\n",[414,1883,1884,1887,1890,1892,1895,1898,1901],{"class":507,"line":185},[414,1885,1886],{"class":1365},"    ...",[414,1888,1889],{"class":1304},"vue",[414,1891,447],{"class":510},[414,1893,1894],{"class":1304},"configs",[414,1896,1897],{"class":510},"[",[414,1899,1900],{"class":514},"'flat\u002Frecommended'",[414,1902,1903],{"class":510},"],\n",[414,1905,1906,1909,1912,1915,1918,1920,1923],{"class":507,"line":225},[414,1907,1908],{"class":510},"    { ",[414,1910,1911],{"class":1304},"files: [",[414,1913,1914],{"class":514},"'**\u002F*.ts'",[414,1916,1917],{"class":1304},"]",[414,1919,439],{"class":510},[414,1921,1922],{"class":1304},"languageOptions: { parser: tsParser } ",[414,1924,1925],{"class":510},"},\n",[414,1927,1928],{"class":507,"line":229},[414,1929,1930],{"class":510},"    {\n",[414,1932,1933,1936,1939,1941],{"class":507,"line":233},[414,1934,1935],{"class":1304},"        files: [",[414,1937,1938],{"class":514},"'**\u002F*.vue'",[414,1940,1917],{"class":1304},[414,1942,602],{"class":510},[414,1944,1945,1948],{"class":507,"line":237},[414,1946,1947],{"class":1304},"        languageOptions: { parserOptions: { parser: tsParser } }",[414,1949,602],{"class":510},[414,1951,1952],{"class":507,"line":241},[414,1953,1954],{"class":510},"    },\n",[414,1956,1958,1960,1962,1964,1966,1968,1971],{"class":507,"line":1957},12,[414,1959,1886],{"class":1365},[414,1961,1770],{"class":1304},[414,1963,447],{"class":510},[414,1965,1894],{"class":1304},[414,1967,447],{"class":510},[414,1969,1970],{"class":1304},"recommended",[414,1972,602],{"class":510},[414,1974,1976,1978],{"class":507,"line":1975},13,[414,1977,1917],{"class":510},[414,1979,1838],{"class":1304},[384,1981,1982,1983,1985,1986,1989],{},"Without the TypeScript parser, every ",[428,1984,853],{}," file with a TS script block fails to\nparse, and no rule runs on it at all. ",[428,1987,1988],{},"eslint --fix"," applies the registered v2\nrenames and polarity flips; a \"did you mean\" hint is never applied for you.",[384,1991,1992,1993,1995],{},"Beyond unknown props, slots and events, ",[428,1994,1970],{}," flags the mistakes that\nrender without complaint:",[391,1997,1998,2004,2015,2024,2033,2041,2049,2057,2066,2072,2080,2090,2099,2110],{},[394,1999,2000,2001,1024],{},"an icon-only button with no accessible name (",[428,2002,2003],{},"require-accessible-name",[394,2005,2006,1101,2008,1115,2010,1047,2012,1024],{},[428,2007,1003],{},[428,2009,205],{},[428,2011,1000],{},[428,2013,2014],{},"require-partner-prop",[394,2016,2017,2018,2020,2021,1024],{},"a string rule in ",[428,2019,1121],{}," that nothing registers (",[428,2022,2023],{},"no-unregistered-rule",[394,2025,1134,2026,1101,2028,1047,2030,1024],{},[428,2027,707],{},[428,2029,220],{},[428,2031,2032],{},"form-model",[394,2034,2035,2036,2038,2039,1024],{},"a trigger in a ",[428,2037,291],{},"'s default slot (",[428,2040,1147],{},[394,2042,1134,2043,2045,2046,1024],{},[428,2044,849],{}," tag the file never imports (",[428,2047,2048],{},"no-unimported-component",[394,2050,1134,2051,1150,2053,1047,2055,1024],{},[428,2052,321],{},[428,2054,1153],{},[428,2056,1156],{},[394,2058,1134,2059,1101,2061,1162,2063,1024],{},[428,2060,707],{},[428,2062,1161],{},[428,2064,2065],{},"no-reactive-v-model",[394,2067,2068,2069,1024],{},"a portal name, or a dialog id, nothing declares (",[428,2070,2071],{},"portal-names",[394,2073,2074,2075,1047,2077,1024],{},"an import from ",[428,2076,1245],{},[428,2078,2079],{},"no-retired-entrypoint",[394,2081,1134,2082,2085,2086,2089],{},[428,2083,2084],{},"var(--bb-…)"," token the library does not declare (",[428,2087,2088],{},"no-unknown-token",", a warning)",[394,2091,2092,2093,1047,2096,1024],{},"a v2 ",[428,2094,2095],{},":reverse=\"false\"",[428,2097,2098],{},"no-reverse-false",[394,2100,2101,2102,1054,2104,1047,2106,2109],{},"a dropdown, tab or breadcrumb item still spelled ",[428,2103,1065],{},[428,2105,951],{},[428,2107,2108],{},"no-renamed-item-field",", which rewrites it)",[394,2111,2112,2113,1054,2115,1058,2117,2120],{},"an ",[428,2114,1046],{},[428,2116,1057],{},[428,2118,2119],{},"no-redundant-item-accessor",", a warning it fixes)",[384,2122,2123,2124,1047,2127,2129],{},"Keep explicit imports. With ",[428,2125,2126],{},"checkUnknownComponents",[428,2128,1556],{}," sets it), a\nmistyped or removed component becomes a type error instead of an empty space on\nthe page.",[384,2131,2132,2133,2135,2136,2138],{},"The shortest reliable setup is ",[428,2134,1556],{},", the recommended ESLint config and\n",[428,2137,1734],{}," in CI. Add MCP when the agent can use tools; keep the\nfile-based knowledge pointers either way, because they remain available to every\nagent and in offline work.",[2140,2141,2142],"style",{},"html pre.shiki code .soyes, html code.shiki .soyes{--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .sT6z2, html code.shiki .sT6z2{--shiki-default:#032563;--shiki-dark:#ADDCFF}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);}html pre.shiki code .s-5SL, html code.shiki .s-5SL{--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .sLBg1, html code.shiki .sLBg1{--shiki-default:#66707B;--shiki-dark:#BDC4CC}html pre.shiki code .suds8, html code.shiki .suds8{--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sHUrx, html code.shiki .sHUrx{--shiki-default:#A0111F;--shiki-dark:#FF9492}html pre.shiki code .sne4z, html code.shiki .sne4z{--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .sKwhi, html code.shiki .sKwhi{--shiki-default:#622CBC;--shiki-dark:#DBB7FF}",{"title":502,"searchDepth":149,"depth":149,"links":2144},[2145,2146,2147,2148,2149,2150],{"id":412,"depth":145,"text":416},{"id":485,"depth":145,"text":488},{"id":652,"depth":145,"text":655},{"id":840,"depth":145,"text":843},{"id":1441,"depth":145,"text":1444},{"id":1269,"depth":145,"text":1784},"Wire your agent to the library's knowledge base, manifest, markup check, MCP server and ESLint plugin.","md",{},[2155,2156,2157,2158,2159,2160],{"id":412,"title":416},{"id":485,"title":488},{"id":652,"title":655},{"id":840,"title":843},{"id":1441,"title":1444},{"id":1269,"title":1784},{"title":196,"description":2151},"guides\u002Fai-agents","dIyDRC7-gcgzOcodztkuiQFar1OMYf2pxw0-DfavhnE",1793055147917]