{
	"schemaVersion": 1,
	"library": "bitboss-ui",
	"version": "3.0.0-beta.18",
	"generatedAt": "2026-08-31T15:46:07.123Z",
	"composables": [
		{
			"name": "useBbConfig",
			"description": "Patch the library's runtime-editable configuration — today that is exactly one key, locale.",
			"doc": "ai/composables/useBbConfig.md"
		},
		{
			"name": "useBbFormContext",
			"description": "Read and drive a BbForm from anywhere by id — validity, dirtiness, values, errors, plus submit/reset/validate — with no template ref and no shared subtree.",
			"doc": "ai/composables/useBbFormContext.md"
		},
		{
			"name": "useBbTableContext",
			"description": "Drive and read a BbTable's state (selection, sort, highlight, pagination) from anywhere by id — no prop drilling, no template refs.",
			"doc": "ai/composables/useBbTableContext.md"
		},
		{
			"name": "useBbTabsContext",
			"description": "Read and drive a BbTabs/BbTabsRoot group from anywhere by id — writable current tab, goTo/select, no template refs.",
			"doc": "ai/composables/useBbTabsContext.md"
		},
		{
			"name": "useConfirm",
			"description": "Promise-based confirm dialogs — await the user's yes/no, with yes/no button configs, async onClick busy states, and portal content. Requires exactly one <BbConfirm /> host, mounted at the app root.",
			"doc": "ai/composables/useConfirm.md"
		},
		{
			"name": "useCountdown",
			"description": "Reactive countdown timer with start, pause, reset, and formatted time output.",
			"doc": "ai/composables/useCountdown.md"
		},
		{
			"name": "useId",
			"description": "Generate a unique, hydration-safe DOM id (prefixed bb-ui-) for aria wiring in custom markup.",
			"doc": "ai/composables/useId.md"
		},
		{
			"name": "useMobile",
			"description": "Reactive isMobile flag using the same viewport breakpoint the library's adaptive components use.",
			"doc": "ai/composables/useMobile.md"
		},
		{
			"name": "useSafeArea",
			"description": "Declare that an app-side docked panel occupies a screen edge, so toasts slide clear of it instead of landing on top.",
			"doc": "ai/composables/useSafeArea.md"
		},
		{
			"name": "useToast",
			"description": "Fire, update, and dismiss transient toast notifications from anywhere — returns { toast, dismiss, update }. Requires exactly one <BbToast /> host, mounted at the app root.",
			"doc": "ai/composables/useToast.md"
		}
	],
	"components": [
		{
			"name": "BbAccordion",
			"group": "Navigation",
			"description": "Expands and collapses a content panel.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbAccordion.md",
			"source": "ai/source/BbAccordion.md",
			"props": [
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "modelValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Used by v-model to trigger opening / closing the collapsible.\nAn accordion with no `v-model` starts closed."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "How long the transition has to last in milliseconds"
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: boolean): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "BbAccordionToggleSlotProps",
					"description": "The collapsible body content shown when the accordion is open."
				},
				{
					"name": "header",
					"type": "BbAccordionToggleSlotProps",
					"description": "Content rendered inside the accordion header button."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "boolean | undefined"
				}
			]
		},
		{
			"name": "BbAlert",
			"group": "Feedback",
			"description": "Shows contextual status messages.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbAlert.md",
			"source": "ai/source/BbAlert.md",
			"props": [
				{
					"name": "ariaLive",
					"type": "\"off\" | \"polite\" | \"assertive\" | undefined",
					"required": false,
					"description": "ARIA live region politeness.\nDefaults to `'assertive'` for destructive/warning variants, otherwise `'polite'`."
				},
				{
					"name": "closeLabel",
					"type": "string | undefined",
					"required": false,
					"description": "Visually hidden string used to label the close button."
				},
				{
					"name": "hideClose",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Defines whether to hide the close button."
				},
				{
					"name": "icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of a registered icon to use, or a full raw `<svg>` string\n(e.g. an SVG file imported with `?raw`)."
				},
				{
					"name": "iconSize",
					"type": "number | ({ size?: any; } & string) | keyof Sizes | undefined",
					"required": false,
					"default": "\"16\"",
					"description": "Size of the icon to use."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false,
					"default": "true",
					"description": "Used by v-model, set type to any to avoid Vue casting it as false.\nAlerts are visible on mount; the model dismisses them."
				},
				{
					"name": "role",
					"type": "\"alert\" | \"status\" | undefined",
					"required": false,
					"description": "Accessibility role for the alert container.\nDefaults to `'alert'` for destructive/warning variants, otherwise `'status'`."
				},
				{
					"name": "text",
					"type": "string | undefined",
					"required": false,
					"description": "Text content of the alert body."
				},
				{
					"name": "title",
					"type": "string | undefined",
					"required": false,
					"description": "Text content of the alert title."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Transition duration in milliseconds for enter/leave."
				},
				{
					"name": "variant",
					"type": "keyof AlertVariantRegistry | undefined",
					"required": false,
					"default": "\"outline\"",
					"description": "Visual variant of the alert."
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: boolean): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "any",
					"description": "The alert body — the shortest form, and the one to reach for:\n`<BbAlert>Something went wrong</BbAlert>`.\n\nSame idiom as the rest of the `text`-prop family (BbButton, BbBaseButton,\nBbTooltip, BbIndicator). When more than one source is present the most\nspecific wins: `#text` > children > the `text` prop."
				},
				{
					"name": "text",
					"type": "BbAlertTextSlotProps",
					"description": "Replaces the default alert body text. Wins over children and `text`."
				},
				{
					"name": "title",
					"type": "BbAlertTitleSlotProps",
					"description": "Replaces the default alert title text."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"removed": [
				{
					"name": "showClose",
					"new": "hideClose",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-alert.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "theme",
					"new": "variant",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-alert.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "showClose",
					"to": "hideClose",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-alert.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "theme",
					"to": "variant",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-alert.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbAsterisk",
			"group": "Other",
			"description": "Presentational required-field marker (red \"*\"). No props/slots/events; placed in custom label content.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbAsterisk.md",
			"source": "ai/source/BbAsterisk.md",
			"props": [],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbAvatar",
			"group": "Data Display",
			"description": "Displays an avatar and has a fallback content slot.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbAvatar.md",
			"source": "ai/source/BbAvatar.md",
			"props": [
				{
					"name": "alt",
					"type": "string | undefined",
					"required": false,
					"default": "\"\"",
					"description": "Alternative text for the image, used for accessibility."
				},
				{
					"name": "size",
					"type": "number | ({ size?: any; } & string) | keyof Sizes | undefined",
					"required": false,
					"default": "\"md\"",
					"description": "Defines the component size.\n\nAccepted values:\n- A key from the provided size map (`keyof T`), e.g. `'sm' | 'md' | 'lg'`\n- A custom CSS size string (e.g. `'20px'`, `'1.5rem'`, `'2em'`)\n- A number, typically interpreted as pixels by size parsers"
				},
				{
					"name": "sizes",
					"type": "string | undefined",
					"required": false,
					"description": "Sizes attribute for the image, used with `srcset`."
				},
				{
					"name": "src",
					"type": "string | undefined",
					"required": false,
					"description": "Source URL of the avatar image."
				},
				{
					"name": "srcset",
					"type": "string | undefined",
					"required": false,
					"description": "Responsive image source set."
				},
				{
					"name": "timeout",
					"type": "number | undefined",
					"required": false,
					"default": "400",
					"description": "Milliseconds to wait after mount before checking whether the image loaded correctly (SSR fallback)."
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "Record<string, never>",
					"description": "Fallback content shown when no image source is provided or when the image fails to load.\nTypically used to render initials or a placeholder icon."
				}
			],
			"exposed": [],
			"models": [],
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-avatar.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			]
		},
		{
			"name": "BbBadge",
			"group": "Feedback",
			"description": "Displays a compact inline status counter or label. It sits in the flow — for a bubble or dot anchored OVER another element, use BbIndicator (includes the co-located BbBadgeButton export).",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbBadge.md",
			"source": "ai/source/BbBadge.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Icon rendered after the label. On a `clearable` badge it shares the trailing\nslot with the clear button: the icon shows at rest and the clear button\nreveals over it on hover/focus."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders a trailing clear button and emits `click:clear` when pressed — turns\nthe badge into a dismissible token (the pattern formerly served by `BbChip`)."
				},
				{
					"name": "clearableLabel",
					"type": "string | undefined",
					"required": false,
					"description": "Accessible label for the clear button.\n\nRarely needed: unset, the name is **composed** from the localized\n`badge.clearLabel` verb and the badge's own text — \"Remove Italy\", not a\nbare \"Remove\" — which is already the right name in almost every case.\nComposition is skipped when a `BbBadgeButton` owns the body (the verb\nthen stands alone, so the two controls do not both announce the label).\nSet this only to override that composed name outright."
				},
				{
					"name": "icon",
					"type": "string | undefined",
					"required": false,
					"description": "Renders an icon-only badge. When set, `prepend:icon` / `append:icon` are\nignored and the default slot becomes the badge's visually hidden accessible\nlabel — always provide it."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Shows a spinner in place of the leftmost icon, mirroring `BbButton`: it\nreplaces the `icon` glyph or the `prepend:icon` when one is set; when the\n`append:icon` is the sole icon it replaces that instead (e.g. a\nselect-activator chevron while the value saves), and with no icons at all\nit takes the leading slot. Adds a visually hidden loading announcement\nfor screen readers."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Icon rendered before the label."
				},
				{
					"name": "size",
					"type": "keyof Sizes | undefined",
					"required": false,
					"default": "\"md\"",
					"description": "Preset size of the badge."
				},
				{
					"name": "variant",
					"type": "keyof BadgeVariantRegistry | undefined",
					"required": false,
					"default": "\"primary\"",
					"description": "Visual variant: `primary`, `secondary`, `destructive`, or `outline`.\nRegister more via the vite plugin `badgeVariants` option and style\n`.bb-badge--<variant>` (set `--bg` / `--color`)."
				}
			],
			"events": [
				{
					"name": "click:clear",
					"signature": "(event: \"click:clear\", event: MouseEvent): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "object",
					"description": "The badge's label content. When `icon` is set this becomes the visually\nhidden accessible label. Render a `BbBadgeButton` here to make the badge\nbody interactive (the wrapper stays a passive `<span>`)."
				}
			],
			"exposed": [],
			"models": [],
			"removed": [
				{
					"name": "content",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-badge.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			]
		},
		{
			"name": "BbBadgeButton",
			"group": "Feedback",
			"description": "Makes a badge's body interactive: slotted as a direct child of BbBadge it renders the badge body as a real button/link with full BbBaseButton parity, leaving `clearable` free to remain a separate control.",
			"referenceOnly": false,
			"hasGuide": false,
			"contract": "ai/BbBadgeButton.md",
			"source": "ai/source/BbBadgeButton.md",
			"props": [
				{
					"name": "activeClass",
					"type": "string | undefined",
					"required": false,
					"default": "'router-link-active'",
					"description": "CSS class applied when the component renders as a link and the target of the link is the current route or the url matches partially.\nPorted for Inertia compatibility."
				},
				{
					"name": "ariaCurrentValue",
					"type": "\"page\" | \"step\" | \"location\" | \"date\" | \"time\" | \"true\" | \"false\" | undefined",
					"required": false,
					"default": "'page'",
					"description": "Value forwarded to the `aria-current` attribute when the component renders\nas a router link and the target route is an exact match.\n\nUse to communicate the current location to assistive technologies."
				},
				{
					"name": "async",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: runs the visit without blocking — the page stays interactive and\nseveral async visits can be in flight at once."
				},
				{
					"name": "cacheFor",
					"type": "string | number | (string | number)[] | undefined",
					"required": false,
					"description": "Inertia: how long a prefetched response stays fresh before it is\nre-fetched. A single duration, or `[staleAfter, expiresAfter]`.\n\nTyped platform-agnostically (matching BbButton) so the library's types\nnever require `@inertiajs/vue3` to be installed."
				},
				{
					"name": "cacheTags",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Inertia: tags to file this visit's prefetch cache under, so a later\nrequest can invalidate the whole tagged group."
				},
				{
					"name": "component",
					"type": "string | undefined",
					"required": false,
					"description": "Inertia: the page component this visit resolves to. Rarely set by hand —\nthe server normally decides it."
				},
				{
					"name": "data",
					"type": "object | undefined",
					"required": false,
					"description": "Request payload forwarded to Inertia when navigating via `href` in an\nInertia-enabled app. Ignored when not using Inertia."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables user interaction.\n\n- When rendering as a native button, sets the `disabled` attribute.\n- When rendering as a link (anchor/Inertia), removes `href`, adds\n  `aria-disabled=\"true\"`, and prevents navigation while keeping focusable\n  semantics consistent."
				},
				{
					"name": "download",
					"type": "string | boolean | undefined",
					"required": false,
					"description": "Marks an `href` link as a download. Renders a plain `<a download>` doing a\nnative navigation — never an Inertia/router visit — so file downloads\n(including same-origin, `blob:` and `data:` URLs) work. Pass a string to\nset the suggested filename. One of the native-anchor signals alongside\n`target` and `external`."
				},
				{
					"name": "exactActiveClass",
					"type": "string | undefined",
					"required": false,
					"default": "'router-link-exact-active'",
					"description": "CSS class applied when the component renders as a link and the target of the link\nand the url matches exactly.\nPorted for Inertia compatibility."
				},
				{
					"name": "except",
					"type": "string[] | undefined",
					"required": false,
					"description": "Inertia: the inverse of `only` — properties to EXCLUDE from a partial\nreload. Pass one or the other, not both."
				},
				{
					"name": "external",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Forces an `href` link to render as a plain `<a>` (native navigation),\nbypassing Inertia/router interception — the same intent as Nuxt's\n`NuxtLink` `external`. Use for links outside the SPA. One of the\nnative-anchor signals alongside `target` and `download`."
				},
				{
					"name": "headers",
					"type": "object | undefined",
					"required": false,
					"description": "Additional HTTP headers forwarded to Inertia when navigating via `href`\nin an Inertia-enabled app."
				},
				{
					"name": "href",
					"type": "string | undefined",
					"required": false,
					"description": "Hyperlink reference used when rendering as an anchor (or as an Inertia\nlink in Inertia-enabled apps). If provided and not disabled, the component\nrenders as an anchor/Inertia link."
				},
				{
					"name": "instant",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: navigate optimistically on click and reconcile when the response\nlands, instead of waiting for the round trip."
				},
				{
					"name": "method",
					"type": "\"get\" | \"post\" | \"put\" | \"patch\" | \"delete\" | undefined",
					"required": false,
					"description": "HTTP method used for Inertia navigation when `href` is provided in an\nInertia-enabled app. Ignored otherwise."
				},
				{
					"name": "onBefore",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia right before the request is sent."
				},
				{
					"name": "onCancel",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a request is cancelled."
				},
				{
					"name": "onCancelToken",
					"type": "((cancelToken: unknown) => void) | undefined",
					"required": false,
					"description": "Receives the Inertia cancel token source when a request is initiated.\nCan be used to cancel the request.\n\nTyped platform-agnostically (matching BbButton) so the library's types\nnever require `@inertiajs/vue3` to be installed."
				},
				{
					"name": "onError",
					"type": "((errors: Record<string, string>) => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when the server responds with\nVALIDATION errors — the ordinary 422 path.\n\nThis is the only failure callback Inertia's `Link` accepts.\n`onHttpException` (server answered 5xx) and `onNetworkError` (the request\nnever arrived) are `router.visit()` / `useForm()` options, NOT Link\nprops — declaring them here would only paste bogus listeners onto the\nanchor. Use a form or an explicit visit when you need to tell them apart."
				},
				{
					"name": "onFinish",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia after the request has finished\n(regardless of success or error)."
				},
				{
					"name": "only",
					"type": "string[] | undefined",
					"required": false,
					"description": "Limits the properties that are preserved in Inertia partial reloads."
				},
				{
					"name": "onPrefetched",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a prefetch for this link has\ncompleted and is cached."
				},
				{
					"name": "onPrefetching",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a prefetch for this link starts."
				},
				{
					"name": "onProgress",
					"type": "((progress: { percentage: number | undefined; }) => void) | undefined",
					"required": false,
					"description": "Progress callback invoked by Inertia with the upload/download percentage\nwhen available."
				},
				{
					"name": "onStart",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a request starts."
				},
				{
					"name": "onSuccess",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a request succeeds."
				},
				{
					"name": "pageProps",
					"type": "Record<string, unknown> | ((currentProps: Record<string, unknown>, sharedProps: Record<string, unknown>) => Record<string, unknown>) | null | undefined",
					"required": false,
					"description": "Inertia: props to merge into the next page optimistically, before the\nserver responds. Either an object or a function of the current props.\n\nTyped platform-agnostically (matching BbButton) so the library's types\nnever require `@inertiajs/vue3` to be installed."
				},
				{
					"name": "prefetch",
					"type": "string | boolean | string[] | undefined",
					"required": false,
					"description": "Inertia: fetch and cache this link's page ahead of the click. `true` uses\nthe default trigger; a string or list of strings picks them\n(`'mount'`, `'hover'`, `'click'`)."
				},
				{
					"name": "preserveScroll",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether Inertia should preserve the current scroll position after\nnavigation. Can be a boolean or a predicate receiving the visit props."
				},
				{
					"name": "preserveState",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | null | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether Inertia should preserve the current state after navigation.\nCan be a boolean or a predicate receiving the visit props."
				},
				{
					"name": "preserveUrl",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: keep the current URL in the address bar even though the page\ncontent changes."
				},
				{
					"name": "queryStringArrayFormat",
					"type": "\"brackets\" | \"indices\" | undefined",
					"required": false,
					"default": "'brackets'",
					"description": "Format to use when serializing array values into the query string for\nInertia requests."
				},
				{
					"name": "rel",
					"type": "string | undefined",
					"required": false,
					"description": "Relationship between the current document and the linked resource.\nUseful for security when opening new tabs (e.g. `noopener noreferrer`)."
				},
				{
					"name": "replace",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Uses history replacement instead of push navigation.\n\n- With Vue Router (`to`), calls `router.replace`.\n- With Inertia (`href`), performs a replace visit."
				},
				{
					"name": "tag",
					"type": "ButtonTag | undefined",
					"required": false,
					"default": "'button'",
					"description": "Element to render for the plain (non-link, non-router) button:\n\n- `'button'` (default) — real button semantics and keyboard behavior\n- `'div'` / `'span'` — a clickable box nested inside another button or\n  link, where a nested `<button>` would be invalid markup\n- `'label'` — a file-upload trigger wrapping a visually hidden `<input>`\n\nIgnored when the component renders as a link/router (`href`/`to`) — those\nalways render `<a>`/router-link. When set to a non-`button` tag the native\n`type`/`disabled` attributes are dropped (they're invalid off a\n`<button>`); disabled state is still conveyed via the\n`bb-base-button--disabled` class."
				},
				{
					"name": "target",
					"type": "string | undefined",
					"required": false,
					"description": "Target browsing context for anchor/Inertia links (e.g. `_self`, `_blank`).\nIgnored when rendering as a native button."
				},
				{
					"name": "to",
					"type": "string | wt | bt | undefined",
					"required": false,
					"description": "Route location to navigate to. When provided (and not disabled), the\ncomponent renders as a Vue Router link."
				},
				{
					"name": "type",
					"type": "\"button\" | \"submit\" | \"reset\" | undefined",
					"required": false,
					"default": "'button'",
					"description": "Native `type` attribute used when rendering as a button (e.g. `button`,\n`submit`, `reset`)."
				},
				{
					"name": "viewTransition",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: run the page swap inside a View Transition, where the browser\nsupports one."
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "object",
					"description": "The action's label — what the badge displays as its body."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbBaseButton",
			"group": "Inputs",
			"description": "Unstyled button/link primitive: element resolution (button/anchor/router link) and the full navigation engine, with no visual chrome. Use for any clickable or navigable surface that is not a variant-first BbButton — cards, list rows, custom links.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbBaseButton.md",
			"source": "ai/source/BbBaseButton.md",
			"props": [
				{
					"name": "activeClass",
					"type": "string | undefined",
					"required": false,
					"default": "'router-link-active'",
					"description": "CSS class applied when the component renders as a link and the target of the link is the current route or the url matches partially.\nPorted for Inertia compatibility."
				},
				{
					"name": "ariaCurrentValue",
					"type": "\"page\" | \"step\" | \"location\" | \"date\" | \"time\" | \"true\" | \"false\" | undefined",
					"required": false,
					"default": "'page'",
					"description": "Value forwarded to the `aria-current` attribute when the component renders\nas a router link and the target route is an exact match.\n\nUse to communicate the current location to assistive technologies."
				},
				{
					"name": "async",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: runs the visit without blocking — the page stays interactive and\nseveral async visits can be in flight at once."
				},
				{
					"name": "block",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Makes the component take the full available width (block-level layout).\nAdds the `bb-base-button--block` modifier class."
				},
				{
					"name": "cacheFor",
					"type": "string | number | (string | number)[] | undefined",
					"required": false,
					"description": "Inertia: how long a prefetched response stays fresh before it is\nre-fetched. A single duration, or `[staleAfter, expiresAfter]`.\n\nTyped platform-agnostically (matching BbButton) so the library's types\nnever require `@inertiajs/vue3` to be installed."
				},
				{
					"name": "cacheTags",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Inertia: tags to file this visit's prefetch cache under, so a later\nrequest can invalidate the whole tagged group."
				},
				{
					"name": "component",
					"type": "string | undefined",
					"required": false,
					"description": "Inertia: the page component this visit resolves to. Rarely set by hand —\nthe server normally decides it."
				},
				{
					"name": "data",
					"type": "object | undefined",
					"required": false,
					"description": "Request payload forwarded to Inertia when navigating via `href` in an\nInertia-enabled app. Ignored when not using Inertia."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables user interaction.\n\n- When rendering as a native button, sets the `disabled` attribute.\n- When rendering as a link (anchor/Inertia), removes `href`, adds\n  `aria-disabled=\"true\"`, and prevents navigation while keeping focusable\n  semantics consistent."
				},
				{
					"name": "download",
					"type": "string | boolean | undefined",
					"required": false,
					"description": "Marks an `href` link as a download. Renders a plain `<a download>` doing a\nnative navigation — never an Inertia/router visit — so file downloads\n(including same-origin, `blob:` and `data:` URLs) work. Pass a string to\nset the suggested filename. One of the native-anchor signals alongside\n`target` and `external`."
				},
				{
					"name": "exactActiveClass",
					"type": "string | undefined",
					"required": false,
					"default": "'router-link-exact-active'",
					"description": "CSS class applied when the component renders as a link and the target of the link\nand the url matches exactly.\nPorted for Inertia compatibility."
				},
				{
					"name": "except",
					"type": "string[] | undefined",
					"required": false,
					"description": "Inertia: the inverse of `only` — properties to EXCLUDE from a partial\nreload. Pass one or the other, not both."
				},
				{
					"name": "external",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Forces an `href` link to render as a plain `<a>` (native navigation),\nbypassing Inertia/router interception — the same intent as Nuxt's\n`NuxtLink` `external`. Use for links outside the SPA. One of the\nnative-anchor signals alongside `target` and `download`."
				},
				{
					"name": "headers",
					"type": "object | undefined",
					"required": false,
					"description": "Additional HTTP headers forwarded to Inertia when navigating via `href`\nin an Inertia-enabled app."
				},
				{
					"name": "href",
					"type": "string | undefined",
					"required": false,
					"description": "Hyperlink reference used when rendering as an anchor (or as an Inertia\nlink in Inertia-enabled apps). If provided and not disabled, the component\nrenders as an anchor/Inertia link."
				},
				{
					"name": "instant",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: navigate optimistically on click and reconcile when the response\nlands, instead of waiting for the round trip."
				},
				{
					"name": "method",
					"type": "\"get\" | \"post\" | \"put\" | \"patch\" | \"delete\" | undefined",
					"required": false,
					"description": "HTTP method used for Inertia navigation when `href` is provided in an\nInertia-enabled app. Ignored otherwise."
				},
				{
					"name": "onBefore",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia right before the request is sent."
				},
				{
					"name": "onCancel",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a request is cancelled."
				},
				{
					"name": "onCancelToken",
					"type": "((cancelToken: unknown) => void) | undefined",
					"required": false,
					"description": "Receives the Inertia cancel token source when a request is initiated.\nCan be used to cancel the request.\n\nTyped platform-agnostically (matching BbButton) so the library's types\nnever require `@inertiajs/vue3` to be installed."
				},
				{
					"name": "onError",
					"type": "((errors: Record<string, string>) => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when the server responds with\nVALIDATION errors — the ordinary 422 path.\n\nThis is the only failure callback Inertia's `Link` accepts.\n`onHttpException` (server answered 5xx) and `onNetworkError` (the request\nnever arrived) are `router.visit()` / `useForm()` options, NOT Link\nprops — declaring them here would only paste bogus listeners onto the\nanchor. Use a form or an explicit visit when you need to tell them apart."
				},
				{
					"name": "onFinish",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia after the request has finished\n(regardless of success or error)."
				},
				{
					"name": "only",
					"type": "string[] | undefined",
					"required": false,
					"description": "Limits the properties that are preserved in Inertia partial reloads."
				},
				{
					"name": "onPrefetched",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a prefetch for this link has\ncompleted and is cached."
				},
				{
					"name": "onPrefetching",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a prefetch for this link starts."
				},
				{
					"name": "onProgress",
					"type": "((progress: { percentage: number | undefined; }) => void) | undefined",
					"required": false,
					"description": "Progress callback invoked by Inertia with the upload/download percentage\nwhen available."
				},
				{
					"name": "onStart",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a request starts."
				},
				{
					"name": "onSuccess",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a request succeeds."
				},
				{
					"name": "pageProps",
					"type": "Record<string, unknown> | ((currentProps: Record<string, unknown>, sharedProps: Record<string, unknown>) => Record<string, unknown>) | null | undefined",
					"required": false,
					"description": "Inertia: props to merge into the next page optimistically, before the\nserver responds. Either an object or a function of the current props.\n\nTyped platform-agnostically (matching BbButton) so the library's types\nnever require `@inertiajs/vue3` to be installed."
				},
				{
					"name": "prefetch",
					"type": "string | boolean | string[] | undefined",
					"required": false,
					"description": "Inertia: fetch and cache this link's page ahead of the click. `true` uses\nthe default trigger; a string or list of strings picks them\n(`'mount'`, `'hover'`, `'click'`)."
				},
				{
					"name": "preserveScroll",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether Inertia should preserve the current scroll position after\nnavigation. Can be a boolean or a predicate receiving the visit props."
				},
				{
					"name": "preserveState",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | null | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether Inertia should preserve the current state after navigation.\nCan be a boolean or a predicate receiving the visit props."
				},
				{
					"name": "preserveUrl",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: keep the current URL in the address bar even though the page\ncontent changes."
				},
				{
					"name": "queryStringArrayFormat",
					"type": "\"brackets\" | \"indices\" | undefined",
					"required": false,
					"default": "'brackets'",
					"description": "Format to use when serializing array values into the query string for\nInertia requests."
				},
				{
					"name": "rel",
					"type": "string | undefined",
					"required": false,
					"description": "Relationship between the current document and the linked resource.\nUseful for security when opening new tabs (e.g. `noopener noreferrer`)."
				},
				{
					"name": "replace",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Uses history replacement instead of push navigation.\n\n- With Vue Router (`to`), calls `router.replace`.\n- With Inertia (`href`), performs a replace visit."
				},
				{
					"name": "tag",
					"type": "ButtonTag | undefined",
					"required": false,
					"default": "'button'",
					"description": "Element to render for the plain (non-link, non-router) button:\n\n- `'button'` (default) — real button semantics and keyboard behavior\n- `'div'` / `'span'` — a clickable box nested inside another button or\n  link, where a nested `<button>` would be invalid markup\n- `'label'` — a file-upload trigger wrapping a visually hidden `<input>`\n\nIgnored when the component renders as a link/router (`href`/`to`) — those\nalways render `<a>`/router-link. When set to a non-`button` tag the native\n`type`/`disabled` attributes are dropped (they're invalid off a\n`<button>`); disabled state is still conveyed via the\n`bb-base-button--disabled` class."
				},
				{
					"name": "target",
					"type": "string | undefined",
					"required": false,
					"description": "Target browsing context for anchor/Inertia links (e.g. `_self`, `_blank`).\nIgnored when rendering as a native button."
				},
				{
					"name": "text",
					"type": "string | undefined",
					"required": false,
					"description": "Fallback text content rendered when no default slot is provided."
				},
				{
					"name": "to",
					"type": "string | wt | bt | undefined",
					"required": false,
					"description": "Route location to navigate to. When provided (and not disabled), the\ncomponent renders as a Vue Router link."
				},
				{
					"name": "type",
					"type": "\"button\" | \"submit\" | \"reset\" | undefined",
					"required": false,
					"default": "\"button\"",
					"description": "Native `type` attribute used when rendering as a button (e.g. `button`,\n`submit`, `reset`)."
				},
				{
					"name": "viewTransition",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: run the page swap inside a View Transition, where the browser\nsupports one."
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "object",
					"description": "Primary content rendered inside the button element. Falls back to the `text` prop when empty."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbBaseCheckbox",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level checkbox primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseCheckbox.md",
			"source": "ai/source/BbBaseCheckbox.md",
			"props": [
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "ID of the element that describes this checkbox for assistive technologies.\nForwarded to the input as `aria-describedby`."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"default": "false",
					"description": "Automatically focuses the checkbox when the page/component loads.\nUse sparingly to avoid usability issues."
				},
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "undefined",
					"description": "Forces the checkbox checked state (controlled prop).\nWhen omitted, the checked state is derived from `modelValue === trueValue`.\nDeliberately `undefined` rather than `false`, so \"unset\" stays\ndistinguishable from an explicit `:checked=\"false\"`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables user interaction. Also applied when `readonly` is set, since\nnative checkboxes do not support `readonly`."
				},
				{
					"name": "falseValue",
					"type": "any",
					"required": false,
					"default": "false",
					"description": "Value submitted/emitted when the checkbox is unchecked. Accepts any\nserializable value. Serialized to a string for form submission."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the component into an error state (adds error styling class `bb-base-checkbox--errors`)."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the component into a warning state (adds `bb-base-checkbox--warnings`).\nErrors take priority when both are set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Identifier forwarded to the input."
				},
				{
					"name": "indeterminate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the checkbox in the indeterminate state (neither checked nor\nunchecked). Note: the native `indeterminate` state resets on user click;\nthis component re-applies it to keep UI and prop aligned."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false,
					"description": "Bound value for `v-model`. When it equals `trueValue` the checkbox is\nconsidered checked, otherwise unchecked."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute of the input, used during form submission."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the input in a read-only state. Since checkboxes do not support\nnative `readonly`, the input is disabled while styled as read-only."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the input as required for form validation."
				},
				{
					"name": "submitWhenFalse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "When unchecked, submits a hidden input with `falseValue` so that a value\nis still posted with the form. When checked, the visible input submits\n`trueValue` as usual."
				},
				{
					"name": "trueValue",
					"type": "any",
					"required": false,
					"default": "true",
					"description": "Value submitted/emitted when the checkbox is checked. Accepts any\nserializable value. Serialized to a string for form submission."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "icon",
					"type": "BaseCheckboxIconSlotProps",
					"description": "Replaces the default checkmark SVG rendered inside the checkbox box."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			]
		},
		{
			"name": "BbBaseCheckboxGroup",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level grouped checkbox primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseCheckboxGroup.md",
			"source": "ai/source/BbBaseCheckboxGroup.md",
			"props": [
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "ID of the element that describes the entire checkbox group for assistive\ntechnologies. Forwarded to each generated input as `aria-describedby`."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"default": "false",
					"description": "Automatically focuses the first checkbox on mount when true.\nApplied only to the first option."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"default": "[]",
					"description": "List of reactive values which, when changed, trigger items re-fetching.\nUseful to reload options based on external inputs."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) applied when reacting to `dependencies` changes."
				},
				{
					"name": "direction",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"default": "\"horizontal\"",
					"description": "Direction of the group layout.\n- `horizontal`: options flow in rows\n- `vertical`: options stack in a column"
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables interaction for the whole group."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enforces that `modelValue` contains only values present in `items`.\nIncoherent values are removed and `update:modelValue` is emitted with a\ncoherent array. Please check out {@link https://ui-components-docs.vercel.app/it/guides/coherence the docs} for more information."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the component into an error state adds the error styling class."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the component into a warning state. Errors take priority when both are set."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides each option's label text (the text rendered next to every\ninput) while keeping it accessible to screen readers."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Identifier of the group. Used to derive per-option IDs\nfor accessible labeling."
				},
				{
					"name": "items",
					"type": "T[] | ((prefill: boolean, modelValue?: any) => T[] | Promise<T[]>)",
					"required": true,
					"default": "[]",
					"description": "Items provider. Can be:\n- An array of items\n- A sync/async function `(prefill, modelValue) => items`\n\nWhen a function is provided, it is invoked on prefill and when dependencies\nchange to load options dynamically."
				},
				{
					"name": "itemText",
					"type": "(T extends object ? string | ((item: T) => string) : (item: T) => string) | undefined",
					"required": false,
					"default": "JSON.stringify(item)",
					"description": "Defines how to derive the display text from an item. Accepts a nested key path\ninto the item or a function `(item) => string`."
				},
				{
					"name": "itemValue",
					"type": "(T extends object ? string | ((item: T) => string) : (item: T) => any) | undefined",
					"required": false,
					"default": "JSON.stringify(item)",
					"description": "Defines how to derive the value from an item. Accepts a nested key path into the\nitem or a function `(item) => any`."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"default": "'Loading...'",
					"description": "Text displayed while items are loading."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"default": "Infinity",
					"description": "Maximum number of selectable items."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "Selected values for the group. Used with `v-model`.\nSingle value when `multiple` is false, array when `multiple` is true."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) applied when reacting to `modelValue` changes."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "true",
					"description": "Enables multi-selection behavior.\nWhen `true`, `modelValue` must be an array and emitted updates are arrays.\nWhen `false`, `modelValue` must be a single value (or `null`) and emitted\nupdates are single values."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute applied to each input for form submission."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"default": "'No data to display'",
					"description": "Text displayed when there are no items to show."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Makes all checkboxes read-only. Since checkboxes do not support native\n`readonly`, inputs are disabled while styled as read-only."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: T) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void",
					"description": "Emitted when the group becomes active (focus/click enters it)."
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void",
					"description": "Emitted when one of the generated checkbox inputs loses focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void",
					"description": "Emitted when an option is toggled.\nForwards the original DOM `Event` from the checkbox input."
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void",
					"description": "Emitted when one of the generated checkbox inputs is clicked.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void",
					"description": "Emitted when one of the generated checkbox inputs receives focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void",
					"description": "Emitted when focus/click moves outside the group after it was active.\nUseful for validation-on-blur flows at group level."
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void",
					"description": "Emitted on native input events from generated checkbox inputs.\nForwards the original DOM `Event`."
				},
				{
					"name": "keydown",
					"signature": "(e: \"keydown\", event: KeyboardEvent): void",
					"description": "Emitted for keyboard interaction on generated checkbox inputs.\nForwards the original DOM `KeyboardEvent`."
				},
				{
					"name": "mousedown",
					"signature": "(e: \"mousedown\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is pressed over a checkbox input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "mouseup",
					"signature": "(e: \"mouseup\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is released over a checkbox input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void",
					"description": "Emitted with the coherent next selection array whenever selection changes."
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "BaseCheckboxGroupEmptySlotProps",
					"description": "Content rendered after the last option, inside the options container."
				},
				{
					"name": "icon",
					"type": "BaseCheckboxGroupIconSlotProps<T>",
					"description": "Replaces the default checkmark icon for each checkbox option. Receives all `BaseCheckbox`\nslot attributes plus the source item and its display text."
				},
				{
					"name": "label",
					"type": "BaseCheckboxGroupLabelSlotProps<T>",
					"description": "Replaces the default label text for each option."
				},
				{
					"name": "loading",
					"type": "BaseCheckboxGroupEmptySlotProps",
					"description": "Content shown while options are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "BaseCheckboxGroupEmptySlotProps",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "prepend",
					"type": "BaseCheckboxGroupEmptySlotProps",
					"description": "Content rendered before the first option, inside the options container."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			]
		},
		{
			"name": "BbBaseCheckboxIcon",
			"group": "Selection",
			"description": "Standalone checkbox glyph (box + checkmark SVG). Presentational only — no input, no events. Compose it into a fully custom checkbox design, or let BbCheckbox/BbBaseCheckbox render it.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbBaseCheckboxIcon.md",
			"source": "ai/source/BbBaseCheckboxIcon.md",
			"props": [
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the checked state (fills the box and draws the checkmark)."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the glyph (muted fill, not-allowed cursor). Purely visual."
				},
				{
					"name": "focusVisible",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether keyboard focus is visible (`:focus-visible`). Draws the focus ring."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the glyph into the error state (danger border and ring color)."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the glyph into the warning state (warn border and ring color).\nErrors take priority when both are set."
				},
				{
					"name": "indeterminate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the indeterminate state (filled box with a dash instead of the\ncheckmark). Takes visual precedence over `checked`."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the read-only affordance (default cursor instead of pointer)."
				}
			],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbBaseColorInput",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level color input primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseColorInput.md",
			"source": "ai/source/BbBaseColorInput.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "When `true`, the palette opens as a bottom off-canvas sheet on mobile\nviewports instead of a floating popover. Forwarded to `BbColorPalette`,\nwhich resolves the fallback.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "alpha",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enable the alpha channel. When true the picker shows an opacity slider and\nemits / accepts `#RRGGBBAA` hex8 values."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the right hand side of the input."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of element(s) describing this input for assistive tech (space-separated).\nTypically includes the container hint id if used within a BaseInputContainer."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"default": "\"off\"",
					"description": "Autocomplete hint for the browser."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the input on mount."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show a clear button when the input has a value."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display the component in a compact layout."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable all interactions."
				},
				{
					"name": "eyeDropper",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show an eyedropper button to sample any color on screen.\nUses the native EyeDropper API — hidden automatically on unsupported browsers."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually mark the component as invalid (also sets aria-invalid on the input)."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The id attribute for the input element. Defaults to a generated `bb_<unique>` id when omitted."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display the loading state."
				},
				{
					"name": "modelValue",
					"type": "string | null",
					"required": true,
					"description": "v-model value: `#RRGGBB` hex string or `null` when empty.\nExample: `#1A2B3C`"
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute of the input."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "Placeholder text when there is no value."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the start of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make the input read-only."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark the input as required."
				},
				{
					"name": "swatches",
					"type": "boolean | string[][] | undefined",
					"required": false,
					"description": "Controls swatches display in the picker:\n- `true`       — show the built-in Material-palette swatches\n- `string[][]` — show custom swatches (each inner array = a column of shades)\n- `false` / omitted — no swatches section"
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Transition duration (ms) of the palette popover.\nForwarded to `BbColorPalette`, which supplies the default."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "Record<string, never>",
					"description": "Content rendered after the color picker indicator button, at the end of the inner container.\nMutually exclusive with `suffix`: the `suffix` slot renders inside this\nslot's default content, so providing `append` replaces the suffix\nrendering entirely and any `suffix` content is silently dropped.\nThis slot receives no scoped props."
				},
				{
					"name": "append-outer",
					"type": "Record<string, never>",
					"description": "Content rendered after the entire input control, outside the input chrome.\nThis slot receives no scoped props."
				},
				{
					"name": "prefix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the start of the input field area, before the typed text.\nThis slot receives no scoped props."
				},
				{
					"name": "prepend",
					"type": "Record<string, never>",
					"description": "Content rendered before the text input, at the start of the inner container.\nThis slot receives no scoped props."
				},
				{
					"name": "prepend-outer",
					"type": "Record<string, never>",
					"description": "Content rendered before the entire input control, outside the input chrome.\nThis slot receives no scoped props."
				},
				{
					"name": "suffix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the end of the input field area, after the typed text.\nRenders inside the default `append` area's suffix wrapper — mutually\nexclusive with `append`: if an `append` slot is provided it replaces this\nwrapper and the `suffix` content is not rendered.\nThis slot receives no scoped props."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | null"
				}
			]
		},
		{
			"name": "BbBaseColorPalette",
			"group": "Inputs",
			"description": "Internal low-level color palette panel used by BbColorPalette and BbColorInput.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseColorPalette.md",
			"source": "ai/source/BbBaseColorPalette.md",
			"props": [
				{
					"name": "alpha",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enable alpha channel support.\nWhen true, an alpha slider is shown and emitted values include alpha as hex8."
				},
				{
					"name": "eyeDropper",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show an eyedropper button that lets the user sample any color on screen.\nUses the native EyeDropper API — hidden automatically on unsupported browsers."
				},
				{
					"name": "modelValue",
					"type": "string | null",
					"required": true,
					"description": "Current color value bound via `v-model`.\nAccepts `#RRGGBB` and `#RRGGBBAA` (alpha) formats, or `null` for no value."
				},
				{
					"name": "swatches",
					"type": "boolean | string[][] | undefined",
					"required": false,
					"description": "Controls swatches display:\n- `true`      — show the built-in Material-palette swatches\n- `string[][]` — show custom swatches (each inner array = a column of shades)\n- `false` / omitted — no swatches section"
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string): void"
				}
			],
			"slots": [],
			"exposed": [
				{
					"name": "el",
					"type": "HTMLDivElement | null"
				}
			],
			"models": [
				{
					"name": "modelValue",
					"type": "string | null"
				}
			]
		},
		{
			"name": "BbBaseDatePicker",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level date picker primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseDatePicker.md",
			"source": "ai/source/BbBaseDatePicker.md",
			"props": [
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "firstDayOfWeek",
					"type": "0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined",
					"required": false,
					"default": "1",
					"description": "Defines the first day of the week with `0` meaning Sunday and `6` meaning Saturday."
				},
				{
					"name": "floating",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "If true the value is a plain calendar string (`YYYY-MM-DD`, or the shape\n`type` dictates) instead of the default ISO instant."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "max",
					"type": "string | undefined",
					"required": false,
					"description": "Maximum selectable date."
				},
				{
					"name": "min",
					"type": "string | undefined",
					"required": false,
					"description": "Minimum selectable date."
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null",
					"required": true,
					"description": "Used by v-model. Can be null, a single string, or an array of strings based on whether a range or single date is needed."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Allows the selection of multiple items."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Selects a range of dates between two dates. It selects all of the days between start and end."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "selectable",
					"type": "((date: string) => boolean) | undefined",
					"required": false,
					"description": "Function that accepts a date string and returns a boolean. Returning `false` means the date cannot be selected.\nThe string is shaped by `type`: `YYYY-MM` under `month`, `YYYY` under `year`."
				},
				{
					"name": "type",
					"type": "DatePickerType | undefined",
					"required": false,
					"default": "\"date\"",
					"description": "What the grid selects: a day (`date`/`datetime`), a month, or a year.\nThe coarse types make the month/year panel terminal instead of a\nnavigation step, and emit `YYYY-MM` / `YYYY`."
				},
				{
					"name": "utc",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Emits values as UTC ISO strings (`...Z`) instead of ISO strings carrying\nthe local offset (`...+01:00`). Emission-only: incoming values are parsed\nidentically either way, so the prop can be added or removed without\ntouching stored values. Ignored when `floating` is set."
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | string[] | null): void"
				}
			],
			"slots": [],
			"exposed": [
				{
					"name": "resetStatus",
					"type": "() => void"
				}
			],
			"models": [
				{
					"name": "modelValue",
					"type": "string | string[] | null"
				}
			]
		},
		{
			"name": "BbBaseDatePickerInput",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level date-picker input primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseDatePickerInput.md",
			"source": "ai/source/BbBaseDatePickerInput.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "On mobile the calendar opens inside a bottom off-canvas sheet instead of a\nfloating popover, mirroring the adaptive behaviour of `BbPopover`/`BbSelectPopover`.\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "ampm",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "12-hour display with an AM/PM segment (requires `type=\"datetime\"`). Purely a\nfield-composition concern: `modelValue` and the `time` model stay 24-hour\nregardless. Type `A`/`P` (or ArrowUp/Down) to set the meridiem."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the right hand side of the input."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Additional description id(s) announced by assistive technologies.\nUsually provided by an outer input container to link hint/error text."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"default": "\"off\"",
					"description": "Browser autocomplete hint for the input."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the first text field automatically when the component mounts."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button whenever a value is present and the control is interactive."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Applies the compact density styles to the control."
				},
				{
					"name": "disableCalendar",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the calendar: hides the trigger button and prevents the popover\nfrom opening. Use `'desktop'` to disable it on desktop only (keyboard-first\nthere, calendar-first on mobile — complementing `disableWriting: 'mobile'`)\nor `'mobile'` to disable it on mobile only. An error is thrown if both\nwriting and the calendar would be unavailable on the same platform."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the input, calendar trigger, and popover."
				},
				{
					"name": "disableWriting",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether manual typing is disabled inside the text fields.\nUse `'mobile'` to disable typing only on mobile, `'desktop'` to disable typing only on desktop.\nApplies to both single and range modes."
				},
				{
					"name": "firstDayOfWeek",
					"type": "0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined",
					"required": false,
					"description": "Sets the first day of the week for the calendar (0 = Sunday, 6 = Saturday)."
				},
				{
					"name": "floating",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Emit dates formatted as `YYYY-MM-DD` instead of ISO strings."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the control as invalid, applying error styles and setting `aria-invalid`."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the input element. Falls back to an auto-generated `bdpi-<uid>` value."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Shows loading visuals on the input."
				},
				{
					"name": "max",
					"type": "string | undefined",
					"required": false,
					"description": "Maximum selectable date in `YYYY-MM-DD` format — or, with `type=\"datetime\"`,\n`YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values\noutside both patterns throw during setup to surface configuration\nmistakes."
				},
				{
					"name": "min",
					"type": "string | undefined",
					"required": false,
					"description": "Minimum selectable date in `YYYY-MM-DD` format — or, with `type=\"datetime\"`,\n`YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values\noutside both patterns throw during setup to surface configuration\nmistakes."
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null",
					"required": true,
					"description": "v-model value. Use `null` for empty, a single string for single selection,\nor a two-element string array (`[start, end]`) when `range` is true."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute forwarded to the native inputs. In single mode fields are named\n`${name}-day`, `${name}-month`, `${name}-year`; in range mode they are prefixed\nwith the segment (`${name}-start-day`, `${name}-end-day`, …)."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on\nmobile (e.g. `title`, `size`, `persistent`)."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "Placeholder text displayed when no value is present. Defaults to the\nlocalized format hint (`baseDatePickerInput.dateFormatSingle` /\n`dateFormatRange` — e.g. `MM/DD/YYYY` for `en`, `GG/MM/AAAA` for `it`)."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Icon name rendered before the input field."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enables range selection. When active, v-model expects a two-element array `[start, end]`.\nUsers can still type into the start and end segments unless `disableWriting` disables typing."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Makes the text fields read-only and prevents opening the calendar."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the inputs as required to the browser."
				},
				{
					"name": "seconds",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds the seconds segment (requires `type=\"datetime\"`). Without it, an incoming\nvalue carrying seconds displays truncated and is left untouched until the\nuser commits an edit, at which point seconds zero out."
				},
				{
					"name": "selectable",
					"type": "((date: string) => boolean) | undefined",
					"required": false,
					"description": "Predicate invoked for each candidate date. Return `false` to disable selection for that value."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Minute granularity for the calendar's minute column and arrow stepping\n(requires `type=\"datetime\"`). Constrains what the component produces, never what\nit accepts: a typed off-grid value (e.g. `10:07` with `step: 15`) is\nemitted verbatim, and no column row highlights for it."
				},
				{
					"name": "time",
					"type": "string | string[] | null | undefined",
					"required": false,
					"description": "Companion model for the time part (`v-model:time`), always 24-hour\n`HH:mm` / `HH:mm:ss` regardless of display. With `floating` it is the\nonly carrier of the time; otherwise it mirrors the time inside\n`modelValue` (same digits) and writing it rewrites the model's time part.\nRequires `type=\"datetime\"`."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"description": "Transition duration, in milliseconds, for the popover appearance."
				},
				{
					"name": "type",
					"type": "DatePickerType | undefined",
					"required": false,
					"default": "\"date\"",
					"description": "What the field edits, and therefore its segments and emitted shape.\n\n- `date` (default) — `DD/MM/YYYY`.\n- `datetime` — adds the time segments and the calendar's time rail.\n- `month` — `MM/YYYY`, emitting `YYYY-MM`.\n- `year` — `YYYY`, emitting `YYYY`.\n\n`month`/`year` are calendar labels: they force `floating`, ignore `utc`,\nand make the time props (`seconds`, `ampm`, `step`, `v-model:time`) inert."
				},
				{
					"name": "utc",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Emits values as UTC ISO strings (`...Z`) instead of ISO strings carrying\nthe local offset (`...+01:00`). Emission-only: incoming values are parsed\nidentically either way, so the prop can be added or removed without\ntouching stored values. Fields always display local time — UTC is a\nbackend concern. Ignored when `floating` is set (a plain date has no zone)."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "error",
					"signature": "(event: \"error\", error: DatePickerInputError): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | string[] | null): void"
				},
				{
					"name": "update:time",
					"signature": "(event: \"update:time\", value: string | string[] | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the date fields, at the end of the inner container (before the calendar toggle button)."
				},
				{
					"name": "append-outer",
					"type": "object",
					"description": "Content rendered after the entire input control, outside the input chrome."
				},
				{
					"name": "append:day",
					"type": "{ first: boolean; highlighted: boolean; item: any; label: string; last: boolean; middle: boolean; selected: boolean; }",
					"description": "Appends content below each calendar day."
				},
				{
					"name": "day",
					"type": "{ first: boolean; highlighted: boolean; item: any; label: string; last: boolean; middle: boolean; selected: boolean; }",
					"description": "Replaces the day button label inside each calendar day."
				},
				{
					"name": "prefix",
					"type": "object",
					"description": "Inline content rendered at the start of the input field area, before the date fields."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the date fields, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "object",
					"description": "Content rendered before the entire input control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "object",
					"description": "Inline content rendered at the end of the input field area, after the date fields."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | string[] | null"
				},
				{
					"name": "time",
					"type": "string | string[] | null | undefined"
				}
			]
		},
		{
			"name": "BbBaseInputContainer",
			"group": "Reference Only - Base Primitive",
			"description": "Internal wrapper for labels, hints, validation, and shared input layout.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseInputContainer.md",
			"source": "ai/source/BbBaseInputContainer.md",
			"props": [
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the inner control exposes a clear action."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant to the container."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Always-visible descriptive text rendered below the label and above the input, in muted foreground color.\nWhen present, its id is exposed to the input slot via `ariaDescribedby`, after any error/warning\nids and before the hint id.\nIn `floating` label mode it renders as a single line above the field and the label floats past it;\nin `inside` label mode it renders as a second single line under the label, growing the field."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"default": "\"vertical\"",
					"description": "Controls label/input layout.\nAccepts `'vertical'`, `'horizontal'`, `'auto'`, or a two-token ratio pattern\nsuch as `\"xx xxxxx\"` that sizes the label/input columns by token length.\nAn unrecognized value warns and falls back to `'auto'`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the inner control is disabled."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Messages displayed beneath the input. Accepts a string or array; values are rendered one per line.\nThey render in an `aria-live=\"polite\"` region (announced when they appear) and, while the list is\nnon-empty, their container id is also exposed to the input slot via `ariaDescribedby` — first in\nthe list — so the reason the field is invalid is re-read whenever the control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Forces the error state independently of `errors`, useful to pre-style the container."
				},
				{
					"name": "hasValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the inner control currently contains a value."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Forces the warning state independently of `warnings`. Same chrome as\nerrors but with `--bb-warn`; errors take priority when both are set."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Hide the visual label while keeping it available to assistive technology."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Hint text rendered below the input. While shown, its id is exposed to the input slot via\n`ariaDescribedby` — last in the list, after any error/warning ids and the description id."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the container and associated input. Falls back to an auto-generated id when omitted."
				},
				{
					"name": "inputPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "'left'",
					"description": "Horizontal alignment of the input column when direction is horizontal or custom.\nUnset, it follows the layout: `'right'` in a horizontal/ratio split (beside\nthe left-hand label), `'left'` otherwise — and `direction` is `'vertical'`\nby default, so the effective default is `'left'`."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Visible label text for the field. Also used to derive a fallback name."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Horizontal alignment for the label column."
				},
				{
					"name": "labelTag",
					"type": "LabelTag | undefined",
					"required": false,
					"default": "\"label\"",
					"description": "Element used for the label: `label` (default), `legend` inside a\n`fieldset` container, or `span` when the text must not steal the click\nbecause the control already carries its own label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the inner control is in a loading state."
				},
				{
					"name": "mobile",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the inner control is in mobile viewport mode."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit name attribute forwarded to the input. When omitted, a slug derived from `label` is used."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the inner control is readonly."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Swap the label and input columns."
				},
				{
					"name": "showHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keep the hint permanently visible, regardless of focus."
				},
				{
					"name": "tag",
					"type": "ContainerTag | undefined",
					"required": false,
					"default": "\"span\"",
					"description": "Element used for the inner wrapper: `span` (default) to remain inline,\n`div` for a block wrapper, `fieldset` for grouped controls (pair it with\n`labelTag=\"legend\"`), or `label` to make the whole wrapper activate the\ncontrol."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages displayed beneath the input, in their own `aria-live`\nregion. Accepts a string or array; values are rendered one per line, in\n`--bb-text-warn` amber (the text-contrast half of the warning pair — the\nchrome stays on `--bb-warn`). A non-empty list implies the warning state\n(mirroring how `errors` implies the error state); errors suppress warning\nmessages when both are set. While displayed, the container id is also exposed to the\ninput slot via `ariaDescribedby` (after any errors, before description/hint)."
				}
			],
			"events": [],
			"slots": [
				{
					"name": "input",
					"type": "BaseInputContainerInputSlotProps",
					"description": "The form control to render, positioned in the input column. Receives pre-computed\nwiring attributes so the inner input can be correctly associated with the label and hint."
				},
				{
					"name": "label",
					"type": "BaseInputContainerLabelSlotProps",
					"description": "Replaces the default label text. The outer label element and its `for` association are always rendered."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbBaseNumberInput",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level numeric input primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseNumberInput.md",
			"source": "ai/source/BbBaseNumberInput.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the right hand side of the input."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of descriptive elements announced by screen readers."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"default": "\"off\"",
					"description": "Browser autocomplete hint for the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the input automatically after mount."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show a clear button whenever a value is present and the control is interactive."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable manual input and the exposed increase/decrease helpers."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Force the error state; also toggles `aria-invalid`."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id forwarded to the native input."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display the loading state styles."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"default": "Number.MAX_SAFE_INTEGER",
					"description": "Upper bound for clamping user input and helper increments."
				},
				{
					"name": "maxPrecision",
					"type": "number | undefined",
					"required": false,
					"default": "8",
					"description": "Maximum number of decimal digits retained after processing."
				},
				{
					"name": "min",
					"type": "number | undefined",
					"required": false,
					"default": "Number.MIN_SAFE_INTEGER",
					"description": "Lower bound for clamping user input and helper decrements."
				},
				{
					"name": "modelValue",
					"type": "string | number | null",
					"required": true,
					"description": "v-model value. Accepts numbers, numeric strings, or null when empty."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute forwarded to the native input."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "Placeholder text when no value is present."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the left hand side of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make the input read-only while keeping its value visible."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark the input as required for form validation."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Increment used by the `increase`/`decrease` helpers. Manual typing is never forced to this step."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "decrease",
					"signature": "(event: \"decrease\", value: number): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "increase",
					"signature": "(event: \"increase\", value: number): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: number | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Content rendered after the number input, at the end of the inner container.\nTypically used to place increment/decrement buttons next to the input."
				},
				{
					"name": "append-outer",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Content rendered after the entire input control, outside the input chrome."
				},
				{
					"name": "prefix",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Inline content rendered at the start of the input field area, before the typed number."
				},
				{
					"name": "prepend",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Content rendered before the number input, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Content rendered before the entire input control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Inline content rendered at the end of the input field area, after the typed number."
				}
			],
			"exposed": [
				{
					"name": "decrease",
					"type": "() => void"
				},
				{
					"name": "increase",
					"type": "() => void"
				}
			],
			"models": [
				{
					"name": "modelValue",
					"type": "string | number | null"
				}
			]
		},
		{
			"name": "BbBaseRadio",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level radio primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseRadio.md",
			"source": "ai/source/BbBaseRadio.md",
			"props": [
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of descriptive elements associated with the radio."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the control automatically after mount."
				},
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "undefined",
					"description": "Force the radio into a checked state regardless of `modelValue`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable the radio. When combined with `readonly`, the control is also disabled to mimic native behaviour."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the error styling class."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the warning styling class. Errors take priority when both are set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the underlying input element."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false,
					"description": "Current v-model value used to determine checked state."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": true,
					"description": "Shared group name for the radio input (required to join options)."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Treat the radio as read-only. Implemented by disabling the input while preserving styling hooks."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark the radio as required within its group."
				},
				{
					"name": "value",
					"type": "any",
					"required": true,
					"description": "Value emitted when the radio becomes checked. Accepts any serializable value."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "icon",
					"type": "BaseRadioIconSlotProps",
					"description": "Replaces the default radio dot visual rendered inside the radio container."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			]
		},
		{
			"name": "BbBaseRadioGroup",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level radio-group primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseRadioGroup.md",
			"source": "ai/source/BbBaseRadioGroup.md",
			"props": [
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of elements describing this group for assistive technologies."
				},
				{
					"name": "ariaLabelledby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of the element(s) that NAME this radio group. Supplying one (or a\nfallthrough `aria-label`/`aria-labelledby`) is what promotes the options\ncontainer to `role=\"radiogroup\"`: an unnamed `radiogroup` is not an\nimprovement over no role at all, so the role is withheld until a name\nsource exists. `BbRadioGroup` wires this to its `<legend>`."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the first radio on mount."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"description": "Additional dependencies that trigger item reloading when changed."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) for dependency-triggered reloads."
				},
				{
					"name": "direction",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"default": "\"horizontal\"",
					"description": "Direction of the layout of the inputs inside the fieldset."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable all radios in the group."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reset modelValue to `null` if it no longer matches available items (enforces coherence)."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply error styling to the group."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling to the group. Errors take priority when both are set."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Hide the visual label while keeping it accessible."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the fieldset. Used to generate ids for individual radios."
				},
				{
					"name": "items",
					"type": "T[] | ((prefill: boolean, modelValue?: any) => T[] | Promise<T[]>)",
					"required": true,
					"default": "[]",
					"description": "Array of items or function to load them asynchronously."
				},
				{
					"name": "itemText",
					"type": "(T extends object ? NestedKeyOf<T> | ((item: T) => string) : ((item: T) => string) | undefined) | undefined",
					"required": false,
					"description": "Path to item property for display text or function to extract it."
				},
				{
					"name": "itemValue",
					"type": "(T extends object ? NestedKeyOf<T> | ((item: T) => string) : ((item: T) => any) | undefined) | undefined",
					"required": false,
					"description": "Path to item property for value or function to extract it."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "Message shown while items are loading."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "Used by v-model. Can be any serializable type."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) for modelValue change handling."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": true,
					"description": "Shared name for all radios in the group (required for grouping)."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "Message displayed when no items are available."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make all radios read-only."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark at least one radio as required."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: T) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void",
					"description": "Emitted when the group becomes active (focus/click enters it)."
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void",
					"description": "Emitted when one of the generated radio inputs loses focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void",
					"description": "Emitted when a radio option is selected.\nForwards the original DOM `Event` from the radio input."
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void",
					"description": "Emitted when one of the generated radio inputs is clicked.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void",
					"description": "Emitted when one of the generated radio inputs receives focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void",
					"description": "Emitted when focus/click moves outside the group after it was active.\nUseful for validation-on-blur flows at group level."
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void",
					"description": "Emitted on native input events from generated radio inputs.\nForwards the original DOM `Event`."
				},
				{
					"name": "keydown",
					"signature": "(e: \"keydown\", event: KeyboardEvent): void",
					"description": "Emitted for keyboard interaction on generated radio inputs.\nForwards the original DOM `KeyboardEvent`."
				},
				{
					"name": "mousedown",
					"signature": "(e: \"mousedown\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is pressed over a radio input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "mouseup",
					"signature": "(e: \"mouseup\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is released over a radio input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void",
					"description": "Emitted with the newly selected value when the selection changes."
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the last option, inside the options container."
				},
				{
					"name": "icon",
					"type": "BaseRadioGroupIconSlotProps<T>",
					"description": "Replaces the default radio dot icon for each option. Receives all `BaseRadio`\nslot attributes plus the source item and its display text."
				},
				{
					"name": "label",
					"type": "BaseRadioGroupLabelSlotProps<T>",
					"description": "Replaces the default label text for each option."
				},
				{
					"name": "loading",
					"type": "object",
					"description": "Content shown while options are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the first option, inside the options container."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			]
		},
		{
			"name": "BbBaseRadioIcon",
			"group": "Selection",
			"description": "Standalone radio glyph (ring + dot). Presentational only — no input, no events. Compose it into a fully custom radio design, or let BbRadio/BbBaseRadio render it.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbBaseRadioIcon.md",
			"source": "ai/source/BbBaseRadioIcon.md",
			"props": [
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the checked state (grows the inner dot)."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the glyph (muted fill, not-allowed cursor). Purely visual."
				},
				{
					"name": "focusVisible",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether keyboard focus is visible (`:focus-visible`). Draws the focus ring."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the glyph into the error state (danger border and ring color)."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the glyph into the warning state (warn border and ring color).\nErrors take priority when both are set."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the read-only affordance (default cursor instead of pointer)."
				}
			],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbBaseRating",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level rating primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseRating.md",
			"source": "ai/source/BbBaseRating.md",
			"props": [
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of elements describing this rating input for assistive technologies."
				},
				{
					"name": "ariaLabelledby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of the element(s) that NAME this rating group. Supplying one is what\npromotes the inner container to `role=\"radiogroup\"` (Q4.5): an unnamed\n`radiogroup` announces as a bare \"radio group\" and is no better than the\nrole-less `<span>` it replaces, so the role is withheld until a name\nsource exists. `BbRating` wires this to its `<legend>`."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Allows clearing the selected rating by clicking the current value."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable all interactions with the rating."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply error styling to the rating."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the rating container. Used to generate ids for individual stars."
				},
				{
					"name": "modelValue",
					"type": "number | null",
					"required": true,
					"description": "v-model value: the selected rating (1 to `stars`) or `null` for no selection."
				},
				{
					"name": "name",
					"type": "string",
					"required": true,
					"description": "Shared name attribute for all star radio inputs (required for grouping)."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make the rating read-only while keeping it visible."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark the rating as required."
				},
				{
					"name": "size",
					"type": "number | ({ size?: any; } & string) | keyof Sizes | undefined",
					"required": false,
					"description": "Rating icon size. Accepts preset keys or any custom CSS length unit\n(e.g. `56ch`, `2rem`, `48px`) — applied verbatim, percentages included."
				},
				{
					"name": "stars",
					"type": "number | undefined",
					"required": false,
					"default": "5",
					"description": "Maximum number of stars to render and maximum selectable rating value."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: number | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the row of rating stars."
				},
				{
					"name": "icon",
					"type": "BaseRatingIconSlotProps",
					"description": "Replaces the default star SVG for each rating option."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the row of rating stars."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "number | null"
				}
			]
		},
		{
			"name": "BbBaseSelect",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level select/listbox primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseSelect.md",
			"source": "ai/source/BbBaseSelect.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "When `true`, the options panel opens as a bottom off-canvas sheet on mobile\nviewports instead of a floating popover; on desktop it stays a popover.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the right hand side of the control."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Id(s) of elements describing this select for assistive technologies."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"default": "'off'",
					"description": "Browser autocomplete hint forwarded to the search input inside the dropdown."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focuses the activator button on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show a clear button whenever a value is present and the control is interactive."
				},
				{
					"name": "comma",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display selected values as a comma-separated string instead of individual chips."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant."
				},
				{
					"name": "dependencies",
					"type": "any[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Additional dependencies that trigger item reloading when changed."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) for dependency-triggered reloads."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "disableWriting",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether the search input is shown inside the dropdown panel.\nUse `'mobile'` to hide it only on mobile, `'desktop'` to hide it only on desktop."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reset modelValue to `null` or empty array if it no longer matches available items."
				},
				{
					"name": "filterBy",
					"type": "string[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Property paths used to filter options when the user types in the search input.\nWhen empty (default) options are matched against their display text.\nWhen non-empty the provided paths are searched instead of the display text.\nTo disable filtering entirely set `disableWriting` so the user cannot type a query."
				},
				{
					"name": "groupBy",
					"type": "string | ((item: Item) => string | number | symbol) | undefined",
					"required": false,
					"description": "Path or function used to group options."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply error styling to the select."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "headerHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Height of group headers in the listbox (px)."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the control element. Also used to generate listbox and search input ids."
				},
				{
					"name": "itemHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Height of options in the listbox (px)."
				},
				{
					"name": "items",
					"type": "Item[] | ((query: string, prefill: boolean, modelValue: any) => Promise<Item[]>) | ((query: string, prefill: boolean, modelValue: any) => Item[])",
					"required": true,
					"description": "Array of items or async loader function.\nLoader functions receive `(query, prefill, modelValue)`; `modelValue` is\nthe raw v-model: an array in `multiple` mode, the raw model value\n(possibly `null`) in single mode."
				},
				{
					"name": "itemText",
					"type": "string | ((item: Item) => string) | undefined",
					"required": false,
					"description": "Path or function to extract display text from an item."
				},
				{
					"name": "itemValue",
					"type": "string | ((item: Item) => string) | undefined",
					"required": false,
					"description": "Path or function to extract a value from an item."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display the loading state."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "Message shown while items are loading."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"default": "Infinity",
					"description": "Maximum number of selectable items."
				},
				{
					"name": "maxSelectedLabels",
					"type": "number | undefined",
					"required": false,
					"default": "Infinity",
					"description": "Maximum number of labels shown before collapsing to a count summary.\nWhen set, this takes precedence over width-based overflow detection."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "v-model value. Array when `multiple` is true."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) for modelValue change handling."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enable multiple item selection. Requires modelValue to be an array."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute forwarded to hidden inputs for form submission."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "Message displayed when no options match."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on mobile."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "Placeholder text shown when no value is selected."
				},
				{
					"name": "prefill",
					"type": "boolean | \"interaction\" | undefined",
					"required": false,
					"default": "\"interaction\"",
					"description": "Controls when items are pre-loaded.\n`'interaction'` loads on first user interaction, `true` loads immediately,\n`false` is *search-first*: with a provider, nothing loads until the user\ntypes (opening alone does not), and the panel shows a \"search to begin\"\nhint meanwhile. `false` falls back to loading on open for array `items`\nor when writing is disabled. When the input has a value, it will load\nimmediately."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the left hand side of the control."
				},
				{
					"name": "queryDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "500",
					"description": "Debounce delay (ms) before triggering search queries after user input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make the control read-only while keeping the dropdown accessible."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the field as required for form validation.\nA visually-hidden sentinel input is used so native browser constraint validation fires."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: Item) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				},
				{
					"name": "selectedLabelsFn",
					"type": "((count: number) => string) | undefined",
					"required": false,
					"description": "Function to generate a summary label when selected items exceed `maxSelectedLabels`\nor overflow the control width."
				},
				{
					"name": "stash",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Accumulate selected items across searches."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Transition duration (ms) for dropdown animations.\nForwarded to `BbSelectPopover`, which supplies the default."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void"
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void"
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void"
				},
				{
					"name": "option:add",
					"signature": "(e: \"option:add\", text: string): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "BaseSelectActivatorSlotProps"
				},
				{
					"name": "append-outer",
					"type": "BaseSelectOuterSlotProps"
				},
				{
					"name": "chip",
					"type": "BaseSelectChipSlotProps<Item>",
					"description": "Replaces the default badge rendered for each selection in `multiple` mode."
				},
				{
					"name": "footer",
					"type": "BaseSelectPanelSlotProps",
					"description": "Content pinned to the bottom of the panel, below the options list."
				},
				{
					"name": "group",
					"type": "BaseSelectGroupSlotProps<Item>"
				},
				{
					"name": "header",
					"type": "BaseSelectPanelSlotProps",
					"description": "Content pinned to the top of the panel, above the search field."
				},
				{
					"name": "loading",
					"type": "{ query: string; }"
				},
				{
					"name": "no-data",
					"type": "{ query: string; focus: () => void; }"
				},
				{
					"name": "option",
					"type": "BaseSelectOptionSlotProps<Item>"
				},
				{
					"name": "prefix",
					"type": "object"
				},
				{
					"name": "prepend",
					"type": "BaseSelectActivatorSlotProps"
				},
				{
					"name": "prepend-outer",
					"type": "BaseSelectOuterSlotProps"
				},
				{
					"name": "suffix",
					"type": "object"
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			]
		},
		{
			"name": "BbBaseSlider",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level slider primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseSlider.md",
			"source": "ai/source/BbBaseSlider.md",
			"props": [
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of elements describing this slider for assistive technologies."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the slider on mount."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable all interactions with the slider."
				},
				{
					"name": "disableThumbTranslate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the proportional thumb translation that keeps thumbs centered\non the track (enabled by default). Set it when displaying ticks for\nbetter alignment."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply error styling to the slider."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the slider container. Used to generate ids for thumbs."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"default": "100",
					"description": "Upper bound for slider values."
				},
				{
					"name": "maxPrecision",
					"type": "number | undefined",
					"required": false,
					"default": "2",
					"description": "Maximum decimal places to retain in emitted values."
				},
				{
					"name": "min",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Lower bound for slider values."
				},
				{
					"name": "modelValue",
					"type": "number | number[] | null",
					"required": true,
					"default": "0",
					"description": "v-model value. Single number for single slider, two-element array for range."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enable range selection with two thumbs. When true, modelValue must be an array."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make the slider read-only while keeping it visible."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark the slider as required."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Granularity step for value changes via keyboard or pointer interaction."
				},
				{
					"name": "ticks",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show tick marks at each step interval."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "pointerdown",
					"signature": "(event: \"pointerdown\", event: PointerEvent): void"
				},
				{
					"name": "pointermove",
					"signature": "(event: \"pointermove\", event: PointerEvent): void"
				},
				{
					"name": "pointerup",
					"signature": "(event: \"pointerup\", event: PointerEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: number | number[]): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "BaseSliderStepSlotProps",
					"description": "Content rendered after the slider track, typically used to add a max-value label or button."
				},
				{
					"name": "prepend",
					"type": "BaseSliderStepSlotProps",
					"description": "Content rendered before the slider track, typically used to add a min-value label or button."
				},
				{
					"name": "thumb",
					"type": "BaseSliderThumbSlotProps",
					"description": "Fallback thumb used for non-range sliders (or inside `thumb:higher`/`thumb:lower` when not overridden separately)."
				},
				{
					"name": "thumb:higher",
					"type": "BaseSliderThumbSlotProps",
					"description": "Replaces the default higher-value thumb in range mode (`range: true`)."
				},
				{
					"name": "thumb:lower",
					"type": "BaseSliderThumbSlotProps",
					"description": "Replaces the default lower-value thumb in range mode (`range: true`)."
				},
				{
					"name": "tick",
					"type": "BaseSliderTickSlotProps",
					"description": "Replaces the default tick mark rendered at each step when ticks are enabled."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "number | number[] | null"
				}
			]
		},
		{
			"name": "BbBaseSwitch",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level switch primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseSwitch.md",
			"source": "ai/source/BbBaseSwitch.md",
			"props": [
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "ID of the element that describes this checkbox for assistive technologies.\nForwarded to the input as `aria-describedby`."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"default": "false",
					"description": "Automatically focuses the checkbox when the page/component loads.\nUse sparingly to avoid usability issues."
				},
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "undefined",
					"description": "Forces the checkbox checked state (controlled prop).\nWhen omitted, the checked state is derived from `modelValue === trueValue`.\nDeliberately `undefined` rather than `false`, so \"unset\" stays\ndistinguishable from an explicit `:checked=\"false\"`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables user interaction. Also applied when `readonly` is set, since\nnative checkboxes do not support `readonly`."
				},
				{
					"name": "falseValue",
					"type": "any",
					"required": false,
					"default": "false",
					"description": "Value submitted/emitted when the checkbox is unchecked. Accepts any\nserializable value. Serialized to a string for form submission."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the component into an error state (adds error styling class `bb-base-checkbox--errors`)."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the component into a warning state (adds `bb-base-checkbox--warnings`).\nErrors take priority when both are set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Identifier forwarded to the input."
				},
				{
					"name": "indeterminate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the checkbox in the indeterminate state (neither checked nor\nunchecked). Note: the native `indeterminate` state resets on user click;\nthis component re-applies it to keep UI and prop aligned."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false,
					"description": "Bound value for `v-model`. When it equals `trueValue` the checkbox is\nconsidered checked, otherwise unchecked."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute of the input, used during form submission."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the input in a read-only state. Since checkboxes do not support\nnative `readonly`, the input is disabled while styled as read-only."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the input as required for form validation."
				},
				{
					"name": "submitWhenFalse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "When unchecked, submits a hidden input with `falseValue` so that a value\nis still posted with the form. When checked, the visible input submits\n`trueValue` as usual."
				},
				{
					"name": "trueValue",
					"type": "any",
					"required": false,
					"default": "true",
					"description": "Value submitted/emitted when the checkbox is checked. Accepts any\nserializable value. Serialized to a string for form submission."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "icon",
					"type": "BaseCheckboxIconSlotProps"
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			]
		},
		{
			"name": "BbBaseSwitchGroup",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level grouped switch primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseSwitchGroup.md",
			"source": "ai/source/BbBaseSwitchGroup.md",
			"props": [
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "ID of the element that describes the entire checkbox group for assistive\ntechnologies. Forwarded to each generated input as `aria-describedby`."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"default": "false",
					"description": "Automatically focuses the first checkbox on mount when true.\nApplied only to the first option."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"default": "[]",
					"description": "List of reactive values which, when changed, trigger items re-fetching.\nUseful to reload options based on external inputs."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) applied when reacting to `dependencies` changes."
				},
				{
					"name": "direction",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"default": "\"horizontal\"",
					"description": "Direction of the group layout.\n- `horizontal`: options flow in rows\n- `vertical`: options stack in a column"
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables interaction for the whole group."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enforces that `modelValue` contains only values present in `items`.\nIncoherent values are removed and `update:modelValue` is emitted with a\ncoherent array. Please check out {@link https://ui-components-docs.vercel.app/it/guides/coherence the docs} for more information."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the component into an error state adds the error styling class."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the component into a warning state. Errors take priority when both are set."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides each option's label text (the text rendered next to every\ninput) while keeping it accessible to screen readers."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Identifier of the group. Used to derive per-option IDs\nfor accessible labeling."
				},
				{
					"name": "items",
					"type": "T[] | ((prefill: boolean, modelValue?: any) => T[] | Promise<T[]>)",
					"required": true,
					"default": "[]",
					"description": "Items provider. Can be:\n- An array of items\n- A sync/async function `(prefill, modelValue) => items`\n\nWhen a function is provided, it is invoked on prefill and when dependencies\nchange to load options dynamically."
				},
				{
					"name": "itemText",
					"type": "(T extends object ? string | ((item: T) => string) : (item: T) => string) | undefined",
					"required": false,
					"default": "JSON.stringify(item)",
					"description": "Defines how to derive the display text from an item. Accepts a nested key path\ninto the item or a function `(item) => string`."
				},
				{
					"name": "itemValue",
					"type": "(T extends object ? string | ((item: T) => string) : (item: T) => any) | undefined",
					"required": false,
					"default": "JSON.stringify(item)",
					"description": "Defines how to derive the value from an item. Accepts a nested key path into the\nitem or a function `(item) => any`."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"default": "'Loading...'",
					"description": "Text displayed while items are loading."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"default": "Infinity",
					"description": "Maximum number of selectable items."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "Selected values for the group. Used with `v-model`.\nSingle value when `multiple` is false, array when `multiple` is true."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) applied when reacting to `modelValue` changes."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "true",
					"description": "Enables multi-selection behavior.\nWhen `true`, `modelValue` must be an array and emitted updates are arrays.\nWhen `false`, `modelValue` must be a single value (or `null`) and emitted\nupdates are single values."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute applied to each input for form submission."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"default": "'No data to display'",
					"description": "Text displayed when there are no items to show."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Makes all checkboxes read-only. Since checkboxes do not support native\n`readonly`, inputs are disabled while styled as read-only."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: T) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void",
					"description": "Emitted when the group becomes active (focus/click enters it)."
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void",
					"description": "Emitted when one of the generated checkbox inputs loses focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void",
					"description": "Emitted when an option is toggled.\nForwards the original DOM `Event` from the checkbox input."
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void",
					"description": "Emitted when one of the generated checkbox inputs is clicked.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void",
					"description": "Emitted when one of the generated checkbox inputs receives focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void",
					"description": "Emitted when focus/click moves outside the group after it was active.\nUseful for validation-on-blur flows at group level."
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void",
					"description": "Emitted on native input events from generated checkbox inputs.\nForwards the original DOM `Event`."
				},
				{
					"name": "keydown",
					"signature": "(e: \"keydown\", event: KeyboardEvent): void",
					"description": "Emitted for keyboard interaction on generated checkbox inputs.\nForwards the original DOM `KeyboardEvent`."
				},
				{
					"name": "mousedown",
					"signature": "(e: \"mousedown\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is pressed over a checkbox input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "mouseup",
					"signature": "(e: \"mouseup\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is released over a checkbox input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void",
					"description": "Emitted with the coherent next selection array whenever selection changes."
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "BaseCheckboxGroupEmptySlotProps",
					"description": "Content rendered after the last option, inside the options container."
				},
				{
					"name": "icon",
					"type": "BaseCheckboxGroupIconSlotProps<T>",
					"description": "Replaces the default checkmark icon for each checkbox option. Receives all `BaseCheckbox`\nslot attributes plus the source item and its display text."
				},
				{
					"name": "label",
					"type": "BaseCheckboxGroupLabelSlotProps<T>",
					"description": "Replaces the default label text for each option."
				},
				{
					"name": "loading",
					"type": "BaseCheckboxGroupEmptySlotProps",
					"description": "Content shown while options are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "BaseCheckboxGroupEmptySlotProps",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "prepend",
					"type": "BaseCheckboxGroupEmptySlotProps",
					"description": "Content rendered before the first option, inside the options container."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			]
		},
		{
			"name": "BbBaseSwitchIcon",
			"group": "Selection",
			"description": "Standalone switch glyph (track + thumb). Presentational only — no input, no events. Compose it into a fully custom switch design, or let BbSwitch/BbBaseSwitch render it.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbBaseSwitchIcon.md",
			"source": "ai/source/BbBaseSwitchIcon.md",
			"props": [
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the checked state (fills the track and slides the thumb to the end)."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the glyph (muted track, not-allowed cursor). Purely visual."
				},
				{
					"name": "focusVisible",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether keyboard focus is visible (`:focus-visible`). Draws the focus ring."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the glyph into the error state (danger border and ring color)."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Puts the glyph into the warning state (warn border and ring color).\nErrors take priority when both are set."
				},
				{
					"name": "indeterminate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the indeterminate state (filled track with the thumb parked at the\nmidpoint of its travel). Takes visual precedence over `checked`."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the read-only affordance. Reserved for parity with the other glyphs;\ncurrently has no distinct visual."
				}
			],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbBaseTag",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level tag input primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseTag.md",
			"source": "ai/source/BbBaseTag.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the right hand side of the input."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of elements describing this tag input for assistive technologies."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"default": "\"off\"",
					"description": "Browser autocomplete hint for the input field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the input automatically on mount."
				},
				{
					"name": "caseSensitive",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Compare tags case-sensitively when rejecting duplicates, so `Vue` and\n`vue` can both exist. By default matching folds case, because two chips\ndiffering only in case read as duplicates to a user.\n\nEither way the tag is stored with the casing the user typed — this only\ndecides what counts as a duplicate. Entries are always trimmed first."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show a clear button whenever tags are present and the control is interactive."
				},
				{
					"name": "comma",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display selected tags as a comma-separated string instead of individual chips.\nWhen enabled, tags cannot be deselected by clicking individual chips."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable all interactions with the tag input."
				},
				{
					"name": "divider",
					"type": "string | string[] | undefined",
					"required": false,
					"default": "\"Enter\"",
					"description": "Keyboard key that triggers tag creation from current input value.\nAccepts a single key or an array of keys (e.g. `['Enter', ',']`) — any\nof them commits the current text."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply error styling to the tag input."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the input element."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display the loading state styles."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of tags that can be created."
				},
				{
					"name": "modelValue",
					"type": "string[]",
					"required": true,
					"description": "v-model value for selected tags."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute forwarded to the input element."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "Placeholder text when no tags are present."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the left hand side of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make the input read-only while keeping tags visible."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark the input as required for form validation."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "duplicate",
					"signature": "(event: \"duplicate\", string: string): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "max",
					"signature": "(event: \"max\", string: string): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string[]): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "Record<string, never>",
					"description": "Content rendered after the tag input, at the end of the inner container."
				},
				{
					"name": "append-outer",
					"type": "Record<string, never>",
					"description": "Content rendered after the entire tag input control, outside the input chrome."
				},
				{
					"name": "prefix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the start of the input field area, before the typed text."
				},
				{
					"name": "prepend",
					"type": "Record<string, never>",
					"description": "Content rendered before the tag input, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "Record<string, never>",
					"description": "Content rendered before the entire tag input control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the end of the input field area, after the typed text."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string[]"
				}
			]
		},
		{
			"name": "BbBaseTextarea",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level textarea primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseTextarea.md",
			"source": "ai/source/BbBaseTextarea.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the right hand side of the textarea."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of elements describing this textarea for assistive technologies."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Browser autocomplete hint for the textarea."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the textarea automatically on mount."
				},
				{
					"name": "autoGrow",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Automatically expand the textarea height to fit its content. Composes\nwith `rows`: when both are set, `rows` acts as the minimum-height floor\nthe field grows past but never shrinks below."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show a clear button whenever text is present and the control is interactive."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable all interactions with the textarea."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply error styling to the textarea."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the textarea element."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display the loading state styles."
				},
				{
					"name": "modelValue",
					"type": "string | null",
					"required": true,
					"description": "v-model value: the text content, or `null` when empty."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute forwarded to the textarea element."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "Placeholder text when no value is present."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the left hand side of the textarea."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make the textarea read-only while keeping it visible."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark the textarea as required for form validation."
				},
				{
					"name": "rows",
					"type": "string | number | undefined",
					"required": false,
					"description": "Number of visible rows. Without `autoGrow` this is the fixed height;\nwith `autoGrow` it becomes the minimum-height floor the field grows\npast but never shrinks below."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "Record<string, never>",
					"description": "Content rendered after the textarea, at the end of the inner container."
				},
				{
					"name": "append-outer",
					"type": "Record<string, never>",
					"description": "Content rendered after the entire textarea control, outside the input chrome."
				},
				{
					"name": "prefix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the start of the textarea field area, before the text."
				},
				{
					"name": "prepend",
					"type": "Record<string, never>",
					"description": "Content rendered before the textarea, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "Record<string, never>",
					"description": "Content rendered before the entire textarea control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the end of the textarea field area, after the text."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | null"
				}
			]
		},
		{
			"name": "BbBaseTextInput",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level text input primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseTextInput.md",
			"source": "ai/source/BbBaseTextInput.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the right hand side of the input."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Id(s) of elements describing this input for assistive technologies."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Browser autocomplete hint for the input field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the input automatically on mount."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show a clear button whenever a value is present and the control is interactive."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable all interactions with the input."
				},
				{
					"name": "emitMasked",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "When using a mask, emit the formatted (masked) value instead of the raw input."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply error styling to the input and set `aria-invalid`."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the input element."
				},
				{
					"name": "inputMode",
					"type": "\"text\" | \"search\" | \"email\" | \"url\" | \"tel\" | \"none\" | \"numeric\" | \"decimal\" | undefined",
					"required": false,
					"description": "Input mode hint for mobile keyboards."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode, forwarded by wrapper components."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display the loading state styles."
				},
				{
					"name": "mask",
					"type": "MaskInputOptions | undefined",
					"required": false,
					"description": "Input mask configuration. When provided, enables formatted input with validation."
				},
				{
					"name": "max",
					"type": "string | undefined",
					"required": false,
					"description": "Maximum value for numeric and date inputs."
				},
				{
					"name": "maxlength",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of characters the input will accept."
				},
				{
					"name": "min",
					"type": "string | undefined",
					"required": false,
					"description": "Minimum value for numeric and date inputs."
				},
				{
					"name": "modelValue",
					"type": "string | null",
					"required": true,
					"description": "v-model value: the input text, or `null` when empty."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute forwarded to the input element."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "Placeholder text when no value is present."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the left hand side of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Make the input read-only while keeping it visible."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Mark the input as required for form validation."
				},
				{
					"name": "step",
					"type": "string | undefined",
					"required": false,
					"description": "Stepping interval for numeric and date inputs."
				},
				{
					"name": "type",
					"type": "\"text\" | \"search\" | \"email\" | \"url\" | \"tel\" | \"password\" | undefined",
					"required": false,
					"default": "\"text\"",
					"description": "HTML input type attribute. Restricted to the textual input types this\ncomponent supports — use `BbNumberInput` for numbers and\n`BbDatePickerInput` for dates."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the text input, at the end of the inner container."
				},
				{
					"name": "append-outer",
					"type": "object",
					"description": "Content rendered after the entire text input control, outside the input chrome."
				},
				{
					"name": "prefix",
					"type": "object",
					"description": "Inline content rendered at the start of the input field area, before the typed text."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the text input, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "object",
					"description": "Content rendered before the entire text input control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "object",
					"description": "Inline content rendered at the end of the input field area, after the typed text."
				}
			],
			"exposed": [
				{
					"name": "blur",
					"type": "() => void | undefined"
				},
				{
					"name": "focus",
					"type": "() => void | undefined"
				},
				{
					"name": "select",
					"type": "() => void | undefined"
				}
			],
			"models": [
				{
					"name": "modelValue",
					"type": "string | null"
				}
			]
		},
		{
			"name": "BbBaseTimePickerInput",
			"group": "Reference Only - Base Primitive",
			"description": "Internal low-level time-picker input primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/BbBaseTimePickerInput.md",
			"source": "ai/source/BbBaseTimePickerInput.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "On mobile the time columns open inside a bottom off-canvas sheet instead\nof a floating popover. When unset, falls back to the global\n`config.adaptive`."
				},
				{
					"name": "ampm",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "12-hour display with an AM/PM segment. Purely a field-composition\nconcern: the model stays 24-hour. Type `A`/`P` (or ArrowUp/Down) to set\nthe meridiem."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to render at the right hand side of the input."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | undefined",
					"required": false,
					"description": "Additional description id(s) announced by assistive technologies."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"default": "\"off\"",
					"description": "Browser autocomplete hint for the input."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Focus the first text field automatically when the component mounts."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button whenever a value is present and the control is interactive."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Applies the compact density styles to the control."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the input, clock trigger, and popover."
				},
				{
					"name": "disableWriting",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether manual typing is disabled inside the text fields.\nUse `'mobile'` / `'desktop'` to disable typing on one platform only."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the control as invalid, applying error styles and `aria-invalid`."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply warning styling (same chrome as errors, `--bb-warn` color).\nSuppressed when `hasErrors` is also set."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the input element. Falls back to an auto-generated value."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Shows loading visuals on the input."
				},
				{
					"name": "max",
					"type": "string | undefined",
					"required": false,
					"description": "Maximum selectable time in `HH:mm` format. Values outside the pattern\nthrow during setup to surface configuration mistakes."
				},
				{
					"name": "min",
					"type": "string | undefined",
					"required": false,
					"description": "Minimum selectable time in `HH:mm` format. Values outside the pattern\nthrow during setup to surface configuration mistakes."
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null",
					"required": true,
					"description": "v-model value: `null` for empty, a 24-hour `HH:mm` (or `HH:mm:ss` with\n`seconds`) string, or a two-element array when `range` is true."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Name attribute forwarded to the native inputs (suffixed per field)."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is\nactive on mobile (e.g. `title`, `size`, `persistent`)."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "Placeholder shown when empty; defaults to the localized format hint."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Icon name rendered before the input field."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Range selection: v-model expects a two-element array `[start, end]`.\nAn inverted pair swaps on finalize with an `end_before_start` error."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Makes the text fields read-only and prevents opening the popover."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the inputs as required to the browser."
				},
				{
					"name": "seconds",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds the seconds segment. Without it an incoming value carrying seconds\ndisplays truncated and zeroes out on the next user commit."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Minute granularity for the minute column and its arrow stepping.\nConstrains what the columns produce, never what typing accepts."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"description": "Transition duration, in milliseconds, for the popover appearance."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "error",
					"signature": "(event: \"error\", error: TimePickerInputError): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | string[] | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the time fields (before the clock button)."
				},
				{
					"name": "append-outer",
					"type": "object",
					"description": "Content rendered after the entire control, outside the input chrome."
				},
				{
					"name": "prefix",
					"type": "object",
					"description": "Inline content at the start of the field area."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the time fields, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "object",
					"description": "Content rendered before the entire control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "object",
					"description": "Inline content at the end of the field area."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | string[] | null"
				}
			]
		},
		{
			"name": "BbBreadcrumbs",
			"group": "Navigation",
			"description": "Renders hierarchical navigation paths.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbBreadcrumbs.md",
			"source": "ai/source/BbBreadcrumbs.md",
			"props": [
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "dividerWidth",
					"type": "number | undefined",
					"required": false,
					"default": "16",
					"description": "Width of the divider in pixels."
				},
				{
					"name": "ellipsisWidth",
					"type": "number | undefined",
					"required": false,
					"description": "Explicit width used by the estimator for the ellipsis activator."
				},
				{
					"name": "estimationBias",
					"type": "number | undefined",
					"required": false,
					"default": "1.12",
					"description": "Multiplier applied to each estimated item width.\nA higher value will result in more over-estimation."
				},
				{
					"name": "gapWidth",
					"type": "number | undefined",
					"required": false,
					"default": "4",
					"description": "Horizontal gap between breadcrumb elements in pixels."
				},
				{
					"name": "items",
					"type": "Item[]",
					"required": true,
					"description": "Array of items that describe how the breadcrumbs should behave.\nCompatible with navigating through `a` or `router-link`."
				},
				{
					"name": "offsetWidth",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Extra one-off width in pixels added to the total estimate\n(e.g. prepend/append/item slot content)."
				}
			],
			"events": [],
			"slots": [
				{
					"name": "append",
					"type": "BbBreadcrumbsEdgeSlotProps",
					"description": "Content rendered after the breadcrumb list, in a dedicated append region."
				},
				{
					"name": "divider",
					"type": "Record<string, never>",
					"description": "Replaces the default separator rendered between breadcrumb items."
				},
				{
					"name": "ellipsis",
					"type": "BbBreadcrumbsEllipsisSlotProps",
					"description": "Replaces the default `…` overflow button shown when items overflow."
				},
				{
					"name": "item:append",
					"type": "BbBreadcrumbsItemSlotProps",
					"description": "Content rendered after **every** breadcrumb item's link/button. Generic\nfallback below a per-item `<key>:append` slot and above the item's\n`append:icon`."
				},
				{
					"name": "item:prepend",
					"type": "BbBreadcrumbsItemSlotProps",
					"description": "Content rendered before **every** breadcrumb item's link/button, in the\nleading edge region. Generic fallback: a per-item `<key>:prepend` slot\ntakes precedence, and the item's `prepend:icon` is used when neither slot\nis present."
				},
				{
					"name": "prepend",
					"type": "BbBreadcrumbsEdgeSlotProps",
					"description": "Content rendered before the breadcrumb list, in a dedicated prepend region."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbButton",
			"group": "Inputs",
			"description": "Button with loading state, tooltip, and icon support.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbButton.md",
			"source": "ai/source/BbButton.md",
			"props": [
				{
					"name": "activeClass",
					"type": "string | undefined",
					"required": false,
					"description": "Class to apply when the link is active."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Icon to be added on the right of the text."
				},
				{
					"name": "ariaCurrentValue",
					"type": "\"page\" | \"step\" | \"location\" | \"date\" | \"time\" | \"true\" | \"false\" | undefined",
					"required": false,
					"default": "'page'",
					"description": "Value passed to the attribute `aria-current` when the link is exact active."
				},
				{
					"name": "async",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: runs the visit without blocking — the page stays interactive and\nseveral async visits can be in flight at once."
				},
				{
					"name": "block",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the component as full width."
				},
				{
					"name": "cacheFor",
					"type": "string | number | (string | number)[] | undefined",
					"required": false,
					"description": "Inertia: how long a prefetched response stays fresh before it is\nre-fetched. A single duration, or `[staleAfter, expiresAfter]`.\n\nTyped platform-agnostically (matching BbButton) so the library's types\nnever require `@inertiajs/vue3` to be installed."
				},
				{
					"name": "cacheTags",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Inertia: tags to file this visit's prefetch cache under, so a later\nrequest can invalidate the whole tagged group."
				},
				{
					"name": "component",
					"type": "string | undefined",
					"required": false,
					"description": "Inertia: the page component this visit resolves to. Rarely set by hand —\nthe server normally decides it."
				},
				{
					"name": "data",
					"type": "object | undefined",
					"required": false
				},
				{
					"name": "disableAutoLoading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the automatic loading state that tracks async click handlers\n(enabled by default)."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "download",
					"type": "string | boolean | undefined",
					"required": false,
					"description": "Marks an `href` link as a download: renders a plain `<a download>` doing a\nnative navigation (never an Inertia/router visit), so file downloads work.\nPass a string for the suggested filename. A native-anchor signal alongside\n`target` and `external`."
				},
				{
					"name": "exactActiveClass",
					"type": "string | undefined",
					"required": false,
					"description": "Class to apply when the link is exact active."
				},
				{
					"name": "except",
					"type": "string[] | undefined",
					"required": false,
					"description": "Inertia: the inverse of `only` — properties to EXCLUDE from a partial\nreload. Pass one or the other, not both."
				},
				{
					"name": "external",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Forces an `href` link to render as a plain `<a>` (native navigation),\nbypassing Inertia/router interception — same intent as Nuxt's `external`.\nA native-anchor signal alongside `target` and `download`."
				},
				{
					"name": "falseValue",
					"type": "any",
					"required": false,
					"default": "false",
					"description": "Value emitted when the toggle is deactivated."
				},
				{
					"name": "group",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Identifies the button as part of a button group."
				},
				{
					"name": "headers",
					"type": "object | undefined",
					"required": false
				},
				{
					"name": "href",
					"type": "string | undefined",
					"required": false,
					"description": "Returns the hyperlink's URL.\n\nCan be set, to change the URL."
				},
				{
					"name": "icon",
					"type": "string | undefined",
					"required": false,
					"description": "Used when only an icon with no text should be displayed."
				},
				{
					"name": "instant",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: navigate optimistically on click and reconcile when the response\nlands, instead of waiting for the round trip."
				},
				{
					"name": "interactiveWhileLoading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the button clickable while it is loading. Buttons are disabled\nwhile loading by default; this escape hatch exists for toggles that\nmust stay interactive (e.g. the dropdown-button caret)."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Triggers a loading indicator."
				},
				{
					"name": "method",
					"type": "\"get\" | \"post\" | \"put\" | \"patch\" | \"delete\" | undefined",
					"required": false
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false
				},
				{
					"name": "onBefore",
					"type": "(() => void) | undefined",
					"required": false
				},
				{
					"name": "onCancel",
					"type": "(() => void) | undefined",
					"required": false
				},
				{
					"name": "onCancelToken",
					"type": "((cancelToken: unknown) => void) | undefined",
					"required": false
				},
				{
					"name": "onError",
					"type": "((errors: Record<string, string>) => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when the server responds with\nVALIDATION errors — the ordinary 422 path.\n\nThis is the only failure callback Inertia's `Link` accepts.\n`onHttpException` (server answered 5xx) and `onNetworkError` (the request\nnever arrived) are `router.visit()` / `useForm()` options, NOT Link\nprops — declaring them here would only paste bogus listeners onto the\nanchor. Use a form or an explicit visit when you need to tell them apart."
				},
				{
					"name": "onFinish",
					"type": "(() => void) | undefined",
					"required": false
				},
				{
					"name": "only",
					"type": "string[] | undefined",
					"required": false
				},
				{
					"name": "onPrefetched",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a prefetch for this link has\ncompleted and is cached."
				},
				{
					"name": "onPrefetching",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Lifecycle hook invoked by Inertia when a prefetch for this link starts."
				},
				{
					"name": "onProgress",
					"type": "((progress: { percentage: number | undefined; }) => void) | undefined",
					"required": false
				},
				{
					"name": "onStart",
					"type": "(() => void) | undefined",
					"required": false
				},
				{
					"name": "onSuccess",
					"type": "(() => void) | undefined",
					"required": false
				},
				{
					"name": "pageProps",
					"type": "Record<string, unknown> | ((currentProps: Record<string, unknown>, sharedProps: Record<string, unknown>) => Record<string, unknown>) | null | undefined",
					"required": false,
					"description": "Inertia: props to merge into the next page optimistically, before the\nserver responds. Either an object or a function of the current props.\n\nTyped platform-agnostically (matching BbButton) so the library's types\nnever require `@inertiajs/vue3` to be installed."
				},
				{
					"name": "prefetch",
					"type": "string | boolean | string[] | undefined",
					"required": false,
					"description": "Inertia: fetch and cache this link's page ahead of the click. `true` uses\nthe default trigger; a string or list of strings picks them\n(`'mount'`, `'hover'`, `'click'`)."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Icon to be added on the left of the text."
				},
				{
					"name": "preserveScroll",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | undefined",
					"required": false
				},
				{
					"name": "preserveState",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | null | undefined",
					"required": false
				},
				{
					"name": "preserveUrl",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: keep the current URL in the address bar even though the page\ncontent changes."
				},
				{
					"name": "queryStringArrayFormat",
					"type": "\"brackets\" | \"indices\" | undefined",
					"required": false
				},
				{
					"name": "replace",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Calls `router.replace` instead of `router.push`."
				},
				{
					"name": "size",
					"type": "Responsive<Sizes> | undefined",
					"required": false,
					"default": "\"md\"",
					"description": "Sets the size of the button. A single value applies at every breakpoint;\na per-breakpoint map (e.g. `{ default: 'sm', lg: 'md' }`) switches\nresponsively. Purely CSS-driven — no runtime breakpoint watching."
				},
				{
					"name": "tag",
					"type": "ButtonTag | undefined",
					"required": false,
					"default": "'button'",
					"description": "Element to render for the plain (non-link, non-router) button: `'button'`\n(default), `'div'`/`'span'` when nesting inside another button or link, or\n`'label'` for a file-upload trigger. Ignored when `href`/`to` make the\nbutton render as a link."
				},
				{
					"name": "target",
					"type": "string | undefined",
					"required": false,
					"description": "Sets or retrieves the window or frame at which to target content."
				},
				{
					"name": "text",
					"type": "string | undefined",
					"required": false,
					"description": "Text content of the component."
				},
				{
					"name": "to",
					"type": "string | wt | bt | undefined",
					"required": false,
					"description": "Route Location the link should navigate to when clicked on."
				},
				{
					"name": "trueValue",
					"type": "any",
					"required": false,
					"default": "true",
					"description": "Value emitted when the toggle is activated."
				},
				{
					"name": "type",
					"type": "\"button\" | \"submit\" | \"reset\" | undefined",
					"required": false,
					"description": "Gets the classification and default behavior of the button."
				},
				{
					"name": "variant",
					"type": "ButtonVariantType | undefined",
					"required": false,
					"default": "\"primary\"",
					"description": "Visual variant of the button. Controls colors and surface style while\nkeeping spacing and sizing unchanged."
				},
				{
					"name": "viewTransition",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Inertia: run the page swap inside a View Transition, where the browser\nsupports one."
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "object",
					"description": "Primary content rendered inside the button. Falls back to the `text` prop when empty."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"removed": [
				{
					"name": "enabledWhileLoading",
					"new": "interactiveWhileLoading",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-button.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				},
				{
					"name": "theme",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-button.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "tooltip",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-button.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "tooltipPlacement",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-button.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "tooltipTimeout",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-button.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			],
			"renamed": [
				{
					"from": "enabledWhileLoading",
					"to": "interactiveWhileLoading",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-button.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbCheckbox",
			"group": "Selection",
			"description": "Toggles a single boolean option.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbCheckbox.md",
			"source": "ai/source/BbCheckbox.md",
			"props": [
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "undefined",
					"description": "Defines the input as checked."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"default": "\"auto\"",
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "falseValue",
					"type": "any",
					"required": false,
					"description": "Value of the input when unchecked. It handles any kind of serializable object."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "indeterminate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in an indeterminate state."
				},
				{
					"name": "inputPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false,
					"description": "Used by v-model. Can be any serializable type."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout: in every direction the order of the label and the\ninput is swapped from the standard arrangement."
				},
				{
					"name": "submitWhenFalse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Will submit \"falseValue\" if the input is not checked. Otherwise \"trueValue\" will be submitted."
				},
				{
					"name": "trueValue",
					"type": "any",
					"required": false,
					"description": "Value of the input when checked. It handles any kind of serializable object."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "icon",
					"type": "BbCheckboxIconSlotProps",
					"description": "Replaces the default checkmark SVG inside the checkbox box. Receives `BaseCheckbox` slot\nattributes plus the label text."
				},
				{
					"name": "label",
					"type": "BbCheckboxLabelSlotProps",
					"description": "Replaces the default label text rendered next to the checkbox."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<any>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"update:modelValue\", \"change\", \"blur\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			]
		},
		{
			"name": "BbCheckboxGroup",
			"group": "Selection",
			"description": "Manages multiple checkbox options as a group.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbCheckboxGroup.md",
			"source": "ai/source/BbCheckboxGroup.md",
			"props": [
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the component in a compact version."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"description": "Defines an array of dependencies that will trigger actions in the component upon change."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"description": "Timeout used to debounce response to changes to dependencies."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "If coherence is enforced the input cannot have a modelValue that is incoherent with its current items.\n\ne.g. You cannot set v-model to a user that is not present in the items passed.\n\nmodelValue will be reset upon incoherence."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides each option's label text (the text rendered next to every\ninput) while keeping it accessible to screen readers.\nDoes not affect the fieldset legend — use `hideLegend` for that."
				},
				{
					"name": "hideLegend",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the legend of the fieldset while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "inputDirection",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"description": "Defines the direction of the inputs in the fieldset."
				},
				{
					"name": "inputPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."
				},
				{
					"name": "items",
					"type": "T[] | ((prefill: boolean, modelValue?: any) => T[] | Promise<T[]>)",
					"required": true,
					"description": "Used to retrieve items; can be an array or a function."
				},
				{
					"name": "itemText",
					"type": "ItemAccessor<T, string> | undefined",
					"required": false,
					"description": "Defines a path that returns a property of the object to use as text or a function that returns a string."
				},
				{
					"name": "itemValue",
					"type": "ItemAccessor<T> | undefined",
					"required": false,
					"description": "Defines a path that returns a property of the object to use as value or a function that returns any value."
				},
				{
					"name": "legend",
					"type": "string",
					"required": true,
					"description": "Text content of the legend."
				},
				{
					"name": "legendMode",
					"type": "\"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow;\n`'inside'` overlays the legend inside the fieldset border.\nFloating mode is not supported for option groups (checkbox, radio or\nswitch) — there is no single field for the legend to float against."
				},
				{
					"name": "legendPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed while items are being loaded."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of selected items."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "Used by v-model. Can be an array of any serializable type."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"description": "Timeout used to debounce response to changes to modelValue."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "true",
					"description": "Enables multi-selection behavior.\nWhen true, `modelValue` must be an array.\nWhen false, `modelValue` should be a single value."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there are no items to display."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and the input is swapped."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: T) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void",
					"description": "Emitted when the group becomes active (focus/click enters it)."
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void",
					"description": "Emitted when one of the generated checkbox inputs loses focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void",
					"description": "Emitted when an option is toggled.\nForwards the original DOM `Event` from the checkbox input."
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void",
					"description": "Emitted when one of the generated checkbox inputs is clicked.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void",
					"description": "Emitted when one of the generated checkbox inputs receives focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void",
					"description": "Emitted when focus/click moves outside the group after it was active.\nUseful for validation-on-blur flows at group level."
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void",
					"description": "Emitted on native input events from generated checkbox inputs.\nForwards the original DOM `Event`."
				},
				{
					"name": "keydown",
					"signature": "(e: \"keydown\", event: KeyboardEvent): void",
					"description": "Emitted for keyboard interaction on generated checkbox inputs.\nForwards the original DOM `KeyboardEvent`."
				},
				{
					"name": "mousedown",
					"signature": "(e: \"mousedown\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is pressed over a checkbox input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "mouseup",
					"signature": "(e: \"mouseup\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is released over a checkbox input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void",
					"description": "Emitted with the coherent next selection array whenever selection changes."
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the last option, inside the options container."
				},
				{
					"name": "icon",
					"type": "BaseCheckboxGroupIconSlotProps<T>",
					"description": "Replaces the default checkmark icon for each checkbox option."
				},
				{
					"name": "label",
					"type": "BaseCheckboxGroupLabelSlotProps<T>",
					"description": "Replaces the default label text for each option."
				},
				{
					"name": "legend",
					"type": "BbCheckboxGroupLegendSlotProps",
					"description": "Replaces the default fieldset legend text for the group."
				},
				{
					"name": "loading",
					"type": "object",
					"description": "Content shown while options are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the first option, inside the options container."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<any>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "labelPosition",
					"new": "legendPosition",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "labelPosition",
					"to": "legendPosition",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbCollapsible",
			"group": "Navigation",
			"description": "Toggles visibility of collapsible content blocks.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbCollapsible.md",
			"source": "ai/source/BbCollapsible.md",
			"props": [
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "modelValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Used by v-model to trigger opening / closing the collapsible.\n\nOptional, matching the runtime: `withDefaults` supplies `false`, so an\nomitted binding renders closed and Vue never warns. It was typed required\nwhile carrying that default, which made the manifest publish a row that\nwas `required: true` AND `default: false` — a contradiction that read as\na generator bug."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "How long the transition has to last in milliseconds"
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "any",
					"description": "The collapsible body content that is shown or hidden based on `modelValue`.\nWhen `eager` is false, the content is not rendered until the first open."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbColorInput",
			"group": "Inputs",
			"description": "Captures color values through input controls.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbColorInput.md",
			"source": "ai/source/BbColorInput.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "When `true`, the color palette opens as a bottom off-canvas sheet on mobile\nviewports instead of a floating popover; on desktop it stays a popover.\nMirrors the adaptive behaviour of `BbSelect`/`BbDatePickerInput`.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "alpha",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enable the alpha channel. Shows an opacity slider and uses `#RRGGBBAA` hex8 format."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Guides the browser as to the type of information expected in the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button when the input has a value and is being interacted with."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the component in a compact version."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "eyeDropper",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show an eyedropper button to sample any color on screen.\nUses the native EyeDropper API — hidden automatically on unsupported browsers."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode: `outside` places the label above the input,\n`floating` overlays it on the field and shrinks it when a value is set,\n`inside` keeps it inside the field."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles."
				},
				{
					"name": "modelValue",
					"type": "string | null",
					"required": true,
					"default": "null",
					"description": "Used by v-model."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there's no data."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and the input is swapped."
				},
				{
					"name": "swatches",
					"type": "boolean | string[][] | undefined",
					"required": false,
					"description": "Controls swatches display in the picker:\n- `true`       — show the built-in Material-palette swatches\n- `string[][]` — show custom swatches (each inner array = a column of shades)\n- `false` / omitted — no swatches section"
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "Record<string, never>",
					"description": "Content rendered after the color picker indicator button, at the end of the inner container.\nMutually exclusive with `suffix`: the `suffix` slot renders inside this\nslot's default content, so providing `append` replaces the suffix\nrendering entirely and any `suffix` content is silently dropped.\nThis slot receives no scoped props."
				},
				{
					"name": "append-outer",
					"type": "Record<string, never>",
					"description": "Content rendered after the entire input control, outside the input chrome.\nThis slot receives no scoped props."
				},
				{
					"name": "label",
					"type": "BbColorInputLabelSlotProps",
					"description": "Replaces the default label text rendered above the color input."
				},
				{
					"name": "prefix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the start of the input field area, before the typed text.\nThis slot receives no scoped props."
				},
				{
					"name": "prepend",
					"type": "Record<string, never>",
					"description": "Content rendered before the text input, at the start of the inner container.\nThis slot receives no scoped props."
				},
				{
					"name": "prepend-outer",
					"type": "Record<string, never>",
					"description": "Content rendered before the entire input control, outside the input chrome.\nThis slot receives no scoped props."
				},
				{
					"name": "suffix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the end of the input field area, after the typed text.\nRenders inside the default `append` area's suffix wrapper — mutually\nexclusive with `append`: if an `append` slot is provided it replaces this\nwrapper and the `suffix` content is not rendered.\nThis slot receives no scoped props."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | null"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<string | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"blur\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "picker",
					"new": "eyeDropper",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-color-input.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "picker",
					"to": "eyeDropper",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-color-input.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbColorPalette",
			"group": "Overlay",
			"description": "Opens an anchored popover color palette for color picking interactions.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbColorPalette.md",
			"source": "ai/source/BbColorPalette.md",
			"props": [
				{
					"name": "activator",
					"type": "ElementOrComponentRef | undefined",
					"required": false,
					"description": "External activator element or component ref.\nWhen provided, the `activator` slot is not rendered and click listeners are\nattached programmatically to the referenced element — mirroring the\nBbDropdown activator API."
				},
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "When `true`, the palette opens as a bottom off-canvas sheet on mobile\nviewports instead of a floating popover; on desktop it stays a popover.\nMirrors the adaptive behaviour of `BbPopover`/`BbDropdown`/`BbDatePicker`.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "alpha",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enable the alpha channel. The picker shows an opacity slider and emits\n`#RRGGBBAA` hex8 values."
				},
				{
					"name": "anchor",
					"type": "ElementOrComponentRef | undefined",
					"required": false,
					"description": "Element or component ref the popover positions itself relative to.\nDefaults to the activator element when omitted, allowing the popover to\nbe anchored to a larger container (e.g. the full input row) while a\nsmaller element (e.g. a color dot) remains the click target."
				},
				{
					"name": "boundary",
					"type": "ElementOrComponentRefOrSelector | undefined",
					"required": false,
					"description": "Constrains the popover within a bounding element.\nAccepts an HTMLElement, a Vue component ref, or a CSS selector string."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable all interaction (activator and palette)."
				},
				{
					"name": "disableFlip",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the automatic flip to the opposite side when the popover\nwould overflow (flipping is on by default)."
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "eyeDropper",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Show an eyedropper button inside the palette to sample any color on screen.\nUses the native EyeDropper API — hidden automatically on unsupported browsers."
				},
				{
					"name": "label",
					"type": "string | undefined",
					"required": false,
					"description": "Accessible label applied to the activator element via `aria-label`.\nDefaults to the locale string for \"Open color picker\" when omitted."
				},
				{
					"name": "modelValue",
					"type": "string | null",
					"required": true,
					"description": "v-model: the current color as a `#RRGGBB` hex string (or `#RRGGBBAA` when\n`alpha` is enabled), or `null` when empty."
				},
				{
					"name": "offset",
					"type": "number | undefined",
					"required": false,
					"default": "4",
					"description": "Space the floating container will maintain from the activator."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"default": "6",
					"description": "Minimum empty space to keep from the edge of the page"
				},
				{
					"name": "placement",
					"type": "Placement | undefined",
					"required": false,
					"description": "Position of the overlay in respect to the related activator."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevent opening the palette while keeping the activator visible."
				},
				{
					"name": "swatches",
					"type": "boolean | string[][] | undefined",
					"required": false,
					"description": "Controls swatches display in the picker:\n- `true`       — show the built-in Material-palette swatches\n- `string[][]` — show custom swatches (each inner array = a column of shades)\n- `false` / omitted — no swatches section"
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "How long the transition has to last in milliseconds"
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string): void"
				}
			],
			"slots": [
				{
					"name": "activator",
					"type": "BbColorPaletteActivatorSlotProps",
					"description": "Custom activator element.\nApply `v-bind=\"props\"` to the element you want to use as the trigger —\nthis wires up the ref callback that lets BbColorPalette track the element."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | null"
				}
			],
			"removed": [
				{
					"name": "arrowPadding",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-color-palette.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "flip",
					"new": "disableFlip",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-color-palette.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "picker",
					"new": "eyeDropper",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-color-palette.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				},
				{
					"name": "showArrow",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-color-palette.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				}
			],
			"renamed": [
				{
					"from": "flip",
					"to": "disableFlip",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-color-palette.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "picker",
					"to": "eyeDropper",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-color-palette.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbConfirm",
			"group": "Overlay",
			"description": "Prompts users to confirm or cancel critical actions (includes co-located BbConfirmPortal export).",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbConfirm.md",
			"source": "ai/source/BbConfirm.md",
			"props": [],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbConfirmPortal",
			"group": "Overlay",
			"description": "Registers named slot content that confirm() renders via `portal`.",
			"referenceOnly": false,
			"hasGuide": false,
			"contract": "ai/BbConfirmPortal.md",
			"source": "ai/source/BbConfirmPortal.md",
			"props": [
				{
					"name": "name",
					"type": "string",
					"required": true
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "{ yes: () => void; no: () => void; props: Record<string, unknown>; }"
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbDatePicker",
			"group": "Overlay",
			"description": "Opens an anchored calendar (and optional time rail) popover on a trigger you own — the date analog of BbColorPalette; also the v-bb-date directive.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbDatePicker.md",
			"source": "ai/source/BbDatePicker.md",
			"props": [
				{
					"name": "activator",
					"type": "ElementOrComponentRef | undefined",
					"required": false,
					"description": "External activator element or component ref. When provided, the `activator`\nslot is not rendered and click + ARIA are attached programmatically to the\nreferenced element — mirroring the `BbColorPalette` activator API."
				},
				{
					"name": "activeSegment",
					"type": "BbDatePickerSegment | undefined",
					"required": false,
					"description": "Which end the time rail edits in range + `type=\"datetime\"`\n(`v-model:active-segment`). Standalone use manages this internally; an\nembedding host (the date input) drives it from its focused field. Ignored\noutside range + datetime."
				},
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "On mobile, open in a bottom off-canvas sheet instead of a floating popover.\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "ampm",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "12-hour display with an AM/PM column (requires `type=\"datetime\"`); emits stay 24h."
				},
				{
					"name": "anchor",
					"type": "ElementOrComponentRef | undefined",
					"required": false,
					"description": "Element or component ref the popover positions itself relative to.\nDefaults to the activator when omitted (anchor to a larger row while a\nsmaller element stays the click target)."
				},
				{
					"name": "boundary",
					"type": "ElementOrComponentRefOrSelector | undefined",
					"required": false,
					"description": "Constrains the popover within a bounding element or CSS selector."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the activator and the calendar."
				},
				{
					"name": "disableFlip",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable the automatic flip to the opposite side on overflow."
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Render popover content before it is first shown."
				},
				{
					"name": "firstDayOfWeek",
					"type": "0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined",
					"required": false,
					"description": "First day of the week (0 = Sunday … 6 = Saturday)."
				},
				{
					"name": "floating",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Emit plain calendar strings instead of zoned ISO instants. Implied (and\nforced) by `type=\"month\"` and `type=\"year\"`."
				},
				{
					"name": "label",
					"type": "string | undefined",
					"required": false,
					"description": "Accessible label applied to the activator via `aria-label`."
				},
				{
					"name": "max",
					"type": "string | undefined",
					"required": false,
					"description": "Maximum selectable value, in this `type`'s shape. A finer bound is\naccepted and ceiled to the unit, with a warning."
				},
				{
					"name": "min",
					"type": "string | undefined",
					"required": false,
					"description": "Minimum selectable value, in this `type`'s shape — `YYYY-MM-DD`\n(`YYYY-MM-DDTHH:mm` with `datetime`, `YYYY-MM` with `month`, `YYYY` with\n`year`). A finer bound is accepted and floored to the unit, with a warning."
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null",
					"required": true,
					"description": "v-model value. `null` for empty, a single string for single selection, or\na two-element `[start, end]` array when `range` is true. The string shape\nfollows `type`: `YYYY-MM-DD` when `floating` (`YYYY-MM` for `month`,\n`YYYY` for `year`), otherwise a zoned ISO instant carrying the time inline\nwith `type=\"datetime\"`."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enables multi-selection: every pick toggles a value in or out of a sorted\narray, and the panel stays open until it is dismissed. Works in whatever\n`type` selects — days, months or years — and requires an array\n`modelValue` (use `[]` for empty, never `null`).\n\nMutually exclusive with `range` (two different selection models) and with\n`type=\"datetime\"` (the time rail edits one value; with several there is no\none it could mean). Both combinations throw."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when adaptive on mobile."
				},
				{
					"name": "offset",
					"type": "number | undefined",
					"required": false,
					"default": "4",
					"description": "Space the popover keeps from the activator."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"description": "Minimum empty space to keep from the edge of the page."
				},
				{
					"name": "placement",
					"type": "Placement | undefined",
					"required": false,
					"description": "Position of the popover relative to the activator/anchor."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enables range selection (`[start, end]`)."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents opening while keeping the activator visible."
				},
				{
					"name": "seconds",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds the seconds column (requires `type=\"datetime\"`)."
				},
				{
					"name": "selectable",
					"type": "((date: string) => boolean) | undefined",
					"required": false,
					"description": "Predicate invoked per candidate; return `false` to disable it. Receives\nthe value in this `type`'s shape — `YYYY-MM` under `month`, `YYYY` under\n`year`."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Minute-column granularity and arrow stepping (requires `type=\"datetime\"`)."
				},
				{
					"name": "time",
					"type": "string | string[] | null | undefined",
					"required": false,
					"description": "Companion time model (`v-model:time`), 24-hour `HH:mm` / `HH:mm:ss`.\nWith `floating` it is the only carrier of the time; otherwise it mirrors\nthe time inside `modelValue`. Requires `type=\"datetime\"`."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Popover/sheet transition duration in milliseconds."
				},
				{
					"name": "type",
					"type": "DatePickerType | undefined",
					"required": false,
					"default": "\"date\"",
					"description": "What the picker selects, and therefore what it emits.\n\n- `date` (default) — a day.\n- `datetime` — a day plus a time rail beside the calendar. Non-floating\n  values carry the time inside `modelValue`; with `floating` the time\n  travels only through `time`.\n- `month` — a month grid emitting `YYYY-MM`.\n- `year` — a year list emitting `YYYY`.\n\n`month`/`year` are calendar labels, not instants: they force `floating`\nand ignore `utc`, and the time props (`seconds`, `ampm`, `step`, `time`)\nare inert outside `datetime`."
				},
				{
					"name": "utc",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Emit UTC (`...Z`) instead of the local offset. Ignored with `floating`,\nand therefore with `type=\"month\"`/`type=\"year\"`."
				}
			],
			"events": [
				{
					"name": "grid-pick",
					"signature": "(event: \"grid-pick\", value: string | string[] | null): void"
				},
				{
					"name": "time-pick",
					"signature": "(event: \"time-pick\", payload: { unit: TimeUnit; value: string; }): void"
				},
				{
					"name": "update:activeSegment",
					"signature": "(event: \"update:activeSegment\", value: BbDatePickerSegment): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | string[] | null): void"
				},
				{
					"name": "update:time",
					"signature": "(event: \"update:time\", value: string | string[] | null): void"
				}
			],
			"slots": [
				{
					"name": "activator",
					"type": "BbDatePickerActivatorSlotProps",
					"description": "Custom activator element. Apply `v-bind=\"props\"` to your trigger."
				},
				{
					"name": "append:day",
					"type": "BbDatePickerDaySlotProps",
					"description": "Appends content below each calendar day."
				},
				{
					"name": "day",
					"type": "BbDatePickerDaySlotProps",
					"description": "Replaces the day button label inside each calendar day."
				}
			],
			"exposed": [
				{
					"name": "calendarEl",
					"type": "HTMLElement | null"
				}
			],
			"models": [
				{
					"name": "activeSegment",
					"type": "BbDatePickerSegment | undefined"
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null"
				},
				{
					"name": "time",
					"type": "string | string[] | null | undefined"
				}
			],
			"removed": [
				{
					"name": "datetime",
					"new": "type",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			],
			"renamed": [
				{
					"from": "datetime",
					"to": "type",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"fix": {
						"kind": "manual"
					}
				}
			]
		},
		{
			"name": "BbDatePickerInput",
			"group": "Inputs",
			"description": "Combines date selection with text input behavior.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbDatePickerInput.md",
			"source": "ai/source/BbDatePickerInput.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "On mobile the calendar opens inside a bottom off-canvas sheet instead of a\nfloating popover, mirroring the adaptive behaviour of `BbPopover`/`BbSelect`.\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "ampm",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "12-hour display with an AM/PM segment (requires `type=\"datetime\"`). Purely a\nfield-composition concern: `modelValue` and the `time` model stay 24-hour\nregardless. Type `A`/`P` (or ArrowUp/Down) to set the meridiem."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Guides the browser as to the type of information expected in the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button when the input has a value and is being interacted with."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a compact state."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disableCalendar",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"description": "Disables the calendar: hides the trigger button and prevents the popover\nfrom opening. Use `'desktop'` to disable it on desktop only (keeping the\ncalendar for mobile, complementing `disableWriting: 'mobile'`) or\n`'mobile'` to disable it on mobile only."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "disableWriting",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"default": "false",
					"description": "Disables typing into the input.\nUse `'mobile'` to disable typing only on mobile, `'desktop'` to disable typing only on desktop."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "firstDayOfWeek",
					"type": "0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined",
					"required": false,
					"description": "Defines the first day of the week with `0` meaning Sunday and `6` meaning Saturday."
				},
				{
					"name": "floating",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "If true the date will have a format YYYY-MM-DD instead of the default ISO string."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles."
				},
				{
					"name": "max",
					"type": "string | undefined",
					"required": false,
					"description": "Maximum selectable date in `YYYY-MM-DD` format — or, with `type=\"datetime\"`,\n`YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values\noutside both patterns throw during setup to surface configuration\nmistakes."
				},
				{
					"name": "min",
					"type": "string | undefined",
					"required": false,
					"description": "Minimum selectable date in `YYYY-MM-DD` format — or, with `type=\"datetime\"`,\n`YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values\noutside both patterns throw during setup to surface configuration\nmistakes."
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null",
					"required": true,
					"description": "Used by v-model. Can be null, a single string, or an array of strings based on whether a range or single date is needed."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on\nmobile (e.g. `title`, `size`, `persistent`)."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there's no data."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Selects a range of dates between two dates. It selects all of the days between start and end."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and the input is swapped."
				},
				{
					"name": "seconds",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds the seconds segment (requires `type=\"datetime\"`). Without it, an incoming\nvalue carrying seconds displays truncated and is left untouched until the\nuser commits an edit, at which point seconds zero out."
				},
				{
					"name": "selectable",
					"type": "((date: string) => boolean) | undefined",
					"required": false,
					"description": "Function that accepts a `string` object and returns a boolean. `false` meaning the date cannot be selected."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Minute granularity for the calendar's minute column and arrow stepping\n(requires `type=\"datetime\"`). Constrains what the component produces, never what\nit accepts: a typed off-grid value (e.g. `10:07` with `step: 15`) is\nemitted verbatim, and no column row highlights for it."
				},
				{
					"name": "time",
					"type": "string | string[] | null | undefined",
					"required": false,
					"description": "Companion model for the time part (`v-model:time`), always 24-hour\n`HH:mm` / `HH:mm:ss` regardless of display. With `floating` it is the\nonly carrier of the time; otherwise it mirrors the time inside\n`modelValue` (same digits) and writing it rewrites the model's time part.\nRequires `type=\"datetime\"`."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"description": "Transition duration, in milliseconds, for the popover appearance."
				},
				{
					"name": "type",
					"type": "DatePickerType | undefined",
					"required": false,
					"default": "'date'",
					"description": "What the field edits, and therefore its segments and emitted shape.\n\n- `date` (default) — `DD/MM/YYYY`.\n- `datetime` — adds the time segments and the calendar's time rail.\n- `month` — `MM/YYYY`, emitting `YYYY-MM`.\n- `year` — `YYYY`, emitting `YYYY`.\n\n`month`/`year` are calendar labels: they force `floating`, ignore `utc`,\nand make the time props (`seconds`, `ampm`, `step`, `v-model:time`) inert."
				},
				{
					"name": "utc",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Emits values as UTC ISO strings (`...Z`) instead of ISO strings carrying\nthe local offset (`...+01:00`). Emission-only: incoming values are parsed\nidentically either way, so the prop can be added or removed without\ntouching stored values. Fields always display local time — UTC is a\nbackend concern. Ignored when `floating` is set (a plain date has no zone)."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "error",
					"signature": "(event: \"error\", error: DatePickerInputError): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | string[] | null): void"
				},
				{
					"name": "update:time",
					"signature": "(event: \"update:time\", value: string | string[] | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the date fields, at the end of the inner container (before the calendar toggle button)."
				},
				{
					"name": "append-outer",
					"type": "object",
					"description": "Content rendered after the entire date picker control, outside the input chrome."
				},
				{
					"name": "append:day",
					"type": "{ first: boolean; highlighted: boolean; item: Dayjs; label: string; last: boolean; middle: boolean; selected: boolean; }",
					"description": "Appends content below each calendar day."
				},
				{
					"name": "day",
					"type": "{ first: boolean; highlighted: boolean; item: Dayjs; label: string; last: boolean; middle: boolean; selected: boolean; }",
					"description": "Replaces the day button label inside each calendar day."
				},
				{
					"name": "label",
					"type": "BbDatePickerInputLabelSlotProps",
					"description": "Replaces the default label text rendered above the date picker."
				},
				{
					"name": "prefix",
					"type": "object",
					"description": "Inline content rendered at the start of the input field area, before the date fields."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the date fields, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "object",
					"description": "Content rendered before the entire date picker control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "object",
					"description": "Inline content rendered at the end of the input field area, after the date fields."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | string[] | null"
				},
				{
					"name": "time",
					"type": "string | string[] | null | undefined"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<string | string[] | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "allowWriting",
					"new": "disableWriting",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"silent": true,
					"fix": {
						"kind": "invert",
						"valueMap": {
							"not-mobile": "mobile"
						}
					}
				},
				{
					"name": "datetime",
					"new": "type",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "hidePopover",
					"new": "disableCalendar",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"silent": true,
					"fix": {
						"kind": "rename",
						"valueMap": {
							"not-mobile": "desktop"
						}
					}
				},
				{
					"name": "offcanvasProps",
					"new": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				},
				{
					"name": "width",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			],
			"renamed": [
				{
					"from": "allowWriting",
					"to": "disableWriting",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"fix": {
						"kind": "invert",
						"valueMap": {
							"not-mobile": "mobile"
						}
					}
				},
				{
					"from": "datetime",
					"to": "type",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"fix": {
						"kind": "manual"
					}
				},
				{
					"from": "hidePopover",
					"to": "disableCalendar",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"fix": {
						"kind": "rename",
						"valueMap": {
							"not-mobile": "desktop"
						}
					}
				},
				{
					"from": "offcanvasProps",
					"to": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-date-picker-input.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbDialog",
			"group": "Overlay",
			"description": "Presents modal dialogs for focused user interactions.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbDialog.md",
			"source": "ai/source/BbDialog.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "Adapt the surface to the viewport: render as a `BbOffCanvas` drawer on\nmobile instead of a centered dialog. The surface is resolved when the\ndialog opens and stays fixed for that session: resizing across the mobile\nbreakpoint while open never swaps it.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable EVERY user-initiated dismissal: backdrop click, Escape AND the\nheader close (×) button (denied attempts play the deny nudge). Use it\nwhile an operation is in flight (e.g. a save) so the dialog cannot be\ndismissed mid-work. Compare `persistent`, which blocks backdrop/Escape\nbut leaves the × working. Programmatic close (v-model) is still allowed."
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Render dialog content immediately instead of waiting for the first open."
				},
				{
					"name": "focusTarget",
					"type": "string | undefined",
					"required": false,
					"description": "CSS selector of the element to focus after opening. Defaults to the first tabbable element."
				},
				{
					"name": "fullscreen",
					"type": "boolean | \"mobile\" | undefined",
					"required": false,
					"description": "Display the dialog fullscreen. Use `'mobile'` to restrict fullscreen to small devices."
				},
				{
					"name": "hideClose",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Hide the default close (×) button. The button is shown by default; set this\nto remove it (e.g. for a `persistent` dialog you don't want dismissible —\nthe × otherwise still closes a persistent dialog)."
				},
				{
					"name": "modelValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Used by v-model to open / close the dialog. A dialog with no `v-model`\nstarts closed."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Overrides merged over the offcanvas (mobile) surface's props. The drawer\ndefaults to a bottom, draggable, content-sized sheet\n(`side: 'bottom'`, `draggable: true`, `size: 'auto'`); use this to\noverride those, set other drawer-only options (`stackGap`), or override\nshared props whose meaning differs on the drawer (`stack`). Ignored on the\ndesktop dialog surface."
				},
				{
					"name": "persistent",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevent closing via outside clicks or Escape key. The header close (×)\nbutton STILL closes a persistent dialog — that is the documented escape\nhatch; combine with `hideClose` to remove it, or use `disabled` to block\nevery dismissal. Programmatic close is still allowed."
				},
				{
					"name": "size",
					"type": "Responsive<NonNullable<number | ({ size?: any; } & string) | keyof Sizes | undefined>> | undefined",
					"required": false,
					"default": "\"sm\"",
					"description": "Controls the maximum width of the dialog. Accepts named presets from `'xs'` to `'2xl'`,\na custom CSS width string, or a numeric pixel value — or a per-breakpoint\nmap (e.g. `{ default: 'sm', lg: 'lg' }`) to switch width responsively."
				},
				{
					"name": "stack",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the stack this dialog belongs to. Dialogs sharing the same `stack`\nvalue replace one another: only the most recently opened stays visible while\nthe others in the stack are hidden beneath it. Dialogs in different stacks —\nor with no `stack` — never affect each other and remain fully visible."
				},
				{
					"name": "title",
					"type": "string | undefined",
					"required": false,
					"description": "Title text announced to assistive technologies. If omitted, no header is\nrendered (unless a `header` slot is supplied) and accessibility must be\nhandled manually."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Controls the duration of the open and close animations."
				}
			],
			"events": [
				{
					"name": "hidden",
					"signature": "(event: \"hidden\"): void"
				},
				{
					"name": "hide",
					"signature": "(event: \"hide\"): void"
				},
				{
					"name": "show",
					"signature": "(event: \"show\"): void"
				},
				{
					"name": "shown",
					"signature": "(event: \"shown\"): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: boolean): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "BbDialogDefaultSlotProps",
					"description": "Primary body content of the dialog, rendered in the scrollable body area."
				},
				{
					"name": "footer",
					"type": "object",
					"description": "Content rendered in the dialog footer, below the body area. Typically used for action buttons."
				},
				{
					"name": "header",
					"type": "BbDialogHeaderSlotProps",
					"description": "Replaces the entire dialog header section (title + close button) on both\nsurfaces — the desktop `<dialog>` and the mobile off-canvas. Because it\nreplaces the default close (✕), the slot owns closing: render your own\ncontrol wired to the `close` prop, and wire `titleId` onto your title\nelement to keep `aria-labelledby` intact.\n\nProviding this slot renders a header even when `title` is unset.\n\nLayout: the header container is a flex row (`justify-content:\nspace-between`), so your root element is a flex item and shrinks to its\ncontent by default — give it `flex: auto` (Tailwind `flex-1`) to fill the\nwidth, or it renders squeezed against the left edge."
				},
				{
					"name": "title",
					"type": "BbDialogTitleSlotProps",
					"description": "Replaces the default title text inside the header. Remains linked to the\ndialog through `aria-labelledby`. Providing this slot renders the header\neven when `title` is unset — a slotted title is a title."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "boolean | undefined"
				}
			],
			"removed": [
				{
					"name": "canvasProps",
					"new": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				},
				{
					"name": "compact",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "description",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "hideHeader",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "overlayClasses",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "panelClasses",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "showClose",
					"new": "hideClose",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				}
			],
			"renamed": [
				{
					"from": "canvasProps",
					"to": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"fix": {
						"kind": "rename"
					}
				},
				{
					"from": "showClose",
					"to": "hideClose",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dialog.md",
					"fix": {
						"kind": "invert"
					}
				}
			]
		},
		{
			"name": "BbDropdown",
			"group": "Overlay",
			"description": "Displays contextual action menus and menu content (includes the co-located BbDropdownGroup export, which is how a selectable group is bound).",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbDropdown.md",
			"source": "ai/source/BbDropdown.md",
			"props": [
				{
					"name": "activator",
					"type": "Record<string, any> | HTMLElement | null | undefined",
					"required": false,
					"description": "External activator element or component ref.\nWhen provided, the activator slot is not rendered and event listeners\nare attached programmatically to the referenced element. ARIA\n(`aria-haspopup`/`aria-expanded`/`aria-controls`) is attached\nprogrammatically too — don't add your own, or you get a double-set\nconflict."
				},
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "On mobile viewports (below `config.mobileMaxWidth`), render the dropdown as a\nbottom-anchored, auto-sized off-canvas sheet that **navigates** through nested\nsubmenus (drilling one level at a time with a back control) instead of showing\nhover flyouts. Slots and selection behave exactly as on desktop.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "anchor",
					"type": "Record<string, any> | HTMLElement | null | undefined",
					"required": false,
					"default": "the activator element",
					"description": "Element the panel positions itself against, when it should differ from the\nactivator — e.g. a wrapper that the activator is only a part of, so the menu\naligns to the whole control while a single button opens it. Accepts an\nHTMLElement or a Vue component ref. Also drives a percentage `width`.\n\nIgnored when `placement` is `'cursor'`."
				},
				{
					"name": "boundary",
					"type": "string | Record<string, any> | HTMLElement | null | undefined",
					"required": false,
					"description": "Constrains the dropdown within a bounding element.\nAccepts an HTMLElement, a Vue component ref, or a CSS selector string."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant — the same ladder `BbSelect` uses, on\nboth surfaces: flyout rows go 28px → 24px, sheet rows 44px → 36px. The\nlabel size does not change; density here is height, as it is for a select.\n\nA menu row is a touch target in a way a select option is not quite — a\nmis-tap fires the neighbouring COMMAND rather than picking the wrong value\n— so the compact sheet stops at 36px and never follows the flyout down to\n24px. That is the same floor the select's sheet holds."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Default for pipeline groups: drop selections that are no longer present in a\ngroup's current items (e.g. after a `dependencies` re-fetch) from the\nselection and `v-model`. A group's own `enforceCoherence` overrides this."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "items",
					"type": "Item[]",
					"required": true,
					"default": "[]",
					"description": "Array used to render each dropdown button.\nThey can act as `button`, as `a`, or as `router-link`\nas they are based on the functionality provided by `BbBaseButton`.\n\nPass a flat array for a single group, nest arrays for divider-separated\ngroups, or pass {@link InternalGroup} objects for titled / selectable sections.\nAn item may carry its own `items` to open a submenu. The shapes can be mixed."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "Default placeholder text shown while a pipeline group's async items load.\nA group's own `loadingText` overrides this; both fall back to the localized\n`common.loadingText` (`'Loading...'`)."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "Default placeholder text shown when a pipeline group resolves to no items.\nA group's own `noDataText` overrides this; both fall back to the localized\n`common.noDataText` (`'No data to display'`)."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Overrides forwarded to the underlying `BbOffCanvas` when `adaptive` renders\nthe sheet on mobile. Merged over the adaptive defaults\n(`direction: 'bottom'`, `size: 'auto'`, `draggable: true`). Ignored when\n`adaptive` is `false`."
				},
				{
					"name": "offset",
					"type": "number | undefined",
					"required": false,
					"default": "3",
					"description": "Space the floating container will maintain from the activator."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"default": "10",
					"description": "Minimum empty space to keep from the edge of the page"
				},
				{
					"name": "placement",
					"type": "Placement | \"cursor\" | undefined",
					"required": false,
					"default": "\"bottom\"",
					"description": "Position of the dropdown relative to the activator.\nUse `'cursor'` to anchor at the mouse/touch coordinates.\n(No arrow is drawn either way — arrows are tooltip-only in v3.)"
				},
				{
					"name": "queryDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "300",
					"description": "Debounce (ms) applied to the async re-fetch a `searchable` group fires as the\nuser types. Applies to every searchable group in the menu."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "150",
					"description": "How long the transition has to last in milliseconds. Menus use the fast\ntransition rather than the medium one the other popovers default to."
				},
				{
					"name": "trigger",
					"type": "DropdownTrigger | DropdownTrigger[] | undefined",
					"required": false,
					"default": "\"click\"",
					"description": "Interaction(s) that open the dropdown.\nAccepts a single trigger or an array to combine them.\n- `'click'` — left-click / tap (default)\n- `'contextMenu'` — right-click on desktop, long-press on mobile"
				},
				{
					"name": "width",
					"type": "string | number | undefined",
					"required": false,
					"default": "\"auto\"",
					"description": "Width of the dropdown in pixels, percentage, or 'auto' to fit content."
				}
			],
			"events": [
				{
					"name": "item:selected",
					"signature": "(event: \"item:selected\", value: any): void"
				},
				{
					"name": "item:unselected",
					"signature": "(event: \"item:unselected\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "activator",
					"type": "BbDropdownActivatorSlotProps",
					"description": "The element that triggers the dropdown to open. Spread `props` onto your trigger element."
				},
				{
					"name": "default",
					"type": "any",
					"description": "Hosts `<BbDropdownGroup>` companions. They register their group with the\ndropdown and render nothing themselves."
				},
				{
					"name": "footer",
					"type": "BbDropdownEdgeSlotProps",
					"description": "Content pinned to the bottom of the dropdown panel, outside the scroll\narea. Stays visible while the items scroll and is separated from them by a\ndivider — for action buttons."
				},
				{
					"name": "header",
					"type": "BbDropdownEdgeSlotProps",
					"description": "Content pinned to the top of the dropdown panel, outside the scroll area.\nStays visible while the items scroll and is separated from them by a\ndivider — for a title or a filter field."
				},
				{
					"name": "item:append",
					"type": "BbDropdownItemSlotProps",
					"description": "Content rendered after each dropdown item's default button content."
				},
				{
					"name": "item:prepend",
					"type": "BbDropdownItemSlotProps",
					"description": "Content rendered before each dropdown item's default button content."
				},
				{
					"name": "loading",
					"type": "BbDropdownPlaceholderSlotProps",
					"description": "Replaces the default loading placeholder row shown in a pipeline group\nwhile its async items load. Rendered once per loading group."
				},
				{
					"name": "no-data",
					"type": "BbDropdownPlaceholderSlotProps",
					"description": "Replaces the default \"no data\" placeholder row shown in a pipeline group\nthat resolved to no items. Rendered once per empty group."
				}
			],
			"exposed": [],
			"models": [],
			"removed": [
				{
					"name": "arrowPadding",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dropdown.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "offcanvasProps",
					"new": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dropdown.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "offcanvasProps",
					"to": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dropdown.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbDropdownButton",
			"group": "Overlay",
			"description": "A button with primary action and all other actions collected in a dropdown.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbDropdownButton.md",
			"source": "ai/source/BbDropdownButton.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Icon to be added on the right of the text."
				},
				{
					"name": "block",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the component as full width."
				},
				{
					"name": "disableAutoLoading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the automatic loading state that tracks async actions\n(enabled by default). Only affects the main action button: the split\ntoggle half still mirrors the dropdown's internal async-action loading\nstate."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "items",
					"type": "Item[]",
					"required": true,
					"default": "[]",
					"description": "Array used to render each dropdown button.\nThey can act as `button`, as `a`, or as `router-link`\nas they are based on the functionality provided by `BbBaseButton`.\n\nPass a flat array for a single group, nest arrays for divider-separated\ngroups, or pass {@link InternalGroup} objects for titled / selectable sections.\nAn item may carry its own `items` to open a submenu. The shapes can be mixed."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Triggers a loading indicator."
				},
				{
					"name": "offset",
					"type": "number | undefined",
					"required": false,
					"default": "3",
					"description": "Space the floating container will maintain from the activator."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"default": "10",
					"description": "Minimum empty space to keep from the edge of the page"
				},
				{
					"name": "placement",
					"type": "Placement | \"cursor\" | undefined",
					"required": false,
					"default": "'bottom'",
					"description": "Position of the dropdown relative to the activator.\nUse `'cursor'` to anchor at the mouse/touch coordinates.\n(No arrow is drawn either way — arrows are tooltip-only in v3.)"
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Icon to be added on the left of the text."
				},
				{
					"name": "right:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Replaces the chevron shown inside the right-side dropdown toggle button.\nA constrained alternative to a slot: only the toggle's icon changes, so\nthe button keeps its semantics. Named for consistency with\n`prepend:icon` / `append:icon`."
				},
				{
					"name": "size",
					"type": "Responsive<Sizes> | undefined",
					"required": false,
					"default": "\"md\"",
					"description": "Sets the size of the button. When the value is a string, it will be applied to all screen sizes.\nOtherwise, it will be applied to the screen size specified by the object."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "150",
					"description": "How long the transition has to last in milliseconds. Menus use the fast\ntransition rather than the medium one the other popovers default to."
				},
				{
					"name": "variant",
					"type": "ButtonVariantType | undefined",
					"required": false,
					"default": "\"primary\"",
					"description": "Visual variant shared by both buttons of the split control."
				},
				{
					"name": "width",
					"type": "string | number | undefined",
					"required": false,
					"default": "'auto'",
					"description": "Width of the dropdown in pixels, percentage, or 'auto' to fit content."
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "any",
					"description": "Companion content forwarded into the dropdown (e.g. `<BbDropdownGroup>`)."
				},
				{
					"name": "footer",
					"type": "BbDropdownButtonEdgeSlotProps",
					"description": "Content pinned to the bottom of the dropdown panel, outside the scroll area."
				},
				{
					"name": "header",
					"type": "BbDropdownButtonEdgeSlotProps",
					"description": "Content pinned to the top of the dropdown panel, outside the scroll area."
				},
				{
					"name": "item:append",
					"type": "BbDropdownButtonItemSlotProps",
					"description": "Content rendered after each dropdown item's default content."
				},
				{
					"name": "item:prepend",
					"type": "BbDropdownButtonItemSlotProps",
					"description": "Content rendered before each dropdown item's default content."
				},
				{
					"name": "loading",
					"type": "BbDropdownPlaceholderSlotProps",
					"description": "Replaces the default loading placeholder row shown in a pipeline group\nwhile its async items load. Rendered once per loading group. Forwarded to\nthe underlying `BbDropdown`."
				},
				{
					"name": "no-data",
					"type": "BbDropdownPlaceholderSlotProps",
					"description": "Replaces the default \"no data\" placeholder row shown in a pipeline group\nthat resolved to no items. Rendered once per empty group. Forwarded to the\nunderlying `BbDropdown`."
				}
			],
			"exposed": [],
			"models": [],
			"removed": [
				{
					"name": "arrowPadding",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dropdown-button.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "autoLoading",
					"new": "disableAutoLoading",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dropdown-button.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "theme",
					"new": "variant",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dropdown-button.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "autoLoading",
					"to": "disableAutoLoading",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dropdown-button.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "theme",
					"to": "variant",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-dropdown-button.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbDropdownGroup",
			"group": "Overlay",
			"description": "Renderless v-model companion for a group declared in BbDropdown.items, bound by id.",
			"referenceOnly": false,
			"hasGuide": false,
			"contract": "ai/BbDropdownGroup.md",
			"source": "ai/source/BbDropdownGroup.md",
			"props": [
				{
					"name": "id",
					"type": "string",
					"required": true,
					"description": "Identifier of the group to bind to — must match the `key` of a group\ndeclared in the host `BbDropdown`'s `items`."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false
				}
			],
			"events": [
				{
					"name": "item:selected",
					"signature": "(event: \"item:selected\", value: any): void"
				},
				{
					"name": "item:unselected",
					"signature": "(event: \"item:unselected\", value: any): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "{}"
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			]
		},
		{
			"name": "BbDropzone",
			"group": "Inputs",
			"description": "Supports drag-and-drop file input flows.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbDropzone.md",
			"source": "ai/source/BbDropzone.md",
			"props": [
				{
					"name": "accept",
					"type": "string[] | undefined",
					"required": false,
					"description": "Array of MIME types (`'image/png'`), wildcards (`'image/*'`), extensions\n(`'.png'`) or bare tokens (`'png'`) to filter selectable files. A bare\ntoken upgrades to its extension instantly and is enriched with its MIME\ntype from the lazily-imported `mime` database; validation of files that\narrive before the database resolves is queued until the rules are\ncomplete."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "maxFiles",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of acceptable files."
				},
				{
					"name": "maxSize",
					"type": "number | undefined",
					"required": false,
					"description": "Max size of the files in bytes."
				},
				{
					"name": "modelValue",
					"type": "File | File[] | null",
					"required": true,
					"description": "Used by v-model."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Allows the selection of multiple items."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "tag",
					"type": "LayoutTag | undefined",
					"required": false,
					"default": "\"div\"",
					"description": "Element rendered as the component's wrapper."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the dropzone, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "error",
					"signature": "(event: \"error\", data: DropZoneError): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: File | File[] | null): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "BbDropzoneDefaultSlotProps",
					"description": "The drop zone area content. Renders inside the `<label>` that captures drag\nand file input events. It is a region, not a label: its text does not name\nthe input unless you mark one node with the `labelId` slot prop."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "File | File[] | null"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<File | File[] | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"blur\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			}
		},
		{
			"name": "BbForm",
			"group": "Inputs",
			"description": "Form host for `bitboss-ui/validated`: owns the vee-validate form (useForm), validates every field on submit, and emits `submit` with the collected values only when the form is valid.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbForm.md",
			"source": "ai/source/BbForm.md",
			"entrypoint": "bitboss-ui/validated",
			"props": [
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id, so anything outside the form can read and drive it through\n`useBbFormContext(id)` — a dialog footer's submit button, a page toolbar,\na leave guard. Omit it when the form is self-contained: the slot scope\nalready carries the same state for chrome that lives inside."
				}
			],
			"events": [
				{
					"name": "submit",
					"signature": "(event: \"submit\", values: Record<string, unknown>): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "{ touched: boolean; dirty: boolean; valid: boolean; pending: boolean; initialValues?: Partial<GenericObject> | undefined; isSubmitting: boolean; resetForm: (state?: Partial<FormState<GenericObject>> | undefined, opts?: Partial<ResetFormOpts> | undefined) => void; submitCount: number; validate: (opts?: Partial<ValidationOptions> | undefined) => Promise<FormValidationResult<GenericObject, GenericObject>>; values: GenericObject; }"
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbIcon",
			"group": "Data Display",
			"description": "Renders an icon either from the local icon folder or from a provider.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbIcon.md",
			"source": "ai/source/BbIcon.md",
			"props": [
				{
					"name": "icon",
					"type": "string",
					"required": true,
					"description": "Name of a registered icon to use, or a full raw `<svg>` string\n(e.g. an SVG file imported with `?raw`)."
				},
				{
					"name": "label",
					"type": "string | undefined",
					"required": false,
					"description": "Label of the icon for accessibility."
				},
				{
					"name": "size",
					"type": "number | ({ size?: any; } & string) | keyof Sizes | undefined",
					"required": false,
					"default": "\"md\"",
					"description": "Defines the component size.\n\nAccepted values:\n- A key from the provided size map (`keyof T`), e.g. `'sm' | 'md' | 'lg'`\n- A custom CSS size string (e.g. `'20px'`, `'1.5rem'`, `'2em'`)\n- A number, typically interpreted as pixels by size parsers"
				}
			],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": [],
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-icon.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "type",
					"new": "icon",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-icon.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "type",
					"to": "icon",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-icon.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbIndicator",
			"group": "Feedback",
			"description": "Anchors a notification bubble (count/short text) or a dot over a wrapped element.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbIndicator.md",
			"source": "ai/source/BbIndicator.md",
			"props": [
				{
					"name": "bottom",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Anchors the indicator to the bottom edge of the wrapped element instead of\nthe top."
				},
				{
					"name": "dot",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders a small contentless dot instead of a labelled bubble. Takes\nprecedence over `text`."
				},
				{
					"name": "left",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Anchors the indicator to the left edge of the wrapped element instead of\nthe right."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"description": "Caps a numeric `text` count: values above `max` render as `${max}+`\n(e.g. `max: 99` shows `99+`). Ignored for string `text`."
				},
				{
					"name": "size",
					"type": "keyof Sizes | undefined",
					"required": false,
					"default": "\"md\"",
					"description": "Preset size of the indicator."
				},
				{
					"name": "text",
					"type": "string | number | undefined",
					"required": false,
					"description": "Content shown inside the indicator bubble. A `number` is accepted for count\nergonomics (e.g. `:text=\"unread\"`). When omitted the indicator renders only\nif `dot` is set."
				},
				{
					"name": "variant",
					"type": "keyof IndicatorVariantRegistry | undefined",
					"required": false,
					"default": "\"default\"",
					"description": "Visual variant. `default` uses the primary color; `success`, `info`,\n`warning` and `destructive` map to the shared status colors.\nRegister more via the vite plugin `indicatorVariants` option and style\n`.bb-indicator--<variant>`."
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "object",
					"description": "The element the indicator is anchored to."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbNumberInput",
			"group": "Inputs",
			"description": "Captures and validates numeric form values, emits a number value.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbNumberInput.md",
			"source": "ai/source/BbNumberInput.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Guides the browser as to the type of information expected in the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button when the input has a value and is being interacted with."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a compact state."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum value cap."
				},
				{
					"name": "maxPrecision",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum precision of the number."
				},
				{
					"name": "min",
					"type": "number | undefined",
					"required": false,
					"description": "Minimum value cap."
				},
				{
					"name": "modelValue",
					"type": "string | number | null",
					"required": true,
					"default": "null",
					"description": "Used by v-model."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there's no data."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and the input is swapped."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"description": "Incremental unit used in the exposed `increase` and `decrease` functions.\nIt 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."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "decrease",
					"signature": "(event: \"decrease\", value: number): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "increase",
					"signature": "(event: \"increase\", value: number): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: number | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Content rendered after the number input, at the end of the inner container.\nTypically used to place increment/decrement buttons next to the input."
				},
				{
					"name": "append-outer",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Content rendered after the entire input control, outside the input chrome."
				},
				{
					"name": "label",
					"type": "BbNumberInputLabelSlotProps",
					"description": "Replaces the default label text rendered above the number input."
				},
				{
					"name": "prefix",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Inline content rendered at the start of the input field area, before the typed number."
				},
				{
					"name": "prepend",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Content rendered before the number input, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Content rendered before the entire input control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "BaseNumberInputStepSlotProps",
					"description": "Inline content rendered at the end of the input field area, after the typed number."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | number | null"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<string | number | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"blur\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			}
		},
		{
			"name": "BbOffCanvas",
			"group": "Overlay",
			"description": "Shows side-panel overlay content outside normal layout flow.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbOffCanvas.md",
			"source": "ai/source/BbOffCanvas.md",
			"props": [
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable EVERY user-initiated dismissal: backdrop click, Escape,\ndrag-to-dismiss AND the header close (×) button (denied attempts play the\ndeny nudge). Use it while an operation is in flight (e.g. a save) so the\ndrawer cannot be dismissed mid-work. Compare `persistent`, which blocks\nbackdrop/Escape but leaves the × working. Programmatic close (v-model) is\nstill allowed."
				},
				{
					"name": "draggable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enable drag-to-dismiss. The panel can be dragged from anywhere toward its\nedge to close, and a grab handle is shown on the inner edge as the\naffordance. When `false`, the panel is static (dismiss via the close button,\nbackdrop, or Escape only)."
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Render offcanvas content immediately instead of waiting for the first open."
				},
				{
					"name": "focusTarget",
					"type": "string | undefined",
					"required": false,
					"description": "CSS selector of the element to focus after opening. Defaults to the first tabbable element."
				},
				{
					"name": "fullscreen",
					"type": "boolean | \"mobile\" | undefined",
					"required": false,
					"description": "Display the offcanvas fullscreen. Use `'mobile'` to restrict fullscreen to small devices."
				},
				{
					"name": "hideClose",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Hides the default close (×) button in the header (e.g. for a `persistent`\ndrawer you don't want dismissible — the × otherwise still closes a\npersistent drawer)."
				},
				{
					"name": "modelValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Used by v-model to open / close the panel. A panel with no `v-model`\nstarts closed."
				},
				{
					"name": "persistent",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevent closing via outside clicks, Escape key or drag-to-dismiss. The\nheader close (×) button STILL closes a persistent drawer — that is the\ndocumented escape hatch; combine with `hideClose` to remove it, or use\n`disabled` to block every dismissal. Programmatic close is still allowed."
				},
				{
					"name": "side",
					"type": "\"left\" | \"right\" | \"top\" | \"bottom\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Which viewport edge the offcanvas docks to (and slides in from)."
				},
				{
					"name": "size",
					"type": "Responsive<OffCanvasSize> | undefined",
					"required": false,
					"default": "\"sm\"",
					"description": "Controls the maximum size of the offcanvas panel. Accepts named presets from `'xs'` to `'2xl'`,\n`'auto'`, a custom CSS size string, or a numeric pixel value — or a\nper-breakpoint map (e.g. `{ default: 'sm', lg: 'lg' }`) to switch responsively."
				},
				{
					"name": "stack",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the stack this drawer belongs to. Drawers sharing the same `stack`\nvalue step back behind one another as later ones open; drawers in different\nstacks never affect each other. When omitted, the drawer stacks with nothing."
				},
				{
					"name": "stackGap",
					"type": "number | undefined",
					"required": false,
					"default": "60",
					"description": "Pixels each stacked parent drawer shifts inward when a child opens on top,\nleaving a peeking band of the parent visible."
				},
				{
					"name": "title",
					"type": "string | undefined",
					"required": false,
					"description": "Title text announced to assistive technologies. If omitted, no header is rendered and\naccessibility must be handled manually."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Controls the duration of the open and close animations."
				}
			],
			"events": [
				{
					"name": "hidden",
					"signature": "(event: \"hidden\"): void"
				},
				{
					"name": "hide",
					"signature": "(event: \"hide\"): void"
				},
				{
					"name": "show",
					"signature": "(event: \"show\"): void"
				},
				{
					"name": "shown",
					"signature": "(event: \"shown\"): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: boolean): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "{ close: () => void; }",
					"description": "Primary body content of the off-canvas panel, rendered in the scrollable body area."
				},
				{
					"name": "footer",
					"type": "object",
					"description": "Content rendered in the panel footer, below the body area. Typically used for action buttons."
				},
				{
					"name": "header",
					"type": "BbOffCanvasHeaderSlotProps",
					"description": "Replaces the entire off-canvas header section (title + close button). Maintains accessibility wiring via the provided props."
				},
				{
					"name": "title",
					"type": "BbOffCanvasTitleSlotProps",
					"description": "Replaces the default title text inside the header. Remains linked to the\npanel through `aria-labelledby`. Providing this slot renders the header even\nwhen `title` is unset — a slotted title is a title."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "boolean | undefined"
				}
			],
			"removed": [
				{
					"name": "compact",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-offcanvas.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "description",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-offcanvas.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "direction",
					"new": "side",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-offcanvas.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				},
				{
					"name": "showClose",
					"new": "hideClose",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-offcanvas.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				}
			],
			"renamed": [
				{
					"from": "direction",
					"to": "side",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-offcanvas.md",
					"fix": {
						"kind": "rename"
					}
				},
				{
					"from": "showClose",
					"to": "hideClose",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-offcanvas.md",
					"fix": {
						"kind": "invert"
					}
				}
			]
		},
		{
			"name": "BbPagination",
			"group": "Navigation",
			"description": "Navigates paginated data sets by page index.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbPagination.md",
			"source": "ai/source/BbPagination.md",
			"props": [
				{
					"name": "align",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"right\"",
					"description": "Alignment of the pagination control."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "ellipsis",
					"type": "string | undefined",
					"required": false,
					"default": "\"...\"",
					"description": "String of text displayed in place of hidden pages."
				},
				{
					"name": "label",
					"type": "string | undefined",
					"required": false,
					"description": "Label of the pagination navigation landmark. When unset, falls back to the\nlocalized `pagination.label` (`'Pagination'` / `'Paginazione'`)."
				},
				{
					"name": "maxSize",
					"type": "string | number | undefined",
					"required": false,
					"default": "6",
					"description": "Maximum number of clickable pages displayed at all times.\nThis has a tolerance of +/- 1 for odd / even numbering.\nIt does not include ellipses."
				},
				{
					"name": "modelValue",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Used by v-model. The 1-based index of the current page — pagination starts\non the first page, not page `0`."
				},
				{
					"name": "navigation",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Synchronizes the current page with the URL.\n\nPair it with `replace` — see that prop."
				},
				{
					"name": "perPage",
					"type": "string | number | undefined",
					"required": false,
					"description": "Number of items per page. Together with `totalItems` it derives the page\ncount (`ceil(totalItems / perPage)`); when unset, one page holds\neverything. With a `tableId` it is also published to the shared table\ncontext, exactly like the table's own `per-page` prop."
				},
				{
					"name": "queryKey",
					"type": "string | undefined",
					"required": false,
					"default": "\"page\"",
					"description": "Defines the query key to reference for maintaining navigation."
				},
				{
					"name": "replace",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Replaces history rather than pushing it when changing page.\n\nRecommended default whenever `navigation` is on: the URL keeps the\ncurrent page (deep-linkable, survives reload) while Back returns to the\npage the user came from, instead of stepping back through every page they\nclicked through. Without it, a user who paged to 12 needs eleven Backs to\nleave the list."
				},
				{
					"name": "tableId",
					"type": "string | undefined",
					"required": false,
					"description": "Id of a `BbTable` to pair with through the shared table context (see\n`useBbTableContext`). The current page is kept two-way synced with the\ntable's context state, and the context's page count drives the control,\noverriding the local props. Any of `totalItems`, `perPage`, and\n`totalPages` set here are published to the context, so the server's\npagination fields can be passed to whichever component is convenient —\nthe table's equivalent props do the same. The table must be given the\nsame `id`."
				},
				{
					"name": "totalItems",
					"type": "string | number | undefined",
					"required": false,
					"description": "Total number of items across all pages. When set, the page count is\nderived as `ceil(totalItems / perPage)` and wins over `totalPages`. With\na `tableId` it is also published to the shared table context, exactly\nlike the table's own `total-items` prop."
				},
				{
					"name": "totalPages",
					"type": "string | number | undefined",
					"required": false,
					"description": "Total number of pages. A shortcut for when the server reports a page\ncount rather than a row count — a page count derived from `totalItems`\n(locally or through the shared table context) always wins over it. Falls\nback to `1` when nothing provides a count."
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: number): void"
				}
			],
			"slots": [
				{
					"name": "ellipsis",
					"type": "Record<string, never>",
					"description": "Replaces the default `…` ellipsis shown when pages overflow the visible range."
				},
				{
					"name": "item",
					"type": "BbPaginationItemSlotProps",
					"description": "Replaces the default page number button content for each individual page."
				},
				{
					"name": "next",
					"type": "Record<string, never>",
					"description": "Replaces the default \"next page\" button content."
				},
				{
					"name": "previous",
					"type": "Record<string, never>",
					"description": "Replaces the default \"previous page\" button content."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "number | undefined"
				}
			],
			"removed": [
				{
					"name": "loading",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-pagination.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "querykey",
					"new": "queryKey",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-pagination.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "querykey",
					"to": "queryKey",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-pagination.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbPopover",
			"group": "Overlay",
			"description": "Anchors floating content to reference elements.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbPopover.md",
			"source": "ai/source/BbPopover.md",
			"props": [
				{
					"name": "activator",
					"type": "ElementOrComponentRef | undefined",
					"required": false,
					"description": "External activator element or component ref.\nWhen provided, the activator slot is not rendered and click events\nare attached programmatically to the referenced element."
				},
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "On mobile viewports (below `config.mobileMaxWidth`), render the popover as a\nbottom-anchored, auto-sized off-canvas sheet instead of a floating panel.\nThe `header`, `default` and `footer` slots are forwarded to the sheet.\n\nThe `width` prop is intentionally ignored in this mode (it means a different\nthing for a sheet); pass `offCanvasProps` to size or otherwise customise the\nsheet.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "boundary",
					"type": "ElementOrComponentRefOrSelector | undefined",
					"required": false,
					"description": "Constrains the popover within a bounding element.\nWhen provided, the popover will not overflow this container's bounds (e.g. a sidebar).\nAccepts an HTMLElement, a Vue component ref, or a CSS selector string."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "focusTarget",
					"type": "string | undefined",
					"required": false,
					"description": "Selector for the element that receives focus after opening.\nDefaults to the first focusable element inside the popover."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "modelValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Used by v-model to open / close the popover. A popover with no `v-model`\nstarts closed and is driven by its `trigger`."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Overrides forwarded to the underlying `BbOffCanvas` when `adaptive` renders\nthe sheet on mobile. Merged over the adaptive defaults\n(`side: 'bottom'`, `size: 'auto'`, `draggable: true`). Ignored when\n`adaptive` is `false`."
				},
				{
					"name": "offset",
					"type": "number | undefined",
					"required": false,
					"default": "3",
					"description": "Space the floating container will maintain from the activator."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"default": "10",
					"description": "Minimum empty space to keep from the edge of the page."
				},
				{
					"name": "placement",
					"type": "Placement | \"cursor\" | undefined",
					"required": false,
					"default": "\"bottom\"",
					"description": "Position of the popover relative to the activator.\nUse `'cursor'` to anchor at the mouse/touch coordinates.\n(BbPopover never draws an arrow — arrows are tooltip-only in v3.)"
				},
				{
					"name": "scrollable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Caps the popover height to the available viewport space and enables internal scrolling.\nUseful for tall content like filter panels. Not recommended for atomic popovers (calendars, color pickers)."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "How long the transition has to last in milliseconds."
				},
				{
					"name": "trigger",
					"type": "PopoverTrigger | PopoverTrigger[] | undefined",
					"required": false,
					"default": "\"click\"",
					"description": "Interaction(s) that open the popover.\nAccepts a single trigger or an array to combine them.\n- `'click'` — left-click / tap (default)\n- `'contextMenu'` — right-click on desktop, long-press on mobile"
				},
				{
					"name": "width",
					"type": "string | number | undefined",
					"required": false,
					"description": "Width of the popover. Accepts pixels or percentage (relative to activator width)."
				}
			],
			"events": [
				{
					"name": "hidden",
					"signature": "(event: \"hidden\"): void"
				},
				{
					"name": "hide",
					"signature": "(event: \"hide\"): void"
				},
				{
					"name": "show",
					"signature": "(event: \"show\"): void"
				},
				{
					"name": "shown",
					"signature": "(event: \"shown\"): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: boolean): void"
				}
			],
			"slots": [
				{
					"name": "activator",
					"type": "BbPopoverActivatorSlotProps",
					"description": "The element that triggers the popover to open. Spread `props` onto your trigger element."
				},
				{
					"name": "default",
					"type": "BbPopoverDefaultSlotProps",
					"description": "The popover body content rendered inside the floating panel."
				},
				{
					"name": "footer",
					"type": "BbPopoverDefaultSlotProps",
					"description": "Content pinned to the bottom of the panel, outside the scroll region.\nStays visible while the body scrolls (when `scrollable`) and carries its\nown padding and top divider, so footer actions need no negative-margin or\n`sticky` workarounds."
				},
				{
					"name": "header",
					"type": "BbPopoverDefaultSlotProps",
					"description": "Content pinned to the top of the panel, outside the scroll region.\nStays visible while the body scrolls (when `scrollable`) and carries its\nown padding and bottom divider, so a title or search field needs no\nnegative-margin or `sticky` workarounds."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "boolean | undefined"
				}
			],
			"removed": [
				{
					"name": "arrowPadding",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "block",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "closeLabel",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "hideArrow",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "offcanvasProps",
					"new": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				},
				{
					"name": "restoreFocus",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "showArrow",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "showClose",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "theme",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			],
			"renamed": [
				{
					"from": "offcanvasProps",
					"to": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-popover.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbProgress",
			"group": "Feedback",
			"description": "Visualizes task or operation progress state.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbProgress.md",
			"source": "ai/source/BbProgress.md",
			"props": [
				{
					"name": "label",
					"type": "string | undefined",
					"required": false,
					"default": "undefined",
					"description": "Accessible name for the progress bar, forwarded to `aria-label`. A\n`progressbar` with no name is announced only as a bare percentage, so give\nit one whenever the surrounding text doesn't already name it (e.g.\n`\"Upload\"`). Matches the `label` naming prop on BbSpinner / BbIcon."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"default": "100",
					"description": "Maximum value. Upper cap."
				},
				{
					"name": "min",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Minimum value. Lower cap."
				},
				{
					"name": "modelValue",
					"type": "number | null",
					"required": true,
					"default": "0",
					"description": "The current progress value — a number between `min` and `max`. This is a\none-way input prop (BbProgress is a display component and never emits\n`update:modelValue`); `null` means no value and renders an empty bar."
				}
			],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbRadio",
			"group": "Selection",
			"description": "Represents a single choice in exclusive options.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbRadio.md",
			"source": "ai/source/BbRadio.md",
			"props": [
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "undefined",
					"description": "Defines the input as checked."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"default": "\"auto\"",
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "inputPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false,
					"description": "Used by v-model. Can be any serializable type."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input. Optional: an omitted name falls back to a\ngenerated one, unique to this button and stable for its lifetime, so a lone\nradio needs no name at all. Buttons that must form ONE exclusive group still\nhave to share an explicit `name` — generated names are per-instance, so they\nwould never group. Pass a name too when the value has to be submitted under a\nknown key by a native (non-JS) form post."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout: in every direction the order of the label and the\ninput is swapped from the standard arrangement."
				},
				{
					"name": "value",
					"type": "any",
					"required": true,
					"description": "Defines the value of the radio input.\nIt can be any serializable value."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "icon",
					"type": "BbRadioIconSlotProps",
					"description": "Replaces the default radio dot visual inside the radio container. Receives `BaseRadio`\nslot attributes plus the label text."
				},
				{
					"name": "label",
					"type": "BbRadioLabelSlotProps",
					"description": "Replaces the default label text rendered next to the radio button."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			]
		},
		{
			"name": "BbRadioGroup",
			"group": "Selection",
			"description": "Coordinates exclusive selection among radio options.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbRadioGroup.md",
			"source": "ai/source/BbRadioGroup.md",
			"props": [
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a compact state."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"description": "Defines an array of dependencies that will trigger actions in the component upon change."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"description": "Timeout used to debounce response to changes to dependencies."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "If coherence is enforced the input cannot have a modelValue that is incoherent with its current items.\n\ne.g. You cannot set v-model to a user that is not present in the items passed.\n\nmodelValue will be reset upon incoherence."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides each option's label text (the text rendered next to every\ninput) while keeping it accessible to screen readers.\nDoes not affect the fieldset legend — use `hideLegend` for that."
				},
				{
					"name": "hideLegend",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the legend of the fieldset while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "inputDirection",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"description": "Defines the direction of the inputs in the fieldset."
				},
				{
					"name": "inputPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."
				},
				{
					"name": "items",
					"type": "T[] | ((prefill: boolean, modelValue?: any) => T[] | Promise<T[]>)",
					"required": true,
					"description": "Used to retrieve items; can be an array or a function."
				},
				{
					"name": "itemText",
					"type": "ItemAccessor<T, string> | undefined",
					"required": false,
					"description": "Defines a path that returns a property of the object to use as text or a function that returns a string."
				},
				{
					"name": "itemValue",
					"type": "ItemAccessor<T> | undefined",
					"required": false,
					"description": "Defines a path that returns a property of the object to use as value or a function that returns any value."
				},
				{
					"name": "legend",
					"type": "string",
					"required": true,
					"description": "Text content of the legend."
				},
				{
					"name": "legendMode",
					"type": "\"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow;\n`'inside'` overlays the legend inside the fieldset border.\nFloating mode is not supported for radio groups."
				},
				{
					"name": "legendPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed while items are being loaded."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "Used by v-model. Can be any serializable type."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"description": "Timeout used to debounce response to changes to modelValue."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the option inputs. Optional: the options live inside a\nsingle component instance, so an omitted name falls back to a generated one\nthat groups them correctly on its own — unique per group, so two groups never\nclear each other's selection, and stable for the group's lifetime. Pass a name\nonly when the value has to be submitted under a known key by a native (non-JS)\nform post."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there are no items to display."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and the input is swapped."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: T) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void",
					"description": "Emitted when the group becomes active (focus/click enters it)."
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void",
					"description": "Emitted when one of the generated radio inputs loses focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void",
					"description": "Emitted when a radio option is selected.\nForwards the original DOM `Event` from the radio input."
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void",
					"description": "Emitted when one of the generated radio inputs is clicked.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void",
					"description": "Emitted when one of the generated radio inputs receives focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void",
					"description": "Emitted when focus/click moves outside the group after it was active.\nUseful for validation-on-blur flows at group level."
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void",
					"description": "Emitted on native input events from generated radio inputs.\nForwards the original DOM `Event`."
				},
				{
					"name": "keydown",
					"signature": "(e: \"keydown\", event: KeyboardEvent): void",
					"description": "Emitted for keyboard interaction on generated radio inputs.\nForwards the original DOM `KeyboardEvent`."
				},
				{
					"name": "mousedown",
					"signature": "(e: \"mousedown\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is pressed over a radio input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "mouseup",
					"signature": "(e: \"mouseup\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is released over a radio input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void",
					"description": "Emitted with the newly selected value when the selection changes."
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the last option, inside the options container."
				},
				{
					"name": "icon",
					"type": "BaseRadioGroupIconSlotProps<T>",
					"description": "Replaces the default radio dot icon for each option. Receives all `BaseRadio`\nslot attributes plus the source item and its display text."
				},
				{
					"name": "label",
					"type": "BaseRadioGroupLabelSlotProps<T>",
					"description": "Replaces the default label text for each option."
				},
				{
					"name": "legend",
					"type": "BbRadioGroupLegendSlotProps",
					"description": "Replaces the default fieldset legend text for the group."
				},
				{
					"name": "loading",
					"type": "object",
					"description": "Content shown while options are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the first option, inside the options container."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<any>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "labelPosition",
					"new": "legendPosition",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "labelPosition",
					"to": "legendPosition",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbRating",
			"group": "Selection",
			"description": "Collects scalar ratings through interactive icons.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbRating.md",
			"source": "ai/source/BbRating.md",
			"props": [
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Allows clearing the selected rating by clicking the current value."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a compact state."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLegend",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the legend of the fieldset while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "inputPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."
				},
				{
					"name": "legend",
					"type": "string",
					"required": true,
					"description": "Text content of the legend."
				},
				{
					"name": "legendMode",
					"type": "\"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow;\n`'inside'` overlays the legend inside the fieldset border.\nFloating mode is not supported for rating groups."
				},
				{
					"name": "legendPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the legend."
				},
				{
					"name": "modelValue",
					"type": "number | null",
					"required": true,
					"description": "Used by v-model."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the star radio inputs. Optional: the stars live inside a\nsingle component instance, so an omitted name falls back to a generated one\nthat groups them correctly on its own. Pass a name only when the value has to\nbe submitted under a known key by a native (non-JS) form post."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and the input is swapped."
				},
				{
					"name": "size",
					"type": "number | ({ size?: any; } & string) | keyof Sizes | undefined",
					"required": false,
					"default": "'md'",
					"description": "Defines the component size.\n\nAccepted values:\n- A key from the provided size map (`keyof T`), e.g. `'sm' | 'md' | 'lg'`\n- A custom CSS size string (e.g. `'20px'`, `'1.5rem'`, `'2em'`)\n- A number, typically interpreted as pixels by size parsers"
				},
				{
					"name": "stars",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of stars to render and maximum value of the component."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: number | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the row of rating stars."
				},
				{
					"name": "icon",
					"type": "BaseRatingIconSlotProps",
					"description": "Replaces the default star SVG for each rating option."
				},
				{
					"name": "legend",
					"type": "BbRatingLegendSlotProps",
					"description": "Replaces the default fieldset legend text rendered above the rating stars."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the row of rating stars."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "number | null"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<number | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-rating.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			]
		},
		{
			"name": "BbSelect",
			"group": "Selection",
			"description": "Selects one or many options from structured data.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbSelect.md",
			"source": "ai/source/BbSelect.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "When `true`, the options panel opens as a bottom off-canvas sheet on mobile\nviewports instead of a floating popover; on desktop it stays a popover.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Guides to the browser as to the type of information expected in the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button when the input has a value and is being interacted with."
				},
				{
					"name": "comma",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the display model for selected values to a list of comma separated string.\nIn this mode the user cannot deselect an option by pressing the close button."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a compact mode."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"description": "Defines an array of dependencies that will trigger actions in the component upon change."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Timeout used to debounce response to changes to dependencies."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a\npattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "disableWriting",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether the search input is shown inside the dropdown panel.\nUse `'mobile'` / `'desktop'` to hide it on that platform only."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "If coherence is enforced the input cannot have a modelValue that is incoherent\nwith its current items. modelValue will be reset upon incoherence."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "filterBy",
					"type": "string[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Property paths used to filter options when the user types in the search input.\nWhen empty (default) options are matched against their display text.\nWhen non-empty the provided paths are searched instead of the display text.\nTo disable filtering entirely set `disableWriting` so the user cannot type a query."
				},
				{
					"name": "groupBy",
					"type": "string | ((item: T) => string | number | symbol) | undefined",
					"required": false,
					"description": "Path to item property for grouping options."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "headerHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Height of group headers in the listbox (px). Defaults to 32px (24px\ncompact; 36px / 32px on mobile viewports). Only applies when `groupBy`\nis set. An explicit value wins on every viewport."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "itemHeight",
					"type": "number | undefined",
					"required": false,
					"default": "28",
					"description": "Height of the options in the listbox (px). Defaults to 28px (24px\ncompact; 44px / 36px on mobile viewports). An explicit value wins on\nevery viewport."
				},
				{
					"name": "items",
					"type": "T[] | ((query: string, prefill: boolean, modelValue: any) => Promise<T[]>) | ((query: string, prefill: boolean, modelValue: any) => T[])",
					"required": true,
					"description": "Used to retrieve items; can be an array or a function."
				},
				{
					"name": "itemText",
					"type": "ItemAccessor<T, string> | undefined",
					"required": false,
					"description": "Defines a path that returns a property of the object to use as text or a function\nthat returns a string."
				},
				{
					"name": "itemValue",
					"type": "ItemAccessor<T> | undefined",
					"required": false,
					"description": "Defines a path that returns a property of the object to use as value or a function\nthat returns any value."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed while items are being loaded."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of selectable items when the multiple flag is set."
				},
				{
					"name": "maxSelectedLabels",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of labels shown before collapsing to a count summary."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "Used by v-model. Can be any serializable type."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Timeout used to debounce response to changes to modelValue."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Allows the selection of multiple items."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there are no items to display."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on mobile."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there's no data."
				},
				{
					"name": "prefill",
					"type": "boolean | \"interaction\" | undefined",
					"required": false,
					"default": "'interaction'",
					"description": "Controls when items are pre-loaded.\n`'interaction'` loads on the first user interaction, `true` loads\nimmediately on mount, `false` is *search-first*: with a provider, nothing\nis fetched until the user types — opening alone does not load, and the\npanel shows a \"search to begin\" hint meanwhile.\n\n`false` falls back to loading on open when the user could not otherwise\nreach the options: array `items` (resolved on mount regardless), or\n`disable-writing` (no search field to type into). When the input has a\nvalue, it always loads immediately so the selection's text can render."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "queryDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "500",
					"description": "Time to wait when the user stops writing in the input before querying data."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and\nthe input is swapped."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: T) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				},
				{
					"name": "selectedLabelsFn",
					"type": "((count: number) => string) | undefined",
					"required": false,
					"description": "Function that returns a string to be displayed when the number of selected labels\nis greater than `maxSelectedLabels`."
				},
				{
					"name": "stash",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds a stash to accumulate selected values across searches."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "How long the transition has to last in milliseconds."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void"
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void"
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void"
				},
				{
					"name": "option:add",
					"signature": "(e: \"option:add\", text: string): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "{ query: string; focus: () => void; close: () => Promise<void>; }",
					"description": "Content appended inside the input field, after the value area."
				},
				{
					"name": "append-outer",
					"type": "{ query: string; close: () => Promise<void>; }",
					"description": "Content appended outside the input field wrapper."
				},
				{
					"name": "chip",
					"type": "BbSelectChipSlotProps<T>",
					"description": "Replaces the default badge rendered for each selection in `multiple` mode.\nNot called in `comma` mode, nor for the collapsed \"+N\" summary."
				},
				{
					"name": "footer",
					"type": "BbSelectPanelSlotProps",
					"description": "Content pinned to the bottom of the options panel, below the options list.\nRendered in both the desktop popover and the adaptive sheet."
				},
				{
					"name": "group",
					"type": "BbSelectGroupSlotProps<T>",
					"description": "Replaces the default group header rendered above grouped options."
				},
				{
					"name": "header",
					"type": "BbSelectPanelSlotProps",
					"description": "Content pinned to the top of the options panel, above the search field.\nRendered in both the desktop popover and the adaptive sheet."
				},
				{
					"name": "label",
					"type": "BbSelectLabelSlotProps",
					"description": "Replaces the default label text rendered above the input."
				},
				{
					"name": "loading",
					"type": "{ query: string; }",
					"description": "Content shown inside the options dropdown while items are loading."
				},
				{
					"name": "no-data",
					"type": "{ query: string; focus: () => void; }",
					"description": "Content shown when no options match the query or the list is empty."
				},
				{
					"name": "option",
					"type": "BbSelectOptionSlotProps<T>",
					"description": "Replaces the default rendering of each option row in the dropdown."
				},
				{
					"name": "prefix",
					"type": "object",
					"description": "Content rendered as an inline prefix inside the input field."
				},
				{
					"name": "prepend",
					"type": "{ query: string; focus: () => void; close: () => Promise<void>; }",
					"description": "Content prepended inside the input field, before the value area."
				},
				{
					"name": "prepend-outer",
					"type": "{ query: string; close: () => Promise<void>; }",
					"description": "Content prepended outside the input field wrapper."
				},
				{
					"name": "suffix",
					"type": "object",
					"description": "Content rendered as an inline suffix inside the input field."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<any>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "allowWriting",
					"new": "disableWriting",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select.md",
					"silent": true,
					"fix": {
						"kind": "invert",
						"valueMap": {
							"not-mobile": "mobile"
						}
					}
				},
				{
					"name": "offcanvasProps",
					"new": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "allowWriting",
					"to": "disableWriting",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select.md",
					"fix": {
						"kind": "invert",
						"valueMap": {
							"not-mobile": "mobile"
						}
					}
				},
				{
					"from": "offcanvasProps",
					"to": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbSelectPopover",
			"group": "Selection",
			"description": "Provides popover-driven option selection and search.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbSelectPopover.md",
			"source": "ai/source/BbSelectPopover.md",
			"props": [
				{
					"name": "activator",
					"type": "Record<string, any> | HTMLElement | null | undefined",
					"required": false,
					"description": "External activator element or component ref.\nWhen provided, the activator slot is not rendered and event listeners\nare attached programmatically to the referenced element."
				},
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "When `true`, the panel opens as a bottom off-canvas sheet on mobile viewports\ninstead of a floating popover; on desktop it stays a popover. The sheet reuses\nthe same search field and options list, adding a representation of the current\nselection between them. Mirrors the adaptive behaviour of `BbPopover`/`BbDropdown`.\n\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "anchor",
					"type": "Record<string, any> | HTMLElement | null | undefined",
					"required": false,
					"default": "null",
					"description": "Override the element used for popover positioning and width measurement.\nUseful when the focusable activator is narrower than its visual container\n(e.g. a button inside a wrapper). Falls back to `activatorEl` when omitted."
				},
				{
					"name": "ariaDescribedby",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Space-separated IDREF(s) that describe this field for assistive technologies.\nAccepts either a string or array of ids."
				},
				{
					"name": "ariaInvalid",
					"type": "boolean | undefined",
					"required": false,
					"default": "undefined",
					"description": "Explicit invalid state for accessibility semantics.\nFalls back to `hasErrors` when not provided."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"default": "\"off\"",
					"description": "Browser autocomplete hint for the popover search input."
				},
				{
					"name": "boundary",
					"type": "string | Record<string, any> | HTMLElement | null | undefined",
					"required": false,
					"description": "Constrains the popover to a specific boundary element."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Shows a clear button inside the search field's icon stack: it takes the\nlens' place on hover/focus while there is a query or selection to clear,\nand resets both. Off by default. Leave it off when the component is\nwrapped by a control that already exposes its own clear affordance (e.g.\nBbSelect clears from the activator) to avoid a duplicate clear button."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Apply the compact density variant."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Additional dependencies that trigger item reloading when changed."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) for dependency-triggered reloads."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "disableFlip",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the automatic flip to the opposite side when the popover\nwould overflow (flipping is on by default)."
				},
				{
					"name": "disableWriting",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"default": "false",
					"description": "Controls whether the search input is shown inside the popover panel.\nUse `'mobile'` to hide the search input on mobile, `'desktop'` to hide it on desktop."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reset modelValue to `null` or empty array if it no longer matches available items."
				},
				{
					"name": "filterBy",
					"type": "string[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Property paths used to filter options when the user types in the search input.\nWhen empty (default) options are matched against their display text.\nWhen non-empty the provided paths are searched instead of the display text.\nTo disable filtering entirely set `disableWriting` so the user cannot type a query."
				},
				{
					"name": "groupBy",
					"type": "string | ((item: Item) => string | number | symbol) | undefined",
					"required": false,
					"description": "Path to item property for grouping options."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the component as being in error state."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Marks the component as being in a warning state. Visually mirrors\n`hasErrors` but uses `--bb-warn` chrome; errors take priority when both\nare set."
				},
				{
					"name": "headerHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Height of group headers in the listbox (px). Defaults to 32px (24px\ncompact; 36px / 32px on mobile viewports). Only applies when `groupBy`\nis set. An explicit value wins on every viewport."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Explicit id for the component. Used to generate ids for listbox and options."
				},
				{
					"name": "itemHeight",
					"type": "number | undefined",
					"required": false,
					"default": "28",
					"description": "Height of the options in the listbox (px). Defaults to 28px (24px\ncompact; 44px / 36px on mobile viewports). An explicit value wins on\nevery viewport."
				},
				{
					"name": "items",
					"type": "Item[] | ((query: string, prefill: boolean, modelValue: any) => Promise<Item[]>) | ((query: string, prefill: boolean, modelValue: any) => Item[])",
					"required": true,
					"default": "[]",
					"description": "Array of items or function to load them asynchronously.\nFunctions receive `(query, prefill, modelValue)` and can return a promise.\n`modelValue` is the raw v-model: an array in `multiple` mode, the raw\nmodel value (possibly `null`) in single mode."
				},
				{
					"name": "itemText",
					"type": "ItemAccessor<Item, string> | undefined",
					"required": false,
					"description": "Path to item property for display text or function to extract it."
				},
				{
					"name": "itemValue",
					"type": "ItemAccessor<Item> | undefined",
					"required": false,
					"description": "Path to item property for value or function to extract it."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Display the loading state styles."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "Message shown while items are being loaded."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"default": "Infinity",
					"description": "Maximum number of selectable items (limits selection when `multiple` is true)."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "v-model value. Single value for single select, array for multiple select."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Debounce delay (ms) for modelValue change handling."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Enable multiple item selection. When true, modelValue must be an array."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "Message displayed when no items are available."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on\nmobile (e.g. `size`, `draggable`, `fullscreen`, `stack`)."
				},
				{
					"name": "offset",
					"type": "number | undefined",
					"required": false,
					"default": "4",
					"description": "Distance (px) between the activator and the popover."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"default": "10",
					"description": "Minimum page padding used by floating shift middleware."
				},
				{
					"name": "placement",
					"type": "Placement | undefined",
					"required": false,
					"default": "\"bottom\"",
					"description": "Floating placement of the popover."
				},
				{
					"name": "prefill",
					"type": "boolean | \"interaction\" | undefined",
					"required": false,
					"default": "\"interaction\"",
					"description": "Controls when items are pre-loaded.\n`'interaction'` loads on the first user interaction (opening the\npopover), `true` loads immediately on mount (and during SSR via\n`onServerPrefetch`), `false` is *search-first*: nothing is fetched until\nthe user types a query — opening the panel alone does not load, and the\npanel shows a \"search to begin\" hint until it does.\nWith the default, a seeded model resolves its option text on the first\ninteraction, not on mount — set `prefill: true` when the trigger must\nshow the selection's text without user interaction.\n\nSearch-first needs a way to search and something to defer, so `false`\nfalls back to loading on open when any of these is true: `items` is an\narray (nothing to defer — arrays resolve on mount), writing is disabled\n(no search field, so the user could never trigger a load), or the model\nis non-empty (its text must resolve to render the selection)."
				},
				{
					"name": "queryDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "500",
					"description": "Debounce delay (ms) before triggering search queries after user input stops."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents opening the popover while keeping the activator accessible."
				},
				{
					"name": "searchInputAriaLabel",
					"type": "string | undefined",
					"required": false,
					"default": "`t('select.searchLabel')` (`'Search options'`)",
					"description": "Accessible label used by the search input rendered inside the popover.\nFalls back to the localized `select.searchLabel` key when omitted."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: Item) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				},
				{
					"name": "stash",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Accumulate selected items across searches instead of replacing them."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Transition duration (ms) for popover show/hide animations."
				},
				{
					"name": "width",
					"type": "string | number | undefined",
					"required": false,
					"default": "\"200\"",
					"description": "Width of the popover in pixels, percentage, or `'auto'`. A bare number is\nread as pixels — the default is the string `'200'`, not the number `200`."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void",
					"description": "Emitted when the component becomes active (focus enters it)."
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void",
					"description": "Emitted when the activator loses focus."
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void",
					"description": "Emitted when the value changes via native change event."
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void",
					"description": "Emitted when the activator is clicked."
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void",
					"description": "Emitted when the activator receives focus."
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void",
					"description": "Emitted when focus moves outside the entire component after it was active."
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void",
					"description": "Emitted on native input events from the search input."
				},
				{
					"name": "option:add",
					"signature": "(e: \"option:add\", text: string): void",
					"description": "Emitted when the user types a new value and confirms it (Enter key) while\nwriting is enabled (i.e. `disableWriting` does not suppress the search\ninput for the current surface)."
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void",
					"description": "Emitted with the next selection value whenever selection changes."
				}
			],
			"slots": [
				{
					"name": "activator",
					"type": "BbSelectPopoverActivatorSlotProps",
					"description": "Replaces the default trigger element that opens the select popover."
				},
				{
					"name": "footer",
					"type": "BbSelectPopoverPanelSlotProps",
					"description": "Content pinned to the bottom of the panel, below the options list. Rendered in\nboth the desktop popover and the adaptive sheet."
				},
				{
					"name": "group",
					"type": "BbSelectPopoverGroupSlotProps<Item>",
					"description": "Replaces the default group header rendered above grouped options."
				},
				{
					"name": "header",
					"type": "BbSelectPopoverPanelSlotProps",
					"description": "Content pinned to the top of the panel, above the search field. Rendered in\nboth the desktop popover and the adaptive sheet."
				},
				{
					"name": "loading",
					"type": "{ query: string; }",
					"description": "Content shown inside the options dropdown while items are loading."
				},
				{
					"name": "no-data",
					"type": "{ query: string; focus: () => void; }",
					"description": "Content shown when no options match the query or the list is empty."
				},
				{
					"name": "option",
					"type": "BbSelectPopoverOptionSlotProps<Item>",
					"description": "Replaces the default rendering of each option row in the dropdown."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"removed": [
				{
					"name": "allowWriting",
					"new": "disableWriting",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"silent": true,
					"fix": {
						"kind": "invert",
						"valueMap": {
							"not-mobile": "mobile"
						}
					}
				},
				{
					"name": "arrowPadding",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "flip",
					"new": "disableFlip",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "hideArrow",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "offcanvasProps",
					"new": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				},
				{
					"name": "showArrow",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				}
			],
			"renamed": [
				{
					"from": "allowWriting",
					"to": "disableWriting",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"fix": {
						"kind": "invert",
						"valueMap": {
							"not-mobile": "mobile"
						}
					}
				},
				{
					"from": "flip",
					"to": "disableFlip",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "offcanvasProps",
					"to": "offCanvasProps",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-select-popover.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbSlider",
			"group": "Selection",
			"description": "Selects numeric values across a bounded range.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbSlider.md",
			"source": "ai/source/BbSlider.md",
			"props": [
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Set the component in compact mode."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a\npattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "disableThumbTranslate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the proportional thumb translation that keeps the thumb on\ntrack (enabled by default). Set it when displaying ticks so they align\nwith less effort."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode.\nSliders do not support `floating` labels."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum value cap."
				},
				{
					"name": "maxPrecision",
					"type": "number | undefined",
					"required": false,
					"default": "2",
					"description": "Maximum decimal places to retain in emitted values."
				},
				{
					"name": "min",
					"type": "number | undefined",
					"required": false,
					"description": "Minimum value cap."
				},
				{
					"name": "modelValue",
					"type": "number | number[] | null",
					"required": true,
					"description": "Used by v-model."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Set the input as range. modelValue must be an array."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and\nthe input is swapped."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"description": "The step attribute specifies the granularity that the value must adhere to."
				},
				{
					"name": "ticks",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays ticks on step."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "pointerdown",
					"signature": "(event: \"pointerdown\", event: PointerEvent): void"
				},
				{
					"name": "pointermove",
					"signature": "(event: \"pointermove\", event: PointerEvent): void"
				},
				{
					"name": "pointerup",
					"signature": "(event: \"pointerup\", event: PointerEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: number | number[]): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "BaseSliderStepSlotProps",
					"description": "Content rendered after the slider track, typically used to add a max-value label or button."
				},
				{
					"name": "label",
					"type": "BbSliderLabelSlotProps",
					"description": "Replaces the default label text rendered above the slider."
				},
				{
					"name": "prepend",
					"type": "BaseSliderStepSlotProps",
					"description": "Content rendered before the slider track, typically used to add a min-value label or button."
				},
				{
					"name": "thumb",
					"type": "BaseSliderThumbSlotProps",
					"description": "Fallback thumb used for non-range sliders (or inside `thumb:higher`/`thumb:lower` when not overridden separately)."
				},
				{
					"name": "thumb:higher",
					"type": "BaseSliderThumbSlotProps",
					"description": "Replaces the default higher-value thumb in range mode (`range: true`)."
				},
				{
					"name": "thumb:lower",
					"type": "BaseSliderThumbSlotProps",
					"description": "Replaces the default lower-value thumb in range mode (`range: true`)."
				},
				{
					"name": "tick",
					"type": "BaseSliderTickSlotProps",
					"description": "Replaces the default tick mark rendered at each step when ticks are enabled."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "number | number[] | null"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<number | number[] | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-slider.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "thumbTranslate",
					"new": "disableThumbTranslate",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-slider.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				}
			],
			"renamed": [
				{
					"from": "thumbTranslate",
					"to": "disableThumbTranslate",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-slider.md",
					"fix": {
						"kind": "invert"
					}
				}
			]
		},
		{
			"name": "BbSmoothHeight",
			"group": "Layout & Utility",
			"description": "Animates height transitions for dynamic content.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbSmoothHeight.md",
			"source": "ai/source/BbSmoothHeight.md",
			"props": [
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable smooth-height behavior and allow natural content height."
				},
				{
					"name": "mutationOptions",
					"type": "MutationObserverInit | undefined",
					"required": false,
					"default": "{ childList: true }",
					"description": "Options to pass to the MutationObserver."
				},
				{
					"name": "resizeOptions",
					"type": "ResizeObserverOptions | undefined",
					"required": false,
					"description": "Options to pass to the ResizeObserver."
				},
				{
					"name": "strategy",
					"type": "\"resize\" | \"mutation\" | undefined",
					"required": false,
					"default": "\"resize\"",
					"description": "Define which strategy to use. By default `'resize'` is used, which means the\ncomponent will update on resizing. You can also define `'mutation'` to use a MutationObserver."
				},
				{
					"name": "tag",
					"type": "LayoutTag | undefined",
					"required": false,
					"default": "\"div\"",
					"description": "Element rendered as the component's wrapper."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "How long the transition has to last in milliseconds"
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "object",
					"description": "Content whose height changes are animated with a smooth transition."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbSpinner",
			"group": "Feedback",
			"description": "Indicates ongoing loading or pending operations.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbSpinner.md",
			"source": "ai/source/BbSpinner.md",
			"props": [
				{
					"name": "label",
					"type": "string | undefined",
					"required": false,
					"description": "Accessible loading announcement. When set, the spinner is wrapped in a\n`role=\"status\"` element containing this text rendered `sr-only`, so\nscreen readers announce the loading state. When omitted the markup is\nunchanged and the spinner is purely decorative."
				},
				{
					"name": "size",
					"type": "number | ({ size?: any; } & string) | keyof Sizes | undefined",
					"required": false,
					"default": "\"md\"",
					"description": "Defines the component size.\n\nAccepted values:\n- A key from the provided size map (`keyof T`), e.g. `'sm' | 'md' | 'lg'`\n- A custom CSS size string (e.g. `'20px'`, `'1.5rem'`, `'2em'`)\n- A number, typically interpreted as pixels by size parsers"
				}
			],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": [],
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-spinner.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			]
		},
		{
			"name": "BbSwitch",
			"group": "Selection",
			"description": "Toggles two-state values with switch semantics.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbSwitch.md",
			"source": "ai/source/BbSwitch.md",
			"props": [
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "checked",
					"type": "boolean | undefined",
					"required": false,
					"default": "undefined",
					"description": "Defines the input as checked."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"default": "\"auto\"",
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "falseValue",
					"type": "any",
					"required": false,
					"description": "Value of the input when unchecked. It handles any kind of serializable object."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "indeterminate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in an indeterminate state."
				},
				{
					"name": "inputPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false,
					"description": "Used by v-model. Can be any serializable type."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout: in every direction the order of the label and the\ninput is swapped from the standard arrangement."
				},
				{
					"name": "submitWhenFalse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Will submit \"falseValue\" if the input is not checked. Otherwise \"trueValue\" will be submitted."
				},
				{
					"name": "trueValue",
					"type": "any",
					"required": false,
					"description": "Value of the input when checked. It handles any kind of serializable object."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: any): void"
				}
			],
			"slots": [
				{
					"name": "icon",
					"type": "BbSwitchIconSlotProps",
					"description": "Replaces the default toggle track visual inside the switch. Receives `BaseSwitch` slot\nattributes plus the label text."
				},
				{
					"name": "label",
					"type": "BbSwitchLabelSlotProps",
					"description": "Replaces the default label text rendered next to the switch."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<any>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"update:modelValue\", \"change\", \"blur\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				}
			]
		},
		{
			"name": "BbSwitchGroup",
			"group": "Selection",
			"description": "Manages grouped switch options with shared behavior.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbSwitchGroup.md",
			"source": "ai/source/BbSwitchGroup.md",
			"props": [
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the component in a compact version."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"description": "Defines an array of dependencies that will trigger actions in the component upon change."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"description": "Timeout used to debounce response to changes to dependencies."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "If coherence is enforced the input cannot have a modelValue that is incoherent with its current items.\n\ne.g. You cannot set v-model to a user that is not present in the items passed.\n\nmodelValue will be reset upon incoherence."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides each option's label text (the text rendered next to every\ninput) while keeping it accessible to screen readers.\nDoes not affect the fieldset legend — use `hideLegend` for that."
				},
				{
					"name": "hideLegend",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the legend of the fieldset while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "inputDirection",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"description": "Defines the direction of the inputs in the fieldset."
				},
				{
					"name": "inputPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can."
				},
				{
					"name": "items",
					"type": "T[] | ((prefill: boolean, modelValue?: any) => T[] | Promise<T[]>)",
					"required": true,
					"description": "Used to retrieve items; can be an array or a function."
				},
				{
					"name": "itemText",
					"type": "ItemAccessor<T, string> | undefined",
					"required": false,
					"description": "Defines a path that returns a property of the object to use as text or a function that returns a string."
				},
				{
					"name": "itemValue",
					"type": "ItemAccessor<T> | undefined",
					"required": false,
					"description": "Defines a path that returns a property of the object to use as value or a function that returns any value."
				},
				{
					"name": "legend",
					"type": "string",
					"required": true,
					"description": "Text content of the legend."
				},
				{
					"name": "legendMode",
					"type": "\"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow;\n`'inside'` overlays the legend inside the fieldset border.\nFloating mode is not supported for option groups (checkbox, radio or\nswitch) — there is no single field for the legend to float against."
				},
				{
					"name": "legendPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed while items are being loaded."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of selected items."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": true,
					"description": "Used by v-model. Can be an array of any serializable type."
				},
				{
					"name": "modelValueDebounceTime",
					"type": "number | undefined",
					"required": false,
					"description": "Timeout used to debounce response to changes to modelValue."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "true",
					"description": "Enables multi-selection behavior.\nWhen true, `modelValue` must be an array.\nWhen false, `modelValue` should be a single value."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there are no items to display."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and the input is swapped."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: T) => boolean) | undefined",
					"required": false,
					"default": "true",
					"description": "Defines whether options are selectable.\nCan be a global boolean that affects all options or a function\nthat accepts an item and returns a boolean that only affects that item.\nNon-selectable options are rendered disabled."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(e: \"active\"): void",
					"description": "Emitted when the group becomes active (focus/click enters it)."
				},
				{
					"name": "blur",
					"signature": "(e: \"blur\", event: FocusEvent): void",
					"description": "Emitted when one of the generated checkbox inputs loses focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "change",
					"signature": "(e: \"change\", event: Event): void",
					"description": "Emitted when an option is toggled.\nForwards the original DOM `Event` from the checkbox input."
				},
				{
					"name": "click",
					"signature": "(e: \"click\", event: MouseEvent): void",
					"description": "Emitted when one of the generated checkbox inputs is clicked.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "focus",
					"signature": "(e: \"focus\", event: FocusEvent): void",
					"description": "Emitted when one of the generated checkbox inputs receives focus.\nForwards the original DOM `FocusEvent`."
				},
				{
					"name": "inactive",
					"signature": "(e: \"inactive\"): void",
					"description": "Emitted when focus/click moves outside the group after it was active.\nUseful for validation-on-blur flows at group level."
				},
				{
					"name": "input",
					"signature": "(e: \"input\", event: Event): void",
					"description": "Emitted on native input events from generated checkbox inputs.\nForwards the original DOM `Event`."
				},
				{
					"name": "keydown",
					"signature": "(e: \"keydown\", event: KeyboardEvent): void",
					"description": "Emitted for keyboard interaction on generated checkbox inputs.\nForwards the original DOM `KeyboardEvent`."
				},
				{
					"name": "mousedown",
					"signature": "(e: \"mousedown\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is pressed over a checkbox input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "mouseup",
					"signature": "(e: \"mouseup\", event: MouseEvent): void",
					"description": "Emitted when a pointing device button is released over a checkbox input.\nForwards the original DOM `MouseEvent`."
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void",
					"description": "Emitted with the coherent next selection array whenever selection changes."
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the last option, inside the options container."
				},
				{
					"name": "icon",
					"type": "BbSwitchGroupIconSlotProps<T>",
					"description": "Replaces the default switch track visual for each option. Receives all `BaseSwitch` slot\nattributes plus the source item and its display text."
				},
				{
					"name": "label",
					"type": "BbSwitchGroupLabelSlotProps<T>",
					"description": "Replaces the default label text for each option."
				},
				{
					"name": "legend",
					"type": "BbSwitchGroupLegendSlotProps",
					"description": "Replaces the default fieldset legend text for the group."
				},
				{
					"name": "loading",
					"type": "object",
					"description": "Content shown while options are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the first option, inside the options container."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "any"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<any>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "color",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"silent": true,
					"fix": {
						"kind": "manual"
					}
				},
				{
					"name": "labelPosition",
					"new": "legendPosition",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "labelPosition",
					"to": "legendPosition",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-checkbox-group.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbTable",
			"group": "Data Display",
			"description": "Displays tabular data, configurable columns and data mapper.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTable.md",
			"source": "ai/source/BbTable.md",
			"props": [
				{
					"name": "accessibleLabel",
					"type": "((columns: MappedCell[], item: any) => string) | undefined",
					"required": false,
					"description": "Function that accepts the columns and the current item as\narguments and returns a label to be used for accessibility purposes.\nThe cells arrive in RENDER order (they follow `order`, so the\nlabel reads like the row) — look a cell up by `key`, never by position."
				},
				{
					"name": "actions",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the actions column."
				},
				{
					"name": "actionsText",
					"type": "string | undefined",
					"required": false,
					"description": "Label used in the header of the actions column."
				},
				{
					"name": "align",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"default": "\"left\"",
					"description": "Text alignment of the columns."
				},
				{
					"name": "caption",
					"type": "string | undefined",
					"required": false,
					"description": "Caption that describes the content of the table. Used for accessibility purposes."
				},
				{
					"name": "columns",
					"type": "InternalColumn<T>[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Array of definitions of how the columns should be rendered."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds a CSS class that applies a compact style to the component."
				},
				{
					"name": "dependencies",
					"type": "unknown[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Defines an array of dependencies that will trigger actions in the component upon change."
				},
				{
					"name": "depsDebounceTime",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Timeout used to debounce response to changes to dependencies."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "disableSelectAll",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Hides the \"Select all\" checkbox that selectable multi-row tables\ndisplay by default."
				},
				{
					"name": "displayCaption",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Boolean that defines whether to display or hide the caption.\nBy default is true and the caption is hidden."
				},
				{
					"name": "enforceCoherence",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "After every load (initial, `dependencies` refetch or a change of the\n`items` array) prunes the row-keyed models of values whose row is no\nlonger in the result set: `modelValue`, `unselected-items`,\n`highlighted` and `expanded-items`. Values whose rows are still present\nsurvive. Single-value models (`modelValue` without `multiple`, and\n`highlighted`, which is always single) reset to `null`.\n\nDo **not** enable it on paginated tables where the page feeds\n`dependencies`: every page turn is a refetch, so state held on rows of\nother pages (the `select-all` + `unselected-items` pattern, cross-page\nselections) would be pruned. Reconcile in the items provider instead."
				},
				{
					"name": "expandedItems",
					"type": "any[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Used by `v-model:expandedItems`. Array of the currently expanded items —\ntoggled by the row expand control and by external writes (mirrors the\n`highlighted`/`sort` v-model surfaces). Drives the `#expand` slot rows and\ntheir `aria-expanded`/`aria-controls` wiring."
				},
				{
					"name": "fixed",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Splits the width equally among the columns that declare no `width`\n(each undeclared column becomes a `minmax(0, 1fr)` track)\nmaking each column take up the same amount of space."
				},
				{
					"name": "fixedColumns",
					"type": "(number | { index: number; position: \"left\" | \"right\"; })[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Definition for which column should be fixed.\nIt can be an array of index of the column to fix on the left side of the table or\nan array of objects indicating the index and the position `left` or `right` where to affix the columns.\n\nIndices are POSITIONS in the rendered column list (a selection column is\nindex 0), like a spreadsheet's freeze panes — not per-column pins. With\n`order` the pinned slot holds and whichever column lands in it is\npinned; dragging a column out of a pinned slot unpins it."
				},
				{
					"name": "fixedHeaders",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Boolean that sets the headers as sticky to the top of the table."
				},
				{
					"name": "headerRowClass",
					"type": "Classes | undefined",
					"required": false,
					"description": "Defines the classes to be passed to the header row."
				},
				{
					"name": "highlighted",
					"type": "any",
					"required": false,
					"default": "undefined",
					"description": "Used by `v-model:highlighted`. A parallel, UI-intent state to selection —\ntypically \"the row whose details are open\". A single item value (or\n`null`) — highlight is single by design.\n\n**Opt-in, and `undefined` is the opt-out.** Leave it unbound and the whole\nmechanic is off: clicking a row emits `click:row` and nothing else — no\nclass, no `aria-current`, no internal state. Bind it and clicking a row\ntoggles it. The value itself is the switch: `undefined` means \"never\ninitialised\", `null` means \"initialised and currently empty\", so bind\n`ref(null)` rather than `ref()` — a bound-but-`undefined` model warns in\ndev and stays off. A value seeded through\n`useBbTableContext(id, { highlighted })` counts as bound the same way.\n\nA highlighted row gets `aria-current=\"true\"` and the\n`bb-table-data__row--highlighted` class, which the shipped stylesheet\npaints with a neutral fill plus a brand accent bar; override the whole\nlook with `rowClass`.\nHighlight: a parallel, UI-intent state to selection (\"the row whose details\nare open\"). Always a single value or `null`. Purely\nmechanical — highlighted rows only get a class and `aria-current`, no\nshipped styling."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Stable id for this table's width context. When omitted a unique id is\ngenerated. Nested tables use the nearest ancestor id to inherit widths."
				},
				{
					"name": "inheritColumnWidths",
					"type": "string | boolean | undefined",
					"required": false,
					"description": "Opt a nested table into inheriting its column widths from an ancestor\ntable's matching tracks (accounting for `select`/`actions` columns). This\nalso makes the parent's tracks authoritative, so it is **off by default** — a nested\ntable renders independently unless you ask for alignment.\n- `false` (the default): do not inherit; size independently.\n- `true`: inherit from the nearest ancestor table.\n- a table id (string): inherit from the specific ancestor in the chain with\n  that id rather than the immediate parent. Use this when an intermediate\n  table has a different column count, so the extra columns would otherwise\n  misalign against it."
				},
				{
					"name": "interactiveWhileLoading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the table interactive while it is loading. The header and the rows are\n`inert` while loading by default — a refetch is about to replace the rows,\nso editing, selecting or sorting them races the incoming data. This escape\nhatch exists for tables that must stay usable during background refreshes\n(e.g. a poll that must not interrupt an open editor).\n\nThe loading announcement is never inert, so the busy state is always\nconveyed."
				},
				{
					"name": "items",
					"type": "Item[] | ((prefill: boolean, modelValue?: any) => Item[] | Promise<Item[]>)",
					"required": true,
					"default": "[]",
					"description": "Rows to render, or a fetcher that returns them."
				},
				{
					"name": "itemValue",
					"type": "ItemAccessor<Item> | undefined",
					"required": false
				},
				{
					"name": "keyboardNavigation",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Opt-in keyboard navigation with a roving tabindex: the body is one tab\nstop, ArrowUp/ArrowDown move the focused row (Home/End jump), and\nEnter/Space activate it through the same path as a mouse click (highlight\ntoggle + `click:row`). Focus and highlight stay independent — moving does\nnot highlight until committed. Focused rows show the standard focus ring."
				},
				{
					"name": "legend",
					"type": "string | undefined",
					"required": false,
					"description": "Text content of the `<legend>` a `selectable` table renders (it becomes\na `<fieldset>`, and the legend is that fieldset's accessible name).\nOmit it and the table falls back to `caption`, then to a localized\ndefault — the fieldset always ends up with SOME accessible name — but\na specific `legend` describes the selection better than either fallback."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles.\n\nWith no rows yet this renders skeletons; over existing rows the rows stay\non screen (dimmed, with an indeterminate bar) rather than being replaced —\na refetch should not blank a table the user is reading."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"default": "the localized `common.loadingText` (\"Loading...\")",
					"description": "Screen-reader announcement for the loading row's `aria-live` status.\nVisually hidden — the skeleton (or the `#loading` slot) is the visible\nsignal."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"default": "Infinity",
					"description": "Maximum number of items that can be selected."
				},
				{
					"name": "modelValue",
					"type": "any",
					"required": false,
					"default": "[]",
					"description": "Used by v-model. Can be any serializable type."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "true",
					"description": "Allows the selection of multiple items."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"default": "the localized `common.noDataText` (\"No data to display\")",
					"description": "String displayed when there are no items to display."
				},
				{
					"name": "order",
					"type": "string[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Used by `v-model:order`. Ordered array of column keys — the render\norder of the data columns. Keys listed here render first, in this order;\ndeclared columns it omits follow, in declaration order (so a column added\nto `columns` later renders last); keys that match no declared column render\nnothing but are PRESERVED in place on every write — a column you hide by\nremoving it from `columns` (a column panel) keeps its slot and comes back\nwhere it was. The header drag / keyboard reorder of `reorderable`\nwrites it back complete (every declared key present, duplicates dropped —\nfirst occurrence wins) with exactly the moved column relocated: every other\nkey, hidden ones included, keeps its relative order, and a drop that\nchanges nothing emits nothing. Works uncontrolled when unbound, exactly\nlike `sort`. The `select` and `actions` columns are structural and never\npart of it."
				},
				{
					"name": "page",
					"type": "string | number | undefined",
					"required": false,
					"description": "Current page number starting from 1, used for accessibility purposes.\nAlso flows into the shared table context, so a `BbPagination` paired\nthrough `id` reads it as the current page. Numeric strings are coerced\n(server pagination fields often arrive as strings), exactly like\n`BbPagination`'s equivalent props."
				},
				{
					"name": "perPage",
					"type": "string | number | undefined",
					"required": false,
					"description": "Number of items per page, used for accessibility purposes. Also flows\ninto the shared table context read by a `BbPagination` paired through\n`id`. When omitted, an array `items` table infers it from\n`items.length`; an explicit value (or a context write) always wins over\nthat inference. Numeric strings are coerced, exactly like\n`BbPagination`'s `per-page`."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "reorderable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Lets the user reorder the data columns: drag a header cell (AG Grid style —\nthe column moves live under the pointer and a chip with its label follows)\nor, from the keyboard, use each header's reorder handle (ArrowLeft /\nArrowRight move the column one slot, Home / End to the ends). Every move\nwrites `v-model:order`. Not needed by an external control (a column\npanel) that only writes `order`. The `select` / `actions` columns and\na custom `#thead` are never draggable."
				},
				{
					"name": "resizable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Lets the user resize the data columns of a root table: drag the handle on\na header's trailing edge (the column follows live, the width commits on\nrelease), or press Alt + ArrowLeft / ArrowRight on the focused header;\ndouble-click the handle to go back to the declared width. Each commit\nfires `resize:column(key, width)` once. `column.width` stays the single declared\ntruth: a resized width is an override the table keeps until that\ncolumn's `width` changes — write the reported width back into your\ncolumn definition to persist it. Ignored on a table that inherits its\nwidths from a parent."
				},
				{
					"name": "rowClass",
					"type": "RowClasses<Item> | undefined",
					"required": false,
					"description": "Defines the classes to be passed to each data row. Can also be a\nfunction of the row's item for dynamic values."
				},
				{
					"name": "selectable",
					"type": "boolean | ((item: Item) => boolean) | undefined",
					"required": false,
					"description": "Defines whether the table is selectable.\nCan be a global boolean that affects all rows or a function\nthat accepts an item and returns a boolean that only affects that item."
				},
				{
					"name": "selectAll",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Defines whether the \"Select all\" checkbox is checked."
				},
				{
					"name": "selectAllLabel",
					"type": "string | undefined",
					"required": false,
					"description": "Text of the label used by the \"Select all\" boolean."
				},
				{
					"name": "selectText",
					"type": "string | undefined",
					"required": false,
					"description": "Text of the header used for the radio inputs when the table is not `multiple`."
				},
				{
					"name": "sort",
					"type": "BbTableSortEntry[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Used by `v-model:sort`. Ordered array of `[columnKey, direction]`\nentries, one per actively sorted column. Bidirectional: the header\nbuttons of `sortable` columns update it, and external writes update the\nheader indicators. The table does not sort its items — apply the model\nto your own data source."
				},
				{
					"name": "tdClass",
					"type": "ColumnClasses<Item> | undefined",
					"required": false,
					"description": "Defines the classes to be passed to every data cell. Can also be a function for dynamic values."
				},
				{
					"name": "thClass",
					"type": "Classes | undefined",
					"required": false,
					"description": "Defines the classes to be passed to every header cell."
				},
				{
					"name": "totalItems",
					"type": "string | number | undefined",
					"required": false,
					"description": "Total number of items there is. Also flows into the shared table\ncontext, where a `BbPagination` paired through `id` derives its page\ncount from it. When omitted, an array `items` table infers it from\n`items.length`; an explicit value (or a context write) always wins over\nthat inference. Numeric strings are coerced, exactly like\n`BbPagination`'s `total-items`."
				},
				{
					"name": "totalPages",
					"type": "string | number | undefined",
					"required": false,
					"description": "Seeds the page count shown by a `BbPagination` paired through `id`. A\nshortcut for when the server reports a page count rather than a row\ncount: the table renders nothing from it, it only flows into the shared\ntable context. A known total always wins — when `totalItems` (or a\ncontext write) provides one, the page count is derived from it and this\nseed is ignored. Numeric strings are coerced, exactly like\n`BbPagination`'s `total-pages`."
				},
				{
					"name": "unselectedItems",
					"type": "any[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Items that are not selected."
				},
				{
					"name": "virtual",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Windows the body: only the rows in (and just around) the vertical\nscrollport are mounted, so a client-side dataset of any size scrolls at\na constant cost. The table itself is the scroller as soon as you bound\nits height (`max-height` / `height`, or a flex item with\n`min-height: 0`); left unbounded, the nearest scrolling ancestor or the\npage scrolls it. The header sticks to that scroller. Column widths are\nmeasured once from the first rendered batch and then hold — later rows\nnever widen them. Expand rows and nested tables stay fully rendered\ninside their row (a nested table is never windowed); the row that owns\nfocus stays mounted even when scrolled out of view. Ignored by a table\nthat inherits its widths from a parent, and under a `#tbody` slot."
				}
			],
			"events": [
				{
					"name": "click:row",
					"signature": "(e: \"click:row\", event: MouseEvent, item: any): void"
				},
				{
					"name": "contextmenu:row",
					"signature": "(e: \"contextmenu:row\", event: MouseEvent, item: any): void"
				},
				{
					"name": "dblclick:row",
					"signature": "(e: \"dblclick:row\", event: MouseEvent, item: any): void"
				},
				{
					"name": "item:selected",
					"signature": "(e: \"item:selected\", value: any): void"
				},
				{
					"name": "item:unselected",
					"signature": "(e: \"item:unselected\", value: any): void"
				},
				{
					"name": "resize:column",
					"signature": "(e: \"resize:column\", key: string, width: number | null): void",
					"description": "A column was resized by the user (`resizable`): the new width in\npx, or `null` when the handle was double-clicked to reset the column to\nits declared width."
				},
				{
					"name": "update:expandedItems",
					"signature": "(e: \"update:expandedItems\", value: any[]): void"
				},
				{
					"name": "update:highlighted",
					"signature": "(e: \"update:highlighted\", value: any): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: any): void"
				},
				{
					"name": "update:order",
					"signature": "(e: \"update:order\", value: string[]): void"
				},
				{
					"name": "update:selectAll",
					"signature": "(e: \"update:selectAll\", value: boolean): void"
				},
				{
					"name": "update:sort",
					"signature": "(e: \"update:sort\", value: BbTableSortEntry[]): void"
				},
				{
					"name": "update:unselectedItems",
					"signature": "(e: \"update:unselectedItems\", value: any[]): void"
				}
			],
			"slots": [
				{
					"name": "actions",
					"type": "{ expanded?: boolean | undefined; expandProps?: ExpandControllerProps | undefined; toggleExpanded?: (() => void) | undefined; highlighted?: boolean | undefined; toggleHighlighted?: (() => void) | undefined; selected?: boolean | undefined; toggleSelected?: (() => void) | undefined; item: Item; value: any; }",
					"description": "Content rendered in the actions cell for each row."
				},
				{
					"name": "expand",
					"type": "{ expanded: boolean; expandProps?: ExpandControllerProps | undefined; toggleExpanded: () => void; highlighted?: boolean | undefined; toggleHighlighted?: (() => void) | undefined; selected?: boolean | undefined; toggleSelected?: (() => void) | undefined; item: Item; value: any; }",
					"description": "Full-width expandable content row rendered below each main row when expanded."
				},
				{
					"name": "header:actions",
					"type": "{ text: string; }",
					"description": "Replaces the default actions header cell content."
				},
				{
					"name": "header:append",
					"type": "BbTableHeaderAffixSlotProps<Item>",
					"description": "Content rendered after every data column's header cell content — the\nlabel + sort control, or the column's own `header:<key>` replacement.\nA column's `header:<key>:append` slot wins over this one for that\ncolumn; they never stack. Branch on `columnKey` for per-column output."
				},
				{
					"name": "header:prepend",
					"type": "BbTableHeaderAffixSlotProps<Item>",
					"description": "Content rendered before every data column's header cell content — the\nlabel + sort control, or the column's own `header:<key>` replacement.\nA column's `header:<key>:prepend` slot wins over this one for that\ncolumn; they never stack. Branch on `columnKey` for per-column output."
				},
				{
					"name": "header:select",
					"type": "{ multiple: boolean; selectAll: boolean; text: string; }",
					"description": "Replaces the default selection header cell content (checkbox or radio label)."
				},
				{
					"name": "loading",
					"type": "{ items: Item[]; }",
					"description": "Content shown while table rows are loading (replaces the skeleton rows)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when the items list is empty and not loading. It fills the\ntable's own full-width empty-state cell (it already spans the\nselection/actions columns), so provide the *content* — a message, an\nillustration, a \"clear filters\" button — never a row/cell of your own."
				},
				{
					"name": "select",
					"type": "{ item: Item; value: any; checked: boolean; disabled: boolean; inputName: string; readonly: boolean; toggleSelected?: (() => void) | undefined; }",
					"description": "Replaces the default checkbox/radio in the selection cell for each row."
				},
				{
					"name": "tbody",
					"type": "object",
					"description": "Replaces the content of the body row group (`.bb-table__body`). Use when\nyou need full control over the body markup. Provide role-complete rows —\n`<div role=\"row\">` holding one `<div role=\"cell\">` per column — never a\n`<tr>`/`<td>`. A full-width cell spans with `grid-column: 1 / -1`."
				},
				{
					"name": "tfoot",
					"type": "{ columnCount: number; }",
					"description": "Fills the footer row group (`.bb-table__foot`). Use when you need a\nfooter. Provide role-complete rows — `<div role=\"row\">` holding\n`<div role=\"cell\">` elements — never a `<tr>`/`<td>`."
				},
				{
					"name": "thead",
					"type": "object",
					"description": "Replaces the content of the header row group (`.bb-table__head`). Use when\nyou need full control over the header markup. The table is a CSS grid,\nnot a `<table>`: provide role-complete rows — `<div role=\"row\">` holding\none `<div role=\"columnheader\">` per column — and never a `<tr>`/`<th>`.\nRows are subgrid rows, so each cell lands on the matching column track."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "expandedItems",
					"type": "any[] | undefined"
				},
				{
					"name": "highlighted",
					"type": "any"
				},
				{
					"name": "modelValue",
					"type": "any"
				},
				{
					"name": "order",
					"type": "string[] | undefined"
				},
				{
					"name": "selectAll",
					"type": "boolean | undefined"
				},
				{
					"name": "sort",
					"type": "BbTableSortEntry[] | undefined"
				},
				{
					"name": "unselectedItems",
					"type": "any[] | undefined"
				}
			],
			"removed": [
				{
					"name": "allowSelectAll",
					"new": "disableSelectAll",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-table.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "enabledWhileLoading",
					"new": "interactiveWhileLoading",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-table.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "allowSelectAll",
					"to": "disableSelectAll",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-table.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "enabledWhileLoading",
					"to": "interactiveWhileLoading",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-table.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbTabs",
			"group": "Navigation",
			"description": "Switches between tabbed content views (shadcn-like strip; the co-located BbTabsRoot / BbTabsList / BbTabsPanes exports enable split layouts).",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTabs.md",
			"source": "ai/source/BbTabs.md",
			"props": [
				{
					"name": "block",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the component as full width."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds a CSS class that applies a compact style to the component."
				},
				{
					"name": "direction",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"default": "\"horizontal\"",
					"description": "Direction of the tabs component."
				},
				{
					"name": "disableAnimateX",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the horizontal slide transition between tab panels\n(enabled by default)."
				},
				{
					"name": "disableAnimateY",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the smooth height animation when switching between tab\npanels (enabled by default)."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "headers",
					"type": "Record<string, string> | undefined",
					"required": false,
					"description": "Additional HTTP headers forwarded to Inertia when navigation is triggered.\nOnly meaningful in an Inertia context."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "items",
					"type": "BbTabsItem<K>[]",
					"required": true,
					"description": "Array of items that define the tabs in the component."
				},
				{
					"name": "modelValue",
					"type": "K | null | undefined",
					"required": false,
					"description": "The current tab key. Used by v-model."
				},
				{
					"name": "navigation",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Synchronizes the current tab with the URL query parameter.\n\nPair it with `replace` unless a tab is genuinely a separate destination —\nsee the `replace` prop."
				},
				{
					"name": "onBefore",
					"type": "(() => boolean | void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired just before the request is sent.\nReturn `false` to cancel the visit."
				},
				{
					"name": "onCancel",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when the request is cancelled."
				},
				{
					"name": "onError",
					"type": "((errors: Record<string, string>) => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when the server returns validation errors."
				},
				{
					"name": "onFinish",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired after the visit finishes (success or error)."
				},
				{
					"name": "only",
					"type": "string[] | undefined",
					"required": false,
					"description": "Limits which server-side props are refreshed during a partial Inertia reload.\nOnly meaningful in an Inertia context."
				},
				{
					"name": "onProgress",
					"type": "((progress: { percentage: number | undefined; }) => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when upload/download progress is available."
				},
				{
					"name": "onStart",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when the request starts."
				},
				{
					"name": "onSuccess",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when the visit completes successfully."
				},
				{
					"name": "preserveScroll",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | undefined",
					"required": false,
					"description": "Controls whether Inertia preserves the scroll position after navigation.\nOnly meaningful in an Inertia context."
				},
				{
					"name": "preserveState",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | null | undefined",
					"required": false,
					"description": "Controls whether Inertia preserves the current component state after navigation.\nOnly meaningful in an Inertia context."
				},
				{
					"name": "queryKey",
					"type": "string | undefined",
					"required": false,
					"default": "\"tab\"",
					"description": "Defines the query key used for URL-based navigation."
				},
				{
					"name": "replace",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Replaces history rather than pushing it when changing tab.\n\nRecommended default whenever `navigation` is on: the query keeps the\nactive tab (deep-linkable, survives reload) while Back still returns to\nthe page the user came from, instead of undoing one tab click at a time.\nLeave it off only when a tab is a destination of its own — typically a\n`server` visit whose content the user should be able to go Back to."
				},
				{
					"name": "server",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "When true and in an Inertia context, triggers a real server-side Inertia\nvisit instead of a client-only `history.pushState`."
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: K): void",
					"description": "Emitted when the selected tab changes. Used by `v-model`."
				}
			],
			"slots": [
				{
					"name": "header:append",
					"type": "BbTabsScrollSlotProps",
					"description": "Content rendered after the scrollable tab label list (e.g. a right scroll arrow)."
				},
				{
					"name": "header:prepend",
					"type": "BbTabsScrollSlotProps",
					"description": "Content rendered before the scrollable tab label list (e.g. a left scroll arrow)."
				},
				{
					"name": "label",
					"type": "BbTabsSlotProps<K>",
					"description": "Fallback slot used for all tab labels when no per-tab `label:{key}` slot is provided."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "K | null | undefined"
				}
			],
			"removed": [
				{
					"name": "animateX",
					"new": "disableAnimateX",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "animateY",
					"new": "disableAnimateY",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "querykey",
					"new": "queryKey",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "animateX",
					"to": "disableAnimateX",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "animateY",
					"to": "disableAnimateY",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "querykey",
					"to": "queryKey",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbTabsList",
			"group": "Navigation",
			"description": "The trigger strip of a split BbTabsRoot layout (renders the tab buttons only).",
			"referenceOnly": false,
			"hasGuide": false,
			"contract": "ai/BbTabsList.md",
			"source": "ai/source/BbTabsList.md",
			"props": [],
			"events": [],
			"slots": [
				{
					"name": "header:append",
					"type": "BbTabsScrollSlotProps",
					"description": "Content rendered after the scrollable tab label list (e.g. a right scroll arrow)."
				},
				{
					"name": "header:prepend",
					"type": "BbTabsScrollSlotProps",
					"description": "Content rendered before the scrollable tab label list (e.g. a left scroll arrow)."
				},
				{
					"name": "label",
					"type": "BbTabsSlotProps<string>",
					"description": "Fallback slot used for all tab labels when no per-tab `label:{key}` slot is provided."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbTabsPanes",
			"group": "Navigation",
			"description": "The pane host of a split BbTabsRoot layout (renders the tab content only).",
			"referenceOnly": false,
			"hasGuide": false,
			"contract": "ai/BbTabsPanes.md",
			"source": "ai/source/BbTabsPanes.md",
			"props": [],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbTabsRoot",
			"group": "Navigation",
			"description": "Provide/inject root that lets BbTabsList and BbTabsPanes live in separate layout slots.",
			"referenceOnly": false,
			"hasGuide": false,
			"contract": "ai/BbTabsRoot.md",
			"source": "ai/source/BbTabsRoot.md",
			"props": [
				{
					"name": "block",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the component as full width."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds a CSS class that applies a compact style to the component."
				},
				{
					"name": "direction",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"default": "\"horizontal\"",
					"description": "Direction of the tabs component."
				},
				{
					"name": "disableAnimateX",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the horizontal slide transition between tab panels\n(enabled by default)."
				},
				{
					"name": "disableAnimateY",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the smooth height animation when switching between tab\npanels (enabled by default)."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "headers",
					"type": "Record<string, string> | undefined",
					"required": false,
					"description": "Additional HTTP headers forwarded to Inertia when navigation is triggered.\nOnly meaningful in an Inertia context."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "items",
					"type": "BbTabsItem<K>[]",
					"required": true,
					"description": "Array of items that define the tabs in the component."
				},
				{
					"name": "modelValue",
					"type": "K | null | undefined",
					"required": false,
					"description": "The current tab key. Used by v-model."
				},
				{
					"name": "navigation",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Synchronizes the current tab with the URL query parameter.\n\nPair it with `replace` unless a tab is genuinely a separate destination —\nsee the `replace` prop."
				},
				{
					"name": "onBefore",
					"type": "(() => boolean | void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired just before the request is sent.\nReturn `false` to cancel the visit."
				},
				{
					"name": "onCancel",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when the request is cancelled."
				},
				{
					"name": "onError",
					"type": "((errors: Record<string, string>) => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when the server returns validation errors."
				},
				{
					"name": "onFinish",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired after the visit finishes (success or error)."
				},
				{
					"name": "only",
					"type": "string[] | undefined",
					"required": false,
					"description": "Limits which server-side props are refreshed during a partial Inertia reload.\nOnly meaningful in an Inertia context."
				},
				{
					"name": "onProgress",
					"type": "((progress: { percentage: number | undefined; }) => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when upload/download progress is available."
				},
				{
					"name": "onStart",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when the request starts."
				},
				{
					"name": "onSuccess",
					"type": "(() => void) | undefined",
					"required": false,
					"description": "Inertia lifecycle hook — fired when the visit completes successfully."
				},
				{
					"name": "preserveScroll",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | undefined",
					"required": false,
					"description": "Controls whether Inertia preserves the scroll position after navigation.\nOnly meaningful in an Inertia context."
				},
				{
					"name": "preserveState",
					"type": "boolean | ((props: Record<string, unknown>) => boolean) | null | undefined",
					"required": false,
					"description": "Controls whether Inertia preserves the current component state after navigation.\nOnly meaningful in an Inertia context."
				},
				{
					"name": "queryKey",
					"type": "string | undefined",
					"required": false,
					"default": "\"tab\"",
					"description": "Defines the query key used for URL-based navigation."
				},
				{
					"name": "replace",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Replaces history rather than pushing it when changing tab.\n\nRecommended default whenever `navigation` is on: the query keeps the\nactive tab (deep-linkable, survives reload) while Back still returns to\nthe page the user came from, instead of undoing one tab click at a time.\nLeave it off only when a tab is a destination of its own — typically a\n`server` visit whose content the user should be able to go Back to."
				},
				{
					"name": "server",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "When true and in an Inertia context, triggers a real server-side Inertia\nvisit instead of a client-only `history.pushState`."
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(e: \"update:modelValue\", value: K): void",
					"description": "Emitted when the selected tab changes. Used by `v-model`."
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "BbTabsRootSlotProps<K>",
					"description": "Arbitrary layout hosting `BbTabsList` / `BbTabsPanes` anywhere in its subtree."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "K | null | undefined"
				}
			],
			"removed": [
				{
					"name": "animateX",
					"new": "disableAnimateX",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "animateY",
					"new": "disableAnimateY",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"silent": true,
					"fix": {
						"kind": "invert"
					}
				},
				{
					"name": "querykey",
					"new": "queryKey",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "animateX",
					"to": "disableAnimateX",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "animateY",
					"to": "disableAnimateY",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"fix": {
						"kind": "invert"
					}
				},
				{
					"from": "querykey",
					"to": "queryKey",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tabs.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbTag",
			"group": "Inputs",
			"description": "Captures and displays tag-like token values.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTag.md",
			"source": "ai/source/BbTag.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Guides to the browser as to the type of information expected in the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "caseSensitive",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Compare tags case-sensitively when rejecting duplicates, so `Vue` and\n`vue` can both exist. By default matching folds case, because two chips\ndiffering only in case read as duplicates to a user.\n\nEither way the tag is stored with the casing the user typed — this only\ndecides what counts as a duplicate. Entries are always trimmed first."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button when the input has a value and is being interacted with."
				},
				{
					"name": "comma",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the display model for selected values to a list of comma separated string.\nIn this mode the user cannot deselect an option by pressing the close button."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a compact mode."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a\npattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "divider",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "The divider key used to separate values from one another. By default it is \"Enter\".\nAccepts a single key or an array of keys (e.g. `['Enter', ',']`) — any of them\ncommits the current text."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Where the label sits relative to the field: `outside` above it, `inside`\nwithin the control, or `floating` (starts inside, lifts on focus/value).\nDefaults to `config.defaultInputLabelMode`, like the other inputs."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles."
				},
				{
					"name": "max",
					"type": "number | undefined",
					"required": false,
					"description": "Maximum number of selected items."
				},
				{
					"name": "modelValue",
					"type": "string[]",
					"required": true,
					"description": "Used by v-model. Contains all selected tags."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there's no data."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and\nthe input is swapped."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "duplicate",
					"signature": "(event: \"duplicate\", string: string): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "max",
					"signature": "(event: \"max\", string: string): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string[]): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "Record<string, never>",
					"description": "Content appended inside the input field wrapper, after the tag chips."
				},
				{
					"name": "append-outer",
					"type": "Record<string, never>",
					"description": "Content appended outside the input field wrapper."
				},
				{
					"name": "label",
					"type": "BbTagLabelSlotProps",
					"description": "Replaces the default label text rendered above the input."
				},
				{
					"name": "prefix",
					"type": "Record<string, never>",
					"description": "Content rendered as an inline prefix inside the input field."
				},
				{
					"name": "prepend",
					"type": "Record<string, never>",
					"description": "Content prepended inside the input field wrapper, before the tag chips."
				},
				{
					"name": "prepend-outer",
					"type": "Record<string, never>",
					"description": "Content prepended outside the input field wrapper."
				},
				{
					"name": "suffix",
					"type": "Record<string, never>",
					"description": "Content rendered as an inline suffix inside the input field."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string[]"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<string[]>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			},
			"removed": [
				{
					"name": "multiple",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tag.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				}
			]
		},
		{
			"name": "BbTextarea",
			"group": "Inputs",
			"description": "Captures multi-line text values.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTextarea.md",
			"source": "ai/source/BbTextarea.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Guides to the browser as to the type of information expected in the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "autoGrow",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Expands the textarea to match its content."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button when the input has a value and is being interacted with."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a compact state."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a\npattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode. `'outside'` (default) sits the label above/beside the\nfield; `'floating'`/`'inside'` overlay it, like the other text inputs."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles."
				},
				{
					"name": "modelValue",
					"type": "string | null",
					"required": true,
					"description": "Used by v-model."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there's no data."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and\nthe input is swapped."
				},
				{
					"name": "rows",
					"type": "string | number | undefined",
					"required": false,
					"description": "Sets the number of visible text lines for the control."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "Record<string, never>",
					"description": "Content rendered after the textarea, at the end of the inner container."
				},
				{
					"name": "append-outer",
					"type": "Record<string, never>",
					"description": "Content rendered after the entire textarea control, outside the input chrome."
				},
				{
					"name": "label",
					"type": "BbTextareaLabelSlotProps",
					"description": "Replaces the default label text rendered above the textarea."
				},
				{
					"name": "prefix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the start of the textarea field area, before the text."
				},
				{
					"name": "prepend",
					"type": "Record<string, never>",
					"description": "Content rendered before the textarea, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "Record<string, never>",
					"description": "Content rendered before the entire textarea control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "Record<string, never>",
					"description": "Inline content rendered at the end of the textarea field area, after the text."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | null"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<string | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"blur\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			}
		},
		{
			"name": "BbTextInput",
			"group": "Inputs",
			"description": "Captures single-line text values.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTextInput.md",
			"source": "ai/source/BbTextInput.md",
			"props": [
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Guides to the browser as to the type of information expected in the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button when the input has a value and is being interacted with."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays the component in a compact version."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a\npattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "emitMasked",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Emits the masked value of the input."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "inputMode",
					"type": "\"text\" | \"search\" | \"email\" | \"url\" | \"tel\" | \"none\" | \"numeric\" | \"decimal\" | undefined",
					"required": false,
					"description": "The inputmode of the input."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles."
				},
				{
					"name": "mask",
					"type": "MaskInputOptions | undefined",
					"required": false,
					"description": "The mask to be applied to the input.\nPlease visit https://beholdr.github.io/maska/v3 for syntax examples."
				},
				{
					"name": "modelValue",
					"type": "string | null",
					"required": true,
					"description": "Used by v-model."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there's no data."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout. Applicable in every direction the order of the label and\nthe input is swapped."
				},
				{
					"name": "type",
					"type": "\"text\" | \"search\" | \"email\" | \"url\" | \"tel\" | \"password\" | undefined",
					"required": false,
					"description": "Type of the input. Restricted to the textual input types this component\nsupports — use `BbNumberInput` for numbers and `BbDatePickerInput` for dates."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "blur",
					"signature": "(event: \"blur\", event: FocusEvent): void"
				},
				{
					"name": "change",
					"signature": "(event: \"change\", event: Event): void"
				},
				{
					"name": "click",
					"signature": "(event: \"click\", event: MouseEvent): void"
				},
				{
					"name": "compositionend",
					"signature": "(event: \"compositionend\", event: CompositionEvent): void"
				},
				{
					"name": "compositionstart",
					"signature": "(event: \"compositionstart\", event: CompositionEvent): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "input",
					"signature": "(event: \"input\", event: Event): void"
				},
				{
					"name": "keydown",
					"signature": "(event: \"keydown\", event: KeyboardEvent): void"
				},
				{
					"name": "keyup",
					"signature": "(event: \"keyup\", event: KeyboardEvent): void"
				},
				{
					"name": "mousedown",
					"signature": "(event: \"mousedown\", event: MouseEvent): void"
				},
				{
					"name": "mouseup",
					"signature": "(event: \"mouseup\", event: MouseEvent): void"
				},
				{
					"name": "paste",
					"signature": "(event: \"paste\", event: ClipboardEvent): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the text input, at the end of the inner container."
				},
				{
					"name": "append-outer",
					"type": "object",
					"description": "Content rendered after the entire text input control, outside the input chrome."
				},
				{
					"name": "label",
					"type": "BbTextInputLabelSlotProps",
					"description": "Replaces the default label text rendered above the input."
				},
				{
					"name": "prefix",
					"type": "object",
					"description": "Inline content rendered at the start of the input field area, before the typed text."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the text input, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "object",
					"description": "Content rendered before the entire text input control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "object",
					"description": "Inline content rendered at the end of the input field area, after the typed text."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | null"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<string | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"blur\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			}
		},
		{
			"name": "BbTimePicker",
			"group": "Overlay",
			"description": "Opens hour/minute(/second) columns in a popover on a trigger you own — the time analog of BbDatePicker; also the v-bb-time directive.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTimePicker.md",
			"source": "ai/source/BbTimePicker.md",
			"props": [
				{
					"name": "activator",
					"type": "ElementOrComponentRef | undefined",
					"required": false,
					"description": "External activator element or component ref. When provided, the `activator`\nslot is not rendered and click + ARIA are attached programmatically to the\nreferenced element — mirroring `BbDatePicker`."
				},
				{
					"name": "activeSegment",
					"type": "BbTimePickerSegment | undefined",
					"required": false,
					"description": "Which end the columns edit in range mode (`v-model:active-segment`).\nStandalone use manages this internally via the in-panel toggle; a host can\ndrive it. Ignored outside `range`."
				},
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "On mobile, open in a bottom off-canvas sheet instead of a floating popover.\nWhen unset, falls back to the global `config.adaptive`."
				},
				{
					"name": "ampm",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "12-hour display with an AM/PM column; emitted values stay 24-hour."
				},
				{
					"name": "anchor",
					"type": "ElementOrComponentRef | undefined",
					"required": false,
					"description": "Element or component ref the popover positions itself relative to.\nDefaults to the activator when omitted (anchor to a larger row while a\nsmaller element stays the click target)."
				},
				{
					"name": "boundary",
					"type": "ElementOrComponentRefOrSelector | undefined",
					"required": false,
					"description": "Constrains the popover within a bounding element or CSS selector."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the activator and the columns."
				},
				{
					"name": "disableFlip",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disable the automatic flip to the opposite side on overflow."
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Render popover content before it is first shown."
				},
				{
					"name": "label",
					"type": "string | undefined",
					"required": false,
					"description": "Accessible label applied to the activator via `aria-label`."
				},
				{
					"name": "max",
					"type": "string | undefined",
					"required": false,
					"description": "Maximum selectable time in `HH:mm` format. Values outside the pattern\nthrow during setup to surface configuration mistakes."
				},
				{
					"name": "min",
					"type": "string | undefined",
					"required": false,
					"description": "Minimum selectable time in `HH:mm` format. Values outside the pattern\nthrow during setup to surface configuration mistakes."
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null",
					"required": true,
					"description": "v-model value: `null` for empty, a 24-hour `HH:mm` (or `HH:mm:ss` with\n`seconds`) string, or a two-element `[start, end]` array when `range` is true."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when adaptive on mobile."
				},
				{
					"name": "offset",
					"type": "number | undefined",
					"required": false,
					"default": "4",
					"description": "Space the popover keeps from the activator."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"description": "Minimum empty space to keep from the edge of the page."
				},
				{
					"name": "placement",
					"type": "Placement | undefined",
					"required": false,
					"description": "Position of the popover relative to the activator/anchor."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Range selection: the value is a two-element `[start, end]` array."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents opening while keeping the activator visible."
				},
				{
					"name": "seconds",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds the seconds column."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Minute-column granularity and arrow stepping."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Popover/sheet transition duration in milliseconds."
				}
			],
			"events": [
				{
					"name": "error",
					"signature": "(event: \"error\", error: TimePickerInputError): void"
				},
				{
					"name": "time-pick",
					"signature": "(event: \"time-pick\", payload: { unit: TimeUnit; value: string; }): void"
				},
				{
					"name": "update:activeSegment",
					"signature": "(event: \"update:activeSegment\", value: BbTimePickerSegment): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | string[] | null): void"
				}
			],
			"slots": [
				{
					"name": "activator",
					"type": "BbTimePickerActivatorSlotProps",
					"description": "Custom activator element. Apply `v-bind=\"props\"` to your trigger."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "activeSegment",
					"type": "BbTimePickerSegment | undefined"
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null"
				}
			]
		},
		{
			"name": "BbTimePickerInput",
			"group": "Inputs",
			"description": "Segmented time field with hour/minute columns; 24-hour string model.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTimePickerInput.md",
			"source": "ai/source/BbTimePickerInput.md",
			"props": [
				{
					"name": "adaptive",
					"type": "boolean | undefined",
					"required": false,
					"default": "`config.adaptive` (`true`)",
					"description": "On mobile the time columns open inside a bottom off-canvas sheet instead\nof a floating popover. When unset, falls back to the global\n`config.adaptive`."
				},
				{
					"name": "ampm",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "12-hour display with an AM/PM segment. Purely a field-composition\nconcern: the model stays 24-hour. Type `A`/`P` (or ArrowUp/Down) to set\nthe meridiem."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "autocomplete",
					"type": "string | undefined",
					"required": false,
					"description": "Guides the browser as to the type of information expected in the field."
				},
				{
					"name": "autofocus",
					"type": "Booleanish | undefined",
					"required": false,
					"description": "Sets autofocus on page load."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Displays a clear button when the input has a value and is being interacted with."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a compact state."
				},
				{
					"name": "description",
					"type": "string | undefined",
					"required": false,
					"description": "Descriptive text displayed below the label and above the input. Always\nvisible and linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."
				},
				{
					"name": "direction",
					"type": "InputDirection | undefined",
					"required": false,
					"description": "Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component."
				},
				{
					"name": "disableWriting",
					"type": "boolean | \"mobile\" | \"desktop\" | undefined",
					"required": false,
					"default": "false",
					"description": "Disables typing into the input.\nUse `'mobile'` / `'desktop'` to disable typing on one platform only."
				},
				{
					"name": "errors",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the segment\ninputs' `aria-describedby`, so the reason the field is invalid is re-read\nwhenever a segment regains focus."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nSame chrome as errors with `--bb-warn`; errors take priority."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "hint",
					"type": "string | undefined",
					"required": false,
					"description": "Text box to be displayed near the input, usually to indicate instructions."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "The identifier of the component."
				},
				{
					"name": "label",
					"type": "string",
					"required": true,
					"description": "Text content of the label of the element."
				},
				{
					"name": "labelMode",
					"type": "\"floating\" | \"outside\" | \"inside\" | undefined",
					"required": false,
					"description": "Label rendering mode."
				},
				{
					"name": "labelPosition",
					"type": "\"left\" | \"center\" | \"right\" | undefined",
					"required": false,
					"description": "Sets the text alignment of the label."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the component in a loading state, usually triggering some visual styles."
				},
				{
					"name": "max",
					"type": "string | undefined",
					"required": false,
					"description": "Maximum selectable time in `HH:mm` format. Values outside the pattern\nthrow during setup to surface configuration mistakes."
				},
				{
					"name": "min",
					"type": "string | undefined",
					"required": false,
					"description": "Minimum selectable time in `HH:mm` format. Values outside the pattern\nthrow during setup to surface configuration mistakes."
				},
				{
					"name": "modelValue",
					"type": "string | string[] | null",
					"required": true,
					"description": "v-model value: `null` for empty, a 24-hour `HH:mm` (or `HH:mm:ss` with\n`seconds`) string, or a two-element array when `range` is true."
				},
				{
					"name": "name",
					"type": "string | undefined",
					"required": false,
					"description": "Defines the name of the input."
				},
				{
					"name": "offCanvasProps",
					"type": "Partial<BbOffCanvasProps> | undefined",
					"required": false,
					"description": "Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is\nactive on mobile (e.g. `title`, `size`, `persistent`)."
				},
				{
					"name": "persistentHint",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps the hint displayed."
				},
				{
					"name": "placeholder",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there's no data."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "range",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Range selection: v-model expects a two-element array `[start, end]`.\nAn inverted pair swaps on finalize with an `end_before_start` error."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input in a readonly state."
				},
				{
					"name": "required",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the input as required."
				},
				{
					"name": "reverse",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Reverses the layout: the order of the label and the input is swapped."
				},
				{
					"name": "seconds",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Adds the seconds segment. Without it an incoming value carrying seconds\ndisplays truncated and zeroes out on the next user commit."
				},
				{
					"name": "step",
					"type": "number | undefined",
					"required": false,
					"default": "1",
					"description": "Minute granularity for the minute column and its arrow stepping.\nConstrains what the columns produce, never what typing accepts."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"description": "Transition duration, in milliseconds, for the popover appearance."
				},
				{
					"name": "warnings",
					"type": "string | string[] | undefined",
					"required": false,
					"description": "Warning messages to display beneath the field, in their own `aria-live`\nregion and amber (`--bb-text-warn`). A string or array; a non-empty list\nimplies the warning state. Errors suppress warnings when both are set.\nWhile displayed they are also referenced from the control's\n`aria-describedby`, after any errors and before the description/hint."
				}
			],
			"events": [
				{
					"name": "active",
					"signature": "(event: \"active\"): void"
				},
				{
					"name": "error",
					"signature": "(event: \"error\", error: TimePickerInputError): void"
				},
				{
					"name": "focus",
					"signature": "(event: \"focus\", event: FocusEvent): void"
				},
				{
					"name": "inactive",
					"signature": "(event: \"inactive\"): void"
				},
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: string | string[] | null): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the time fields (before the clock button)."
				},
				{
					"name": "append-outer",
					"type": "object",
					"description": "Content rendered after the entire control, outside the input chrome."
				},
				{
					"name": "label",
					"type": "BbTimePickerInputLabelSlotProps",
					"description": "Replaces the default label text rendered above the input."
				},
				{
					"name": "prefix",
					"type": "object",
					"description": "Inline content at the start of the field area."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the time fields, at the start of the inner container."
				},
				{
					"name": "prepend-outer",
					"type": "object",
					"description": "Content rendered before the entire control, outside the input chrome."
				},
				{
					"name": "suffix",
					"type": "object",
					"description": "Inline content at the end of the field area."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "string | string[] | null"
				}
			],
			"validated": {
				"entrypoint": "bitboss-ui/validated",
				"props": [
					{
						"name": "rules",
						"type": "RuleExpression<string | string[] | null>",
						"required": false,
						"description": "vee-validate rules for this field."
					},
					{
						"name": "validateOn",
						"type": "ValidateTiming[] | undefined",
						"required": false,
						"default": "[\"inactive\"]",
						"description": "Which interactions trigger validation (see\n`ValidatedFieldProps.validateOn` for the timing vocabulary)."
					},
					{
						"name": "vid",
						"type": "string | undefined",
						"required": false,
						"description": "Explicit vee-validate field name. **Usually omit it** — the name is derived\nautomatically from the control's `label`/`legend`. Only set `vid` when that\nderivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that\nshare a label). A control with no `label`/`legend` (like `BbDropzone`) must\nprovide it."
					}
				]
			}
		},
		{
			"name": "BbToast",
			"group": "Feedback",
			"description": "Shows transient notification messages (includes the co-located BbToastPortal export).",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbToast.md",
			"source": "ai/source/BbToast.md",
			"props": [
				{
					"name": "position",
					"type": "BbToastPosition | undefined",
					"required": false
				}
			],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": [],
			"removed": [
				{
					"name": "placement",
					"new": "position",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-toast.md",
					"silent": true,
					"fix": {
						"kind": "valueMap",
						"valueMap": {
							"bottom": "bottom-center",
							"bottom-start": "bottom-left",
							"bottom-end": "bottom-right",
							"top": "top-center",
							"top-start": "top-left",
							"top-end": "top-right"
						}
					}
				},
				{
					"name": "theme",
					"new": "variant",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-toast.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "placement",
					"to": "position",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-toast.md",
					"fix": {
						"kind": "valueMap",
						"valueMap": {
							"bottom": "bottom-center",
							"bottom-start": "bottom-left",
							"bottom-end": "bottom-right",
							"top": "top-center",
							"top-start": "top-left",
							"top-end": "top-right"
						}
					}
				},
				{
					"from": "theme",
					"to": "variant",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-toast.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbToastPortal",
			"group": "Feedback",
			"description": "Registers named slot content that toast() renders via `portal`.",
			"referenceOnly": false,
			"hasGuide": false,
			"contract": "ai/BbToastPortal.md",
			"source": "ai/source/BbToastPortal.md",
			"props": [
				{
					"name": "name",
					"type": "string",
					"required": true
				}
			],
			"events": [],
			"slots": [
				{
					"name": "default",
					"type": "BbToastPortalContext"
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "BbTooltip",
			"group": "Overlay",
			"description": "Displays contextual helper text on interaction.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTooltip.md",
			"source": "ai/source/BbTooltip.md",
			"props": [
				{
					"name": "activator",
					"type": "ElementOrComponentRef | undefined",
					"required": false,
					"description": "External activator element or component ref.\nWhen provided, the activator slot is not rendered and event listeners\nare attached programmatically to the referenced element."
				},
				{
					"name": "arrowPadding",
					"type": "number | undefined",
					"required": false,
					"default": "10",
					"description": "Space the arrow will maintain to the edge of the tooltip bubble.\nUseful when the floating element has border radius so it won't appear broken"
				},
				{
					"name": "boundary",
					"type": "ElementOrComponentRefOrSelector | undefined",
					"required": false,
					"description": "Constrains the tooltip within a bounding element.\nWhen provided, the tooltip will not overflow this container's bounds (e.g. a sidebar).\nAccepts an HTMLElement, a Vue component ref, or a CSS selector string."
				},
				{
					"name": "delay",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "The delay in milliseconds before the tooltip is shown."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the component"
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "hideArrow",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Hides the tooltip arrow. A tooltip shows its arrow by default (it's the\none popover-family surface where an arrow is meaningful — a speech bubble\npointing at its anchor); set this to drop it."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Seed for the tooltip's internal id. It is **prefixed** (`bb_<id>`) and set\non the inner content element, not on the root — so\n`document.getElementById(theIdYouPassed)` finds nothing. Pass it to make\nthe generated id stable (SSR snapshots, tests), not to look the element\nup."
				},
				{
					"name": "modelValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Used by v-model to show / hide the tooltip. A tooltip with no `v-model`\nstarts hidden and is driven by hover / focus."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"default": "10",
					"description": "Minimum empty space to keep from the edge of the page"
				},
				{
					"name": "placement",
					"type": "Placement | undefined",
					"required": false,
					"default": "\"top\"",
					"description": "Position of the overlay in respect to the related activator."
				},
				{
					"name": "text",
					"type": "string | undefined",
					"required": false,
					"description": "Text content of the component."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "How long the transition has to last in milliseconds"
				},
				{
					"name": "variant",
					"type": "keyof TooltipVariantRegistry | undefined",
					"required": false,
					"default": "\"default\"",
					"description": "Visual variant. `'default'` is the inverted (primary) bubble,\n`'destructive'` is the danger-tinted bubble for warnings. Any other\nstring is applied as a `bb-tooltip--<name>` class hook."
				},
				{
					"name": "width",
					"type": "string | number | undefined",
					"required": false,
					"description": "Width of the tooltip bubble in pixels, or as a percentage of the activator."
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: boolean): void"
				}
			],
			"slots": [
				{
					"name": "activator",
					"type": "BbTooltipActivatorSlotProps",
					"description": "Replaces the default trigger element that opens the tooltip."
				},
				{
					"name": "default",
					"type": "object",
					"description": "Content rendered inside the tooltip bubble."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "boolean | undefined"
				}
			],
			"removed": [
				{
					"name": "block",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tooltip.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "showClose",
					"new": null,
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tooltip.md",
					"silent": true,
					"fix": {
						"kind": "remove"
					}
				},
				{
					"name": "theme",
					"new": "variant",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tooltip.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				},
				{
					"name": "timeout",
					"new": "delay",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tooltip.md",
					"silent": true,
					"fix": {
						"kind": "rename"
					}
				}
			],
			"renamed": [
				{
					"from": "theme",
					"to": "variant",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tooltip.md",
					"fix": {
						"kind": "rename"
					}
				},
				{
					"from": "timeout",
					"to": "delay",
					"since": "3.0.0-unreleased",
					"migration": "ai/guides/migration/components/bb-tooltip.md",
					"fix": {
						"kind": "rename"
					}
				}
			]
		},
		{
			"name": "BbTree",
			"group": "Navigation",
			"description": "Renders hierarchical expandable tree structures.",
			"referenceOnly": false,
			"hasGuide": true,
			"contract": "ai/BbTree.md",
			"source": "ai/source/BbTree.md",
			"props": [
				{
					"name": "expandable",
					"type": "BbTreeExpandable<Meta> | undefined",
					"required": false,
					"description": "Defines nodes as expandable. It can be a global boolean, or a function\nthat receives the node, its depth, and its parent and returns a boolean."
				},
				{
					"name": "expandedItems",
					"type": "any[] | undefined",
					"required": false,
					"default": "[]",
					"description": "Live expansion state: the list of expanded node values (see `itemValue`).\nBranch nodes not explicitly collapsed via `expanded: false` seed the list\nwhen they first appear in `items`; from then on this model is the single\nsource of truth."
				},
				{
					"name": "items",
					"type": "BbTreeItem<Meta>[]",
					"required": true,
					"default": "[]",
					"description": "Tree-like structure of nodes to render."
				},
				{
					"name": "itemValue",
					"type": "ItemAccessor<Meta> | undefined",
					"required": false,
					"default": "the whole `meta` object",
					"description": "Identity of a node, used to hash entries of `expandedItems` and to\nname per-node slots. A string reads that key from `meta`; a function\nreceives `meta` and returns the value."
				}
			],
			"events": [
				{
					"name": "update:expandedItems",
					"signature": "(event: \"update:expandedItems\", value: any[]): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "BbTreeNodeSlotProps<Meta>"
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "expandedItems",
					"type": "any[] | undefined"
				}
			]
		},
		{
			"name": "ChipsBox",
			"group": "Layout & Utility",
			"description": "Layout helper for rendering chip collections.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/ChipsBox.md",
			"source": "ai/source/ChipsBox.md",
			"props": [
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the component is disabled."
				},
				{
					"name": "options",
					"type": "Option[]",
					"required": true,
					"description": "List of options to render as chips."
				},
				{
					"name": "size",
					"type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | undefined",
					"required": false,
					"description": "The size of the chips."
				}
			],
			"events": [
				{
					"name": "option:unselected",
					"signature": "(event: \"option:unselected\", option: Option): void"
				}
			],
			"slots": [],
			"exposed": [
				{
					"name": "blur",
					"type": "() => void"
				},
				{
					"name": "confirmOption",
					"type": "() => void"
				},
				{
					"name": "focusByHash",
					"type": "(hash: string) => void"
				},
				{
					"name": "focusFirst",
					"type": "() => void"
				},
				{
					"name": "focusFirstSelected",
					"type": "() => void"
				},
				{
					"name": "focusLast",
					"type": "() => void"
				},
				{
					"name": "focusLastSelected",
					"type": "() => void"
				},
				{
					"name": "focusNext",
					"type": "() => void"
				},
				{
					"name": "focusPrevious",
					"type": "() => Promise<void>"
				},
				{
					"name": "getHighlighted",
					"type": "() => Option | undefined"
				}
			],
			"models": []
		},
		{
			"name": "ClearableButton",
			"group": "Inputs",
			"description": "Action button for clearing current input value.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/ClearableButton.md",
			"source": "ai/source/ClearableButton.md",
			"props": [
				{
					"name": "label",
					"type": "string | undefined",
					"required": false,
					"description": "Accessible label announced by screen readers.\nFalls back to localized `common.clearLabel` when omitted."
				}
			],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "CommaBox",
			"group": "Layout & Utility",
			"description": "Utility for comma-separated content rendering.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/CommaBox.md",
			"source": "ai/source/CommaBox.md",
			"props": [
				{
					"name": "options",
					"type": "Option[]",
					"required": true,
					"description": "List of options to render as comma-separated text items."
				}
			],
			"events": [
				{
					"name": "option:unselected",
					"signature": "(event: \"option:unselected\", option: Option): void"
				}
			],
			"slots": [],
			"exposed": [
				{
					"name": "blur",
					"type": "() => void"
				},
				{
					"name": "confirmOption",
					"type": "() => void"
				},
				{
					"name": "focusByHash",
					"type": "(hash: string) => void"
				},
				{
					"name": "focusFirst",
					"type": "() => void"
				},
				{
					"name": "focusFirstSelected",
					"type": "() => void"
				},
				{
					"name": "focusLast",
					"type": "() => void"
				},
				{
					"name": "focusLastSelected",
					"type": "() => void"
				},
				{
					"name": "focusNext",
					"type": "() => void"
				},
				{
					"name": "focusPrevious",
					"type": "() => Promise<void>"
				},
				{
					"name": "getHighlighted",
					"type": "() => Option | undefined"
				}
			],
			"models": []
		},
		{
			"name": "CommonInputWrapper",
			"group": "Layout & Utility",
			"description": "Shared wrapper utility for composed input controls.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/CommonInputWrapper.md",
			"source": "ai/source/CommonInputWrapper.md",
			"props": [
				{
					"name": "active",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the input is in active/focused state (e.g. open dropdown)."
				},
				{
					"name": "append:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the end of the input."
				},
				{
					"name": "clearable",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the input is clearable."
				},
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the input is in compact mode."
				},
				{
					"name": "disabled",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the input is disabled."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the input has validation errors."
				},
				{
					"name": "hasValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "undefined",
					"description": "Whether the wrapped control currently has a value that can be cleared."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the input has a warning state. Visually identical to `hasErrors`\nbut uses `--bb-warn` chrome; errors take priority when both are set."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the input is in a loading state."
				},
				{
					"name": "prepend:icon",
					"type": "string | undefined",
					"required": false,
					"description": "Name of the icon to be added at the start of the input."
				},
				{
					"name": "preventFocus",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents the wrapper from focusing the inner input on click."
				},
				{
					"name": "readonly",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the input is readonly."
				},
				{
					"name": "reserveAppendSpace",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps trailing action/icon space reserved even when currently empty."
				}
			],
			"events": [
				{
					"name": "click:clear",
					"signature": "(event: \"click:clear\"): void"
				},
				{
					"name": "container:click",
					"signature": "(event: \"container:click\"): void"
				}
			],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Wraps the trailing suffix area. Renders a `<span>` containing the `suffix` sub-slot by default."
				},
				{
					"name": "append-outer",
					"type": "object",
					"description": "Content appended outside the inner input container."
				},
				{
					"name": "default",
					"type": "object",
					"description": "The main input element (e.g. `<input>` or `<textarea>`)."
				},
				{
					"name": "prefix",
					"type": "object",
					"description": "Content rendered as an inline text prefix inside the prepend span."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Wraps the leading prefix area. Renders a `<span>` containing the `prefix` sub-slot by default."
				},
				{
					"name": "prepend-outer",
					"type": "object",
					"description": "Content prepended outside the inner input container."
				},
				{
					"name": "suffix",
					"type": "object",
					"description": "Content rendered as an inline text suffix inside the append span."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "CommonPopover",
			"group": "Overlay",
			"description": "Shared popover behavior and structure primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/CommonPopover.md",
			"source": "ai/source/CommonPopover.md",
			"props": [
				{
					"name": "anchor",
					"type": "any",
					"required": false,
					"description": "The element the popover positions itself relative to.\nAccepts an HTMLElement, a Vue component ref, or a virtual element with a `getBoundingClientRect` method."
				},
				{
					"name": "arrowPadding",
					"type": "number | undefined",
					"required": false,
					"description": "Space the arrow will maintain to the edge of the dropdown.\nUseful when the floating element has border radius so it won't appear broken"
				},
				{
					"name": "boundary",
					"type": "string | Record<string, any> | HTMLElement | null | undefined",
					"required": false,
					"description": "Constrains the popover's *placement* within a bounding element: `flip` and\n`shift` keep the popover inside these bounds. Does NOT clamp the popover's\nsize — a short boundary (e.g. a single-line nav) will not collapse the\nbubble. Use {@link overflowBoundary } to cap the reported `availableHeight`.\nAccepts an HTMLElement, a Vue component ref, or a CSS selector string."
				},
				{
					"name": "dialog",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Renders the popover as a `<dialog>` element (modal overlay) instead of a `<span>` with the Popover API."
				},
				{
					"name": "disableFlip",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Disables the automatic flip to the opposite side when the popover\nwould overflow (flipping is on by default)."
				},
				{
					"name": "eager",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Prevents rendering content before it's made visible."
				},
				{
					"name": "forceAutoUpdate",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Keeps floating-ui's `autoUpdate` (scroll/resize/resize-observer tracking)\nrunning while the popover is closed.\n\nBy default the position is only tracked while the popover is open, so idle\npopovers attach no listeners. Enable this only when the anchor moves while\nthe popover is closed and the next open must be pixel-perfect immediately."
				},
				{
					"name": "hideArrow",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Hides the arrow indicator."
				},
				{
					"name": "modelValue",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Used by v-model to show / hide the bubble. Closed until the owning\ncomponent opens it."
				},
				{
					"name": "offset",
					"type": "number | undefined",
					"required": false,
					"description": "Space the floating container will maintain from the activator."
				},
				{
					"name": "overflowBoundary",
					"type": "string | Record<string, any> | HTMLElement | null | undefined",
					"required": false,
					"description": "Bounding element the `size` middleware measures free space against, driving\nthe `availableHeight`/`availableWidth` slot props. Defaults to the clipping\nancestors (ultimately the viewport) when omitted, so the popover can grow to\nthe full available space regardless of a small positioning {@link boundary }.\nAccepts an HTMLElement, a Vue component ref, or a CSS selector string."
				},
				{
					"name": "padding",
					"type": "number | undefined",
					"required": false,
					"default": "0",
					"description": "Minimum empty space to keep from the edge of the page"
				},
				{
					"name": "placement",
					"type": "Placement | undefined",
					"required": false,
					"description": "Position of the overlay in respect to the related activator."
				},
				{
					"name": "tag",
					"type": "PopoverTag | undefined",
					"required": false,
					"default": "\"div\"",
					"description": "Element rendered as the popover wrapper (and as the bubble inside it).\nOverridden to `dialog` when `dialog` is `true`.\n\nThe wrapper is `position: fixed` either way, so this only decides markup\nvalidity: `div` is correct wherever the bubble holds block content (menus,\npanels, grids), `span` for the rare mount point that only accepts phrasing\ncontent — e.g. inside `BbBaseInputContainer`'s inline input wrapper."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "How long the transition has to last in milliseconds"
				}
			],
			"events": [
				{
					"name": "update:modelValue",
					"signature": "(event: \"update:modelValue\", value: boolean): void"
				}
			],
			"slots": [
				{
					"name": "default",
					"type": "{ availableWidth: number | undefined; availableHeight: number | undefined; }",
					"description": "Content rendered inside the popover bubble.\n\nReceives the free space between the anchor and the boundary edge for the\nresolved placement, so the content can cap its own scroll container.\nBoth are `undefined` until the first reposition measurement."
				}
			],
			"exposed": [],
			"models": [
				{
					"name": "modelValue",
					"type": "boolean | undefined"
				}
			]
		},
		{
			"name": "ErrorIcon",
			"group": "Feedback",
			"description": "Renders the reusable error-state icon glyph used in validation UIs.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/ErrorIcon.md",
			"source": "ai/source/ErrorIcon.md",
			"props": [],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "FlatListBox",
			"group": "Selection",
			"description": "Flat listbox renderer for selectable option lists.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/FlatListBox.md",
			"source": "ai/source/FlatListBox.md",
			"props": [
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the listbox in a compact state."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Id applied to the `role=\"listbox\"` element itself (not the wrapper), so\na combobox's `aria-controls` reference resolves to the listbox role."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Shows the listbox in a loading state."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "Text shown while options are loading."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Allows multiple options to be selected simultaneously."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "Text shown when no options are available."
				},
				{
					"name": "open",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the listbox is open (visible)."
				},
				{
					"name": "optionHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Fixed height (in px) for each option row. Defaults to 28px (24px compact;\n44px / 36px on mobile viewports). An explicit value wins on every viewport."
				},
				{
					"name": "options",
					"type": "Option<Item>[]",
					"required": true,
					"description": "List of options to display."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Duration of open/close transition in milliseconds."
				}
			],
			"events": [
				{
					"name": "focused:change",
					"signature": "(e: \"focused:change\", id: string | undefined): void",
					"description": "Emitted when the keyboard-focused option changes."
				},
				{
					"name": "option:selected",
					"signature": "(e: \"option:selected\", option: Option): void",
					"description": "Emitted when an option is selected by the user."
				},
				{
					"name": "option:unselected",
					"signature": "(e: \"option:unselected\", option: Option): void",
					"description": "Emitted when a previously selected option is deselected."
				}
			],
			"slots": [
				{
					"name": "loading",
					"type": "object",
					"description": "Content shown while items are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "option",
					"type": "FlatListBoxOptionSlotProps<Item>",
					"description": "Replaces the default rendering of each option row."
				},
				{
					"name": "options:append",
					"type": "object",
					"description": "Content appended inside the options list, after the last option."
				},
				{
					"name": "options:prepend",
					"type": "object",
					"description": "Content prepended inside the options list, before the first option."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "GroupedListBox",
			"group": "Selection",
			"description": "Grouped listbox renderer for categorized options.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/GroupedListBox.md",
			"source": "ai/source/GroupedListBox.md",
			"props": [
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the listbox in a compact state."
				},
				{
					"name": "groups",
					"type": "GroupedOptions[]",
					"required": true,
					"description": "List of option groups to display."
				},
				{
					"name": "headerHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Height of group headers (px). Defaults to 32px (24px compact; 36px / 32px\non mobile viewports). An explicit value wins on every viewport."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Id applied to the `role=\"listbox\"` element itself (not the wrapper), so\na combobox's `aria-controls` reference resolves to the listbox role."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Shows the listbox in a loading state."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "Text shown while options are loading."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Allows multiple options to be selected simultaneously."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "Text shown when no options are available."
				},
				{
					"name": "open",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the listbox is open (visible)."
				},
				{
					"name": "optionHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Fixed height (in px) for each option row. Defaults to 28px (24px compact;\n44px / 36px on mobile viewports). An explicit value wins on every viewport."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"default": "250",
					"description": "Duration of open/close transition in milliseconds."
				}
			],
			"events": [
				{
					"name": "focused:change",
					"signature": "(e: \"focused:change\", id: string | undefined): void",
					"description": "Emitted when the keyboard-focused option changes."
				},
				{
					"name": "option:selected",
					"signature": "(e: \"option:selected\", option: Option): void",
					"description": "Emitted when an option is selected by the user."
				},
				{
					"name": "option:unselected",
					"signature": "(e: \"option:unselected\", option: Option): void",
					"description": "Emitted when a previously selected option is deselected."
				}
			],
			"slots": [
				{
					"name": "group",
					"type": "GroupedListBoxGroupSlotProps<Item>",
					"description": "Replaces the default group header rendered above each group of options."
				},
				{
					"name": "loading",
					"type": "object",
					"description": "Content shown while items are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "option",
					"type": "GroupedListBoxOptionSlotProps<Item>",
					"description": "Replaces the default rendering of each option row within a group."
				},
				{
					"name": "options:append",
					"type": "object",
					"description": "Content appended inside the options list, after the last group."
				},
				{
					"name": "options:prepend",
					"type": "object",
					"description": "Content prepended inside the options list, before the first group."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "GuidesComponent",
			"group": "Layout & Utility",
			"description": "Dev-only showcase that auto-collects examples/*.vue files with live preview and extractable source. Not part of the consumer API.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/GuidesComponent.md",
			"source": "ai/source/GuidesComponent.md",
			"props": [],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		},
		{
			"name": "ListBox",
			"group": "Selection",
			"description": "Accessible listbox interaction primitive.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/ListBox.md",
			"source": "ai/source/ListBox.md",
			"props": [
				{
					"name": "compact",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Sets the listbox in a compact state."
				},
				{
					"name": "groups",
					"type": "GroupedOptions[] | undefined",
					"required": false,
					"description": "Grouped option list. When provided, the grouped listbox is rendered."
				},
				{
					"name": "headerHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Height of group headers in the listbox (px)."
				},
				{
					"name": "id",
					"type": "string | undefined",
					"required": false,
					"description": "Id applied to the `role=\"listbox\"` element itself (not the wrapper), so\na combobox's `aria-controls` reference resolves to the listbox role."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Shows the listbox in a loading state."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "Text shown while options are loading."
				},
				{
					"name": "multiple",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Allows multiple options to be selected simultaneously."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "Text shown when no options are available."
				},
				{
					"name": "open",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Whether the listbox is open (visible)."
				},
				{
					"name": "optionHeight",
					"type": "number | undefined",
					"required": false,
					"description": "Fixed height (in px) for each option row. Defaults to 28px (24px compact;\n44px / 36px on mobile viewports). An explicit value wins on every viewport."
				},
				{
					"name": "options",
					"type": "Option<Item>[] | undefined",
					"required": false,
					"description": "Flat option list. Used when `groups` is not provided."
				},
				{
					"name": "transitionDuration",
					"type": "number | undefined",
					"required": false,
					"description": "Duration of open/close transition in milliseconds."
				}
			],
			"events": [
				{
					"name": "focused:change",
					"signature": "(e: \"focused:change\", id: string | undefined): void",
					"description": "Emitted when the keyboard-focused option changes."
				},
				{
					"name": "option:selected",
					"signature": "(e: \"option:selected\", option: Option): void",
					"description": "Emitted when an option is selected by the user."
				},
				{
					"name": "option:unselected",
					"signature": "(e: \"option:unselected\", option: Option): void",
					"description": "Emitted when a previously selected option is deselected."
				}
			],
			"slots": [
				{
					"name": "group",
					"type": "ListBoxGroupSlotProps<Item>",
					"description": "Replaces the default group header (only used when `groups` is provided)."
				},
				{
					"name": "loading",
					"type": "object",
					"description": "Content shown while items are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "option",
					"type": "ListBoxOptionSlotProps<Item>",
					"description": "Replaces the default rendering of each option row."
				},
				{
					"name": "options:append",
					"type": "object",
					"description": "Content appended inside the options list, after the last option or group."
				},
				{
					"name": "options:prepend",
					"type": "object",
					"description": "Content prepended inside the options list, before the first option or group."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "OptionsContainer",
			"group": "Layout & Utility",
			"description": "Container utility for option list composition.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/OptionsContainer.md",
			"source": "ai/source/OptionsContainer.md",
			"props": [
				{
					"name": "classPrefix",
					"type": "string",
					"required": true,
					"description": "Base class prefix applied to the root element and all internal elements.\nThe parent passes its own BEM block name so the generated markup uses\nparent-scoped class names instead of the container's own namespace."
				},
				{
					"name": "direction",
					"type": "\"horizontal\" | \"vertical\" | undefined",
					"required": false,
					"description": "Direction of the layout of the inputs inside the fieldset."
				},
				{
					"name": "hasErrors",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."
				},
				{
					"name": "hasWarning",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Define if the component should be in a warning state.\nAttaches a `--warnings` CSS class; suppressed when `hasErrors` is true."
				},
				{
					"name": "hideLabel",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Visually hides the label of the input while maintaining accessibility."
				},
				{
					"name": "loading",
					"type": "boolean | undefined",
					"required": false,
					"default": "false",
					"description": "Shows the container in a loading state."
				},
				{
					"name": "loadingText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed while items are being loaded."
				},
				{
					"name": "noDataText",
					"type": "string | undefined",
					"required": false,
					"description": "String displayed when there are no items to display."
				},
				{
					"name": "options",
					"type": "Option<T>[]",
					"required": true,
					"description": "List of options to render."
				}
			],
			"events": [],
			"slots": [
				{
					"name": "append",
					"type": "object",
					"description": "Content rendered after the last option, inside the options container."
				},
				{
					"name": "input",
					"type": "OptionsContainerInputSlotProps<T>",
					"description": "The actual input element for each option (e.g. radio or checkbox)."
				},
				{
					"name": "label",
					"type": "OptionsContainerLabelSlotProps<T>",
					"description": "Replaces the default label text for each option."
				},
				{
					"name": "loading",
					"type": "object",
					"description": "Content shown while options are loading (replaces the default loading text)."
				},
				{
					"name": "no-data",
					"type": "object",
					"description": "Content shown when no options are available (replaces the default \"no data\" text)."
				},
				{
					"name": "prepend",
					"type": "object",
					"description": "Content rendered before the first option, inside the options container."
				}
			],
			"exposed": [],
			"models": []
		},
		{
			"name": "WarningIcon",
			"group": "Feedback",
			"description": "Renders the reusable warning-state icon glyph used in validation UIs.",
			"referenceOnly": true,
			"hasGuide": false,
			"contract": "ai/WarningIcon.md",
			"source": "ai/source/WarningIcon.md",
			"props": [],
			"events": [],
			"slots": [],
			"exposed": [],
			"models": []
		}
	]
}
