[{"data":1,"prerenderedAt":1918},["ShallowReactive",2],{"locale-alternates":3,"docs-nav-en":134,"api-none":377,"page-en-\u002Fcomponents\u002Fbb-number-input":378,"pt-showcase-BbNumberInput":1564},{"\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":223,"body":380,"component":223,"description":1547,"extension":1548,"group":199,"meta":1549,"navigation":1550,"order":225,"path":224,"sections":1551,"seo":1561,"stem":1562,"__hash__":1563},"docs_en\u002Fcomponents\u002Fbb-number-input.md",{"type":381,"value":382,"toc":1536},"minimark",[383,436,442,451,471,478,485,523,527,542,553,559,587,590,609,686,710,737,743,810,813,822,825,884,893,899,946,949,956,967,986,992,1035,1038,1123,1158,1191,1207,1213,1250,1253,1259,1273,1279,1302,1305,1330,1378,1384,1400,1403,1418,1424,1444,1447,1467,1494,1497,1508,1532],[384,385,386,402],"when",{},[387,388,389,390,393,394,397,398,401],"p",{},"Reach for ",[391,392,223],"code",{}," whenever the value is a number somebody types: a\nquantity, a price, an age, a threshold, a rate limit. It cleans up what they\ntype, clamps to ",[391,395,396],{},"min"," and ",[391,399,400],{},"max",", and hands you a real number.",[403,404,406],"template",{"v-slot:else":405},"",[407,408,409,418,425],"ul",{},[410,411,412,417],"li",{},[413,414,415],"a",{"href":74},[391,416,267],{},", when a bounded value is better dragged\nthan typed",[410,419,420,424],{},[413,421,422],{"href":68},[391,423,258],{},", when it is a score on a fixed scale",[410,426,427,431,432,435],{},[413,428,429],{"href":90},[391,430,235],{}," with a ",[391,433,434],{},"mask",", when the digits\nare an identifier: a postcode, an order number, anywhere leading zeros matter",[387,437,438,439,441],{},"Also see: ",[413,440,175],{"href":132},".",[387,443,444,445,447,448,450],{},"In v3, numeric text fields move from ",[391,446,235],{}," to ",[391,449,223],{},":",[452,453,457],"pre",{"className":454,"code":455,"language":456,"meta":405,"style":405},"language-diff shiki shiki-themes github-light-high-contrast github-dark-high-contrast","- \u003CBbTextInput v-model=\"quantity\" type=\"number\" label=\"Quantity\" \u002F>\n+ \u003CBbNumberInput v-model=\"quantity\" label=\"Quantity\" \u002F>\n","diff",[391,458,459,466],{"__ignoreMap":405},[460,461,463],"span",{"class":462,"line":141},"line",[460,464,465],{},"- \u003CBbTextInput v-model=\"quantity\" type=\"number\" label=\"Quantity\" \u002F>\n",[460,467,468],{"class":462,"line":145},[460,469,470],{},"+ \u003CBbNumberInput v-model=\"quantity\" label=\"Quantity\" \u002F>\n",[387,472,473,474,477],{},"The shared field props carry across; ",[391,475,476],{},"type"," does not.",[479,480,482],"h2",{"id":481},"default",[460,483,484],{},"Default",[387,486,487,493,494,500,501,504,505,511,512,515,516,519,520,441],{},[413,488,490],{"href":489},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-label",[391,491,492],{},"label"," is required, and ",[413,495,497],{"href":496},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#model-modelValue",[391,498,499],{},"v-model"," is the whole of the wiring. The model takes\n",[391,502,503],{},"number | string | null"," and the field emits ",[506,507,508],"strong",{},[391,509,510],{},"number | null",". A cleared\nfield emits ",[391,513,514],{},"null",", never ",[391,517,518],{},"''"," and never ",[391,521,522],{},"NaN",[524,525],"demo",{"name":526},"BbNumberInput\u002FBasic",[387,528,529,531,532,538,539,541],{},[391,530,492],{}," does not set ",[413,533,535],{"href":534},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-name",[391,536,537],{},"name",". Pass ",[391,540,537],{}," for native form submission.",[387,543,544,545,548,549,552],{},"While the text is incomplete, such as ",[391,546,547],{},"-"," or ",[391,550,551],{},"12.",", the model keeps its last\nparsed value.",[479,554,556],{"id":555},"locale",[460,557,558],{},"Locale display",[387,560,561,562,567,568,571,572,575,576,579,580,583,584,441],{},"The field writes its number the way the app's\n",[413,563,565],{"href":564},"\u002Fen\u002Fguides\u002Finstallation#locales",[391,566,555],{}," writes numbers, while the user\ntypes. In English ",[391,569,570],{},"10005.6"," shows ",[391,573,574],{},"10,005.6","; in an Italian app it shows\n",[391,577,578],{},"10.005,6",". Grouping follows each locale, so Italian shows ",[391,581,582],{},"1000"," and starts\ngrouping at ",[391,585,586],{},"10.000",[524,588],{"name":589},"BbNumberInput\u002FLocaleDisplay",[387,591,592,595,596,548,599,601,602,605,606,441],{},[506,593,594],{},"Type the digits; the field groups them."," Whichever of ",[391,597,598],{},",",[391,600,441],{}," the user\npresses starts the decimals, so nobody types a thousands separator. Delete the\ndigits and type ",[391,603,604],{},"1234,5",": the field shows ",[391,607,608],{},"1,234.5",[407,610,611,619,653,659],{},[410,612,613,618],{},[506,614,615,617],{},[391,616,547],{}," typed anywhere flips the sign",", and the caret stays on its digit.",[410,620,621,624,625,628,629,632,633,636,637,640,641,644,645,648,649,652],{},[506,622,623],{},"A paste is read as a number."," Written the locale's way, it is read that\nway: ",[391,626,627],{},"1,234"," pasted here is 1234, and ",[391,630,631],{},"1.000"," pasted in Italian is 1000.\nThe rest is cleaned up. Symbols and words go (",[391,634,635],{},"$1,234.56"," is 1234.56,\n",[391,638,639],{},"15 m²"," is 15), accounting brackets are negative (",[391,642,643],{},"(1,234.56)"," is -1234.56)\nand ",[391,646,647],{},"1.2E+05"," is 120000. Only the first of several numbers is kept\n(",[391,650,651],{},"$1,234.56 - $2,000"," is 1234.56).",[410,654,655,658],{},[506,656,657],{},"The field holds 20 characters."," A key, a paste or an autofill past that is\nrefused and the field keeps its number; nothing is cut short.",[410,660,661,664,665,668,669,672,673,668,676,679,680,441],{},[506,662,663],{},"Blur and Enter tidy the text"," from the value: ",[391,666,667],{},"1.50"," becomes ",[391,670,671],{},"1.5"," and\n",[391,674,675],{},"007",[391,677,678],{},"7",". Keep trailing zeros with\n",[413,681,683],{"href":682},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-minPrecision",[391,684,685],{},"min-precision",[387,687,688,689,693,694,696,697,699,700,706,707,709],{},"The model is always the plain number. A native post reads a hidden input that\ncarries ",[413,690,691],{"href":534},[391,692,537],{}," and the raw value\n(",[391,695,570],{},"); the visible input has no ",[391,698,537],{},".\n",[413,701,703],{"href":702},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-disableFormatting",[391,704,705],{},"disable-formatting","\nshows the number as typed, with a period decimal and no grouping, and puts\n",[391,708,537],{}," back on the visible input.",[387,711,712,713,716,717,720,721,724,725,728,729,732,733,736],{},"Code that reads the input's text sees the formatted one: ",[391,714,715],{},"event.target.value",",\na ",[391,718,719],{},"pt:input"," listener, a ",[391,722,723],{},"maxlength"," or a ",[391,726,727],{},"pattern",". A test that typed into\n",[391,730,731],{},"input[name=quantity]"," reaches the hidden input, so it targets\n",[391,734,735],{},"input[role=\"spinbutton\"]"," instead. Grouped text is also wider: check a narrow\nfixed-width field at 200% zoom.",[479,738,740],{"id":739},"bounds",[460,741,742],{},"Bounds and precision",[387,744,745,397,750,755,756,759,760,762,763,765,766,769,770,773,774,776,777,783,784,787,788,791,792,797,798,800,801,571,804,807,808,441],{},[413,746,748],{"href":747},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-min",[391,749,396],{},[413,751,753],{"href":752},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-max",[391,754,400],{}," clamp the ",[506,757,758],{},"emitted"," value. Type past ",[391,761,400],{}," and it settles back\nat once. ",[391,764,396],{}," waits until you leave the field, because the digits of a valid\nnumber pass through smaller ones: typing ",[391,767,768],{},"20"," into a 16–28 field goes through\n",[391,771,772],{},"2",". Enter applies ",[391,775,396],{}," too, before a surrounding form submits.\n",[413,778,780],{"href":779},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-maxPrecision",[391,781,782],{},"maxPrecision"," caps\ndecimal places and defaults to ",[391,785,786],{},"8","; ",[391,789,790],{},"0"," pins the field to whole numbers.\n",[413,793,794],{"href":682},[391,795,796],{},"minPrecision"," is its\ntwin: with ",[391,799,772],{}," the field always shows two decimals (",[391,802,803],{},"1",[391,805,806],{},"1.00","), padding\nwith zeros the user types over, while the model stays ",[391,809,803],{},[524,811],{"name":812},"BbNumberInput\u002FBounds",[387,814,815,816,441],{},"Clamping is silent, so state the range in ",[413,817,819],{"href":818},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-hint",[391,820,821],{},"hint",[387,823,824],{},"Extra decimals are refused as they are typed, never rounded:",[407,826,827,848,870],{},[410,828,829,835,836,548,838,840,841,844,845,847],{},[506,830,831,832],{},"With ",[391,833,834],{},"max-precision=\"0\""," a typed ",[391,837,598],{},[391,839,441],{}," stays in the text until blur,\nand the digits after it are refused: ",[391,842,843],{},"12.5"," is 12, not 125. A pasted ",[391,846,843],{},"\nis cut to 12.",[410,849,850,853,854,857,858,548,860,862,863,865,866,869],{},[506,851,852],{},"Below 3 decimals"," (",[391,855,856],{},"max-precision"," 0 to 2, and every currency field) a\nsecond ",[391,859,598],{},[391,861,441],{}," is refused once a decimal exists. ",[391,864,627],{}," typed into the\ntolerance field above is 1.23. A field with 3 or more decimals keeps every\ndigit instead, and reads the earlier mark as grouping when a later one\narrives: ",[391,867,868],{},"1.234,56"," typed key by key is 1234.56.",[410,871,872,875,876,879,880,883],{},[506,873,874],{},"Backspace walks back over the padding."," At ",[391,877,878],{},"1.00|"," it moves to ",[391,881,882],{},"1|.00","\nand keeps the value; the next one deletes the digit.",[387,885,886,887,889,890,892],{},"On an iPhone, a field that can be negative (no ",[391,888,396],{},", or one below 0) gets a\nkeypad with a minus key. Set ",[391,891,396],{}," to 0 or more and it keeps the decimal keypad.",[479,894,896],{"id":895},"steppers",[460,897,898],{},"Step controls",[387,900,901,907,908,910,911,914,915,918,919,923,924,397,928,932,933,939,940,441],{},[413,902,904],{"href":903},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-step",[391,905,906],{},"step"," (default ",[391,909,803],{},") is the increment applied by ArrowUp and ArrowDown, and by\nthe ",[391,912,913],{},"increase()"," \u002F ",[391,916,917],{},"decrease()"," functions the slots hand you. Stepping respects\n",[413,920,921],{"href":747},[391,922,396],{},", ",[413,925,926],{"href":752},[391,927,400],{},[413,929,930],{"href":779},[391,931,782],{},", and does nothing while the field is ",[413,934,936],{"href":935},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-disabled",[391,937,938],{},"disabled","\nor ",[413,941,943],{"href":942},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-readonly",[391,944,945],{},"readonly",[524,947],{"name":948},"BbNumberInput\u002FStepper",[387,950,951,952,955],{},"Every content slot receives ",[391,953,954],{},"{ increase, decrease }",". Give icon-only step\nbuttons an accessible name.",[387,957,958,960,961,441],{},[391,959,906],{}," affects arrows and buttons, not typed input. Validate required multiples\nwith ",[413,962,964],{"href":963},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-errors",[391,965,966],{},"errors",[968,969,971],"migration",{"title":970},"increase() \u002F decrease() moved to the slots",[387,972,973,974,977,978,981,982,985],{},"The imperative handle is gone. ",[391,975,976],{},"inputRef.value.increase()"," no longer exists, and\na stale call is ",[391,979,980],{},"undefined"," at runtime rather than a compile error. Move\nin-field steppers to the slot scope shown above, and drive an external stepper\nthrough the model (",[391,983,984],{},"quantity += step",").",[479,987,989],{"id":988},"affixes",[460,990,991],{},"Currency, units and icons",[387,993,994,995,1001,1002,1008,1009,1012,1013,923,1016,923,1019,1022,1023,1026,1027,1030,1031,1034],{},"Money and measurements want a symbol in the field and a plain number in the\nmodel. ",[413,996,998],{"href":997},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-currency",[391,999,1000],{},"currency"," takes an\nISO 4217 code and ",[413,1003,1005],{"href":1004},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-unit",[391,1006,1007],{},"unit"," a unit\n",[391,1010,1011],{},"Intl.NumberFormat"," knows (",[391,1014,1015],{},"kilogram",[391,1017,1018],{},"celsius",[391,1020,1021],{},"percent","). Either one puts\nthe symbol inside the text, where the locale writes it: ",[391,1024,1025],{},"€69.00"," in English,\n",[391,1028,1029],{},"69,00 €"," in Italian, ",[391,1032,1033],{},"CHF-1’234.56"," in Swiss German.",[524,1036],{"name":1037},"BbNumberInput\u002FCurrency",[407,1039,1040,1053,1066,1085,1095,1108],{},[410,1041,1042,1047,1048,397,1050,1052],{},[506,1043,1044,1046],{},[391,1045,1000],{}," brings its decimals",": 2 for EUR, 0 for JPY, 3 for KWD.\n",[391,1049,685],{},[391,1051,856],{}," win when you set them.",[410,1054,1055,1061,1062,1065],{},[506,1056,1057,1060],{},[391,1058,1059],{},"unit=\"percent\""," holds the number you see",": ",[391,1063,1064],{},"15%"," is 15, not 0.15.",[410,1067,1068,1071,1072,1074,1075,1077,1078,548,1081,1084],{},[506,1069,1070],{},"One or the other."," With both, ",[391,1073,1000],{}," wins. ",[391,1076,1007],{}," is typed, so\n",[391,1079,1080],{},"kilowatt",[391,1082,1083],{},"square-meter"," is a type error.",[410,1086,1087,1090,1091,1094],{},[506,1088,1089],{},"The caret stays on the number."," A click, Home, End or an arrow on the\nsymbol lands on the nearest digit, and the symbol alone cannot be deleted.\nClearing the last digit empties the field, with no lone ",[391,1092,1093],{},"€"," left behind.",[410,1096,1097,1100,1101,397,1104,1107],{},[506,1098,1099],{},"A pasted amount keeps its number."," ",[391,1102,1103],{},"€1,234.56",[391,1105,1106],{},"1,234 kg"," are read as\n1234.56 and 1234; another currency's symbol is dropped, with no conversion.",[410,1109,1110,853,1113,923,1116,1119,1120,985],{},[506,1111,1112],{},"The unit follows the number's plural",[391,1114,1115],{},"1 day",[391,1117,1118],{},"2 days","), and at rest a\nscreen reader hears the amount spelled out (",[391,1121,1122],{},"69.00 euros",[387,1124,1125,1126,1128,1129,672,1135,1141,1142,1144,1145,397,1151,1157],{},"The symbol is part of the input's text, so a ",[391,1127,723],{}," counts it.\n",[413,1130,1132],{"href":1131},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#slot-prefix",[391,1133,1134],{},"prefix",[413,1136,1138],{"href":1137},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#slot-suffix",[391,1139,1140],{},"suffix"," stay free for\nanything else; keep currency symbols out of them, since ",[391,1143,1000],{}," places them\nthe locale's way. ",[413,1146,1148],{"href":1147},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-prepend:icon",[391,1149,1150],{},"prepend:icon",[413,1152,1154],{"href":1153},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-append:icon",[391,1155,1156],{},"append:icon"," put an icon in the same ring.",[387,1159,1160,1161,1167,1168,1174,1175,1177,1178,1180,1181,1183,1184,1190],{},"The end of the field shows one thing at a time, by priority: clear button → spinner\n(",[413,1162,1164],{"href":1163},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-loading",[391,1165,1166],{},"loading",") → error icon (",[413,1169,1171],{"href":1170},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-hasErrors",[391,1172,1173],{},"hasErrors",") → your ",[391,1176,1156],{},". Put the decorative\nicon in ",[391,1179,1150],{},", and keep ",[391,1182,1156],{}," for fields that are neither\n",[413,1185,1187],{"href":1186},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-clearable",[391,1188,1189],{},"clearable"," nor validated.",[387,1192,1193,1194,923,1200,1206],{},"Put interactive content in ",[413,1195,1197],{"href":1196},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#slot-prepend",[391,1198,1199],{},"prepend",[413,1201,1203],{"href":1202},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#slot-append",[391,1204,1205],{},"append",", or the outer slots.",[479,1208,1210],{"id":1209},"messaging",[460,1211,1212],{},"Hints, errors and warnings",[387,1214,1215,1221,1222,1226,1227,1233,1234,1238,1239,1242,1243,1249],{},[413,1216,1218],{"href":1217},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-description",[391,1219,1220],{},"description"," is always visible between the label and\nthe field. ",[413,1223,1224],{"href":818},[391,1225,821],{}," appears below the field on focus, and ",[413,1228,1230],{"href":1229},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-persistentHint",[391,1231,1232],{},"persistent-hint"," pins\nit there: the right home for the range or the unit. ",[413,1235,1236],{"href":963},[391,1237,966],{}," renders below the\nfield, is announced, and sets ",[391,1240,1241],{},"aria-invalid",". ",[413,1244,1246],{"href":1245},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-warnings",[391,1247,1248],{},"warnings"," is its amber\ncounterpart for a number that is valid and still worth a second look. Type 12\nfor the error, then 180 for the warning; with both, only the error shows.",[524,1251],{"name":1252},"BbNumberInput\u002FMessaging",[387,1254,1255,1256,1258],{},"Non-empty messages imply their visual state. Errors win over warnings and set\n",[391,1257,1241],{},"; warnings do not.",[387,1260,1261,1262,397,1266,1270,1271,441],{},"This is where a business rule lives. ",[413,1263,1264],{"href":747},[391,1265,396],{},[413,1267,1268],{"href":752},[391,1269,400],{}," can only express a range.\nA multiple, a value tied to another field, a limit that depends on the selected\nplan: you compute those and put them in ",[391,1272,966],{},[479,1274,1276],{"id":1275},"validation",[460,1277,1278],{},"Inside a BbForm",[387,1280,1281,1282,1286,1287,1289,1290,1296,1297,1301],{},"Inside a ",[413,1283,1284],{"href":46},[391,1285,220],{}," the field joins the form under its\n",[391,1288,537],{}," and takes ",[413,1291,1293],{"href":1292},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-rules",[391,1294,1295],{},"rules",". Rule\nmessages render through the ",[413,1298,1299],{"href":963},[391,1300,966],{}," surface above, merged with your own.",[524,1303],{"name":1304},"BbNumberInput\u002FInForm",[387,1306,1307,1310,1311,1314,1315,1318,1319,1325,1326,1329],{},[391,1308,1309],{},"@submit"," receives ",[391,1312,1313],{},"{ quantity: 3 }",", a number. Spend rules on what bounds do\nnot cover. The usual one is that a value exists: write ",[391,1316,1317],{},"rules=\"required\""," (or\nrequire the key in the schema). The\n",[413,1320,1322],{"href":1321},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-required",[391,1323,1324],{},"required"," prop is for a\nfield outside a form. On a field joined to one, nothing enforces it and\n",[391,1327,1328],{},"bitboss-ui check"," reports it.",[387,1331,1332,1334,1335,1338,1339,1341,1342,1310,1344,1347,1348,1354,1355,1358,1359,1361,1362,672,1368,1374,1375,441],{},[391,1333,396],{}," lifts a low value when the field is left or Enter is pressed in it,\nbefore the form submits, so a ",[391,1336,1337],{},"min_value"," rule is redundant. Type ",[391,1340,790],{}," and press\nEnter: ",[391,1343,1309],{},[391,1345,1346],{},"{ quantity: 1 }",". A native post carries the same raw number. With a\n",[413,1349,1351],{"href":1350},"\u002Fen\u002Fcomponents\u002Fbb-form\u002Fapi#prop-schema",[391,1352,1353],{},"schema",", write\n",[391,1356,1357],{},"z.number('Enter a quantity')",", not a coercion: the field already holds\n",[391,1360,510],{},", and the message covers the empty case.\n",[413,1363,1365],{"href":1364},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-formless",[391,1366,1367],{},"formless",[413,1369,1371],{"href":1370},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-validationLabel",[391,1372,1373],{},"validation-label","\nwork as on ",[413,1376,235],{"href":1377},"\u002Fen\u002Fcomponents\u002Fbb-text-input#validation",[479,1379,1381],{"id":1380},"states",[460,1382,1383],{},"Clearable, loading, disabled and readonly",[387,1385,1386,1390,1391,397,1395,1399],{},[413,1387,1388],{"href":1163},[391,1389,1166],{}," only shows a spinner; the field stays editable.\n",[413,1392,1393],{"href":935},[391,1394,938],{},[413,1396,1397],{"href":942},[391,1398,945],{}," are the two that stop\nedits.",[524,1401],{"name":1402},"BbNumberInput\u002FFieldStates",[387,1404,1405,1409,1410,1242,1412,1414,1415,1417],{},[413,1406,1407],{"href":1186},[391,1408,1189],{}," emits ",[391,1411,514],{},[391,1413,938],{}," blocks all interaction,\nwhile ",[391,1416,945],{}," keeps the value focusable and copyable.",[479,1419,1421],{"id":1420},"layout",[460,1422,1423],{},"Label modes and density",[387,1425,1426,1432,1433,1436,1437,1440,1441,985],{},[413,1427,1429],{"href":1428},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-labelMode",[391,1430,1431],{},"label-mode"," puts the label above the field (",[391,1434,1435],{},"outside",", the default), resting\ninside it like a placeholder (",[391,1438,1439],{},"floating","), or pinned small at the top of the\nfield (",[391,1442,1443],{},"inside",[524,1445],{"name":1446},"BbNumberInput\u002FLabelModes",[387,1448,1449,1450,1452,1453,1456,1457,1459,1460,1466],{},"Leave ",[391,1451,1431],{}," unset to use ",[391,1454,1455],{},"defaultInputLabelMode",". Do not pair ",[391,1458,1439],{},"\nwith a placeholder. ",[413,1461,1463],{"href":1462},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-hideLabel",[391,1464,1465],{},"hide-label"," keeps the accessible name.",[387,1468,1469,1475,1476,1479,1480,699,1483,1489,1490,1493],{},[413,1470,1472],{"href":1471},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-variant",[391,1473,1474],{},"variant"," works as on\n",[413,1477,235],{"href":1478},"\u002Fen\u002Fcomponents\u002Fbb-text-input#layout",", including the blank ",[391,1481,1482],{},"none",[413,1484,1486],{"href":1485},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-compact",[391,1487,1488],{},"compact"," reduces the control height. ",[391,1491,1492],{},"layout=\"horizontal\""," puts the\nlabel beside the field, so in a settings panel each limit reads as one dense\nrow, label left and value right.",[524,1495],{"name":1496},"BbNumberInput\u002FSettingsRows",[387,1498,1499,1504,1505,1507],{},[413,1500,1502],{"href":1501},"\u002Fen\u002Fcomponents\u002Fbb-number-input\u002Fapi#prop-layout",[391,1503,1420],{}," works only with the resolved ",[391,1506,1435],{}," label mode. Embedded label\nmodes force a vertical layout.",[968,1509,1511],{"title":1510},"floating → label-mode",[387,1512,1513,1514,1516,1517,1520,1521,1524,1525,1528,1529,441],{},"A bare ",[391,1515,1439],{}," attribute was never a prop on this family. It fell through\n",[391,1518,1519],{},"$attrs"," onto the root element and did nothing. The spelling is\n",[391,1522,1523],{},"label-mode=\"floating\"",". And if your stylesheets or tests target the shared\ninput wrapper, ",[391,1526,1527],{},".bb-common-input-inner-container*"," was renamed to\n",[391,1530,1531],{},".bb-field-input*",[1533,1534,1535],"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":405,"searchDepth":149,"depth":149,"links":1537},[1538,1539,1540,1541,1542,1543,1544,1545,1546],{"id":481,"depth":145,"text":484},{"id":555,"depth":145,"text":558},{"id":739,"depth":145,"text":742},{"id":895,"depth":145,"text":898},{"id":988,"depth":145,"text":991},{"id":1209,"depth":145,"text":1212},{"id":1275,"depth":145,"text":1278},{"id":1380,"depth":145,"text":1383},{"id":1420,"depth":145,"text":1423},"The numeric field: a real number in the model, clamped to min and max.","md",{},true,[1552,1553,1554,1555,1556,1557,1558,1559,1560],{"id":481,"title":484},{"id":555,"title":558},{"id":739,"title":742},{"id":895,"title":898},{"id":988,"title":991},{"id":1209,"title":1212},{"id":1275,"title":1278},{"id":1380,"title":1383},{"id":1420,"title":1423},{"title":223,"description":1547},"components\u002Fbb-number-input","B2t1IdEx4M6uZQCgpDQmmnEEl3J2cUsPfz7sNFDZcpI",{"name":223,"slug":1565,"group":199,"description":1566,"entrypoint":1567,"docs":1568,"props":1571,"models":1730,"events":1733,"slots":1791,"exposed":1820,"pt":1821,"validated":377,"migration":1876},"bb-number-input","Captures and validates numeric form values, emits a number value.","bitboss-ui",{"contract":1569,"source":1570},"ai\u002FBbNumberInput.md","ai\u002Fsource\u002FBbNumberInput.md",[1572,1577,1581,1585,1590,1593,1596,1599,1602,1606,1610,1612,1615,1619,1622,1625,1628,1632,1636,1639,1644,1648,1652,1655,1660,1663,1667,1670,1675,1678,1681,1684,1687,1691,1696,1699,1702,1705,1709,1712,1716,1719,1723,1727],{"name":1156,"type":1573,"required":1574,"default":377,"description":1575,"note":1576,"demo":988},"string | undefined",false,"Name of the icon to be added at the end of the input.","The append position is contested, by priority: clear button → spinner (`loading`) → error icon (`hasErrors`) → this. On a `clearable` or validatable field your icon is the first thing displaced, so prefer `prepend:icon` for decoration.",{"name":1578,"type":1573,"required":1574,"default":1579,"description":1580,"note":377,"demo":377},"autocomplete","\"off\"","Guides the browser as to the type of information expected in the field.",{"name":1582,"type":1583,"required":1574,"default":377,"description":1584,"note":377,"demo":377},"autofocus","Booleanish | undefined","Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.",{"name":1189,"type":1586,"required":1574,"default":1587,"description":1588,"note":1589,"demo":1380},"boolean | undefined","false","Displays a clear button when the input has a value and is being interacted with.","Emits `null`, not `0` or `''`. Suppressed on `disabled` and `readonly` fields, and it takes the append position from `append:icon`.",{"name":1488,"type":1586,"required":1574,"default":1587,"description":1591,"note":1592,"demo":1420},"Compact density: the field uses the `-compact` twins of `--bb-input-h`, `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on the component is ignored while it is on. Size a compact field with `--bb-input-h-compact` (and `--bb-input-py-compact`).","The only density knob: this family has no `size` scale. Set it per view rather than per field, so a form does not mix two control heights.",{"name":1000,"type":1573,"required":1574,"default":377,"description":1594,"note":1595,"demo":988},"An ISO 4217 code (`'EUR'`): the amount shows the locale's way, symbol inside the text (`1.234,56 €`), leaving `#prefix` \u002F `#suffix` free; the model is the number. Decimals default to the currency's; `minPrecision` \u002F `maxPrecision` win. Not with `unit`.","Puts the symbol inside the text, where the locale writes it (`€69.00` in English, `69,00 €` in Italian), and sets the decimals unless `minPrecision` \u002F `maxPrecision` are set. The model stays the number. A `maxlength` and `event.target.value` see the symbol too.",{"name":1220,"type":1573,"required":1574,"default":377,"description":1597,"note":1598,"demo":1209},"Text between the label and the input. Unlike the hint it is always visible; it joins the input's `aria-describedby` after any `errors` \u002F `warnings`, before the `hint`.","For what the user needs before typing. Anything about the acceptable range reads better in `hint`, next to the field they are about to get wrong.",{"name":938,"type":1586,"required":1574,"default":1587,"description":1600,"note":1601,"demo":1380},"Disables the component.","Blocks everything, arrow-key stepping included. For a number that is derived or detected rather than forbidden, `readonly` keeps it legible and copyable.",{"name":1603,"type":1586,"required":1574,"default":1587,"description":1604,"note":1605,"demo":555},"disableFormatting","Shows the number as typed (period decimal, no grouping), with `name` on the visible input. Without it the field formats the locale's way while typing (`10.005,6`) and posts the raw value (`10005.6`) through a hidden input carrying `name`.","Shows the number as typed, with a period decimal and no grouping, and puts `name` back on the visible input. `currency` and `unit` are ignored. For code that cannot cope with the formatted text yet; the default is what users should see.",{"name":966,"type":1607,"required":1574,"default":377,"description":1608,"note":1609,"demo":1209},"string | string[] | undefined","Error messages under the field, a string or array, in an `aria-live=\"polite\"` region and first in the control's `aria-describedby`, so they are re-read when it regains focus.","Where a business rule lives, since `min` and `max` can only express a range and do it without a message. Non-empty is enough; `hasErrors` is only for when the message itself is elsewhere. Inside a `BbForm` these merge with the rule messages rather than replacing them.",{"name":1367,"type":1586,"required":1574,"default":1587,"description":1611,"note":377,"demo":377},"Keep this control out of the enclosing `BbForm` entirely: not submitted, not dirty, not reset, not validated. For a control that is not form data (a filter, a \"show advanced\" switch).",{"name":1173,"type":1586,"required":1574,"default":1587,"description":1613,"note":1614,"demo":1209},"Define if the component should be in an error state. It usually attaches a CSS class for styling purposes.","Forces the error chrome without a message of its own. Reach for it when the text lives in a summary alert above the form.",{"name":1616,"type":1586,"required":1574,"default":1587,"description":1617,"note":1618,"demo":1209},"hasWarnings","Define if the component should be in a warning state. Same chrome as errors with `--bb-warn`; errors take priority.","The amber counterpart of `hasErrors`, and equally a force-the-chrome flag. It never sets `aria-invalid`: a warning says \"unusual\", not \"wrong\".",{"name":1620,"type":1586,"required":1574,"default":1587,"description":1621,"note":377,"demo":377},"hideLabel","Visually hides the label of the input while maintaining accessibility.",{"name":821,"type":1573,"required":1574,"default":377,"description":1623,"note":1624,"demo":1209},"Text box to be displayed near the input, usually to indicate instructions.","The natural home for the range or the unit, because `min` and `max` correct a value in silence. Pair with `persistentHint` when the range matters before focus, not just during it.",{"name":1626,"type":1573,"required":1574,"default":377,"description":1627,"note":377,"demo":377},"id","The `id` of the native control; the label's `for` and the description and message ids derive from it. Generated when omitted.",{"name":1629,"type":1630,"required":1574,"default":377,"description":1631,"note":377,"demo":377},"inputAlign","FieldCrossAlign | undefined","Vertical position of the control in a side-by-side row; not `inputPosition`, the horizontal one. Omitted, the control's first line meets the label's.",{"name":492,"type":1633,"required":1550,"default":377,"description":1634,"note":1635,"demo":481},"string","Text content of the label of the element.","Names the field for display and for assistive technology only. It does not set `name`. Inside a `BbForm`, a field with no `name` joins under a slug of this text; pass `name` for a clean key.",{"name":1637,"type":1630,"required":1574,"default":377,"description":1638,"note":377,"demo":377},"labelAlign","Vertical position of the label block in a side-by-side row; not `labelPosition`, the horizontal one. Omitted, the label's first line meets the control's.",{"name":1640,"type":1641,"required":1574,"default":377,"description":1642,"note":1643,"demo":1420},"labelMode","\"outside\" | \"floating\" | \"inside\" | undefined","Label rendering mode.","Unset, it falls back to the project-wide `defaultInputLabelMode`, so a product can go all-floating from the plugin config without touching call sites. Do not pair `floating` with a `placeholder`: the resting label already occupies that spot.",{"name":1645,"type":1646,"required":1574,"default":377,"description":1647,"note":377,"demo":377},"labelPosition","\"left\" | \"center\" | \"right\" | undefined","Sets the text alignment of the label.",{"name":1420,"type":1649,"required":1574,"default":377,"description":1650,"note":1651,"demo":1420},"Responsive\u003CFieldLayout> | undefined","How label and input sit together: `'vertical'`, `'horizontal'` (50\u002F50), `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).","Ignored, without a warning, unless the resolved label mode is `outside`. `floating` and `inside` embed the label in the field and force the vertical layout, including when the mode comes from `defaultInputLabelMode` rather than from the call site.",{"name":1166,"type":1586,"required":1574,"default":1587,"description":1653,"note":1654,"demo":1380},"Sets the component in a loading state, usually triggering some visual styles.","Visual only. The field stays editable underneath the spinner, so if an async check has to settle before the value is usable, guard that yourself.",{"name":400,"type":1656,"required":1574,"default":1657,"description":1658,"note":1659,"demo":739},"number | undefined","Number.MAX_SAFE_INTEGER","Maximum value cap.","Clamps the emitted value at once, with no message and no event, so a user who types past it sees their number change under them. Say the ceiling in `hint` before they reach it.",{"name":782,"type":1656,"required":1574,"default":786,"description":1661,"note":1662,"demo":739},"Maximum precision of the number: fraction digits past it are refused as typed (never rounded). With `currency`, the currency's own digits (`2` for EUR, `0` for JPY, `3` for KWD), or `minPrecision` when that is larger.","`0` pins the field to whole numbers; for money set `currency`, which brings its own decimals. Extra decimals are refused as typed, never rounded: with `0` a typed `,` or `.` stays until blur and the digits after it are refused (`12,5` is 12, not 125). Below `3`, a second `,` or `.` is refused once a decimal exists.",{"name":396,"type":1656,"required":1574,"default":1664,"description":1665,"note":1666,"demo":739},"Number.MIN_SAFE_INTEGER","Minimum value cap. Applied on blur and on Enter (before a surrounding form submits), not while typing, so a value above a `min` greater than 1 can be typed digit by digit.","Applied when the field loses focus or on Enter, not per keystroke, so `20` can be typed into a 16–28 field; left below it, the value rises to `min`. Enter applies it before a surrounding form submits, which makes a `min_value` rule inside a `BbForm` redundant.",{"name":796,"type":1656,"required":1574,"default":790,"description":1668,"note":1669,"demo":739},"Fraction digits always shown (`2`: `1` shows `1,00`), also while typing, where the padding zeros are placeholders; the model stays the number. Above `maxPrecision` it gives way. Applies with `disableFormatting` too. With `currency`: the currency's own digits.","Decimals always shown, padded with zeros the user types over: with `2`, `1` shows `1.00` while the model stays `1`. Also the way to keep trailing zeros after blur, which otherwise rewrites `1.50` as `1.5`.",{"name":1671,"type":1672,"required":1574,"default":514,"description":1673,"note":1674,"demo":481},"modelValue","string | number | null | undefined","Used by v-model.","Accepts `number | string | null` and emits `number | null`. A cleared field emits `null`, never `''` and never `NaN`, and an in-progress string (`-`, `.`, `12.`) emits nothing until it parses.",{"name":537,"type":1573,"required":1574,"default":377,"description":1676,"note":1677,"demo":555},"Defines the name of the input.","Not derived from `label`. It lands on a hidden input that posts the raw value (`10005.6`), never on the visible one, so `input[name=…]` finds the hidden input: a test types into `input[role=\"spinbutton\"]`. Leave it unset and a native post or a `FormData` read drops the value.",{"name":1679,"type":1586,"required":1574,"default":1587,"description":1680,"note":377,"demo":377},"persistentHint","Keeps the hint displayed.",{"name":1682,"type":1573,"required":1574,"default":377,"description":1683,"note":377,"demo":377},"placeholder","Text shown while the field is empty.",{"name":1150,"type":1573,"required":1574,"default":377,"description":1685,"note":1686,"demo":988},"Name of the icon to be added at the start of the input.","The uncontested position: nothing in the component competes for it. Put decorative iconography here and keep `append:icon` for fields that are neither clearable nor validatable.",{"name":1688,"type":1689,"required":1574,"default":377,"description":1690,"note":377,"demo":377},"pt","(PtMap\u003CTextControlPtPart, FormControlPtState> & { \"root:outline\"?: PtValue | undefined; \"icon:outline\"?: PtValue | undefined; \"root:secondary\"?: PtValue | undefined; \"icon:secondary\"?: PtValue | undefined; \"spinner:outline\"?: PtValue | undefined; \"spinner:secondary\"?: PtValue | undefined; \"clear:outline\"?: PtValue | undefined; \"clear:secondary\"?: PtValue | undefined; \"root:ghost\"?: PtValue | undefined; \"icon:ghost\"?: PtValue | undefined; \"spinner:ghost\"?: PtValue | undefined; \"clear:ghost\"?: PtValue | undefined; \"label:outline\"?: PtValue | undefined; \"label:secondary\"?: PtValue | undefined; \"label:ghost\"?: PtValue | undefined; \"description:outline\"?: PtValue | undefined; \"description:secondary\"?: PtValue | undefined; \"description:ghost\"?: PtValue | undefined; \"message:outline\"?: PtValue | undefined; \"message:secondary\"?: PtValue | undefined; \"message:ghost\"?: PtValue | undefined; \"hint:outline\"?: PtValue | undefined; \"hint:secondary\"?: PtValue | undefined; \"hint:ghost\"?: PtValue | undefined; \"input:outline\"?: PtValue | undefined; \"input:secondary\"?: PtValue | undefined; \"input:ghost\"?: PtValue | undefined; \"box:outline\"?: PtValue | undefined; \"box:secondary\"?: PtValue | undefined; \"box:ghost\"?: PtValue | undefined; \"prefix:outline\"?: PtValue | undefined; \"prefix:secondary\"?: PtValue | undefined; \"prefix:ghost\"?: PtValue | undefined; \"suffix:outline\"?: PtValue | undefined; \"suffix:secondary\"?: PtValue | undefined; \"suffix:ghost\"?: PtValue | undefined; }) | undefined","Passthrough, object form: `{ box: '…', 'box:errors': '…' }` — the same keys as the `pt:*` attributes without the prefix. See the `pt:\u003Cpart>` row.",{"name":1692,"type":1693,"required":1574,"default":377,"description":1694,"note":377,"demo":1695},"pt:\u003Cpart>","PtValue | undefined","Passthrough, attribute form: one attribute per part, `pt:\u003Cpart>`, and per part and state, `pt:\u003Cpart>:\u003Cstate>`. Parts: `box`, `clear`, `description`, `hint`, `icon`, `input`, `label`, `message`, `prefix`, `root`, `spinner`, `suffix`. States: `disabled`, `errors`, `ghost`, `hasValue`, `loading`, `outline`, `readonly`, `secondary`, `warnings`.","passthrough",{"name":945,"type":1586,"required":1574,"default":1587,"description":1697,"note":1698,"demo":1380},"Sets the input in a readonly state.","The right state for a number that is computed or detected rather than entered, such as a total or a weight read off a scale. Unlike `disabled` it stays legible and copyable, and it disables stepping just the same.",{"name":1324,"type":1586,"required":1574,"default":1587,"description":1700,"note":1701,"demo":377},"Marks the input required (asterisk, aria-required, native validation in a plain form). Inside a BbForm it is not enforced; use rules=\"required\" or the schema.","Forwards to the native input and validates nothing on its own. It raises the required marker (unless `requiredAsterisk` is off); inside a `BbForm` a `required` rule or the schema does too, and checks the value.",{"name":1703,"type":1586,"required":1574,"default":1587,"description":1704,"note":377,"demo":377},"reverse","Reverses the layout. Applicable in every direction the order of the label and the input is swapped.",{"name":1295,"type":1706,"required":1574,"default":377,"description":1707,"note":1708,"demo":1275},"RuleExpression\u003Cstring | number | null>","vee-validate rules for this field. Only inside a `BbForm`.","Read only inside a `BbForm` (which needs the `vee-validate` peer); outside one they do nothing. Spend rules on what `min`\u002F`max` cannot say: `min` lifts a low value on blur and on Enter, before the form submits, so a `min_value` rule is redundant.",{"name":906,"type":1656,"required":1574,"default":803,"description":1710,"note":1711,"demo":895},"Incremental unit used by ArrowUp \u002F ArrowDown and by the `increase` and `decrease` functions the slots receive. It is NOT applied to manual input as a step of 5 would prevent the user from inserting a value like `115` because of rounding down.","Drives ArrowUp\u002FArrowDown and the `increase`\u002F`decrease` slot functions, and never constrains typed input. If multiples are a real rule, enforce them through `errors` on blur or on submit.",{"name":1007,"type":1713,"required":1574,"default":377,"description":1714,"note":1715,"demo":988},"BbNumberUnit | undefined","A unit `Intl.NumberFormat` knows (`'kilogram'`, `'celsius'`, `'percent'`), shown the locale's way inside the text (`20 kg`). The model is the number you see: `percent` showing `15 %` holds `15`. Not with `currency` (which wins).","Typed: only units `Intl.NumberFormat` knows, so `kilowatt` is a type error. `percent` holds the number you see, `15%` is `15`, not `0.15`. With `currency` also set, `currency` wins.",{"name":1717,"type":1573,"required":1574,"default":377,"description":1718,"note":377,"demo":377},"validationLabel","The field's name in validation messages (`{field}`): \"Email is not valid\". Defaults to the `label` (or `legend`), then \"This field\"; never the `name`. Set it when the label is hidden or reads badly in a sentence (icon-only, a question). `BbForm` only.",{"name":1720,"type":1721,"required":1574,"default":377,"description":1722,"note":377,"demo":1275},"validationMode","ValidationMode | undefined","When the field validates: `aggressive` (each change), `balanced` (on leave, then live while in error), `lazy` (on leave), `submit-only`, `submit-live`. Unset: the `BbForm`'s `validation-mode`, then `formControls.validationMode` (`'balanced'`). `BbForm` only.",{"name":1474,"type":1724,"required":1574,"default":1725,"description":1726,"note":377,"demo":377},"InputVariantType | undefined","'outline'","The field box's look, with `BbButton`'s names and tokens. Colours only, so a form never reflows; `'ghost'` has no border in any state, `'none'` no look at all (you own hover, focus and the states). Register more with the plugin's `inputVariants`.",{"name":1248,"type":1607,"required":1574,"default":377,"description":1728,"note":1729,"demo":1209},"Warning messages under the field, a string or array: amber, in their own `aria-live` region and in the control's `aria-describedby` after the errors. Non-empty turns on the warning state; errors win when both are set.","For a number that is valid and still worth a second look. Errors win when both are set and the warnings are suppressed, so the field is never amber and red at once.",[1731],{"name":1671,"type":1672,"note":1732,"demo":481},"Seed it with `null` for an empty field rather than `0`: `0` is a number someone chose, and on a floating label it also stops the label from resting inside the field.",[1734,1738,1742,1746,1750,1753,1757,1760,1764,1768,1772,1775,1778,1781,1786],{"name":1735,"signature":1736,"description":1737,"note":377,"demo":377},"blur","(event: FocusEvent): void","Emitted when the native input loses focus. Forwards the original DOM `FocusEvent`.",{"name":1739,"signature":1740,"description":1741,"note":377,"demo":377},"change","(event: Event): void","Emitted when the native input fires a change event. Forwards the original DOM `Event`.",{"name":1743,"signature":1744,"description":1745,"note":377,"demo":377},"click","(event: MouseEvent): void","Emitted when the input receives a click interaction. Forwards the original DOM `MouseEvent`.",{"name":1747,"signature":1748,"description":1749,"note":377,"demo":377},"compositionend","(event: CompositionEvent): void","Emitted when a composition session ends (e.g. CJK IME confirmed). Forwards the original DOM `CompositionEvent`.",{"name":1751,"signature":1748,"description":1752,"note":377,"demo":377},"compositionstart","Emitted when a composition session starts (e.g. CJK IME begins). Forwards the original DOM `CompositionEvent`.",{"name":1754,"signature":1755,"description":1756,"note":377,"demo":895},"decrease","(value: number): void","Emitted by the `decrease` helper with the clamped value after decrementing by one `step`.",{"name":1758,"signature":1736,"description":1759,"note":377,"demo":377},"focus","Emitted when the native input gains focus. Forwards the original DOM `FocusEvent`.",{"name":1761,"signature":1755,"description":1762,"note":1763,"demo":895},"increase","Emitted by the `increase` helper with the clamped value after incrementing by one `step`.","Fires with the **new**, already clamped number, alongside `update:modelValue`. It is for reacting to a step, not for reading the value; `v-model` already has that.",{"name":1765,"signature":1740,"description":1766,"note":1767,"demo":555},"input","Emitted on native input events from the number input. Forwards the original DOM `Event`.","`event.target.value` is the text on screen, grouped and with any symbol (`€1,234.50`), not the number. Read the number from `v-model`.",{"name":1769,"signature":1770,"description":1771,"note":377,"demo":377},"keydown","(event: KeyboardEvent): void","Emitted for keyboard interaction on the input. Forwards the original DOM `KeyboardEvent`.",{"name":1773,"signature":1770,"description":1774,"note":377,"demo":377},"keyup","Emitted when a key is released over the input. Forwards the original DOM `KeyboardEvent`.",{"name":1776,"signature":1744,"description":1777,"note":377,"demo":377},"mousedown","Emitted when a pointing device button is pressed over the input. Forwards the original DOM `MouseEvent`.",{"name":1779,"signature":1744,"description":1780,"note":377,"demo":377},"mouseup","Emitted when a pointing device button is released over the input. Forwards the original DOM `MouseEvent`.",{"name":1782,"signature":1783,"description":1784,"note":1785,"demo":555},"paste","(event: ClipboardEvent): void","Emitted when content is pasted into the input. Forwards the original DOM `ClipboardEvent`.","Forwarded as is. The field already reads a paste as a number (the first one in the text, symbols and words dropped, brackets negative), so a handler never needs to clean the clipboard text.",{"name":1787,"signature":1788,"description":1789,"note":1790,"demo":481},"update:modelValue","(value: number | null): void","Emitted on any value change with the parsed number or `null` when the field is empty.","Emits `number | null`. Do not add a watcher that re-parses or re-clamps what arrives here: the component has already done both.",[1792,1796,1800,1803,1807,1810,1813,1817],{"name":1205,"type":1793,"description":1794,"note":1795,"demo":895},"BbNumberInputStepSlotProps","Content rendered after the number input, at the end of the inner container. Typically used to place increment\u002Fdecrement buttons next to the input.","Same `{ increase, decrease }` scope as `prepend`, and the same accessible-name obligation.",{"name":1797,"type":1793,"description":1798,"note":1799,"demo":377},"append:outer","Content rendered after the entire input control, outside the input chrome.","The uncontested place for an action beside the field, since nothing inside the component competes for it.",{"name":1220,"type":1801,"description":1802,"note":377,"demo":377},"BbNumberInputDescriptionSlotProps","Replaces the description text. Provided alone (no `description` prop) it still renders the description region and wires it into `aria-describedby`.",{"name":492,"type":1804,"description":1805,"note":1806,"demo":1420},"BbNumberInputLabelSlotProps","Replaces the default label text rendered above the number input.","Receives `{ text, hasErrors, hasWarnings }`, plus `showAsterisk` while the required marker shows. Replacing it removes the marker the control drew, so put it back with `\u003CBbAsterisk v-if=\"showAsterisk\" \u002F>`, or unconditionally on a `required` field in an app that turned `requiredAsterisk` off.",{"name":1134,"type":1793,"description":1808,"note":1809,"demo":988},"Inline content rendered at the start of the input field area, before the typed number.","Decoration only, inside the field. Not for a currency symbol: `currency` places that where the locale writes it, before or after the number.",{"name":1199,"type":1793,"description":1811,"note":1812,"demo":895},"Content rendered before the number input, at the start of the inner container.","Receives `{ increase, decrease }`, which is how a minus button is built with no state on your side. It is icon-only, so give it an `aria-label`.",{"name":1814,"type":1793,"description":1815,"note":1816,"demo":377},"prepend:outer","Content rendered before the entire input control, outside the input chrome.","Outside the field chrome entirely. Reach for it when a stepper button should not sit inside the border, or when the append position is already taken by a clear button or a spinner.",{"name":1140,"type":1793,"description":1818,"note":1819,"demo":988},"Inline content rendered at the end of the input field area, after the typed number.","Inert, like `prefix`, so anything interactive goes in `prepend`\u002F`append` or the outer pair. A unit the locale can write (`kg`, `°C`, `%`) reads better through `unit`.",[],{"parts":1822,"states":1853},[1823,1826,1828,1830,1833,1835,1838,1840,1843,1846,1848,1850],{"name":1824,"description":1825},"root","The field's outer container: the label, the box and the lines under it.",{"name":492,"description":1827},"The label text above the box (the `label` prop).",{"name":1220,"description":1829},"The muted line under the label (the `description` prop).",{"name":1831,"description":1832},"message","The errors \u002F warnings line under the box. A node of its own: it can show at the same time as `hint`.",{"name":821,"description":1834},"The helper line (the `hint` prop), shown on focus, or always with `persistent-hint`.",{"name":1836,"description":1837},"box","The bordered box around the input — border, background and radius; the `variant` paints here.",{"name":1765,"description":1839},"The native input element inside the box.",{"name":1841,"description":1842},"icon","The content icons, prepend and append — a broadcast. Chrome (the clear ✕, a chevron, the error \u002F warning glyph) is never in it.",{"name":1844,"description":1845},"spinner","The spinner inside the box while `loading`.",{"name":1134,"description":1847},"The `#prefix` slot's wrapper, inside the box before the input.",{"name":1140,"description":1849},"The `#suffix` slot's wrapper, inside the box after the input.",{"name":1851,"description":1852},"clear","The ✕ that empties this control (`clearable`) — one node, never a chip's own ✕.",[1854,1856,1858,1861,1864,1866,1869,1871,1874],{"name":938,"description":1855},"Component-wide: the control is `disabled`.",{"name":966,"description":1857},"Component-wide: the control is in its error state (`errors` \u002F `has-errors`, or its validation) — the message line and the box turn red.",{"name":1859,"description":1860},"ghost","On the field's parts: `variant: 'ghost'`. Below the real states, like every variant.",{"name":1862,"description":1863},"hasValue","Component-wide: the control holds a value, by its own rule (`0` counts on `BbNumberInput`, `''` on `BbColorInput`).",{"name":1166,"description":1865},"Component-wide: `loading` is on; the box shows its `spinner`.",{"name":1867,"description":1868},"outline","On the field's parts: `variant: 'outline'`. Merged after the part's base entry and before its states, so the real states still win.",{"name":945,"description":1870},"Component-wide: the control is `readonly` — shown, focusable, not editable.",{"name":1872,"description":1873},"secondary","On the field's parts: `variant: 'secondary'`. Below the real states, like every variant.",{"name":1248,"description":1875},"Component-wide: the control is in its warning state (`warnings` \u002F `has-warnings`) and not in an error state — errors win, so the two are never on together.",{"removed":1877,"renamed":1907},[1878,1885,1890,1894,1897,1902],{"name":1879,"surface":1880,"replacedBy":1797,"hint":377,"since":1881,"migration":1882,"silent":1550,"fix":1883},"append-outer","slot","3.0.0-beta.41","ai\u002Fguides\u002Fmigration\u002Fv2-to-v3.md",{"kind":1884},"rename",{"name":1886,"surface":1887,"replacedBy":1420,"hint":377,"since":1888,"migration":1882,"silent":1550,"fix":1889},"direction","prop","3.0.0-beta.33",{"kind":1884},{"name":1891,"surface":1887,"replacedBy":1616,"hint":377,"since":1892,"migration":1882,"silent":1550,"fix":1893},"hasWarning","3.0.0-beta.26",{"kind":1884},{"name":1895,"surface":1880,"replacedBy":1814,"hint":377,"since":1881,"migration":1882,"silent":1550,"fix":1896},"prepend-outer",{"kind":1884},{"name":1898,"surface":1887,"replacedBy":1720,"hint":1899,"since":1881,"migration":1882,"silent":1550,"fix":1900},"validateOn","an array of events became one mode (`aggressive` | `balanced` | `lazy` | `submit-only` | `submit-live`). The old defaults (`['blur']`, `['inactive']`, a toggle's `['update:modelValue', 'change', 'blur']`) are `balanced`, the new default: delete the prop. A text field on `['update:modelValue']` is `validation-mode=\"aggressive\"`. Set it once on `\u003CBbForm validation-mode>` instead of per field",{"kind":1901},"manual",{"name":1903,"surface":1887,"replacedBy":377,"hint":1904,"since":1881,"migration":1882,"silent":1550,"fix":1905},"vid","a display name (v2: `vid=\"Email address\"`) is now `validation-label`; a field path (3.0 betas: `vid=\"address.city\"`) is now `name` (brackets for a native post: `address[city]`). `check --fix` picks by the value",{"kind":1906,"display":1717,"key":537},"byValue",[1908,1910,1912,1914,1916],{"from":1879,"to":1797,"surface":1880,"since":1881,"migration":1882,"fix":1909},{"kind":1884},{"from":1886,"to":1420,"surface":1887,"since":1888,"migration":1882,"fix":1911},{"kind":1884},{"from":1891,"to":1616,"surface":1887,"since":1892,"migration":1882,"fix":1913},{"kind":1884},{"from":1895,"to":1814,"surface":1880,"since":1881,"migration":1882,"fix":1915},{"kind":1884},{"from":1898,"to":1720,"surface":1887,"since":1881,"migration":1882,"fix":1917},{"kind":1901},1793055142409]