@marwes-ui/react 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/provider/marwes-context.ts","../src/provider/runtime-theme.ts","../src/provider/theme-mode-runtime.ts","../src/provider/marwes-provider.tsx","../src/provider/use-theme.ts","../src/provider/use-theme-mode.ts","../src/components/icon/icon.tsx","../src/components/spinner/spinner.tsx","../src/components/spinner/variants.tsx","../src/components/button/button.tsx","../src/components/button/variants.tsx","../src/hooks/use-renderkit-debug.ts","../src/components/input/input.tsx","../src/components/input/select-arrow-icon.tsx","../src/components/input/select.tsx","../src/components/input/textarea.tsx","../src/components/input/rich-text.tsx","../src/components/paragraph/paragraph.tsx","../src/components/input/input-field.tsx","../src/components/input/input-otp.tsx","../src/components/input/select-field.tsx","../src/components/input/textarea-field.tsx","../src/components/input/rich-text-field.tsx","../src/components/input/field-variants.tsx","../src/components/avatar/avatar.tsx","../src/components/avatar/avatar-badge.tsx","../src/components/avatar/avatar-group.tsx","../src/components/avatar/variants.tsx","../src/components/checkbox/checkbox.tsx","../src/components/checkbox/checkbox-field.tsx","../src/components/checkbox/checkbox-group-field.tsx","../src/components/divider/divider.tsx","../src/components/skeleton/skeleton.tsx","../src/components/spacing/spacing.tsx","../src/components/heading/h1.tsx","../src/components/heading/h2.tsx","../src/components/heading/h3.tsx","../src/components/stat-tile/stat-tile.tsx","../src/components/date-picker/date-picker.tsx","../src/components/card/card.tsx","../src/components/card/variants.tsx","../src/components/toast/toast.tsx","../src/components/toast/variants.tsx","../src/components/toast/toast-container.tsx","../src/components/toast/toast-provider.tsx","../src/components/tooltip/tooltip.tsx","../src/components/tooltip/tooltip-group.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-field.tsx","../src/components/accordion/variants.tsx","../src/components/radio/radio.tsx","../src/components/radio/radio-group-field.tsx","../src/components/radio/variants.tsx","../src/components/badge/badge.tsx","../src/components/badge/badge-group.tsx","../src/components/badge/variants.tsx","../src/components/switch/switch.tsx","../src/components/switch/switch-field.tsx","../src/components/switch/variants.tsx","../src/components/slider/slider.tsx","../src/components/slider/slider-field.tsx","../src/components/slider/variants.tsx","../src/components/tab/tab.tsx","../src/components/tab/tab-group.tsx","../src/components/tab/variants.tsx","../src/components/dialog/dialog.tsx","../src/components/dialog/dialog-modal.tsx","../src/components/dialog/variants.tsx"],"names":["React","MwThemeMode","React3","React4","ThemeMode","jsx","useEffect","React5","jsxs","React6","React7","cx","hasTextContent","React8","buildInputFieldA11yIds","getInitialSelectValue","React9","Fragment","IconName","resolveSelectMode","React10","React11","createAvatarRecipe","createPurposeSemanticAttributes","React12","React13","hasContent","React14","React15","React16","headingRecipe","React17","React18","React19","React20","React21","React22","React23","React24","React25","React26","React27","React28","React29","handleKeyDown"],"mappings":"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","file":"index.js","sourcesContent":["import type { ResolvedTheme, ThemeMode, ThemePreference } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\nexport type MarwesContextValue = {\n theme: ResolvedTheme\n mode: ThemeMode\n preference: ThemePreference\n systemMode: ThemeMode\n setMode: (mode: ThemeMode) => void\n setPreference: (preference: ThemePreference) => void\n toggleMode: () => void\n}\n\nexport const MarwesContext = React.createContext<MarwesContextValue | null>(null)\n","import type { FontLoadingConfig, ResolvedTheme } from \"@marwes-ui/core\"\nimport {\n buildGoogleFontsUrl,\n extractFontFamilyName,\n extractUsedWeights,\n shouldLoadGoogleFont,\n themeToCSSVars,\n} from \"@marwes-ui/core\"\n\nconst loadedFonts = new Set<string>()\nlet preconnected = false\n\nexport function themeToRootStyle(theme: ResolvedTheme): Record<string, string> {\n return {\n ...themeToCSSVars(theme),\n backgroundColor: theme.color.background,\n color: theme.color.text,\n }\n}\n\nexport function applyThemeToElement(element: HTMLElement, theme: ResolvedTheme): void {\n element.setAttribute(\"data-marwes-theme\", \"true\")\n element.setAttribute(\"data-marwes-mode\", theme.mode)\n\n for (const [property, value] of Object.entries(themeToRootStyle(theme))) {\n if (property === \"backgroundColor\") {\n element.style.backgroundColor = value\n continue\n }\n\n element.style.setProperty(property, value)\n }\n}\n\nfunction ensureFontPreconnect(): void {\n if (preconnected || typeof document === \"undefined\") return\n\n preconnected = true\n\n for (const href of [\"https://fonts.googleapis.com\", \"https://fonts.gstatic.com\"]) {\n const linkElement = document.createElement(\"link\")\n linkElement.rel = \"preconnect\"\n linkElement.href = href\n\n if (href.includes(\"gstatic\")) {\n linkElement.crossOrigin = \"anonymous\"\n }\n\n document.head.appendChild(linkElement)\n }\n}\n\nfunction loadGoogleFontToDocument(family: string, weights: number[]): void {\n if (typeof document === \"undefined\") return\n\n const cacheKey = `${family}:${weights.join(\",\")}`\n if (loadedFonts.has(cacheKey)) return\n\n loadedFonts.add(cacheKey)\n ensureFontPreconnect()\n\n const linkElement = document.createElement(\"link\")\n linkElement.rel = \"stylesheet\"\n linkElement.href = buildGoogleFontsUrl(family, weights)\n linkElement.dataset.marwesFont = family\n document.head.appendChild(linkElement)\n}\n\nexport function loadThemeFonts(theme: ResolvedTheme, config: FontLoadingConfig = \"auto\"): void {\n const weights = extractUsedWeights(theme.typography)\n const fontStacks = [theme.font.primary, theme.font.secondary]\n\n for (const fontStack of fontStacks) {\n const familyName = extractFontFamilyName(fontStack)\n\n if (familyName && shouldLoadGoogleFont(familyName, config)) {\n loadGoogleFontToDocument(familyName, weights)\n }\n }\n}\n\nexport function resetThemeRuntimeState(): void {\n loadedFonts.clear()\n preconnected = false\n}\n","import { ThemeMode, isThemePreference } from \"@marwes-ui/core\"\nimport type { ThemePreference } from \"@marwes-ui/core\"\n\nconst mediaQuery = \"(prefers-color-scheme: dark)\"\n\nexport type ThemeTarget = \"provider\" | \"html\" | \"body\"\nexport type ThemeAttribute = \"class\" | \"data-theme\" | \"data-mode\"\n\nexport function getSystemThemeMode(): ThemeMode {\n if (typeof window === \"undefined\") return ThemeMode.light\n return window.matchMedia?.(mediaQuery).matches ? ThemeMode.dark : ThemeMode.light\n}\n\nexport function subscribeToSystemThemeMode(onChange: (mode: ThemeMode) => void): () => void {\n if (typeof window === \"undefined\" || !window.matchMedia) return () => {}\n\n const media = window.matchMedia(mediaQuery)\n const listener = (event: MediaQueryListEvent) => {\n onChange(event.matches ? ThemeMode.dark : ThemeMode.light)\n }\n\n if (media.addEventListener) {\n media.addEventListener(\"change\", listener)\n } else {\n media.addListener?.(listener)\n }\n\n return () => {\n if (media.removeEventListener) {\n media.removeEventListener(\"change\", listener)\n } else {\n media.removeListener?.(listener)\n }\n }\n}\n\nexport function readStoredThemePreference(storageKey: string | false): ThemePreference | undefined {\n if (!storageKey || typeof window === \"undefined\") return undefined\n\n try {\n const value = window.localStorage.getItem(storageKey)\n return isThemePreference(value) ? value : undefined\n } catch {\n return undefined\n }\n}\n\nexport function writeStoredThemePreference(\n storageKey: string | false,\n preference: ThemePreference,\n): void {\n if (!storageKey || typeof window === \"undefined\") return\n\n try {\n window.localStorage.setItem(storageKey, preference)\n } catch {\n // Ignore unavailable storage.\n }\n}\n\nexport function applyModeAttribute({\n target,\n providerElement,\n mode,\n attribute,\n}: {\n target: ThemeTarget\n providerElement: HTMLElement | null\n mode: ThemeMode\n attribute: ThemeAttribute\n}): void {\n const element = getTargetElement(target, providerElement)\n if (!element) return\n\n if (attribute === \"class\") {\n const oppositeMode = mode === ThemeMode.dark ? ThemeMode.light : ThemeMode.dark\n element.classList.remove(oppositeMode)\n element.classList.add(mode)\n return\n }\n\n element.setAttribute(attribute, mode)\n}\n\nexport function withoutModeTransitions(callback: () => void): void {\n if (typeof document === \"undefined\" || typeof window === \"undefined\") {\n callback()\n return\n }\n\n const style = document.createElement(\"style\")\n style.dataset.marwesDisableTransitions = \"true\"\n style.textContent = \"* { transition: none !important; }\"\n document.head.appendChild(style)\n\n callback()\n window.getComputedStyle(document.body)\n window.requestAnimationFrame(() => {\n style.remove()\n })\n}\n\nfunction getTargetElement(\n target: ThemeTarget,\n providerElement: HTMLElement | null,\n): HTMLElement | null {\n if (target === \"provider\") return providerElement\n if (typeof document === \"undefined\") return null\n return target === \"html\" ? document.documentElement : document.body\n}\n","import type {\n FontLoadingConfig,\n ResolvedTheme,\n ThemeInput,\n ThemeMode,\n ThemePreference,\n ThemeVariableStrategy,\n} from \"@marwes-ui/core\"\nimport {\n ThemeMode as MwThemeMode,\n nextThemeMode,\n resolveThemeInput,\n resolveThemePreference,\n} from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { MarwesContext } from \"./marwes-context\"\nimport { applyThemeToElement, loadThemeFonts, themeToRootStyle } from \"./runtime-theme\"\nimport {\n applyModeAttribute,\n getSystemThemeMode,\n readStoredThemePreference,\n subscribeToSystemThemeMode,\n withoutModeTransitions,\n writeStoredThemePreference,\n} from \"./theme-mode-runtime\"\nimport type { ThemeAttribute, ThemeTarget } from \"./theme-mode-runtime\"\n\nexport type MarwesProviderProps = {\n theme?: ThemeInput\n defaultPreference?: ThemePreference\n preference?: ThemePreference\n defaultMode?: ThemeMode\n mode?: ThemeMode\n fontLoading?: FontLoadingConfig\n onPreferenceChange?: (preference: ThemePreference) => void\n onModeChange?: (mode: ThemeMode) => void\n storageKey?: string | false\n enableSystem?: boolean\n target?: ThemeTarget\n attribute?: ThemeAttribute\n disableTransitionOnChange?: boolean\n variableStrategy?: ThemeVariableStrategy\n children: React.ReactNode\n}\n\nexport function MarwesProvider({\n theme,\n defaultPreference,\n preference: controlledPreference,\n defaultMode,\n mode: controlledMode,\n fontLoading = \"auto\",\n onPreferenceChange,\n onModeChange,\n storageKey = false,\n enableSystem = true,\n target = \"provider\",\n attribute = \"class\",\n disableTransitionOnChange = false,\n variableStrategy = \"inline\",\n children,\n}: MarwesProviderProps) {\n const rootRef = React.useRef<HTMLDivElement>(null)\n const [internalPreference, setInternalPreference] = React.useState<ThemePreference>(\n defaultPreference ?? defaultMode ?? MwThemeMode.light,\n )\n const [systemMode, setSystemMode] = React.useState<ThemeMode>(() =>\n enableSystem ? getSystemThemeMode() : MwThemeMode.light,\n )\n\n const activePreference =\n controlledPreference ?? controlledMode ?? theme?.mode ?? internalPreference\n const activeMode = resolveThemePreference(activePreference, systemMode)\n const isPreferenceControlled =\n controlledPreference !== undefined || controlledMode !== undefined || theme?.mode !== undefined\n\n React.useEffect(() => {\n const storedPreference = readStoredThemePreference(storageKey)\n if (storedPreference !== undefined && !isPreferenceControlled) {\n setInternalPreference(storedPreference)\n }\n }, [isPreferenceControlled, storageKey])\n\n React.useEffect(() => {\n if (!enableSystem) {\n setSystemMode(MwThemeMode.light)\n return\n }\n\n setSystemMode(getSystemThemeMode())\n\n if (activePreference !== \"system\") {\n return\n }\n\n return subscribeToSystemThemeMode(setSystemMode)\n }, [activePreference, enableSystem])\n\n const setPreference = React.useCallback(\n (nextPreference: ThemePreference) => {\n if (!isPreferenceControlled) {\n setInternalPreference(nextPreference)\n }\n\n writeStoredThemePreference(storageKey, nextPreference)\n onPreferenceChange?.(nextPreference)\n },\n [isPreferenceControlled, onPreferenceChange, storageKey],\n )\n\n const setMode = React.useCallback(\n (nextMode: ThemeMode) => {\n setPreference(nextMode)\n onModeChange?.(nextMode)\n },\n [onModeChange, setPreference],\n )\n\n const toggleMode = React.useCallback(() => {\n setMode(nextThemeMode(activeMode))\n }, [activeMode, setMode])\n\n const resolved: ResolvedTheme = React.useMemo(\n () => resolveThemeInput({ ...(theme ?? {}), mode: activeMode }),\n [activeMode, theme],\n )\n const rootStyle = React.useMemo(() => {\n if (variableStrategy === \"style-tag\") return undefined\n return themeToRootStyle(resolved) as React.CSSProperties\n }, [resolved, variableStrategy])\n\n React.useEffect(() => {\n if (variableStrategy === \"style-tag\") return\n if (rootRef.current) {\n applyThemeToElement(rootRef.current, resolved)\n }\n }, [resolved, variableStrategy])\n\n React.useEffect(() => {\n if (target === \"provider\") return\n\n const apply = () => {\n applyModeAttribute({\n target,\n providerElement: rootRef.current,\n mode: activeMode,\n attribute,\n })\n }\n\n if (disableTransitionOnChange) {\n withoutModeTransitions(apply)\n return\n }\n\n apply()\n }, [activeMode, attribute, disableTransitionOnChange, target])\n\n React.useEffect(() => {\n loadThemeFonts(resolved, fontLoading)\n }, [resolved, fontLoading])\n\n const contextValue = React.useMemo(\n () => ({\n theme: resolved,\n mode: activeMode,\n preference: activePreference,\n systemMode,\n setMode,\n setPreference,\n toggleMode,\n }),\n [activeMode, activePreference, resolved, setMode, setPreference, systemMode, toggleMode],\n )\n\n return (\n <MarwesContext.Provider value={contextValue}>\n <div\n ref={rootRef}\n className={`mw-theme--${resolved.mode}`}\n data-marwes-theme=\"true\"\n data-marwes-mode={resolved.mode}\n style={rootStyle}\n >\n {children}\n </div>\n </MarwesContext.Provider>\n )\n}\n","import type { ResolvedTheme } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { MarwesContext } from \"./marwes-context\"\n\nexport function useTheme(): ResolvedTheme {\n const ctx = React.useContext(MarwesContext)\n if (!ctx) {\n throw new Error(\"MarwesProvider is missing. Wrap your app in <MarwesProvider />.\")\n }\n return ctx.theme\n}\n","import { ThemeMode } from \"@marwes-ui/core\"\nimport type { ThemePreference } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { MarwesContext } from \"./marwes-context\"\n\nexport type ThemeModeContextValue = {\n mode: ThemeMode\n preference: ThemePreference\n systemMode: ThemeMode\n setMode: (mode: ThemeMode) => void\n setPreference: (preference: ThemePreference) => void\n toggleMode: () => void\n isDark: boolean\n isLight: boolean\n isSystem: boolean\n}\n\nexport function useThemeMode(): ThemeModeContextValue {\n const ctx = React.useContext(MarwesContext)\n\n if (!ctx) {\n throw new Error(\"MarwesProvider is missing. Wrap your app in <MarwesProvider />.\")\n }\n\n return {\n mode: ctx.mode,\n preference: ctx.preference,\n systemMode: ctx.systemMode,\n setMode: ctx.setMode,\n setPreference: ctx.setPreference,\n toggleMode: ctx.toggleMode,\n isDark: ctx.mode === ThemeMode.dark,\n isLight: ctx.mode === ThemeMode.light,\n isSystem: ctx.preference === \"system\",\n }\n}\n","import {\n type IconSize,\n type IconStrokeWidth,\n iconRegistry,\n resolveIconA11y,\n resolveIconSize,\n resolveIconStrokeWidth,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\ntype IconName = keyof typeof iconRegistry\n\nexport type IconProps = {\n name: IconName\n\n /**\n * Icon scale token (\"xs\"|\"sm\"|\"md\"|\"lg\") or an explicit pixel size.\n * Defaults to system.theme.icon.size\n */\n size?: IconSize | number\n\n /**\n * Stroke-width token (\"xs\"|\"sm\"|\"md\"|\"lg\") or an explicit numeric stroke width.\n * Defaults to system.theme.icon.strokeWidth\n */\n strokeWidth?: IconStrokeWidth | number\n\n /**\n * Common props\n */\n className?: string\n \"aria-label\"?: string\n decorative?: boolean\n}\n\nexport function Icon({\n name,\n size,\n strokeWidth,\n className,\n \"aria-label\": ariaLabel,\n decorative,\n}: IconProps) {\n const px = resolveIconSize(size ?? \"sm\")\n const sw = resolveIconStrokeWidth(strokeWidth ?? \"md\")\n\n const def = iconRegistry[name]\n const a11y = resolveIconA11y({\n ...(ariaLabel !== undefined ? { ariaLabel } : {}),\n ...(decorative !== undefined ? { decorative } : {}),\n })\n\n return (\n <svg\n width={px}\n height={px}\n viewBox={def.viewBox}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={sw}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden={a11y.ariaHidden ? \"true\" : undefined}\n aria-label={a11y.ariaLabel}\n role={a11y.role}\n focusable=\"false\"\n >\n {def.nodes.map((iconNode, nodeIndex) => {\n const TagName = iconNode.tag\n // biome-ignore lint/suspicious/noArrayIndexKey: Icon nodes are static and never reordered\n return <TagName key={nodeIndex} {...(iconNode.attrs as React.SVGAttributes<SVGElement>)} />\n })}\n </svg>\n )\n}\n","import {\n type CssVars,\n type SpinnerOptions,\n type SpinnerSvgNode,\n createSpinnerRecipe,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface SpinnerProps\n extends SpinnerOptions,\n Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n dataAttributes?: Record<string, string>\n}\n\nfunction renderSpinnerSvgNode(\n spinnerSvgNode: SpinnerSvgNode,\n nodeIndex: number,\n): React.ReactElement {\n const TagName = spinnerSvgNode.tag\n\n return <TagName key={nodeIndex} {...(spinnerSvgNode.attrs as React.SVGAttributes<SVGElement>)} />\n}\n\nexport function Spinner(props: SpinnerProps): React.ReactElement {\n const {\n className,\n style,\n dataAttributes,\n variant,\n size,\n decorative,\n ariaLabel,\n id,\n ...nativeSpanProps\n } = props\n\n const resolvedAriaLabel =\n ariaLabel ??\n (typeof nativeSpanProps[\"aria-label\"] === \"string\"\n ? (nativeSpanProps[\"aria-label\"] as string)\n : undefined)\n\n const spinnerOptions: SpinnerOptions = {\n ...(variant !== undefined ? { variant } : {}),\n ...(size !== undefined ? { size } : {}),\n ...(decorative !== undefined ? { decorative } : {}),\n ...(resolvedAriaLabel !== undefined ? { ariaLabel: resolvedAriaLabel } : {}),\n ...(id !== undefined ? { id } : {}),\n }\n\n const renderKit = createSpinnerRecipe(spinnerOptions)\n const mergedClassName = [renderKit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(renderKit.vars as StyleWithVars), ...style }\n\n return (\n <span\n {...nativeSpanProps}\n {...renderKit.dataAttributes}\n {...dataAttributes}\n className={mergedClassName}\n style={mergedStyle}\n role={renderKit.a11y.role}\n id={renderKit.a11y.id}\n aria-hidden={renderKit.a11y.ariaHidden ? \"true\" : undefined}\n aria-label={renderKit.a11y.ariaLabel}\n aria-live={renderKit.a11y.ariaLive}\n >\n <svg\n className=\"mw-spinner__svg\"\n viewBox={renderKit.svg.viewBox}\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n {renderKit.svg.nodes.map(renderSpinnerSvgNode)}\n </svg>\n </span>\n )\n}\n","import type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Spinner, type SpinnerProps } from \"./spinner\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type ButtonSpinnerProps = SpinnerProps & {\n inverted?: boolean\n}\n\nexport function ButtonSpinner(props: ButtonSpinnerProps): React.ReactElement {\n const { inverted = false, style, dataAttributes, ...spinnerProps } = props\n\n const spinnerStyle: StyleWithVars = {\n \"--mw-spinner-track-color\": inverted\n ? \"color-mix(in srgb, currentColor 80%, transparent)\"\n : \"color-mix(in srgb, currentColor 35%, transparent)\",\n \"--mw-spinner-indicator-color\": \"currentColor\",\n ...(style as StyleWithVars | undefined),\n }\n\n return (\n <Spinner\n {...spinnerProps}\n variant={props.variant ?? \"classic\"}\n size={props.size ?? \"xs\"}\n decorative={props.decorative ?? true}\n style={spinnerStyle}\n dataAttributes={{\n ...dataAttributes,\n \"data-purpose\": \"button-loading\",\n \"data-context\": \"button-loading\",\n }}\n />\n )\n}\n\nexport type EmptyStateSpinnerProps = SpinnerProps\n\nexport function EmptyStateSpinner(props: EmptyStateSpinnerProps): React.ReactElement {\n return (\n <Spinner\n {...props}\n variant={props.variant ?? \"dots-round\"}\n size={props.size ?? \"lg\"}\n decorative={props.decorative ?? true}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"empty-state\",\n \"data-context\": \"empty-state\",\n }}\n />\n )\n}\n","import type { ButtonOptions, ButtonVariant, CssVars } from \"@marwes-ui/core\"\nimport { createButtonRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { ButtonSpinner } from \"../spinner\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nfunction isFilledButtonVariant(variant: ButtonVariant): boolean {\n return variant === \"primary\" || variant === \"success\"\n}\n\nexport type ButtonProps = ButtonOptions & {\n children?: React.ReactNode\n onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void\n className?: string\n}\n\nexport function Button(props: ButtonProps) {\n const kit = createButtonRecipe(props)\n\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n\n const resolvedVariant = (props.variant ?? \"primary\") as ButtonVariant\n const resolvedLoading = kit.loading\n const visibleLabel =\n resolvedLoading.isLoading && resolvedLoading.loadingLabel !== undefined\n ? resolvedLoading.loadingLabel\n : props.children\n\n const content = (\n <>\n {resolvedLoading.isLoading ? (\n <ButtonSpinner\n variant={resolvedLoading.spinnerVariant}\n inverted={isFilledButtonVariant(resolvedVariant)}\n />\n ) : props.iconLeft ? (\n <Icon name={props.iconLeft} size=\"xs\" strokeWidth=\"sm\" decorative />\n ) : null}\n {visibleLabel}\n {!resolvedLoading.isLoading && props.iconRight ? (\n <Icon name={props.iconRight} size=\"xs\" strokeWidth=\"sm\" decorative />\n ) : null}\n </>\n )\n\n if (kit.tag === \"button\") {\n return (\n <button\n type={kit.a11y.type}\n disabled={kit.a11y.disabled}\n aria-label={kit.a11y.ariaLabel}\n aria-busy={kit.a11y.ariaBusy}\n aria-disabled={kit.a11y.ariaDisabled}\n aria-pressed={kit.a11y.ariaPressed}\n aria-expanded={kit.a11y.ariaExpanded}\n aria-controls={kit.a11y.ariaControls}\n title={kit.a11y.title}\n className={className}\n style={style}\n onClick={(e) => props.onClick?.(e)}\n {...kit.dataAttributes}\n >\n {content}\n </button>\n )\n }\n\n return (\n <a\n href={kit.a11y.href}\n role={kit.a11y.role}\n tabIndex={kit.a11y.tabIndex}\n aria-label={kit.a11y.ariaLabel}\n aria-busy={kit.a11y.ariaBusy}\n aria-disabled={kit.a11y.ariaDisabled}\n aria-pressed={kit.a11y.ariaPressed}\n aria-expanded={kit.a11y.ariaExpanded}\n aria-controls={kit.a11y.ariaControls}\n title={kit.a11y.title}\n className={className}\n style={style}\n onClick={(e) => {\n if (kit.blockClick) {\n e.preventDefault()\n return\n }\n props.onClick?.(e)\n }}\n {...kit.dataAttributes}\n >\n {content}\n </a>\n )\n}\n","import {\n ButtonAction,\n ButtonVariant,\n IconName,\n createPurposeSemanticAttributes,\n} from \"@marwes-ui/core\"\nimport { Button, type ButtonProps } from \"./button\"\n\ntype PurposeButtonForbiddenProp = \"variant\" | \"action\" | \"as\"\ntype ButtonPropKey = keyof ButtonProps\n\nfunction isDevelopmentEnvironment(): boolean {\n const nodeProcess = (\n globalThis as unknown as {\n process?: { env?: Record<string, string | undefined> }\n }\n ).process\n\n const nodeEnv = nodeProcess?.env?.NODE_ENV\n if (nodeEnv) {\n return nodeEnv !== \"production\"\n }\n\n const meta = import.meta as unknown as {\n env?: { MODE?: string; PROD?: boolean }\n }\n\n if (typeof meta.env?.PROD === \"boolean\") {\n return !meta.env.PROD\n }\n\n if (meta.env?.MODE) {\n return meta.env.MODE !== \"production\"\n }\n\n return true\n}\n\nfunction warnForForbiddenPurposeProps(\n componentName: string,\n rawProps: Partial<ButtonProps>,\n forbiddenProps: readonly PurposeButtonForbiddenProp[],\n): void {\n if (!isDevelopmentEnvironment()) {\n return\n }\n\n const warningByProp: Record<PurposeButtonForbiddenProp, string> = {\n variant: \"Use Button if you need a custom visual treatment.\",\n action: \"Use Button if you need a custom semantic action.\",\n as: \"Use Button if you need a custom element mode.\",\n }\n\n for (const forbiddenProp of forbiddenProps) {\n if (!Object.prototype.hasOwnProperty.call(rawProps, forbiddenProp)) {\n continue\n }\n\n console.warn(\n `[marwes] ${componentName} does not support \\`${forbiddenProp}\\`. ${warningByProp[forbiddenProp]}`,\n )\n }\n}\n\nfunction omitButtonProps(\n rawProps: Partial<ButtonProps>,\n omittedKeys: readonly ButtonPropKey[],\n): ButtonProps {\n const forwardedProps: Partial<ButtonProps> = { ...rawProps }\n\n for (const omittedKey of omittedKeys) {\n delete forwardedProps[omittedKey]\n }\n\n return forwardedProps as ButtonProps\n}\n\nfunction createPurposeButtonDataAttributes(\n purpose: Parameters<typeof createPurposeSemanticAttributes>[0],\n existingDataAttributes: ButtonProps[\"dataAttributes\"],\n localDataAttributes: ButtonProps[\"dataAttributes\"] = {},\n): Record<string, string | boolean | undefined> {\n return {\n ...existingDataAttributes,\n ...createPurposeSemanticAttributes(purpose),\n ...localDataAttributes,\n }\n}\n\n/**\n * Purpose Components — Button\n *\n * Pre-configured button compositions that encode a specific semantic purpose.\n * Purpose buttons lock semantic intent and canonical visual treatment.\n */\n\n// ============================================================================\n// DESTRUCTIVE BUTTON - Destructive Actions\n// ============================================================================\n\nexport type DestructiveButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\" | \"href\"> & {\n /**\n * Override automatic confirmation requirement.\n * Defaults to `true` for destructive actions.\n */\n confirmation?: boolean\n}\n\nexport function DestructiveButton(props: DestructiveButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"DestructiveButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\", \"href\"])\n const confirmation = props.confirmation ?? true\n\n return (\n <Button\n {...forwardedProps}\n as=\"button\"\n variant={ButtonVariant.primary}\n action={ButtonAction.delete}\n error\n confirmation={confirmation}\n dataAttributes={createPurposeButtonDataAttributes(\n \"destructive\",\n forwardedProps.dataAttributes,\n {\n \"data-confirmation-required\": confirmation ? \"true\" : \"false\",\n },\n )}\n />\n )\n}\n\n// ============================================================================\n// CREATE BUTTON - Creation Actions\n// ============================================================================\n\nexport type CreateButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function CreateButton(props: CreateButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"CreateButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.create}\n variant={ButtonVariant.primary}\n dataAttributes={createPurposeButtonDataAttributes(\"create\", forwardedProps.dataAttributes, {\n \"data-creative\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// SUBMIT BUTTON - Form Submissions\n// ============================================================================\n\nexport type SubmitButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\" | \"href\">\n\nexport function SubmitButton(props: SubmitButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"SubmitButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\", \"href\"])\n\n return (\n <Button\n {...forwardedProps}\n as=\"button\"\n action={ButtonAction.submit}\n variant={ButtonVariant.primary}\n dataAttributes={createPurposeButtonDataAttributes(\"submit\", forwardedProps.dataAttributes)}\n />\n )\n}\n\n// ============================================================================\n// CANCEL BUTTON - Cancel/Reset Actions\n// ============================================================================\n\nexport type CancelButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function CancelButton(props: CancelButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"CancelButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.cancel}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"cancel\", forwardedProps.dataAttributes, {\n \"data-cancel\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// LINK BUTTON - Navigation Actions\n// ============================================================================\n\nexport type LinkButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\"> & {\n href: string\n}\n\nexport function LinkButton(props: LinkButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"LinkButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\"])\n\n return (\n <Button\n {...forwardedProps}\n as=\"a\"\n action={ButtonAction.navigate}\n variant={ButtonVariant.text}\n dataAttributes={createPurposeButtonDataAttributes(\n \"navigation\",\n forwardedProps.dataAttributes,\n {\n \"data-navigation\": \"true\",\n },\n )}\n />\n )\n}\n\n// ============================================================================\n// SAVE BUTTON - Save/Persist Actions\n// ============================================================================\n\nexport type SaveButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function SaveButton(props: SaveButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"SaveButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.submit}\n variant={ButtonVariant.primary}\n dataAttributes={createPurposeButtonDataAttributes(\"save\", forwardedProps.dataAttributes, {\n \"data-persist\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// CONFIRM BUTTON - Positive Confirmation Actions\n// ============================================================================\n\nexport type ConfirmButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\" | \"href\">\n\nexport function ConfirmButton(props: ConfirmButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"ConfirmButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\", \"href\"])\n\n return (\n <Button\n {...forwardedProps}\n as=\"button\"\n action={ButtonAction.button}\n variant={ButtonVariant.success}\n dataAttributes={createPurposeButtonDataAttributes(\"confirm\", forwardedProps.dataAttributes)}\n />\n )\n}\n\n// ============================================================================\n// VERIFY BUTTON - Positive Verification Actions\n// ============================================================================\n\nexport type VerifyButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\" | \"href\">\n\nexport function VerifyButton(props: VerifyButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"VerifyButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\", \"href\"])\n\n return (\n <Button\n {...forwardedProps}\n as=\"button\"\n action={ButtonAction.button}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.CheckCircle}\n dataAttributes={createPurposeButtonDataAttributes(\"verify\", forwardedProps.dataAttributes, {\n \"data-verification\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// EDIT BUTTON - Edit/Modify Actions\n// ============================================================================\n\nexport type EditButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function EditButton(props: EditButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"EditButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.edit}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.Edit}\n dataAttributes={createPurposeButtonDataAttributes(\"edit\", forwardedProps.dataAttributes, {\n \"data-edit\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// CLOSE BUTTON - Close/Dismiss Actions\n// ============================================================================\n\nexport type CloseButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function CloseButton(props: CloseButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"CloseButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.cancel}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"close\", forwardedProps.dataAttributes, {\n \"data-close\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// REFRESH BUTTON - Refresh/Reload Actions\n// ============================================================================\n\nexport type RefreshButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function RefreshButton(props: RefreshButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"RefreshButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.neutral}\n iconRight={forwardedProps.iconRight ?? IconName.RefreshCw}\n dataAttributes={createPurposeButtonDataAttributes(\"refresh\", forwardedProps.dataAttributes, {\n \"data-refresh\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// WAVE 2 UTILITY BUTTONS - Upload/Download/Search Utilities\n// ============================================================================\n\nexport type UploadButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function UploadButton(props: UploadButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"UploadButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.Upload}\n dataAttributes={createPurposeButtonDataAttributes(\"upload\", forwardedProps.dataAttributes, {\n \"data-transfer\": \"upload\",\n })}\n />\n )\n}\n\nexport type DownloadButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function DownloadButton(props: DownloadButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"DownloadButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.Download}\n dataAttributes={createPurposeButtonDataAttributes(\"download\", forwardedProps.dataAttributes, {\n \"data-transfer\": \"download\",\n })}\n />\n )\n}\n\nexport type CopyButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function CopyButton(props: CopyButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"CopyButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"copy\", forwardedProps.dataAttributes, {\n \"data-copy\": \"true\",\n })}\n />\n )\n}\n\nexport type SearchButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function SearchButton(props: SearchButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"SearchButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.primary}\n iconRight={forwardedProps.iconRight ?? IconName.Search}\n dataAttributes={createPurposeButtonDataAttributes(\"search\", forwardedProps.dataAttributes, {\n \"data-search\": \"true\",\n })}\n />\n )\n}\n\nexport type FilterButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function FilterButton(props: FilterButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"FilterButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"filter\", forwardedProps.dataAttributes, {\n \"data-filter\": \"true\",\n })}\n />\n )\n}\n\nexport type SortButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function SortButton(props: SortButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"SortButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"sort\", forwardedProps.dataAttributes, {\n \"data-sort\": \"true\",\n })}\n />\n )\n}\n\nexport type DropdownButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function DropdownButton(props: DropdownButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"DropdownButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.ChevronDown}\n dataAttributes={createPurposeButtonDataAttributes(\"dropdown\", forwardedProps.dataAttributes, {\n \"data-dropdown\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// PRIMARY BUTTON - General Actions\n// ============================================================================\n\nexport type PrimaryButtonProps = Omit<ButtonProps, \"variant\" | \"as\"> & {}\n\nexport function PrimaryButton(props: PrimaryButtonProps) {\n return <Button {...props} variant=\"primary\" as=\"button\" />\n}\n\n// ============================================================================\n// SECONDARY BUTTON - General Actions\n// ============================================================================\n\nexport type SecondaryButtonProps = Omit<ButtonProps, \"variant\" | \"as\"> & {}\n\nexport function SecondaryButton(props: SecondaryButtonProps) {\n return <Button {...props} variant=\"secondary\" as=\"button\" />\n}\n\n// ============================================================================\n// TEXT BUTTON - General Actions\n// ============================================================================\n\nexport type TextButtonProps = Omit<ButtonProps, \"variant\" | \"as\"> & {}\n\nexport function TextButton(props: TextButtonProps) {\n return <Button {...props} variant=\"text\" as=\"button\" />\n}\n\n// ============================================================================\n// SUCCESS BUTTON - Positive Confirmation Actions\n// ============================================================================\n\nexport type SuccessButtonProps = Omit<ButtonProps, \"variant\" | \"as\"> & {}\n\nexport function SuccessButton(props: SuccessButtonProps) {\n return (\n <Button\n {...props}\n variant=\"success\"\n as=\"button\"\n dataAttributes={createPurposeButtonDataAttributes(\"success\", props.dataAttributes)}\n />\n )\n}\n","import { useEffect } from \"react\"\n\nconst RENDERKIT_EVENT = \"marwes/renderkit/renderkit-update\"\nconst RENDERKIT_DEBUG_FLAG = \"__MARWES_RENDERKIT_DEBUG__\"\n\nfunction isRenderKitDebugEnabled(): boolean {\n if (typeof window === \"undefined\") {\n return false\n }\n\n const renderKitDebugWindow = window as Window & {\n [RENDERKIT_DEBUG_FLAG]?: boolean\n }\n\n return renderKitDebugWindow[RENDERKIT_DEBUG_FLAG] === true\n}\n\nexport function useRenderKitDebug(renderKit: unknown, componentName: string) {\n useEffect(() => {\n if (!isRenderKitDebugEnabled()) {\n return\n }\n\n const event = new CustomEvent(RENDERKIT_EVENT, {\n detail: {\n ...(renderKit as Record<string, unknown>),\n _meta: { component: componentName },\n },\n })\n\n window.dispatchEvent(event)\n }, [renderKit, componentName])\n}\n","import type { CssVars, InputOptions } from \"@marwes-ui/core\"\nimport { createInputRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type InputProps = InputOptions & {\n onValueChange?: (value: string) => void\n className?: string\n}\n\nexport function Input(props: InputProps) {\n const kit = createInputRecipe(props)\n\n // Debug hook for Storybook RenderKit addon\n useRenderKitDebug(kit, \"Input\")\n\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n props.onValueChange?.(e.target.value)\n }\n\n return (\n <input\n className={className}\n style={style}\n id={kit.a11y.id}\n name={kit.a11y.name}\n type={kit.a11y.type}\n inputMode={kit.a11y.inputMode}\n autoComplete={kit.a11y.autoComplete}\n placeholder={kit.a11y.placeholder}\n disabled={kit.a11y.disabled}\n readOnly={kit.a11y.readOnly}\n required={kit.a11y.required}\n aria-label={kit.a11y.ariaLabel}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-describedby={kit.a11y.ariaDescribedBy}\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={handleChange}\n />\n )\n}\n","import type * as React from \"react\"\n\nexport type SelectArrowIconProps = {\n className?: string\n}\n\nexport function SelectArrowIcon(props: SelectArrowIconProps): React.ReactElement {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M11.5288 5.52876C11.7891 5.26841 12.2111 5.26841 12.4715 5.52876C12.7318 5.78911 12.7318 6.21114 12.4715 6.47147L8.47148 10.4715C8.21115 10.7318 7.78912 10.7318 7.52877 10.4715L3.52876 6.47147C3.26841 6.21112 3.26841 5.78911 3.52876 5.52876C3.78911 5.26841 4.21112 5.26841 4.47147 5.52876L6.58591 7.6432C7.36696 8.42425 8.63329 8.42425 9.41434 7.6432L11.5288 5.52876Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n","import type {\n SelectAppearance as CoreSelectAppearance,\n SelectOption as CoreSelectOption,\n CssVars,\n SelectOptions,\n} from \"@marwes-ui/core\"\nimport { createSelectRecipe, resolveSelectMode } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\nimport { SelectArrowIcon } from \"./select-arrow-icon\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type SelectAppearance = CoreSelectAppearance\nexport type SelectOption = CoreSelectOption\n\nexport type SelectProps = SelectOptions & {\n onValueChange?: (value: string) => void\n className?: string\n}\n\nfunction getInitialSelectValue(props: SelectProps): string {\n if (props.value !== undefined) {\n return props.value\n }\n\n if (props.defaultValue !== undefined) {\n return props.defaultValue\n }\n\n if (props.placeholder !== undefined) {\n return \"\"\n }\n\n return props.options[0]?.value ?? \"\"\n}\n\nexport function Select(props: SelectProps) {\n const kit = createSelectRecipe(props)\n const mode = resolveSelectMode(props)\n const isControlled = props.value !== undefined\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() =>\n getInitialSelectValue(props),\n )\n\n useRenderKitDebug(kit, \"Select\")\n\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n const value = isControlled ? (props.value ?? \"\") : uncontrolledValue\n const hasPlaceholder = props.placeholder !== undefined\n const placeholderSelected = hasPlaceholder && value === \"\"\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const nextValue = e.target.value\n\n if (!isControlled) {\n setUncontrolledValue(nextValue)\n }\n\n props.onValueChange?.(nextValue)\n }\n\n const selectElement = (\n <select\n className={className}\n style={style}\n data-placeholder-selected={placeholderSelected ? \"true\" : undefined}\n id={kit.a11y.id}\n name={kit.a11y.name}\n disabled={kit.a11y.disabled}\n required={kit.a11y.required}\n aria-label={kit.a11y.ariaLabel}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-describedby={kit.a11y.ariaDescribedBy}\n value={value}\n onChange={handleChange}\n >\n {props.placeholder ? (\n <option value=\"\" disabled={props.required ? true : undefined}>\n {props.placeholder}\n </option>\n ) : null}\n {props.options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled ? true : undefined}\n >\n {option.label}\n </option>\n ))}\n </select>\n )\n\n if (mode === \"native\") {\n return selectElement\n }\n\n return (\n <span className=\"mw-select__control\">\n {selectElement}\n <SelectArrowIcon className=\"mw-select__control-icon\" />\n </span>\n )\n}\n","import type { CssVars, TextareaOptions } from \"@marwes-ui/core\"\nimport { createTextareaRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type TextareaProps = TextareaOptions & {\n onValueChange?: (value: string) => void\n className?: string\n}\n\nexport function Textarea(props: TextareaProps) {\n const kit = createTextareaRecipe(props)\n\n useRenderKitDebug(kit, \"Textarea\")\n\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n props.onValueChange?.(e.target.value)\n }\n\n return (\n <textarea\n className={className}\n style={style}\n id={kit.a11y.id}\n name={kit.a11y.name}\n inputMode={kit.a11y.inputMode}\n autoComplete={kit.a11y.autoComplete}\n placeholder={kit.a11y.placeholder}\n disabled={kit.a11y.disabled}\n readOnly={kit.a11y.readOnly}\n required={kit.a11y.required}\n rows={kit.a11y.rows}\n cols={kit.a11y.cols}\n aria-label={kit.a11y.ariaLabel}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-describedby={kit.a11y.ariaDescribedBy}\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={handleChange}\n />\n )\n}\n","import {\n createRichTextRecipe,\n isRichTextHtmlEmpty,\n normalizeRichTextHtml,\n resolveRichTextAllowedFormats,\n richTextCommandByFormat,\n} from \"@marwes-ui/core\"\nimport type { CssVars, RichTextFormat, RichTextOptions } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\nimport { Icon } from \"../icon\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type RichTextProps = RichTextOptions & {\n onValueChange?: (value: string) => void\n className?: string\n}\n\nconst formatLabels: Record<RichTextFormat, string> = {\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n}\n\ntype RichTextCommandDocument = Document & {\n execCommand?: (commandId: string) => boolean\n queryCommandState?: (commandId: string) => boolean\n}\n\nfunction getRichTextCommandDocument(): RichTextCommandDocument {\n return document as unknown as RichTextCommandDocument\n}\n\nfunction mergeRefs<T>(...refs: Array<React.Ref<T> | undefined>): (value: T | null) => void {\n return (value) => {\n for (const ref of refs) {\n if (!ref) continue\n\n if (typeof ref === \"function\") {\n ref(value)\n continue\n }\n ;(ref as React.MutableRefObject<T | null>).current = value\n }\n }\n}\n\nfunction isNodeWithinEditor(node: Node | null, editorElement: HTMLDivElement | null): boolean {\n if (!node || !editorElement) {\n return false\n }\n\n return editorElement.contains(node.nodeType === Node.TEXT_NODE ? node.parentNode : node)\n}\n\nfunction getActiveFormatsFromSelection(editorElement: HTMLDivElement | null): RichTextFormat[] {\n if (!editorElement || typeof window === \"undefined\" || typeof document === \"undefined\") {\n return []\n }\n\n const commandDocument = getRichTextCommandDocument()\n const selection = window.getSelection()\n const anchorNode = selection?.anchorNode ?? null\n\n if (!anchorNode || !isNodeWithinEditor(anchorNode, editorElement)) {\n return []\n }\n\n const activeFormats = new Set<RichTextFormat>()\n\n if (typeof commandDocument.queryCommandState === \"function\") {\n for (const format of Object.keys(richTextCommandByFormat) as RichTextFormat[]) {\n try {\n if (commandDocument.queryCommandState(richTextCommandByFormat[format])) {\n activeFormats.add(format)\n }\n } catch {\n // Ignore queryCommandState failures and fall back to DOM inspection below.\n }\n }\n }\n\n if (activeFormats.size > 0) {\n return Array.from(activeFormats)\n }\n\n let currentNode: Node | null =\n anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentNode : anchorNode\n\n while (currentNode && currentNode !== editorElement) {\n if (!(currentNode instanceof HTMLElement)) {\n currentNode = currentNode.parentNode\n continue\n }\n\n const tagName = currentNode.tagName.toLowerCase()\n\n if (tagName === \"strong\" || tagName === \"b\") activeFormats.add(\"bold\")\n if (tagName === \"em\" || tagName === \"i\") activeFormats.add(\"italic\")\n if (tagName === \"u\") activeFormats.add(\"underline\")\n\n currentNode = currentNode.parentNode\n }\n\n return Array.from(activeFormats)\n}\n\nfunction ensureEditorSelection(editorElement: HTMLDivElement): void {\n if (typeof window === \"undefined\") {\n return\n }\n\n editorElement.focus()\n\n const selection = window.getSelection()\n const anchorNode = selection?.anchorNode ?? null\n\n if (anchorNode && isNodeWithinEditor(anchorNode, editorElement)) {\n return\n }\n\n const range = document.createRange()\n range.selectNodeContents(editorElement)\n range.collapse(false)\n selection?.removeAllRanges()\n selection?.addRange(range)\n}\n\nfunction getFormatTagNames(format: RichTextFormat): string[] {\n if (format === \"bold\") return [\"strong\", \"b\"]\n if (format === \"italic\") return [\"em\", \"i\"]\n return [\"u\"]\n}\n\nfunction findNearestFormatElement(\n node: Node | null,\n editorElement: HTMLDivElement,\n format: RichTextFormat,\n): HTMLElement | null {\n const tagNames = getFormatTagNames(format)\n let currentNode: Node | null = node?.nodeType === Node.TEXT_NODE ? node.parentNode : node\n\n while (currentNode && currentNode !== editorElement) {\n if (\n currentNode instanceof HTMLElement &&\n tagNames.includes(currentNode.tagName.toLowerCase())\n ) {\n return currentNode\n }\n\n currentNode = currentNode.parentNode\n }\n\n return null\n}\n\nfunction exitActiveFormatAtCaret(editorElement: HTMLDivElement, format: RichTextFormat): boolean {\n if (typeof window === \"undefined\") {\n return false\n }\n\n const selection = window.getSelection()\n\n if (!selection || selection.rangeCount === 0) {\n return false\n }\n\n const range = selection.getRangeAt(0)\n const anchorNode = selection.anchorNode\n\n if (!range.collapsed || !anchorNode || !isNodeWithinEditor(anchorNode, editorElement)) {\n return false\n }\n\n const formatElement = findNearestFormatElement(anchorNode, editorElement, format)\n\n if (!formatElement || !formatElement.parentNode) {\n return false\n }\n\n const trailingRange = document.createRange()\n trailingRange.setStart(range.startContainer, range.startOffset)\n trailingRange.setEndAfter(formatElement)\n\n const trailingFragment = trailingRange.extractContents()\n const caretTextNode = document.createTextNode(\"\\u200B\")\n const parentNode = formatElement.parentNode\n parentNode.insertBefore(caretTextNode, formatElement.nextSibling)\n parentNode.insertBefore(trailingFragment, caretTextNode.nextSibling)\n\n if (formatElement.textContent?.replaceAll(\"\\u200B\", \"\").trim().length === 0) {\n formatElement.remove()\n }\n\n const nextRange = document.createRange()\n nextRange.setStart(caretTextNode, 1)\n nextRange.collapse(true)\n selection.removeAllRanges()\n selection.addRange(nextRange)\n\n return true\n}\n\nexport const RichText = React.forwardRef<HTMLDivElement, RichTextProps>((props, forwardedRef) => {\n const kit = createRichTextRecipe(props)\n const allowedFormats = React.useMemo(\n () => resolveRichTextAllowedFormats(props.allowedFormats),\n [props.allowedFormats],\n )\n const normalizedControlledValue = React.useMemo(\n () => normalizeRichTextHtml(props.value),\n [props.value],\n )\n const initialUncontrolledValue = React.useMemo(\n () => normalizeRichTextHtml(props.defaultValue),\n [props.defaultValue],\n )\n const isControlled = props.value !== undefined\n const [uncontrolledHtml, setUncontrolledHtml] = React.useState(initialUncontrolledValue)\n const [isEditorEmpty, setIsEditorEmpty] = React.useState(\n isRichTextHtmlEmpty(isControlled ? normalizedControlledValue : initialUncontrolledValue),\n )\n const [activeFormats, setActiveFormats] = React.useState<RichTextFormat[]>([])\n const editorElementRef = React.useRef<HTMLDivElement | null>(null)\n\n useRenderKitDebug(kit, \"RichText\")\n\n const editorHtml = isControlled ? normalizedControlledValue : uncontrolledHtml\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n const showToolbar = !props.readOnly\n\n const syncEditorState = React.useCallback(\n (nextHtml: string) => {\n const normalizedHtml = normalizeRichTextHtml(nextHtml)\n const emptyState = isRichTextHtmlEmpty(normalizedHtml)\n\n if (!isControlled) {\n setUncontrolledHtml(normalizedHtml)\n }\n\n setIsEditorEmpty(emptyState)\n props.onValueChange?.(normalizedHtml)\n\n return normalizedHtml\n },\n [isControlled, props],\n )\n\n const refreshActiveFormats = React.useCallback(() => {\n setActiveFormats(getActiveFormatsFromSelection(editorElementRef.current))\n }, [])\n\n React.useLayoutEffect(() => {\n const editorElement = editorElementRef.current\n\n if (!editorElement) {\n return\n }\n\n const normalizedDomHtml = normalizeRichTextHtml(editorElement.innerHTML)\n\n if (normalizedDomHtml !== editorHtml) {\n editorElement.innerHTML = editorHtml\n }\n\n setIsEditorEmpty(isRichTextHtmlEmpty(editorHtml))\n }, [editorHtml])\n\n React.useEffect(() => {\n if (typeof document === \"undefined\") {\n return undefined\n }\n\n const handleSelectionChange = () => {\n refreshActiveFormats()\n }\n\n document.addEventListener(\"selectionchange\", handleSelectionChange)\n\n return () => {\n document.removeEventListener(\"selectionchange\", handleSelectionChange)\n }\n }, [refreshActiveFormats])\n\n const handleInput = () => {\n const editorElement = editorElementRef.current\n\n if (!editorElement || props.disabled || props.readOnly) {\n return\n }\n\n syncEditorState(editorElement.innerHTML)\n refreshActiveFormats()\n }\n\n const toggleFormat = (format: RichTextFormat) => {\n if (props.disabled || props.readOnly || typeof document === \"undefined\") {\n return\n }\n\n const commandDocument = getRichTextCommandDocument()\n const editorElement = editorElementRef.current\n\n if (!editorElement) {\n return\n }\n\n ensureEditorSelection(editorElement)\n const activeFormatsBeforeToggle = getActiveFormatsFromSelection(editorElement)\n\n if (exitActiveFormatAtCaret(editorElement, format)) {\n if (\n typeof commandDocument.queryCommandState === \"function\" &&\n commandDocument.queryCommandState(richTextCommandByFormat[format]) &&\n typeof commandDocument.execCommand === \"function\"\n ) {\n commandDocument.execCommand(richTextCommandByFormat[format])\n }\n\n if (\n typeof commandDocument.queryCommandState === \"function\" &&\n typeof commandDocument.execCommand === \"function\"\n ) {\n for (const activeFormat of activeFormatsBeforeToggle) {\n if (activeFormat === format) {\n continue\n }\n\n if (!commandDocument.queryCommandState(richTextCommandByFormat[activeFormat])) {\n commandDocument.execCommand(richTextCommandByFormat[activeFormat])\n }\n }\n }\n\n syncEditorState(editorElement.innerHTML)\n refreshActiveFormats()\n return\n }\n\n if (typeof commandDocument.execCommand === \"function\") {\n commandDocument.execCommand(richTextCommandByFormat[format])\n }\n\n syncEditorState(editorElement.innerHTML)\n refreshActiveFormats()\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!(event.metaKey || event.ctrlKey) || event.altKey) {\n return\n }\n\n const formatByKey: Partial<Record<string, RichTextFormat>> = {\n b: \"bold\",\n i: \"italic\",\n u: \"underline\",\n }\n\n const requestedFormat = formatByKey[event.key.toLowerCase()]\n\n if (!requestedFormat || !allowedFormats.includes(requestedFormat)) {\n return\n }\n\n event.preventDefault()\n toggleFormat(requestedFormat)\n }\n\n return (\n <div className={className} style={style} {...kit.dataAttributes}>\n {showToolbar && (\n <div className=\"mw-rich-text__toolbar\" data-rich-text-toolbar>\n {allowedFormats.map((format) => {\n const isActive = activeFormats.includes(format)\n const iconName =\n format === \"bold\" ? \"bold\" : format === \"italic\" ? \"italic\" : \"underline\"\n\n return (\n <button\n key={format}\n type=\"button\"\n className=\"mw-rich-text__toolbar-button\"\n data-format={format}\n data-active={isActive ? \"true\" : undefined}\n aria-label={formatLabels[format]}\n aria-pressed={isActive}\n disabled={props.disabled}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n toggleFormat(format)\n }}\n >\n <Icon name={iconName} size=\"xs\" decorative />\n </button>\n )\n })}\n </div>\n )}\n\n <div\n ref={mergeRefs(editorElementRef, forwardedRef)}\n className=\"mw-rich-text__editor\"\n data-rich-text-editor\n data-empty={isEditorEmpty ? \"true\" : undefined}\n data-placeholder={props.placeholder}\n id={kit.a11y.id}\n role={kit.a11y.role}\n tabIndex={kit.a11y.tabIndex}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-describedby={kit.a11y.ariaDescribedBy}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-disabled={kit.a11y.ariaDisabled}\n aria-readonly={kit.a11y.ariaReadOnly}\n aria-required={kit.a11y.ariaRequired}\n aria-multiline={kit.a11y.ariaMultiline}\n contentEditable={!props.disabled && !props.readOnly}\n suppressContentEditableWarning\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onFocus={refreshActiveFormats}\n onBlur={() => {\n syncEditorState(editorElementRef.current?.innerHTML ?? \"\")\n setActiveFormats([])\n }}\n />\n\n {props.name && (\n <input type=\"hidden\" name={props.name} value={editorHtml} disabled={props.disabled} />\n )}\n </div>\n )\n})\n\nRichText.displayName = \"RichText\"\n","/**\n * React adapter for Marwes Paragraph component.\n * - Renders semantic <p> using the core paragraph recipe.\n * - Supports size variants: sm/md/lg.\n */\n\nimport { paragraphRecipe } from \"@marwes-ui/core\"\nimport type { ParagraphOptions, ParagraphSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type ParagraphProps = ParagraphOptions & {\n /**\n * Size variant.\n * @default \"md\"\n */\n size?: ParagraphSize\n\n /**\n * Content of the paragraph.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\n/**\n * Paragraph\n *\n * Semantic text block rendered as `<p>`.\n * Supports size variants for different text contexts.\n *\n * @example Basic usage\n * ```tsx\n * <Paragraph>This is a standard paragraph.</Paragraph>\n * ```\n *\n * @example With size variant\n * ```tsx\n * <Paragraph size=\"sm\">Small text for disclaimers.</Paragraph>\n * <Paragraph size=\"lg\">Emphasized lead paragraph.</Paragraph>\n * ```\n *\n * @example With ID\n * ```tsx\n * <Paragraph id=\"intro\">Introduction text.</Paragraph>\n * ```\n */\nexport function Paragraph(props: ParagraphProps): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n\n const kit = paragraphRecipe(opts, theme)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <p id={kit.a11y.id} className={className} style={style}>\n {children}\n </p>\n )\n}\n","import { buildInputFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { Paragraph } from \"../paragraph\"\nimport { Input } from \"./input\"\nimport type { InputProps } from \"./input\"\n\nexport type InputFieldProps = {\n /** Optional: if omitted, we generate one via useId(). */\n id?: string\n\n /** Field label (required for accessibility). */\n label: string\n\n /** Optional helper text shown below the input. */\n helperText?: string\n\n /** Optional error message. When present, input is marked invalid. */\n error?: string\n\n /** Props forwarded to the Input atom. */\n input: InputProps\n\n /** Additional aria-describedby IDs to merge with internal helper/error IDs. */\n ariaDescribedBy?: string\n\n /** Optional leading text symbol displayed inside the input on the left (e.g. \"$\", \"€\", \"kr\"). */\n leadingSymbol?: string\n}\n\nfunction cx(...parts: Array<string | false>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\n/**\n * InputField (Molecule) — Recommended\n *\n * A convenient, accessible wrapper around `Input` that provides:\n * - a visible `<label>` wired via `htmlFor`/`id`\n * - optional `helperText` and `error` regions\n * - automatic `aria-describedby` wiring (helperText + error + any external ids)\n * - automatic invalid state when `error` is present\n *\n * Use `InputField` for most forms. Use `Input` directly only when you need\n * a highly custom layout or composite inputs.\n *\n * Accessibility\n * - Generates a stable `id` via `useId()` when `id` is not provided.\n * - Always renders a visible `<label>` element connected to the input control.\n * - When `helperText` and/or `error` are present, it sets `aria-describedby`\n * on the input to reference their ids.\n * - When `error` is present, the input is marked invalid (aria-invalid).\n * - Error region has `aria-live=\"polite\"` for screen reader announcements.\n *\n * @example Minimal (recommended)\n * ```tsx\n * <InputField\n * label=\"Email address\"\n * input={{ type: \"email\", placeholder: \"you@example.com\" }}\n * />\n * ```\n *\n * @example With helper text\n * ```tsx\n * <InputField\n * label=\"Username\"\n * helperText=\"Choose a unique username between 3-20 characters.\"\n * input={{ type: \"text\", placeholder: \"johnsmith\" }}\n * />\n * ```\n *\n * @example With error (invalid state)\n * ```tsx\n * <InputField\n * label=\"Password\"\n * error=\"Password must be at least 8 characters.\"\n * input={{ type: \"password\", required: true }}\n * />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [email, setEmail] = React.useState(\"\");\n *\n * <InputField\n * label=\"Email\"\n * input={{\n * type: \"email\",\n * value: email,\n * onValueChange: setEmail,\n * }}\n * />\n * ```\n *\n * @example Disabled\n * ```tsx\n * <InputField\n * label=\"Account ID\"\n * helperText=\"This value cannot be changed.\"\n * input={{ value: \"ACC-12345\", disabled: true }}\n * />\n * ```\n *\n * @example Read-only\n * ```tsx\n * <InputField\n * label=\"Account created\"\n * input={{ value: \"January 15, 2026\", readOnly: true }}\n * />\n * ```\n *\n * @example Custom describedBy (merge with internal helper/error)\n * ```tsx\n * <InputField\n * ariaDescribedBy=\"my-extra-help\"\n * label=\"API Key\"\n * helperText=\"Your key is stored securely.\"\n * input={{ type: \"password\" }}\n * />\n *\n * <div id=\"my-extra-help\">This can be regenerated from your settings.</div>\n * ```\n */\nexport function InputField(props: InputFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-input-${reactId}`\n\n // Password visibility toggle\n const isPasswordField = props.input.type === \"password\"\n const [showPassword, setShowPassword] = React.useState(false)\n\n // Search clear button - track if search has value\n const isSearchField = props.input.type === \"search\"\n const [searchValue, setSearchValue] = React.useState(\n props.input.value || props.input.defaultValue || \"\",\n )\n\n // Determine if clear button should show based on controlled vs uncontrolled\n const hasSearchValue =\n isSearchField &&\n (props.input.value !== undefined\n ? String(props.input.value).length > 0\n : String(searchValue).length > 0)\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.input.disabled || false\n const readOnly = props.input.readOnly || false\n const invalid = hasError || props.input.invalid || false\n const showSearchClearButton = hasSearchValue && !disabled && !readOnly\n const showSearchIcon = isSearchField && !showSearchClearButton\n\n const wrapperClass = cx(\n \"mw-input-field\",\n disabled && \"mw-input-field--disabled\",\n invalid && \"mw-input-field--invalid\",\n readOnly && \"mw-input-field--readonly\",\n )\n\n // Prepare input props with proper describedBy merging\n const inputProps: InputProps = {\n ...props.input,\n id,\n invalid,\n }\n\n // Override type when showing password\n if (isPasswordField && showPassword) {\n inputProps.type = \"text\"\n }\n\n // Track search value changes and make search inputs controlled\n if (isSearchField) {\n const originalOnValueChange = props.input.onValueChange\n\n // Use parent's value if controlled, otherwise use local state\n if (props.input.value === undefined) {\n inputProps.value = searchValue\n }\n\n inputProps.onValueChange = (value: string) => {\n setSearchValue(value)\n originalOnValueChange?.(value)\n }\n }\n\n if (mergedDescribedBy) {\n inputProps.describedBy = mergedDescribedBy\n }\n\n const handleTogglePassword = () => {\n setShowPassword((prev) => !prev)\n }\n\n const handleClearSearch = () => {\n // For controlled inputs: notify parent to update state\n // For uncontrolled: update local state\n setSearchValue(\"\")\n props.input.onValueChange?.(\"\")\n }\n\n return (\n <div className={wrapperClass}>\n <label className=\"mw-input-field__label\" htmlFor={id}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </label>\n\n <div className=\"mw-input-field__input-wrapper\">\n {props.leadingSymbol && (\n <span className=\"mw-input-field__leading-symbol\" aria-hidden=\"true\">\n {props.leadingSymbol}\n </span>\n )}\n <Input {...inputProps} />\n\n {isPasswordField && !disabled && (\n <button\n type=\"button\"\n className=\"mw-input-field__toggle-password\"\n onClick={handleTogglePassword}\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\n tabIndex={0}\n >\n <Icon name={showPassword ? \"eyeOff\" : \"eye\"} size=\"xs\" decorative />\n </button>\n )}\n\n {showSearchIcon && (\n <span className=\"mw-input-field__search-icon\" aria-hidden=\"true\">\n <Icon name=\"search\" size=\"xs\" decorative />\n </span>\n )}\n\n {showSearchClearButton && (\n <button\n type=\"button\"\n className=\"mw-input-field__clear-search\"\n onClick={handleClearSearch}\n aria-label=\"Clear search\"\n tabIndex={0}\n >\n <Icon name=\"x\" size=\"xs\" decorative />\n </button>\n )}\n </div>\n\n {hasHelperText && !hasError && (\n <div className=\"mw-input-field__helper\" id={helperTextId}>\n <Paragraph size=\"sm\">{props.helperText}</Paragraph>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-input-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </div>\n )\n}\n","import {\n buildInputFieldA11yIds,\n createInputOtpRecipe,\n sanitizeInputOtpValue,\n} from \"@marwes-ui/core\"\nimport type { CssVars, InputOtpOptions } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type InputOtpProps = Omit<InputOtpOptions, \"describedBy\"> & {\n label: string\n helperText?: string\n error?: string\n ariaDescribedBy?: string\n onValueChange?: (value: string) => void\n className?: string\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\nexport function InputOtp(props: InputOtpProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-input-otp-${reactId}`\n const otpLength = Math.max(1, props.length ?? 6)\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n const invalid = hasError || props.invalid === true\n const isControlled = props.value !== undefined\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() => {\n return sanitizeInputOtpValue(props.defaultValue, otpLength)\n })\n\n const currentValue = sanitizeInputOtpValue(\n isControlled ? props.value : uncontrolledValue,\n otpLength,\n )\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const recipeOptions: InputOtpOptions = {\n id,\n value: currentValue,\n length: otpLength,\n invalid,\n }\n\n if (props.name) {\n recipeOptions.name = props.name\n }\n\n if (props.placeholderCharacter) {\n recipeOptions.placeholderCharacter = props.placeholderCharacter\n }\n\n if (props.disabled) {\n recipeOptions.disabled = true\n }\n\n if (props.readOnly) {\n recipeOptions.readOnly = true\n }\n\n if (props.required) {\n recipeOptions.required = true\n }\n\n if (mergedDescribedBy) {\n recipeOptions.describedBy = mergedDescribedBy\n }\n\n if (props.ariaLabel) {\n recipeOptions.ariaLabel = props.ariaLabel\n }\n\n const kit = createInputOtpRecipe(recipeOptions)\n\n const className = cx(kit.className, props.className)\n const style = kit.vars as StyleWithVars\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextValue = sanitizeInputOtpValue(event.target.value, otpLength)\n\n if (!isControlled) {\n setUncontrolledValue(nextValue)\n }\n\n props.onValueChange?.(nextValue)\n }\n\n return (\n <div\n className={className}\n style={style}\n data-component=\"input-otp\"\n data-invalid={invalid ? \"true\" : undefined}\n data-disabled={props.disabled ? \"true\" : undefined}\n >\n <label className=\"mw-input-otp__label\" htmlFor={id}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </label>\n\n <div className=\"mw-input-otp__cells\">\n {kit.displayCells.map((displayCell) => (\n <span\n key={displayCell.key}\n className={cx(\"mw-input-otp__cell\", displayCell.filled && \"mw-input-otp__cell--filled\")}\n aria-hidden=\"true\"\n >\n {displayCell.character}\n </span>\n ))}\n\n <input\n id={kit.a11y.id}\n className=\"mw-input-otp__input\"\n type=\"text\"\n name={kit.a11y.name}\n inputMode={kit.a11y.inputMode}\n autoComplete={kit.a11y.autoComplete}\n maxLength={kit.a11y.maxLength}\n pattern={kit.a11y.pattern}\n disabled={kit.a11y.disabled}\n readOnly={kit.a11y.readOnly}\n required={kit.a11y.required}\n aria-label={kit.a11y.ariaLabel}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-describedby={kit.a11y.ariaDescribedBy}\n value={kit.displayValue}\n onChange={handleChange}\n />\n </div>\n\n {hasError ? (\n <div className=\"mw-input-otp__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n ) : hasHelperText ? (\n <div className=\"mw-input-otp__helper\" id={helperTextId}>\n <Paragraph size=\"sm\">{props.helperText}</Paragraph>\n </div>\n ) : null}\n </div>\n )\n}\n","import { IconName, buildInputFieldA11yIds, resolveSelectMode } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { Paragraph } from \"../paragraph\"\nimport { Select } from \"./select\"\nimport type { SelectProps } from \"./select\"\nimport { SelectArrowIcon } from \"./select-arrow-icon\"\n\nexport type SelectFieldVariant = \"default\" | \"date\"\n\nexport type SelectFieldProps = {\n id?: string\n label: string\n helperText?: string\n error?: string\n select: SelectProps\n ariaDescribedBy?: string\n variant?: SelectFieldVariant\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\nfunction getInitialSelectValue(props: SelectProps): string {\n if (props.value !== undefined) {\n return props.value\n }\n\n if (props.defaultValue !== undefined) {\n return props.defaultValue\n }\n\n if (props.placeholder !== undefined) {\n return \"\"\n }\n\n return props.options[0]?.value ?? \"\"\n}\n\nfunction getFirstEnabledOptionIndex(options: SelectProps[\"options\"]): number {\n return options.findIndex((option) => !option.disabled)\n}\n\nfunction getLastEnabledOptionIndex(options: SelectProps[\"options\"]): number {\n for (let index = options.length - 1; index >= 0; index -= 1) {\n if (!options[index]?.disabled) {\n return index\n }\n }\n\n return -1\n}\n\nfunction getSelectedOptionIndex(options: SelectProps[\"options\"], value: string): number {\n return options.findIndex((option) => option.value === value && !option.disabled)\n}\n\nfunction getInitialActiveOptionIndex(options: SelectProps[\"options\"], value: string): number {\n const selectedIndex = getSelectedOptionIndex(options, value)\n\n if (selectedIndex !== -1) {\n return selectedIndex\n }\n\n return getFirstEnabledOptionIndex(options)\n}\n\nfunction getNextEnabledOptionIndex(\n options: SelectProps[\"options\"],\n currentIndex: number,\n direction: 1 | -1,\n): number {\n if (options.length === 0) {\n return -1\n }\n\n let nextIndex = currentIndex\n\n for (let attempts = 0; attempts < options.length; attempts += 1) {\n nextIndex = (nextIndex + direction + options.length) % options.length\n\n if (!options[nextIndex]?.disabled) {\n return nextIndex\n }\n }\n\n return currentIndex\n}\n\ntype MarwesSelectFieldControlProps = {\n id: string\n label?: string\n select: SelectProps\n}\n\nfunction MarwesSelectFieldControl(props: MarwesSelectFieldControlProps): React.ReactElement {\n const { id, label, select } = props\n const listboxId = `${id}-listbox`\n const isControlled = select.value !== undefined\n const [internalValue, setInternalValue] = React.useState(() => getInitialSelectValue(select))\n const value = isControlled ? (select.value ?? \"\") : internalValue\n const [open, setOpen] = React.useState(false)\n const [activeIndex, setActiveIndex] = React.useState(() =>\n getInitialActiveOptionIndex(select.options, value),\n )\n const rootRef = React.useRef<HTMLDivElement | null>(null)\n const buttonRef = React.useRef<HTMLButtonElement | null>(null)\n\n const selectedOption =\n select.options.find((option) => option.value === value) ??\n (select.placeholder === undefined ? select.options[0] : undefined)\n const placeholderSelected = select.placeholder !== undefined && value === \"\"\n const displayText = placeholderSelected ? select.placeholder : (selectedOption?.label ?? \"\")\n const accessibleName =\n select.ariaLabel ??\n (hasTextContent(label) ? label : undefined) ??\n (hasTextContent(displayText) ? displayText : undefined)\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n\n function handlePointerDown(event: PointerEvent) {\n if (rootRef.current?.contains(event.target as Node)) {\n return\n }\n\n setOpen(false)\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown)\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n\n setActiveIndex(getInitialActiveOptionIndex(select.options, value))\n }, [open, select.options, value])\n\n React.useEffect(() => {\n if (!select.disabled) {\n return\n }\n\n setOpen(false)\n }, [select.disabled])\n\n const commitValue = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue)\n }\n\n select.onValueChange?.(nextValue)\n }\n\n const selectOptionAtIndex = (index: number) => {\n const option = select.options[index]\n\n if (!option || option.disabled) {\n return\n }\n\n commitValue(option.value)\n setOpen(false)\n buttonRef.current?.focus()\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (select.disabled) {\n return\n }\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n setActiveIndex(getInitialActiveOptionIndex(select.options, value))\n return\n }\n\n setActiveIndex((currentIndex) => getNextEnabledOptionIndex(select.options, currentIndex, 1))\n return\n }\n case \"ArrowUp\": {\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n setActiveIndex(getInitialActiveOptionIndex(select.options, value))\n return\n }\n\n setActiveIndex((currentIndex) =>\n getNextEnabledOptionIndex(select.options, currentIndex, -1),\n )\n return\n }\n case \"Home\": {\n if (!open) {\n return\n }\n\n event.preventDefault()\n setActiveIndex(getFirstEnabledOptionIndex(select.options))\n return\n }\n case \"End\": {\n if (!open) {\n return\n }\n\n event.preventDefault()\n setActiveIndex(getLastEnabledOptionIndex(select.options))\n return\n }\n case \"Enter\":\n case \" \": {\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n setActiveIndex(getInitialActiveOptionIndex(select.options, value))\n return\n }\n\n if (activeIndex !== -1) {\n selectOptionAtIndex(activeIndex)\n }\n return\n }\n case \"Escape\": {\n if (!open) {\n return\n }\n\n event.preventDefault()\n setOpen(false)\n return\n }\n case \"Tab\": {\n setOpen(false)\n return\n }\n default:\n return\n }\n }\n\n return (\n <div\n ref={rootRef}\n className={cx(\"mw-select-field__control\", open && \"mw-select-field__control--open\")}\n >\n <button\n ref={buttonRef}\n id={id}\n type=\"button\"\n className={cx(\n \"mw-select-field__trigger\",\n placeholderSelected && \"mw-select-field__trigger--placeholder\",\n select.invalid && \"is-invalid\",\n open && \"mw-select-field__trigger--open\",\n )}\n role=\"combobox\"\n aria-controls={listboxId}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-label={accessibleName}\n aria-describedby={select.describedBy}\n aria-invalid={select.invalid ? \"true\" : undefined}\n aria-required={select.required ? \"true\" : undefined}\n aria-activedescendant={\n open && activeIndex !== -1 ? `${id}-option-${activeIndex}` : undefined\n }\n disabled={select.disabled}\n data-placeholder-selected={placeholderSelected ? \"true\" : undefined}\n onClick={() => {\n if (select.disabled) {\n return\n }\n\n setOpen((currentOpen) => !currentOpen)\n }}\n onKeyDown={handleKeyDown}\n >\n <span className=\"mw-select-field__trigger-text\">{displayText}</span>\n <SelectArrowIcon className=\"mw-select-field__trigger-icon\" />\n </button>\n\n {select.name ? (\n <input\n aria-hidden=\"true\"\n className=\"mw-select-field__proxy-input\"\n name={select.name}\n type=\"hidden\"\n value={value}\n readOnly\n />\n ) : null}\n\n {open ? (\n <>\n <div className=\"mw-select-field__list\" id={listboxId} role=\"listbox\" tabIndex={-1}>\n {select.options.map((option, optionIndex) => {\n const selected = option.value === value\n const active = optionIndex === activeIndex\n\n return (\n <div\n id={`${id}-option-${optionIndex}`}\n key={option.value}\n className={cx(\n \"mw-select-field__option\",\n active && \"mw-select-field__option--active\",\n selected && \"mw-select-field__option--selected\",\n option.disabled && \"mw-select-field__option--disabled\",\n )}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={option.disabled ? \"true\" : undefined}\n tabIndex={-1}\n onClick={() => selectOptionAtIndex(optionIndex)}\n onKeyDown={(event) => {\n if (option.disabled) {\n return\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n selectOptionAtIndex(optionIndex)\n }\n }}\n onMouseDown={(event) => event.preventDefault()}\n onMouseEnter={() => {\n if (!option.disabled) {\n setActiveIndex(optionIndex)\n }\n }}\n >\n <span className=\"mw-select-field__option-label\">{option.label}</span>\n {selected ? (\n <Icon\n className=\"mw-select-field__option-check\"\n name={IconName.Check}\n size=\"xs\"\n decorative\n />\n ) : null}\n </div>\n )\n })}\n </div>\n </>\n ) : null}\n </div>\n )\n}\n\nexport function SelectField(props: SelectFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-select-${reactId}`\n const mode = resolveSelectMode(props.select)\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.select.disabled || false\n const invalid = hasError || props.select.invalid || false\n\n const wrapperClass = cx(\n \"mw-input-field\",\n \"mw-input-field--select\",\n mode === \"marwes\" && \"mw-input-field--select-marwes\",\n props.variant === \"date\" && \"mw-input-field--select-date\",\n disabled && \"mw-input-field--disabled\",\n invalid && \"mw-input-field--invalid\",\n )\n\n const selectProps: SelectProps = {\n ...props.select,\n id,\n invalid,\n }\n\n if (mergedDescribedBy) {\n selectProps.describedBy = mergedDescribedBy\n }\n\n return (\n <div className={wrapperClass}>\n <label className=\"mw-input-field__label\" htmlFor={id}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </label>\n\n <div className=\"mw-input-field__input-wrapper\">\n {mode === \"native\" ? (\n <Select {...selectProps} native />\n ) : (\n <MarwesSelectFieldControl id={id} label={props.label} select={selectProps} />\n )}\n </div>\n\n {hasHelperText && !hasError && (\n <div className=\"mw-input-field__helper\" id={helperTextId}>\n <Paragraph size=\"sm\">{props.helperText}</Paragraph>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-input-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </div>\n )\n}\n","import { buildInputFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { Textarea } from \"./textarea\"\nimport type { TextareaProps } from \"./textarea\"\n\nexport type TextareaFieldProps = {\n id?: string\n label: string\n helperText?: string\n error?: string\n textarea: TextareaProps\n ariaDescribedBy?: string\n}\n\nfunction cx(...parts: Array<string | false>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\nexport function TextareaField(props: TextareaFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-textarea-${reactId}`\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.textarea.disabled || false\n const readOnly = props.textarea.readOnly || false\n const invalid = hasError || props.textarea.invalid || false\n\n const wrapperClass = cx(\n \"mw-input-field\",\n \"mw-input-field--textarea\",\n disabled && \"mw-input-field--disabled\",\n invalid && \"mw-input-field--invalid\",\n readOnly && \"mw-input-field--readonly\",\n )\n\n const textareaProps: TextareaProps = {\n ...props.textarea,\n id,\n invalid,\n }\n\n if (mergedDescribedBy) {\n textareaProps.describedBy = mergedDescribedBy\n }\n\n return (\n <div className={wrapperClass}>\n <label className=\"mw-input-field__label\" htmlFor={id}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </label>\n\n <div className=\"mw-input-field__input-wrapper\">\n <Textarea {...textareaProps} />\n </div>\n\n {hasHelperText && !hasError && (\n <div className=\"mw-input-field__helper\" id={helperTextId}>\n <Paragraph size=\"sm\">{props.helperText}</Paragraph>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-input-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </div>\n )\n}\n","import { buildRichTextFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { RichText } from \"./rich-text\"\nimport type { RichTextProps } from \"./rich-text\"\n\nexport type RichTextFieldProps = {\n id?: string\n label: string\n helperText?: string\n error?: string\n editor: RichTextProps\n ariaDescribedBy?: string\n}\n\nfunction cx(...parts: Array<string | false>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\nexport function RichTextField(props: RichTextFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-rich-text-${reactId}`\n const editorRef = React.useRef<HTMLDivElement | null>(null)\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n\n const { labelId, helperTextId, errorId, describedBy } = buildRichTextFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.editor.disabled || false\n const readOnly = props.editor.readOnly || false\n const invalid = hasError || props.editor.invalid || false\n\n const wrapperClass = cx(\n \"mw-input-field\",\n \"mw-input-field--rich-text\",\n disabled && \"mw-input-field--disabled\",\n invalid && \"mw-input-field--invalid\",\n readOnly && \"mw-input-field--readonly\",\n )\n\n const editorProps: RichTextProps = {\n ...props.editor,\n id,\n invalid,\n labelledBy: labelId,\n }\n\n if (describedBy) {\n editorProps.describedBy = describedBy\n }\n\n return (\n <div className={wrapperClass}>\n <button\n type=\"button\"\n className=\"mw-input-field__label\"\n id={labelId}\n onClick={() => {\n editorRef.current?.focus()\n }}\n >\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </button>\n\n <div className=\"mw-input-field__input-wrapper\">\n <RichText ref={editorRef} {...editorProps} />\n </div>\n\n {hasHelperText && !hasError && (\n <div className=\"mw-input-field__helper\" id={helperTextId}>\n <Paragraph size=\"sm\">{props.helperText}</Paragraph>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-input-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </div>\n )\n}\n","import { buildCurrencyHelperText, getCurrencySymbol, sanitizeCurrencyValue } from \"@marwes-ui/core\"\nimport type { CurrencyCode } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport type { InputProps } from \"./input\"\nimport { InputField, type InputFieldProps } from \"./input-field\"\nimport type { SelectProps } from \"./select\"\nimport { SelectField, type SelectFieldProps } from \"./select-field\"\n\n/**\n * Field Variants - AI-Friendly Components\n *\n * These variants encode best practices and automatically set AI-friendly\n * metadata, making it easier for both developers and AI tools to understand\n * the purpose and behavior of each field.\n *\n * Each variant manages its own purpose-specific logic (password toggle,\n * search clear, etc.) and sets appropriate semantic attributes.\n */\n\n// ============================================================================\n// DROPDOWN FIELD - Figma dropdown wrapper\n// ============================================================================\n\nexport type DropdownFieldProps = Omit<SelectFieldProps, \"select\"> & {\n /**\n * Select-specific props. Use `native` to opt back into the browser dropdown.\n */\n select: Omit<SelectProps, \"appearance\"> & {\n native?: boolean\n }\n}\n\n/**\n * DropdownField - For the Figma-aligned dropdown presentation.\n *\n * **AI Context:**\n * - Reuses `SelectField` accessibility and state wiring\n * - Defaults to the Marwes dropdown presentation\n * - Allows `native={true}` to fall back to the browser dropdown\n * - Adds `data-purpose=\"dropdown\"` for semantic parsing\n *\n * **Features:**\n * - Same label/helper/error contract as `SelectField`\n * - Controlled and uncontrolled modes supported\n * - Prevents API drift between generic select and dropdown styling\n *\n * @example\n * ```tsx\n * <DropdownField\n * label=\"Country\"\n * select={{\n * placeholder: \"Choose a country\",\n * options: [\n * { value: \"se\", label: \"Sweden\" },\n * { value: \"us\", label: \"United States\" },\n * ],\n * }}\n * />\n * ```\n */\nexport function DropdownField(props: DropdownFieldProps): React.ReactElement {\n return (\n <div data-purpose=\"dropdown\">\n <SelectField\n {...props}\n select={{\n ...props.select,\n native: props.select.native ?? false,\n }}\n />\n </div>\n )\n}\n\n// ============================================================================\n// SEARCH FIELD - Search inputs with clear button\n// ============================================================================\n\nexport type SearchFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type is auto-set to \"search\")\n */\n input?: Omit<InputProps, \"type\">\n}\n\n/**\n * SearchField - For search inputs with an automatic search affordance and clear button.\n *\n * **AI Context:**\n * - Sets `type=\"search\"` automatically\n * - Sets `inputMode=\"search\"` for mobile keyboards\n * - Shows a search icon by default and a clear button (X icon) when field has content\n * - Adds `data-purpose=\"search\"` for AI parsing\n *\n * **Features:**\n * - Automatic clear button that appears when typing\n * - Native search input behavior\n * - Optimized mobile keyboard\n * - Controlled and uncontrolled modes supported\n *\n * @example Basic usage\n * ```tsx\n * import { SearchField } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * const [query, setQuery] = React.useState(\"\");\n * return (\n * <SearchField\n * label=\"Search products\"\n * input={{ value: query, onValueChange: setQuery }}\n * />\n * );\n * }\n * ```\n */\nexport function SearchField(props: SearchFieldProps): React.ReactElement {\n // Enhanced input props with search-specific settings\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"search\",\n inputMode: \"search\",\n }\n\n return (\n <div data-purpose=\"search\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// PASSWORD FIELD - Password inputs with show/hide toggle\n// ============================================================================\n\nexport type PasswordFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type is auto-set to \"password\")\n */\n input?: Omit<InputProps, \"type\">\n\n /**\n * Autocomplete hint: \"current-password\" or \"new-password\"\n * Defaults to \"current-password\"\n */\n autoComplete?: \"current-password\" | \"new-password\"\n}\n\n/**\n * PasswordField - For password inputs with automatic show/hide toggle.\n *\n * **AI Context:**\n * - Sets `type=\"password\"` automatically (toggles to \"text\" when shown)\n * - Shows eye/eyeOff icon toggle button\n * - Sets appropriate `autoComplete` attribute\n * - Adds `data-purpose=\"password\"` for AI parsing\n *\n * **Features:**\n * - Automatic show/hide toggle with eye icon\n * - Proper autocomplete for password managers\n * - Accessible toggle button with clear labels\n * - Controlled and uncontrolled modes supported\n *\n * @example Basic usage\n * ```tsx\n * import { PasswordField } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * const [password, setPassword] = React.useState(\"\");\n * return (\n * <PasswordField\n * label=\"Password\"\n * input={{ value: password, onValueChange: setPassword }}\n * />\n * );\n * }\n * ```\n *\n * @example New password (signup/reset)\n * ```tsx\n * <PasswordField\n * label=\"New Password\"\n * autoComplete=\"new-password\"\n * helperText=\"Must be at least 8 characters\"\n * />\n * ```\n */\nexport function PasswordField(props: PasswordFieldProps): React.ReactElement {\n const { autoComplete = \"current-password\", ...restProps } = props\n\n // Enhanced input props with password-specific settings\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"password\",\n autoComplete,\n }\n\n return (\n <div data-purpose=\"password\">\n <InputField {...restProps} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// EMAIL FIELD - Email inputs with proper semantic attributes\n// ============================================================================\n\nexport type EmailFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * EmailField - For email address inputs with proper semantic attributes.\n *\n * **AI Context:**\n * - Sets `type=\"email\"` for validation\n * - Sets `inputMode=\"email\"` for optimized mobile keyboard\n * - Sets `autoComplete=\"email\"` for autofill\n * - Adds `data-purpose=\"email\"` for AI parsing\n *\n * **Features:**\n * - Browser email validation\n * - Email-optimized mobile keyboard\n * - Autofill support for email addresses\n *\n * @example\n * ```tsx\n * import { EmailField } from \"@marwes-ui/react\";\n *\n * <EmailField\n * label=\"Email address\"\n * input={{ placeholder: \"you@example.com\" }}\n * />\n * ```\n */\nexport function EmailField(props: EmailFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"email\",\n inputMode: \"email\",\n autoComplete: \"email\",\n }\n\n return (\n <div data-purpose=\"email\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// DATE OF BIRTH FIELD - Birthday inputs with native date semantics\n// ============================================================================\n\nexport type DateOfBirthFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * DateOfBirthField - For birthday inputs with native date semantics.\n *\n * **AI Context:**\n * - Sets `type=\"date\"` for native browser date controls\n * - Sets `autoComplete=\"bday\"` for profile/password-manager autofill\n * - Adds `data-purpose=\"date-of-birth\"` for AI parsing\n *\n * **Features:**\n * - Native date picker where the platform supports it\n * - ISO value handling (`YYYY-MM-DD`) for predictable form state\n * - Keeps the same label/helper/error contract as `InputField`\n */\nexport function DateOfBirthField(props: DateOfBirthFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"date\",\n autoComplete: \"bday\",\n }\n\n return (\n <div data-purpose=\"date-of-birth\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// ZIP CODE FIELD - Postal code inputs with low-regret semantics\n// ============================================================================\n\nexport type ZipCodeFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * ZipCodeField - For postal/ZIP code inputs that should keep text semantics.\n *\n * **AI Context:**\n * - Sets `type=\"text\"` to preserve leading zeros\n * - Sets `inputMode=\"numeric\"` for the mobile number keypad\n * - Sets `autoComplete=\"postal-code\"` for address autofill\n * - Adds `data-purpose=\"zip-code\"` for AI parsing\n *\n * **Features:**\n * - Low-regret default for US ZIP and broader postal-code entry\n * - Avoids number-input quirks like spinner UI and lost leading zeroes\n * - Keeps the same label/helper/error contract as `InputField`\n */\nexport function ZipCodeField(props: ZipCodeFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"text\",\n inputMode: \"numeric\",\n autoComplete: \"postal-code\",\n }\n\n return (\n <div data-purpose=\"zip-code\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// PHONE FIELD - Phone number inputs with proper semantic attributes\n// ============================================================================\n\nexport type PhoneFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * PhoneField - For phone number inputs with proper semantic attributes.\n *\n * **AI Context:**\n * - Sets `type=\"tel\"` for telephone input\n * - Sets `inputMode=\"tel\"` for phone keyboard\n * - Sets `autoComplete=\"tel\"` for autofill\n * - Adds `data-purpose=\"phone\"` for AI parsing\n *\n * **Features:**\n * - Phone-optimized mobile keyboard\n * - Autofill support for phone numbers\n * - Accepts any phone format (formatting should be done externally)\n *\n * @example\n * ```tsx\n * import { PhoneField } from \"@marwes-ui/react\";\n *\n * <PhoneField\n * label=\"Phone number\"\n * input={{ placeholder: \"+1 (555) 000-0000\" }}\n * />\n * ```\n */\nexport function PhoneField(props: PhoneFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"tel\",\n inputMode: \"tel\",\n autoComplete: \"tel\",\n }\n\n return (\n <div data-purpose=\"phone\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// URL FIELD - URL inputs with proper semantic attributes\n// ============================================================================\n\nexport type URLFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * URLField - For URL inputs with proper semantic attributes.\n *\n * **AI Context:**\n * - Sets `type=\"url\"` for URL validation\n * - Sets `inputMode=\"url\"` for URL keyboard\n * - Sets `autoComplete=\"url\"` for autofill\n * - Adds `data-purpose=\"url\"` for AI parsing\n *\n * **Features:**\n * - Browser URL validation\n * - URL-optimized mobile keyboard\n * - Autofill support for URLs\n *\n * @example\n * ```tsx\n * import { URLField } from \"@marwes-ui/react\";\n *\n * <URLField\n * label=\"Website\"\n * input={{ placeholder: \"https://example.com\" }}\n * />\n * ```\n */\nexport function URLField(props: URLFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"url\",\n inputMode: \"url\",\n autoComplete: \"url\",\n }\n\n return (\n <div data-purpose=\"url\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// CURRENCY FIELD - Currency/monetary inputs with formatting hints\n// ============================================================================\n\nexport type CurrencyFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\">\n\n /**\n * Currency code (e.g., \"USD\", \"EUR\", \"GBP\").\n * Prefer `CurrencyCode` for autocomplete and Storybook controls.\n * Unknown strings are tolerated and simply render without a leading symbol.\n */\n currency?: CurrencyCode | string\n}\n\n/**\n * CurrencyField - For monetary amount inputs with currency context.\n *\n * **AI Context:**\n * - Sets `type=\"text\"` (better browser support than \"number\")\n * - Sets `inputMode=\"decimal\"` for numeric keyboard with decimal\n * - Adds currency code to helper text if provided\n * - Adds `data-purpose=\"currency\"` and `data-currency` for AI parsing\n *\n * **Features:**\n * - Decimal keyboard on mobile\n * - Currency code display in helper text\n * - Better input control than type=\"number\"\n * - Sanitizes values passed through `input.onValueChange`\n * - Note: Formatting should be handled by parent component\n *\n * **Controlled usage recommended:**\n * - Use `input.value` + `input.onValueChange` when you need guaranteed sanitized state\n * - In uncontrolled usage, the callback still receives sanitized values, but the DOM input may temporarily display unsanitized text\n *\n * @example\n * ```tsx\n * import { CurrencyField } from \"@marwes-ui/react\";\n *\n * <CurrencyField\n * label=\"Amount\"\n * currency=\"USD\"\n * input={{\n * value: amount,\n * onValueChange: setAmount,\n * placeholder: \"0.00\",\n * }}\n * />\n * ```\n */\nexport function CurrencyField(props: CurrencyFieldProps): React.ReactElement {\n const { currency, ...restProps } = props\n\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"text\",\n inputMode: \"decimal\",\n onValueChange: (rawValue: string) => {\n const sanitizedValue = sanitizeCurrencyValue(rawValue)\n props.input?.onValueChange?.(sanitizedValue)\n },\n }\n\n const helperText = buildCurrencyHelperText(props.helperText, currency)\n const leadingSymbol = getCurrencySymbol(currency)\n\n return (\n <div data-purpose=\"currency\" data-currency={currency}>\n <InputField\n {...restProps}\n input={enhancedInput}\n helperText={helperText || \"\"}\n {...(leadingSymbol ? { leadingSymbol } : {})}\n />\n </div>\n )\n}\n","import {\n type AvatarOptions,\n type AvatarRenderContent,\n type CssVars,\n createAvatarRecipe,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface AvatarProps\n extends AvatarOptions,\n Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n dataAttributes?: Record<string, string>\n}\n\nfunction renderAvatarContent(\n content: AvatarRenderContent,\n isOuterShellAccessible: boolean,\n isDecorative: boolean,\n): React.ReactNode {\n if (content.type === \"image\") {\n return (\n <img\n className=\"mw-avatar__image\"\n src={content.src}\n alt={isDecorative ? \"\" : (content.alt ?? \"\")}\n />\n )\n }\n\n if (content.type === \"initials\") {\n return (\n <span\n aria-hidden={isOuterShellAccessible ? \"true\" : undefined}\n className=\"mw-avatar__initials\"\n >\n {content.initials}\n </span>\n )\n }\n\n return <Icon name={content.iconName ?? \"user\"} className=\"mw-avatar__icon\" decorative />\n}\n\nexport function Avatar(props: AvatarProps): React.ReactElement {\n const {\n className,\n style,\n dataAttributes,\n size,\n type,\n initials,\n src,\n alt,\n iconName,\n decorative,\n ariaLabel,\n ...nativeSpanProps\n } = props\n\n const ariaLabelFromNativeProps =\n typeof nativeSpanProps[\"aria-label\"] === \"string\" ? nativeSpanProps[\"aria-label\"] : undefined\n\n const avatarOptions: AvatarOptions = {}\n if (size !== undefined) avatarOptions.size = size\n if (type !== undefined) avatarOptions.type = type\n if (initials !== undefined) avatarOptions.initials = initials\n if (src !== undefined) avatarOptions.src = src\n if (alt !== undefined) avatarOptions.alt = alt\n if (iconName !== undefined) avatarOptions.iconName = iconName\n if (decorative !== undefined) avatarOptions.decorative = decorative\n\n const resolvedAriaLabel = ariaLabel ?? ariaLabelFromNativeProps\n if (resolvedAriaLabel !== undefined) {\n avatarOptions.ariaLabel = resolvedAriaLabel\n }\n\n const kit = createAvatarRecipe(avatarOptions)\n\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(kit.vars as StyleWithVars), ...style }\n const isOuterShellAccessible = kit.a11y.role === \"img\"\n const isDecorative = kit.a11y.ariaHidden === true\n\n return (\n <span\n {...nativeSpanProps}\n {...kit.dataAttributes}\n {...dataAttributes}\n className={mergedClassName}\n style={mergedStyle}\n role={kit.a11y.role}\n aria-hidden={isDecorative ? \"true\" : undefined}\n aria-label={kit.a11y.ariaLabel}\n >\n {renderAvatarContent(kit.content, isOuterShellAccessible, isDecorative)}\n </span>\n )\n}\n","import { type AvatarOptions, createAvatarRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Avatar, type AvatarProps } from \"./avatar\"\n\nexport interface AvatarBadgeProps extends AvatarProps {\n statusLabel?: string\n}\n\nfunction buildAvatarOptions(props: AvatarBadgeProps): AvatarOptions {\n const avatarOptions: AvatarOptions = {}\n if (props.size !== undefined) avatarOptions.size = props.size\n if (props.type !== undefined) avatarOptions.type = props.type\n if (props.initials !== undefined) avatarOptions.initials = props.initials\n if (props.src !== undefined) avatarOptions.src = props.src\n if (props.alt !== undefined) avatarOptions.alt = props.alt\n if (props.iconName !== undefined) avatarOptions.iconName = props.iconName\n if (props.decorative !== undefined) avatarOptions.decorative = props.decorative\n\n const nativeAriaLabel = typeof props[\"aria-label\"] === \"string\" ? props[\"aria-label\"] : undefined\n const resolvedAriaLabel = props.ariaLabel ?? nativeAriaLabel\n if (resolvedAriaLabel !== undefined) {\n avatarOptions.ariaLabel = resolvedAriaLabel\n }\n\n return avatarOptions\n}\n\nfunction resolveAvatarBadgeLabel(\n avatarOptions: AvatarOptions,\n statusLabel: string,\n): string | undefined {\n const avatarKit = createAvatarRecipe(avatarOptions)\n\n if (avatarKit.a11y.ariaHidden) {\n return undefined\n }\n\n if (avatarKit.content.type === \"image\") {\n return avatarKit.content.alt ? `${avatarKit.content.alt}, ${statusLabel}` : statusLabel\n }\n\n return avatarKit.a11y.ariaLabel ? `${avatarKit.a11y.ariaLabel}, ${statusLabel}` : statusLabel\n}\n\nexport function AvatarBadge(props: AvatarBadgeProps): React.ReactElement {\n const {\n className,\n dataAttributes,\n statusLabel = \"Online\",\n decorative,\n style,\n size,\n type,\n initials,\n src,\n alt,\n iconName,\n ariaLabel,\n ...nativeSpanProps\n } = props\n\n const avatarOptions = buildAvatarOptions(props)\n const avatarKit = createAvatarRecipe(avatarOptions)\n const accessibleLabel = resolveAvatarBadgeLabel(avatarOptions, statusLabel)\n const resolvedSize = avatarKit.dataAttributes[\"data-size\"]\n const mergedClassName = [\"mw-avatar-badge\", `mw-avatar-badge--${resolvedSize}`, className]\n .filter(Boolean)\n .join(\" \")\n const innerAvatarProps: AvatarProps = { decorative: true }\n if (size !== undefined) innerAvatarProps.size = size\n if (type !== undefined) innerAvatarProps.type = type\n if (initials !== undefined) innerAvatarProps.initials = initials\n if (src !== undefined) innerAvatarProps.src = src\n if (alt !== undefined) innerAvatarProps.alt = alt\n if (iconName !== undefined) innerAvatarProps.iconName = iconName\n if (ariaLabel !== undefined) innerAvatarProps.ariaLabel = ariaLabel\n\n return (\n <span\n {...nativeSpanProps}\n {...dataAttributes}\n className={mergedClassName}\n style={style}\n data-component=\"avatar-badge\"\n data-size={resolvedSize}\n data-status=\"online\"\n role={decorative ? undefined : \"img\"}\n aria-hidden={decorative ? \"true\" : undefined}\n aria-label={decorative ? undefined : accessibleLabel}\n >\n <Avatar {...innerAvatarProps} />\n <span aria-hidden=\"true\" className=\"mw-avatar-badge__indicator\" />\n </span>\n )\n}\n","import type * as React from \"react\"\nimport { Avatar, type AvatarProps } from \"./avatar\"\n\nexport interface AvatarGroupItem extends Omit<AvatarProps, \"size\" | \"className\" | \"style\"> {\n id?: string\n}\n\nexport interface AvatarGroupProps\n extends Omit<React.HTMLAttributes<HTMLFieldSetElement>, \"children\"> {\n items: AvatarGroupItem[]\n overflowCount?: number\n overflowLabel?: string\n ariaLabel?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function AvatarGroup(props: AvatarGroupProps): React.ReactElement {\n const {\n items,\n overflowCount,\n overflowLabel,\n ariaLabel,\n className,\n dataAttributes,\n ...nativeFieldsetProps\n } = props\n\n const nativeAriaLabel =\n typeof nativeFieldsetProps[\"aria-label\"] === \"string\"\n ? nativeFieldsetProps[\"aria-label\"]\n : undefined\n const groupLabel = ariaLabel ?? nativeAriaLabel ?? \"Avatar group\"\n const mergedClassName = [\"mw-avatar-group\", className].filter(Boolean).join(\" \")\n const shouldRenderOverflowCounter = overflowCount !== undefined && overflowCount > 0\n const resolvedOverflowLabel = overflowLabel ?? `${overflowCount} more people`\n\n return (\n <fieldset\n {...nativeFieldsetProps}\n {...dataAttributes}\n className={mergedClassName}\n data-component=\"avatar-group\"\n aria-label={groupLabel}\n >\n {items.map((item, itemIndex) => (\n <span\n className=\"mw-avatar-group__item\"\n key={item.id ?? `${itemIndex}-${item.initials ?? item.alt ?? \"avatar\"}`}\n >\n <Avatar {...item} size=\"medium\" />\n </span>\n ))}\n\n {shouldRenderOverflowCounter ? (\n <span aria-label={resolvedOverflowLabel} className=\"mw-avatar-group__counter\" role=\"img\">\n +{overflowCount}\n </span>\n ) : null}\n </fieldset>\n )\n}\n","import { createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Avatar, type AvatarProps } from \"./avatar\"\nimport { AvatarBadge, type AvatarBadgeProps } from \"./avatar-badge\"\nimport { AvatarGroup, type AvatarGroupProps } from \"./avatar-group\"\n\nexport type ProfileAvatarProps = AvatarProps\n\nexport function ProfileAvatar(props: ProfileAvatarProps): React.ReactElement {\n return (\n <Avatar\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"profile\"),\n }}\n />\n )\n}\n\nexport type PresenceAvatarProps = AvatarBadgeProps\n\nexport function PresenceAvatar(props: PresenceAvatarProps): React.ReactElement {\n return (\n <AvatarBadge\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"presence\"),\n }}\n />\n )\n}\n\nexport type TeamAvatarGroupProps = AvatarGroupProps\n\nexport function TeamAvatarGroup(props: TeamAvatarGroupProps): React.ReactElement {\n return (\n <AvatarGroup\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"team\"),\n }}\n />\n )\n}\n","/**\n * React adapter for Marwes Checkbox.\n * - Renders a native <input type=\"checkbox\"> using the core render kit.\n * - Applies strict a11y fields and CSS vars.\n * - Sets `indeterminate` via DOM property (not an HTML attribute).\n */\n\nimport { checkboxRecipe } from \"@marwes-ui/core\"\nimport type { CheckboxProps as CoreCheckboxProps } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\nexport type CheckboxProps = CoreCheckboxProps & {\n /**\n * Called with the next checked value when the user toggles the checkbox.\n * For indeterminate state: browser toggling typically results in `checked=true` and `indeterminate=false`\n * unless you keep controlling it.\n */\n onCheckedChange?: (checked: boolean) => void\n\n /**\n * Escape hatch for consumers that want raw event access.\n * (Optional – keep if you want parity with other components.)\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n}\n\n/**\n * Checkbox (Atom)\n *\n * Low-level checkbox control built on a native `<input type=\"checkbox\">`.\n * Use this when you need custom layout or when the label/description is handled\n * elsewhere (e.g. inside a list item, table row, or custom field wrapper).\n *\n * For most forms, prefer `CheckboxField`, which composes `Checkbox` with\n * label/description/error wiring and consistent spacing.\n *\n * Accessibility\n * - Provide **either** `ariaLabel` **or** `ariaLabelledBy` (or use `CheckboxField` which wires a `<label>`).\n * - Use `ariaDescribedBy` to connect supporting text (help/error).\n * - `indeterminate` is applied via a DOM property, not an HTML attribute.\n *\n * @example Basic (uncontrolled)\n * ```tsx\n * <Checkbox ariaLabel=\"Subscribe to updates\" defaultChecked />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [checked, setChecked] = React.useState(false);\n *\n * <Checkbox\n * ariaLabel=\"Accept terms\"\n * checked={checked}\n * onCheckedChange={setChecked}\n * />\n * ```\n *\n * @example Indeterminate (mixed)\n * ```tsx\n * const [checked, setChecked] = React.useState(false);\n * const [mixed, setMixed] = React.useState(true);\n *\n * <Checkbox\n * ariaLabel=\"Select all\"\n * checked={checked}\n * indeterminate={mixed}\n * onCheckedChange={(next) => {\n * setMixed(false); // first interaction clears mixed state\n * setChecked(next);\n * }}\n * />\n * ```\n *\n * @example With external label + description\n * ```tsx\n * const id = \"terms\";\n * const descId = \"terms-desc\";\n *\n * <>\n * <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n * <Checkbox id={id} ariaDescribedBy={descId} />\n * <label htmlFor={id}>I accept the terms</label>\n * </div>\n * <div id={descId}>Required to continue.</div>\n * </>\n * ```\n */\n\nexport function Checkbox(props: CheckboxProps): React.ReactElement {\n const { onCheckedChange, onChange, ...coreProps } = props\n\n const kit = checkboxRecipe({ ...coreProps })\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n // Keep DOM property in sync.\n React.useLayoutEffect(() => {\n const el = inputRef.current\n if (!el) return\n el.indeterminate = kit.indeterminate\n }, [kit.indeterminate])\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n onChange?.(e)\n onCheckedChange?.(e.currentTarget.checked)\n }\n\n const { a11y } = kit\n\n return (\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={kit.className}\n style={kit.vars}\n id={a11y.id}\n name={a11y.name}\n value={a11y.value}\n disabled={a11y.disabled === true}\n required={a11y.required === true}\n aria-label={a11y.ariaLabel}\n aria-labelledby={a11y.ariaLabelledBy}\n aria-describedby={a11y.ariaDescribedBy}\n aria-checked={a11y.ariaChecked}\n aria-invalid={a11y.ariaInvalid === true ? true : undefined}\n checked={kit.checked}\n defaultChecked={kit.defaultChecked}\n onChange={handleChange}\n />\n )\n}\n","import { buildCheckboxFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Checkbox } from \".\"\nimport type { CheckboxProps } from \".\"\nimport { Paragraph } from \"../paragraph\"\n\nexport type CheckboxFieldProps = {\n /** Optional: if omitted, we generate one via useId(). */\n id?: string\n\n /** Field content (rendered by adapter). */\n label: React.ReactNode\n description?: React.ReactNode\n error?: React.ReactNode\n\n /** Props forwarded to the Checkbox atom. */\n checkbox: CheckboxProps\n\n /** Additional aria-describedby IDs to merge with internal description/error IDs. */\n ariaDescribedBy?: string\n}\n\nfunction cx(...parts: Array<string | false>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\n/**\n * CheckboxField (Molecule) — Recommended\n *\n * A convenient, accessible wrapper around `Checkbox` that provides:\n * - a clickable `<label>` wired via `htmlFor`/`id`\n * - optional `description` and `error` regions\n * - automatic `aria-describedby` wiring (description + error + any external ids)\n * - automatic invalid state when `error` is present\n *\n * Use `CheckboxField` for most forms. Use `Checkbox` directly only when you need\n * a highly custom layout (tables, list rows, compound list items, etc.).\n *\n * Accessibility\n * - Generates a stable `id` via `useId()` when `id` is not provided.\n * - Always renders a real `<label>` element connected to the checkbox control.\n * - When `description` and/or `error` are present, it sets `aria-describedby`\n * on the checkbox to reference their ids.\n * - When `error` is present, the checkbox is marked invalid (aria-invalid via core).\n *\n * @example Minimal (recommended)\n * ```tsx\n * <CheckboxField\n * label=\"Subscribe to updates\"\n * checkbox={{ defaultChecked: true }}\n * />\n * ```\n *\n * @example With description\n * ```tsx\n * <CheckboxField\n * label=\"Subscribe to updates\"\n * description=\"We'll only email you about important product changes.\"\n * checkbox={{}}\n * />\n * ```\n *\n * @example With error (invalid state)\n * ```tsx\n * <CheckboxField\n * label=\"Accept terms\"\n * error=\"You must accept the terms to continue.\"\n * checkbox={{ required: true }}\n * />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [checked, setChecked] = React.useState(false);\n *\n * <CheckboxField\n * label=\"Accept terms\"\n * checkbox={{\n * checked,\n * onCheckedChange: setChecked,\n * }}\n * />\n * ```\n *\n * @example Indeterminate (mixed)\n * ```tsx\n * const [checked, setChecked] = React.useState(false);\n * const [mixed, setMixed] = React.useState(true);\n *\n * <CheckboxField\n * label=\"Select all\"\n * description=\"Applies to all items in the current view.\"\n * checkbox={{\n * checked,\n * indeterminate: mixed,\n * onCheckedChange: (next) => {\n * setMixed(false);\n * setChecked(next);\n * },\n * }}\n * />\n * ```\n *\n * @example Custom describedBy (merge with internal description/error)\n * ```tsx\n * <CheckboxField\n * ariaDescribedBy=\"my-extra-help\"\n * label=\"Enable telemetry\"\n * description=\"Helps us improve the product.\"\n * checkbox={{}}\n * />\n *\n * <div id=\"my-extra-help\">This setting can be changed later.</div>\n * ```\n */\n\nexport function CheckboxField(props: CheckboxFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-checkbox-${reactId}`\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n\n const {\n descriptionId: descId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildCheckboxFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.checkbox.disabled || false\n const invalid = hasError || props.checkbox.invalid || false\n\n const wrapperClass = cx(\n \"mw-checkbox-field\",\n disabled && \"mw-checkbox-field--disabled\",\n invalid && \"mw-checkbox-field--invalid\",\n )\n\n // Prepare checkbox props with proper ariaDescribedBy merging\n const checkboxProps: CheckboxProps = {\n ...props.checkbox,\n id,\n invalid,\n }\n\n if (mergedDescribedBy) {\n checkboxProps.ariaDescribedBy = mergedDescribedBy\n }\n\n return (\n <div className={wrapperClass}>\n <div className=\"mw-checkbox-field__row\">\n <Checkbox {...checkboxProps} />\n\n <label className=\"mw-checkbox-field__label\" htmlFor={id}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </label>\n </div>\n\n {hasDescription && (\n <div className=\"mw-checkbox-field__description\" id={descId}>\n <Paragraph size=\"sm\">{props.description}</Paragraph>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-checkbox-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </div>\n )\n}\n","import { buildCheckboxGroupFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { Checkbox, type CheckboxProps } from \"./checkbox\"\n\nexport interface CheckboxGroupFieldOption {\n value: string\n label: React.ReactNode\n disabled?: boolean\n indeterminate?: boolean\n}\n\nexport type CheckboxGroupFieldCheckboxProps = Omit<\n CheckboxProps,\n | \"ariaDescribedBy\"\n | \"ariaLabel\"\n | \"ariaLabelledBy\"\n | \"checked\"\n | \"defaultChecked\"\n | \"disabled\"\n | \"id\"\n | \"indeterminate\"\n | \"invalid\"\n | \"name\"\n | \"onChange\"\n | \"onCheckedChange\"\n | \"required\"\n | \"value\"\n>\n\nexport interface CheckboxGroupFieldProps {\n label: React.ReactNode\n options: CheckboxGroupFieldOption[]\n description?: React.ReactNode\n error?: React.ReactNode\n value?: string[]\n onChange?: (value: string[]) => void\n defaultValue?: string[]\n checkbox?: CheckboxGroupFieldCheckboxProps\n disabled?: boolean\n required?: boolean\n name?: string\n id?: string\n ariaDescribedBy?: string\n dataAttributes?: Record<string, string>\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) return false\n if (typeof value === \"string\") return value.trim().length > 0\n return true\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction orderSelectedValues(values: string[], options: CheckboxGroupFieldOption[]): string[] {\n const optionValues = new Set(options.map((option) => option.value))\n const selectedValues = new Set(values)\n const knownValues = options\n .map((option) => option.value)\n .filter((value) => selectedValues.has(value))\n const unknownValues = values.filter((value) => !optionValues.has(value))\n return [...knownValues, ...unknownValues]\n}\n\nexport function CheckboxGroupField(props: CheckboxGroupFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-checkbox-group-${reactId}`\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const isInvalid = hasError\n\n const { labelId, descriptionId, errorId, describedBy } = buildCheckboxGroupFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const isControlled = props.value !== undefined\n const [internalValue, setInternalValue] = React.useState<string[]>(\n orderSelectedValues(props.defaultValue ?? [], props.options),\n )\n const selectedValues = orderSelectedValues(\n isControlled ? (props.value ?? []) : internalValue,\n props.options,\n )\n const selectedValueSet = new Set(selectedValues)\n\n const handleToggle = (nextValue: string): void => {\n const rawNextValue = selectedValueSet.has(nextValue)\n ? selectedValues.filter((value) => value !== nextValue)\n : [...selectedValues, nextValue]\n const orderedNextValue = orderSelectedValues(rawNextValue, props.options)\n\n if (!isControlled) {\n setInternalValue(orderedNextValue)\n }\n\n props.onChange?.(orderedNextValue)\n }\n\n const wrapperClass = cx(\n \"mw-checkbox-group-field\",\n props.disabled && \"mw-checkbox-group-field--disabled\",\n isInvalid && \"mw-checkbox-group-field--invalid\",\n )\n\n return (\n <fieldset\n className={wrapperClass}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n aria-invalid={isInvalid ? true : undefined}\n aria-required={props.required ? true : undefined}\n disabled={props.disabled ? true : undefined}\n {...props.dataAttributes}\n >\n <legend className=\"mw-checkbox-group-field__label\" id={labelId}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </legend>\n\n {hasDescription && (\n <div className=\"mw-checkbox-group-field__description\" id={descriptionId}>\n <Paragraph size=\"sm\">{props.description}</Paragraph>\n </div>\n )}\n\n <div className=\"mw-checkbox-group-field__options\">\n {props.options.map((option, index) => {\n const optionId = `${id}-option-${index}`\n const isOptionDisabled = props.disabled || option.disabled || false\n const checkboxProps: CheckboxProps = {\n ...(props.checkbox ?? {}),\n id: optionId,\n value: option.value,\n checked: selectedValueSet.has(option.value),\n disabled: isOptionDisabled,\n invalid: isInvalid,\n onCheckedChange: () => handleToggle(option.value),\n }\n\n if (props.name !== undefined) {\n checkboxProps.name = props.name\n }\n\n if (option.indeterminate !== undefined) {\n checkboxProps.indeterminate = option.indeterminate\n }\n\n return (\n <label\n key={option.value}\n className=\"mw-checkbox-group-field__option\"\n htmlFor={optionId}\n >\n <Checkbox {...checkboxProps} />\n <Paragraph size=\"md\">{option.label}</Paragraph>\n </label>\n )\n })}\n </div>\n\n {hasError && (\n <div className=\"mw-checkbox-group-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </fieldset>\n )\n}\n","/**\n * React adapter for Marwes Divider component.\n * - Renders semantic <hr> using the core divider recipe.\n * - Supports 7 size variants: xxs/xs/sm/md/lg/xl/xxl.\n * - Supports horizontal and vertical orientation.\n * - Figma reference: component 1574:21053\n */\n\nimport { createDividerRecipe } from \"@marwes-ui/core\"\nimport type { DividerOptions, DividerOrientation, DividerSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type DividerProps = DividerOptions &\n Omit<React.HTMLAttributes<HTMLHRElement>, \"children\"> & {\n /**\n * Size variant for the divider.\n * Maps to pixel values: xxs=1px, xs=8px, sm=16px, md=32px, lg=48px, xl=64px, xxl=80px\n * @default \"md\"\n */\n size?: DividerSize\n\n /**\n * Orientation of the divider.\n * @default \"horizontal\"\n */\n orientation?: DividerOrientation\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n }\n\n/**\n * Divider\n *\n * Semantic separator rendered as `<hr>`.\n * Supports size variants and both horizontal and vertical orientations.\n *\n * @example Basic usage (horizontal, medium size)\n * ```tsx\n * <Divider />\n * ```\n *\n * @example Different sizes\n * ```tsx\n * <Divider size=\"xxs\" /> // 1px hairline\n * <Divider size=\"sm\" /> // 16px\n * <Divider size=\"lg\" /> // 48px\n * ```\n *\n * @example Vertical divider\n * ```tsx\n * <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>\n * <span>Left content</span>\n * <Divider orientation=\"vertical\" size=\"sm\" />\n * <span>Right content</span>\n * </div>\n * ```\n *\n * @example With custom ID\n * ```tsx\n * <Divider id=\"section-break\" />\n * ```\n */\n\nexport const Divider = React.forwardRef<HTMLHRElement, DividerProps>((props, ref) => {\n const { className: customClassName, style: customStyle, ...opts } = props\n\n const kit = createDividerRecipe(opts)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return <hr ref={ref} {...kit.a11y} {...kit.dataAttributes} className={className} style={style} />\n})\n\nDivider.displayName = \"Divider\"\n","import { type CssVars, type SkeletonOptions, createSkeletonRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface SkeletonProps\n extends SkeletonOptions,\n Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n dataAttributes?: Record<string, string>\n}\n\nexport function Skeleton(props: SkeletonProps): React.ReactElement {\n const {\n className,\n style,\n dataAttributes,\n variant,\n width,\n height,\n radius,\n animation,\n decorative,\n ariaLabel,\n id,\n ...nativeSpanProps\n } = props\n\n const resolvedAriaLabel =\n ariaLabel ??\n (typeof nativeSpanProps[\"aria-label\"] === \"string\"\n ? (nativeSpanProps[\"aria-label\"] as string)\n : undefined)\n\n const skeletonOptions: SkeletonOptions = {\n ...(variant !== undefined ? { variant } : {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n ...(radius !== undefined ? { radius } : {}),\n ...(animation !== undefined ? { animation } : {}),\n ...(decorative !== undefined ? { decorative } : {}),\n ...(resolvedAriaLabel !== undefined ? { ariaLabel: resolvedAriaLabel } : {}),\n ...(id !== undefined ? { id } : {}),\n }\n\n const renderKit = createSkeletonRecipe(skeletonOptions)\n const mergedClassName = [renderKit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(renderKit.vars as StyleWithVars), ...style }\n\n return (\n <span\n {...nativeSpanProps}\n {...renderKit.dataAttributes}\n {...dataAttributes}\n className={mergedClassName}\n style={mergedStyle}\n role={renderKit.a11y.role}\n id={renderKit.a11y.id}\n aria-hidden={renderKit.a11y.ariaHidden ? \"true\" : undefined}\n aria-label={renderKit.a11y.ariaLabel}\n aria-live={renderKit.a11y.ariaLive}\n />\n )\n}\n","/**\n * React adapter for Marwes Spacing component.\n * - Renders a decorative, aria-hidden div using the core spacing recipe.\n * - Inserts a fixed vertical gap driven by the --mw-spacing-* token scale.\n */\n\nimport { createSpacingRecipe } from \"@marwes-ui/core\"\nimport type { SpacingOptions, SpacingSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type SpacingProps = SpacingOptions &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> & {\n /**\n * Size variant for the spacing.\n * Maps to token values: sp-0=0px, sp-2=2px, sp-4=4px, sp-8=8px,\n * sp-16=16px, sp-24=24px, sp-32=32px, up to sp-120=120px.\n * @default \"sp-24\"\n */\n size?: SpacingSize\n\n /**\n * Ergonomic alias for `size`.\n * Prefer this on `Spacer` for readable layout code.\n */\n spacing?: SpacingSize\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n }\n\nexport type SpacerProps = SpacingProps\n\n/**\n * Spacing\n *\n * Pure layout primitive that inserts a fixed vertical gap between elements.\n * Driven by the design token scale — no magic numbers required.\n *\n * @example Basic usage (24px gap)\n * ```tsx\n * <Spacing />\n * ```\n *\n * @example Semantic size\n * ```tsx\n * <H1>Hello</H1>\n * <Spacing size={Spacings.sp24} />\n * <Paragraph>World</Paragraph>\n * ```\n *\n * @example All sizes\n * ```tsx\n * <Spacing size=\"sp-2\" /> // 2px\n * <Spacing size=\"sp-8\" /> // 8px\n * <Spacing size=\"sp-32\" /> // 32px\n * ```\n */\nexport const Spacing = React.forwardRef<HTMLDivElement, SpacingProps>((props, ref) => {\n const { className: customClassName, scale, size, spacing, style: customStyle } = props\n const resolvedSize = spacing ?? size\n\n const kit = createSpacingRecipe({\n ...(resolvedSize !== undefined ? { size: resolvedSize } : {}),\n ...(scale !== undefined ? { scale } : {}),\n })\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return <div ref={ref} {...kit.a11y} {...kit.dataAttributes} className={className} style={style} />\n})\n\nSpacing.displayName = \"Spacing\"\n\n/**\n * Spacer\n *\n * Alias for `Spacing` with a layout-oriented prop name.\n *\n * @example\n * ```tsx\n * <Spacer spacing={Spacings.sp24} />\n * ```\n */\nexport const Spacer = Spacing\n","/**\n * React adapter for Marwes H1 component.\n * - Renders semantic <h1> using the core heading recipe.\n * - Supports size override for visual/semantic mismatch.\n */\n\nimport { headingRecipe } from \"@marwes-ui/core\"\nimport type { HeadingOptions, HeadingSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type H1Props = Omit<HeadingOptions, \"level\"> & {\n /**\n * Visual size override.\n * Allows using h1 semantics with different visual styling.\n * @default \"h1\"\n */\n size?: HeadingSize\n\n /**\n * Content of the heading.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\n/**\n * H1 (Heading Level 1)\n *\n * Semantic top-level heading rendered as `<h1>`.\n * Supports visual size override for cases where semantic and visual hierarchy differ.\n *\n * @example Basic usage\n * ```tsx\n * <H1>Page Title</H1>\n * ```\n *\n * @example With size override\n * ```tsx\n * <H1 size=\"h2\">Visually smaller but semantically h1</H1>\n * ```\n *\n * @example With ID for anchor linking\n * ```tsx\n * <H1 id=\"introduction\">Introduction</H1>\n * ```\n */\nexport function H1(props: H1Props): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n\n const kit = headingRecipe({ ...opts, level: 1 }, theme)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <h1 id={kit.a11y.id} aria-label={kit.a11y.ariaLabel} className={className} style={style}>\n {children}\n </h1>\n )\n}\n","/**\n * React adapter for Marwes H2 component.\n * - Renders semantic <h2> using the core heading recipe.\n * - Supports size override for visual/semantic mismatch.\n */\n\nimport { headingRecipe } from \"@marwes-ui/core\"\nimport type { HeadingOptions, HeadingSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type H2Props = Omit<HeadingOptions, \"level\"> & {\n /**\n * Visual size override.\n * Allows using h2 semantics with different visual styling.\n * @default \"h2\"\n */\n size?: HeadingSize\n\n /**\n * Content of the heading.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\n/**\n * H2 (Heading Level 2)\n *\n * Semantic section heading rendered as `<h2>`.\n * Supports visual size override for cases where semantic and visual hierarchy differ.\n *\n * @example Basic usage\n * ```tsx\n * <H2>Section Title</H2>\n * ```\n *\n * @example With size override\n * ```tsx\n * <H2 size=\"h1\">Visually larger but semantically h2</H2>\n * ```\n */\nexport function H2(props: H2Props): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n\n const kit = headingRecipe({ ...opts, level: 2 }, theme)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <h2 id={kit.a11y.id} aria-label={kit.a11y.ariaLabel} className={className} style={style}>\n {children}\n </h2>\n )\n}\n","/**\n * React adapter for Marwes H3 component.\n * - Renders semantic <h3> using the core heading recipe.\n * - Supports size override for visual/semantic mismatch.\n */\n\nimport { headingRecipe } from \"@marwes-ui/core\"\nimport type { HeadingOptions, HeadingSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type H3Props = Omit<HeadingOptions, \"level\"> & {\n /**\n * Visual size override.\n * Allows using h3 semantics with different visual styling.\n * @default \"h3\"\n */\n size?: HeadingSize\n\n /**\n * Content of the heading.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\n/**\n * H3 (Heading Level 3)\n *\n * Semantic subsection heading rendered as `<h3>`.\n * Supports visual size override for cases where semantic and visual hierarchy differ.\n *\n * @example Basic usage\n * ```tsx\n * <H3>Subsection Title</H3>\n * ```\n *\n * @example With size override\n * ```tsx\n * <H3 size=\"h2\">Visually larger but semantically h3</H3>\n * ```\n */\nexport function H3(props: H3Props): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n\n const kit = headingRecipe({ ...opts, level: 3 }, theme)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <h3 id={kit.a11y.id} aria-label={kit.a11y.ariaLabel} className={className} style={style}>\n {children}\n </h3>\n )\n}\n","import {\n type StatTileOptions,\n type StatTileTone,\n type StatTileTrendDirection,\n createStatTileRecipe,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport interface StatTileProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"title\">,\n Pick<StatTileOptions, \"dataAttributes\"> {\n label: React.ReactNode\n value: React.ReactNode\n subtitle?: React.ReactNode\n trendValue?: React.ReactNode\n trendDirection?: StatTileTrendDirection\n tone?: StatTileTone\n}\n\nexport function StatTile(props: StatTileProps): React.ReactElement {\n const {\n className,\n dataAttributes,\n label,\n value,\n subtitle,\n trendValue,\n trendDirection,\n tone,\n ...nativeArticleProps\n } = props\n const kit = createStatTileRecipe({\n ...(tone !== undefined ? { tone } : {}),\n ...(trendDirection !== undefined ? { trendDirection } : {}),\n ...(typeof trendValue === \"string\" ? { trendValue } : {}),\n ...(dataAttributes !== undefined ? { dataAttributes } : {}),\n })\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n\n return (\n <article {...nativeArticleProps} {...kit.dataAttributes} className={mergedClassName}>\n <div className={kit.slots.headerClassName}>\n <span className={kit.slots.labelClassName}>{label}</span>\n {trendValue ? (\n <span\n {...kit.trendDataAttributes}\n className={kit.slots.trendClassName}\n aria-label={kit.a11y.trendAriaLabel}\n >\n {kit.trendIcon ? (\n <span className={kit.slots.trendIconClassName} aria-hidden=\"true\">\n {kit.trendIcon}\n </span>\n ) : null}\n <span className={kit.slots.trendValueClassName}>{trendValue}</span>\n </span>\n ) : null}\n </div>\n <div className={kit.slots.valueClassName}>{value}</div>\n {subtitle ? <div className={kit.slots.subtitleClassName}>{subtitle}</div> : null}\n </article>\n )\n}\n","import {\n type DatePickerDay,\n type DatePickerDevice,\n type DatePickerOptions,\n createDatePickerRecipe,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport interface DatePickerProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"onSelect\">,\n Pick<\n DatePickerOptions,\n | \"monthLabel\"\n | \"weekdayLabels\"\n | \"weeks\"\n | \"previousYearLabel\"\n | \"previousMonthLabel\"\n | \"nextMonthLabel\"\n | \"nextYearLabel\"\n | \"cancelLabel\"\n | \"applyLabel\"\n | \"calendarLabel\"\n | \"dataAttributes\"\n > {\n device?: DatePickerDevice\n onPreviousYear?: () => void\n onPreviousMonth?: () => void\n onNextMonth?: () => void\n onNextYear?: () => void\n onDaySelect?: (day: DatePickerDay) => void\n onCancel?: () => void\n onApply?: () => void\n}\n\nexport function DatePicker(props: DatePickerProps): React.ReactElement {\n const {\n className,\n monthLabel,\n weekdayLabels,\n weeks,\n device,\n previousYearLabel,\n previousMonthLabel,\n nextMonthLabel,\n nextYearLabel,\n cancelLabel,\n applyLabel,\n calendarLabel,\n dataAttributes,\n onPreviousYear,\n onPreviousMonth,\n onNextMonth,\n onNextYear,\n onDaySelect,\n onCancel,\n onApply,\n ...nativeProps\n } = props\n const kit = createDatePickerRecipe({\n ...(monthLabel !== undefined ? { monthLabel } : {}),\n ...(weekdayLabels !== undefined ? { weekdayLabels } : {}),\n ...(weeks !== undefined ? { weeks } : {}),\n ...(device !== undefined ? { device } : {}),\n ...(previousYearLabel !== undefined ? { previousYearLabel } : {}),\n ...(previousMonthLabel !== undefined ? { previousMonthLabel } : {}),\n ...(nextMonthLabel !== undefined ? { nextMonthLabel } : {}),\n ...(nextYearLabel !== undefined ? { nextYearLabel } : {}),\n ...(cancelLabel !== undefined ? { cancelLabel } : {}),\n ...(applyLabel !== undefined ? { applyLabel } : {}),\n ...(calendarLabel !== undefined ? { calendarLabel } : {}),\n ...(dataAttributes !== undefined ? { dataAttributes } : {}),\n })\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n\n return (\n <section\n {...nativeProps}\n {...kit.dataAttributes}\n className={mergedClassName}\n aria-label={kit.labels.calendar}\n >\n <header className={kit.slots.headerClassName}>\n <div className={kit.slots.navGroupClassName}>\n <button\n type=\"button\"\n className={kit.slots.navButtonClassName}\n aria-label={kit.labels.previousYear}\n onClick={onPreviousYear}\n >\n «\n </button>\n <button\n type=\"button\"\n className={kit.slots.navButtonClassName}\n aria-label={kit.labels.previousMonth}\n onClick={onPreviousMonth}\n >\n ‹\n </button>\n </div>\n <div className={kit.slots.monthLabelClassName}>{kit.monthLabel}</div>\n <div className={kit.slots.navGroupClassName}>\n <button\n type=\"button\"\n className={kit.slots.navButtonClassName}\n aria-label={kit.labels.nextMonth}\n onClick={onNextMonth}\n >\n ›\n </button>\n <button\n type=\"button\"\n className={kit.slots.navButtonClassName}\n aria-label={kit.labels.nextYear}\n onClick={onNextYear}\n >\n »\n </button>\n </div>\n </header>\n <table className={kit.slots.gridClassName} aria-label={kit.monthLabel}>\n <thead>\n <tr className=\"mw-date-picker__weekdays\">\n {kit.weekdayLabels.map((weekday) => (\n <th key={weekday} className={kit.slots.weekdayClassName} scope=\"col\">\n {weekday}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {kit.weeks.map((week, weekIndex) => (\n <tr\n key={week.map((day) => day.date ?? day.label).join(\"-\")}\n className={kit.slots.weekClassName}\n >\n {week.map((day, dayIndex) => {\n const dayKit = kit.dayKits[weekIndex]?.[dayIndex]\n if (!dayKit) return null\n return (\n <td\n key={day.date ?? `${weekIndex}-${dayIndex}`}\n className={kit.slots.cellClassName}\n >\n <button\n type=\"button\"\n {...dayKit.dataAttributes}\n className={dayKit.className}\n aria-label={dayKit.ariaLabel}\n aria-pressed={dayKit.selected ? \"true\" : undefined}\n disabled={dayKit.disabled}\n onClick={() => onDaySelect?.(day)}\n >\n {day.label}\n </button>\n </td>\n )\n })}\n </tr>\n ))}\n </tbody>\n </table>\n <footer className={kit.slots.footerClassName}>\n <button type=\"button\" className={kit.slots.footerButtonClassName} onClick={onCancel}>\n {kit.labels.cancel}\n </button>\n {kit.labels.apply ? (\n <button\n type=\"button\"\n className={`${kit.slots.footerButtonClassName} mw-date-picker__footer-button--primary`}\n onClick={onApply}\n >\n {kit.labels.apply}\n </button>\n ) : null}\n </footer>\n </section>\n )\n}\n","import { createCardRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Optional title rendered above the body content */\n title?: React.ReactNode\n /** Card body content */\n children?: React.ReactNode\n /** Data attributes for AI-friendly metadata (used by purpose variants). */\n dataAttributes?: Record<string, string>\n}\n\nexport function Card(props: CardProps): React.ReactElement {\n const { title, children, className, dataAttributes, ...nativeDivProps } = props\n const kit = createCardRecipe(dataAttributes ? { dataAttributes } : {})\n\n return (\n <div\n {...nativeDivProps}\n {...kit.dataAttributes}\n className={[kit.className, className].filter(Boolean).join(\" \")}\n >\n {title ? (\n <div className=\"mw-card__header\">\n <span className=\"mw-card__title\">{title}</span>\n </div>\n ) : null}\n <div className=\"mw-card__body\">{children}</div>\n </div>\n )\n}\n","import type * as React from \"react\"\nimport { Card, type CardProps } from \"./card\"\n\nexport type ProductCardProps = CardProps\n\nexport function ProductCard(props: ProductCardProps): React.ReactElement {\n return (\n <Card\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"product-card\",\n }}\n />\n )\n}\n\nexport type ProfileCardProps = CardProps\n\nexport function ProfileCard(props: ProfileCardProps): React.ReactElement {\n return (\n <Card\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"profile-card\",\n }}\n />\n )\n}\n\nexport type StatCardProps = CardProps\n\nexport function StatCard(props: StatCardProps): React.ReactElement {\n return (\n <Card\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"stat-card\",\n }}\n />\n )\n}\n","import { createToastRecipe } from \"@marwes-ui/core\"\nimport type { ToastOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport interface ToastProps extends ToastOptions {\n /** Main notification message */\n children: React.ReactNode\n /** Icon element shown on the left (e.g. an <Icon> component) */\n icon?: React.ReactNode\n /** Action element shown inline after the message (e.g. a text action or <a>) */\n action?: React.ReactNode\n /** When provided, renders a dismiss (×) button and calls this on click */\n onDismiss?: () => void\n className?: string\n id?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function Toast(props: ToastProps): React.ReactElement {\n const { children, icon, action, onDismiss, className, id, dataAttributes, ...coreProps } = props\n const kit = createToastRecipe(coreProps)\n const { a11y } = kit\n\n return (\n <div\n id={id}\n className={cx(kit.className, className)}\n role={a11y.role}\n aria-live={a11y.ariaLive}\n aria-atomic=\"true\"\n {...kit.dataAttributes}\n {...dataAttributes}\n >\n {icon && (\n <span className=\"mw-toast__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <div className=\"mw-toast__body\">\n <span className=\"mw-toast__text\">{children}</span>\n {action && <span className=\"mw-toast__action\">{action}</span>}\n </div>\n {onDismiss && (\n <button\n type=\"button\"\n className=\"mw-toast__dismiss\"\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n />\n )}\n </div>\n )\n}\n","import { IconName, createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { Toast, type ToastProps } from \"./toast\"\n\nfunction getDefaultIcon(iconName: IconName): React.ReactNode {\n return <Icon name={iconName} decorative />\n}\n\nexport type SuccessToastProps = ToastProps\n\nexport function SuccessToast(props: SuccessToastProps): React.ReactElement {\n return (\n <Toast\n {...props}\n variant={props.variant ?? \"outline\"}\n ariaLive={props.ariaLive ?? \"polite\"}\n icon={props.icon ?? getDefaultIcon(IconName.Check)}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"success-toast\"),\n }}\n />\n )\n}\n\nexport type ErrorToastProps = ToastProps\n\nexport function ErrorToast(props: ErrorToastProps): React.ReactElement {\n return (\n <Toast\n {...props}\n variant={props.variant ?? \"outline\"}\n ariaLive={props.ariaLive ?? \"assertive\"}\n icon={props.icon ?? getDefaultIcon(IconName.XCircle)}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"error-toast\"),\n }}\n />\n )\n}\n\nexport type WarningToastProps = ToastProps\n\nexport function WarningToast(props: WarningToastProps): React.ReactElement {\n return (\n <Toast\n {...props}\n variant={props.variant ?? \"outline\"}\n ariaLive={props.ariaLive ?? \"polite\"}\n icon={props.icon ?? getDefaultIcon(IconName.AlertTriangle)}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"warning-toast\"),\n }}\n />\n )\n}\n\nexport type InfoToastProps = ToastProps\n\nexport function InfoToast(props: InfoToastProps): React.ReactElement {\n return (\n <Toast\n {...props}\n variant={props.variant ?? \"outline\"}\n ariaLive={props.ariaLive ?? \"polite\"}\n icon={props.icon ?? getDefaultIcon(IconName.Info)}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"info-toast\"),\n }}\n />\n )\n}\n","import type { ToastIntent } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Toast, type ToastProps } from \"./toast\"\nimport type { ManagedToast, ToastContainerProps } from \"./toast-manager-types\"\nimport { ErrorToast, InfoToast, SuccessToast, WarningToast } from \"./variants\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction renderToastByIntent(\n toast: ManagedToast,\n onDismiss: ((id: string) => void) | undefined,\n): React.ReactElement {\n const sharedProps: ToastProps = {\n id: toast.id,\n children: toast.children,\n }\n const dismissHandler = onDismiss ? () => onDismiss(toast.id) : undefined\n\n if (toast.icon !== undefined) {\n sharedProps.icon = toast.icon\n }\n\n if (toast.action !== undefined) {\n sharedProps.action = toast.action\n }\n\n if (dismissHandler) {\n sharedProps.onDismiss = dismissHandler\n }\n\n if (toast.className !== undefined) {\n sharedProps.className = toast.className\n }\n\n if (toast.variant !== undefined) {\n sharedProps.variant = toast.variant\n }\n\n if (toast.ariaLive !== undefined) {\n sharedProps.ariaLive = toast.ariaLive\n }\n\n if (toast.dataAttributes !== undefined || toast.intent !== undefined) {\n sharedProps.dataAttributes = {\n ...(toast.dataAttributes ?? {}),\n ...(toast.intent !== undefined ? { \"data-intent\": toast.intent } : {}),\n }\n }\n\n switch (toast.intent as ToastIntent | undefined) {\n case \"success\":\n return <SuccessToast {...sharedProps} />\n case \"error\":\n return <ErrorToast {...sharedProps} />\n case \"warning\":\n return <WarningToast {...sharedProps} />\n case \"info\":\n return <InfoToast {...sharedProps} />\n default:\n return <Toast {...sharedProps} />\n }\n}\n\nfunction ToastViewportItem(props: {\n toast: ManagedToast\n onDismiss?: (id: string) => void\n}): React.ReactElement {\n const timerHandleRef = React.useRef<number | null>(null)\n const timerStartedAtRef = React.useRef<number | null>(null)\n const remainingDurationRef = React.useRef<number | null>(null)\n const pointerInsideRef = React.useRef(false)\n const focusInsideRef = React.useRef(false)\n\n const clearDismissTimer = React.useCallback(() => {\n if (timerHandleRef.current === null) {\n return\n }\n\n window.clearTimeout(timerHandleRef.current)\n timerHandleRef.current = null\n timerStartedAtRef.current = null\n }, [])\n\n const scheduleDismissTimer = React.useCallback(\n (delay: number) => {\n if (\n !props.onDismiss ||\n delay <= 0 ||\n pointerInsideRef.current ||\n focusInsideRef.current ||\n timerHandleRef.current !== null\n ) {\n return\n }\n\n timerStartedAtRef.current = Date.now()\n timerHandleRef.current = window.setTimeout(() => {\n timerHandleRef.current = null\n timerStartedAtRef.current = null\n remainingDurationRef.current = 0\n props.onDismiss?.(props.toast.id)\n }, delay)\n },\n [props.onDismiss, props.toast.id],\n )\n\n const pauseDismissTimer = React.useCallback(() => {\n if (timerHandleRef.current === null || timerStartedAtRef.current === null) {\n return\n }\n\n const elapsed = Date.now() - timerStartedAtRef.current\n const remainingDuration = remainingDurationRef.current ?? 0\n\n remainingDurationRef.current = Math.max(remainingDuration - elapsed, 0)\n clearDismissTimer()\n }, [clearDismissTimer])\n\n const resumeDismissTimer = React.useCallback(() => {\n if (pointerInsideRef.current || focusInsideRef.current) {\n return\n }\n\n const remainingDuration = remainingDurationRef.current\n\n if (remainingDuration === null || remainingDuration === undefined || remainingDuration <= 0) {\n return\n }\n\n scheduleDismissTimer(remainingDuration)\n }, [scheduleDismissTimer])\n\n React.useEffect(() => {\n clearDismissTimer()\n pointerInsideRef.current = false\n focusInsideRef.current = false\n\n if (!props.onDismiss || props.toast.duration === undefined || props.toast.duration === null) {\n remainingDurationRef.current = null\n return\n }\n\n if (props.toast.duration <= 0) {\n remainingDurationRef.current = 0\n return\n }\n\n remainingDurationRef.current = props.toast.duration\n scheduleDismissTimer(props.toast.duration)\n\n return () => {\n clearDismissTimer()\n }\n }, [clearDismissTimer, props.onDismiss, props.toast.duration, scheduleDismissTimer])\n\n return (\n <div\n className=\"mw-toast-container__item\"\n onMouseEnter={() => {\n pointerInsideRef.current = true\n pauseDismissTimer()\n }}\n onMouseLeave={() => {\n pointerInsideRef.current = false\n resumeDismissTimer()\n }}\n onFocusCapture={() => {\n focusInsideRef.current = true\n pauseDismissTimer()\n }}\n onBlurCapture={(event) => {\n if (event.currentTarget.contains(event.relatedTarget)) {\n return\n }\n\n focusInsideRef.current = false\n resumeDismissTimer()\n }}\n >\n {renderToastByIntent(props.toast, props.onDismiss)}\n </div>\n )\n}\n\nexport function ToastContainer(props: ToastContainerProps): React.ReactElement {\n const placement = props.placement ?? \"top-right\"\n const visibleToasts =\n props.maxVisible && props.maxVisible > 0 ? props.toasts.slice(-props.maxVisible) : props.toasts\n\n return (\n <div className={cx(\"mw-toast-container\", `mw-toast-container--${placement}`, props.className)}>\n {visibleToasts.map((toast) => (\n <ToastViewportItem\n key={toast.id}\n toast={toast}\n {...(props.onDismiss ? { onDismiss: props.onDismiss } : {})}\n />\n ))}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { ToastContainer } from \"./toast-container\"\nimport type {\n ManagedToast,\n ShowToastOptions,\n ToastController,\n ToastProviderProps,\n} from \"./toast-manager-types\"\n\nconst ToastContext = React.createContext<ToastController | null>(null)\n\nexport function ToastProvider(props: ToastProviderProps): React.ReactElement {\n const [toasts, setToasts] = React.useState<ManagedToast[]>([])\n const idRef = React.useRef(0)\n\n const dismiss = React.useCallback((id: string) => {\n setToasts((currentToasts) => {\n const toast = currentToasts.find((item) => item.id === id)\n toast?.onDismiss?.()\n return currentToasts.filter((item) => item.id !== id)\n })\n }, [])\n\n const clear = React.useCallback(() => {\n setToasts((currentToasts) => {\n for (const toast of currentToasts) {\n toast.onDismiss?.()\n }\n\n return []\n })\n }, [])\n\n const show = React.useCallback(\n (toast: ShowToastOptions) => {\n idRef.current += 1\n const id = `mw-toast-${idRef.current}`\n\n setToasts((currentToasts) => [\n ...currentToasts,\n {\n ...toast,\n id,\n duration:\n toast.duration === undefined\n ? props.defaultDuration === undefined\n ? 4000\n : props.defaultDuration\n : toast.duration,\n },\n ])\n\n return id\n },\n [props.defaultDuration],\n )\n\n const value = React.useMemo<ToastController>(\n () => ({\n show,\n dismiss,\n clear,\n }),\n [clear, dismiss, show],\n )\n\n return (\n <ToastContext.Provider value={value}>\n {props.children}\n <ToastContainer\n toasts={toasts}\n onDismiss={dismiss}\n {...(props.placement ? { placement: props.placement } : {})}\n {...(props.maxVisible !== undefined ? { maxVisible: props.maxVisible } : {})}\n {...(props.className ? { className: props.className } : {})}\n />\n </ToastContext.Provider>\n )\n}\n\nexport function useToast(): ToastController {\n const context = React.useContext(ToastContext)\n\n if (!context) {\n throw new Error(\"ToastProvider is missing. Wrap your app in <ToastProvider />.\")\n }\n\n return context\n}\n","import { type CssVars, type TooltipOptions, createTooltipRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface TooltipProps\n extends TooltipOptions,\n Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n children: React.ReactNode\n dataAttributes?: Record<string, string>\n}\n\nexport function Tooltip(props: TooltipProps): React.ReactElement {\n const { children, className, style, dataAttributes, id, ...nativeSpanProps } = props\n const tooltipOptions: TooltipOptions = {}\n\n if (id !== undefined) {\n tooltipOptions.id = id\n }\n\n const kit = createTooltipRecipe(tooltipOptions)\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(kit.vars as StyleWithVars), ...style }\n\n return (\n <span\n {...nativeSpanProps}\n {...kit.dataAttributes}\n {...dataAttributes}\n id={kit.a11y.id}\n className={mergedClassName}\n style={mergedStyle}\n role={kit.a11y.role}\n >\n {children}\n </span>\n )\n}\n","import { IconName, type IconNameType } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { Tooltip } from \"./tooltip\"\n\nconst TOOLTIP_EXIT_DURATION_MS = 160\n\nfunction cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport interface TooltipGroupProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"content\"> {\n content: React.ReactNode\n icon?: IconNameType\n triggerLabel?: string\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n tooltipId?: string\n tooltipClassName?: string\n triggerClassName?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function TooltipGroup(props: TooltipGroupProps): React.ReactElement {\n const reactId = React.useId()\n const {\n content,\n icon = IconName.HelpCircle,\n triggerLabel = \"Show tooltip\",\n open,\n defaultOpen = false,\n onOpenChange,\n tooltipId,\n tooltipClassName,\n triggerClassName,\n dataAttributes,\n className,\n id,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n onKeyDown,\n ...nativeSpanProps\n } = props\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const isControlled = open !== undefined\n const resolvedOpen = isControlled ? open : internalOpen\n const [isTooltipMounted, setIsTooltipMounted] = React.useState(resolvedOpen)\n const resolvedTooltipId = tooltipId ?? `${id ?? `mw-tooltip-group-${reactId}`}-tooltip`\n\n React.useEffect(() => {\n if (resolvedOpen) {\n setIsTooltipMounted(true)\n return\n }\n\n const timeoutId = window.setTimeout(() => {\n setIsTooltipMounted(false)\n }, TOOLTIP_EXIT_DURATION_MS)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [resolvedOpen])\n\n const updateOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (resolvedOpen === nextOpen) {\n return\n }\n\n if (!isControlled) {\n setInternalOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n },\n [isControlled, onOpenChange, resolvedOpen],\n )\n\n return (\n <span\n {...nativeSpanProps}\n {...dataAttributes}\n id={id}\n className={cx(\"mw-tooltip-group\", className)}\n data-component=\"tooltip-group\"\n data-open={resolvedOpen ? \"true\" : undefined}\n onMouseEnter={(event) => {\n onMouseEnter?.(event)\n updateOpen(true)\n }}\n onMouseLeave={(event) => {\n onMouseLeave?.(event)\n updateOpen(false)\n }}\n onFocus={(event) => {\n onFocus?.(event)\n updateOpen(true)\n }}\n onBlur={(event) => {\n onBlur?.(event)\n\n const nextFocusedElement = event.relatedTarget\n if (\n nextFocusedElement instanceof Node &&\n event.currentTarget.contains(nextFocusedElement)\n ) {\n return\n }\n\n updateOpen(false)\n }}\n onKeyDown={(event) => {\n onKeyDown?.(event)\n\n if (event.key === \"Escape\") {\n updateOpen(false)\n }\n }}\n >\n {isTooltipMounted ? (\n <Tooltip\n id={resolvedTooltipId}\n className={tooltipClassName}\n data-state={resolvedOpen ? \"open\" : \"closed\"}\n aria-hidden={resolvedOpen ? undefined : \"true\"}\n >\n {content}\n </Tooltip>\n ) : null}\n\n <button\n type=\"button\"\n className={cx(\"mw-tooltip-group__trigger\", triggerClassName)}\n aria-label={triggerLabel}\n aria-describedby={resolvedOpen ? resolvedTooltipId : undefined}\n >\n <Icon name={icon} decorative />\n </button>\n </span>\n )\n}\n","/**\n * React adapter for Marwes Accordion.\n * - Renders a compound structure: wrapper div > trigger button + panel div.\n * - id is optional; falls back to React.useId() for aria wiring.\n */\n\nimport { createAccordionRecipe } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\nexport interface AccordionProps {\n /** Unique id for aria wiring. Defaults to React.useId() when omitted. */\n id?: string\n open?: boolean\n disabled?: boolean\n /** Content of the trigger button header */\n title: React.ReactNode\n /** Content shown in the collapsible panel */\n children: React.ReactNode\n className?: string\n /** Called when the trigger is clicked */\n onToggle?: () => void\n}\n\nexport function Accordion(props: AccordionProps): React.ReactElement {\n const { title, children, className, onToggle, id: idProp, open, disabled } = props\n const autoId = React.useId()\n const resolvedId = idProp ?? autoId.replace(/:/g, \"\")\n\n const opts: import(\"@marwes-ui/core\").AccordionOptions = { id: resolvedId }\n if (open !== undefined) opts.open = open\n if (disabled !== undefined) opts.disabled = disabled\n const kit = createAccordionRecipe(opts)\n const { a11y } = kit\n\n function handleTriggerClick(): void {\n if (disabled) return\n onToggle?.()\n }\n\n return (\n <div className={[kit.className, className].filter(Boolean).join(\" \")}>\n <button\n id={a11y.triggerId}\n type=\"button\"\n className=\"mw-accordion__trigger\"\n aria-expanded={a11y.ariaExpanded}\n aria-controls={a11y.panelId}\n aria-disabled={a11y.ariaDisabled}\n disabled={disabled}\n onClick={handleTriggerClick}\n >\n <span className=\"mw-accordion__title\">{title}</span>\n <span className=\"mw-accordion__icon\" aria-hidden=\"true\" />\n </button>\n <section\n id={a11y.panelId}\n aria-labelledby={a11y.triggerId}\n className=\"mw-accordion__panel\"\n hidden={!open}\n >\n <div className=\"mw-accordion__content\">{children}</div>\n </section>\n </div>\n )\n}\n","/**\n * AccordionField (Molecule) — Recommended\n *\n * An accessible accordion group with field semantics: group label, optional\n * description, optional error, and coordinated open-state management.\n *\n * Composes `Accordion` atoms into a `role=\"group\"` container with:\n * - a visible label wired via `aria-labelledby`\n * - optional `description` and `error` regions\n * - automatic `aria-describedby` wiring (description + error + external IDs)\n * - automatic `aria-invalid` when `error` is present\n * - controlled (`openItems` + `onOpenItemsChange`) or uncontrolled (`defaultOpenItems`) state\n * - single-open (`multiple=false`, default) or multi-open (`multiple=true`) behaviour\n *\n * Use `AccordionField` for most accordion groups. Use `Accordion` directly only\n * when you need a standalone collapsible panel outside of group semantics.\n *\n * @example Basic (uncontrolled, single-open)\n * ```tsx\n * <AccordionField\n * label=\"FAQ\"\n * items={[\n * { value: \"q1\", title: \"What is Marwes?\", content: <p>A design system.</p> },\n * { value: \"q2\", title: \"Is it free?\", content: <p>Yes.</p> },\n * ]}\n * defaultOpenItems={[\"q1\"]}\n * />\n * ```\n *\n * @example Multi-open, controlled\n * ```tsx\n * const [open, setOpen] = React.useState<string[]>([]);\n *\n * <AccordionField\n * label=\"Settings\"\n * items={settingsItems}\n * openItems={open}\n * onOpenItemsChange={setOpen}\n * multiple\n * />\n * ```\n */\n\nimport { buildAccordionFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { Accordion } from \"./accordion\"\n\nexport interface AccordionFieldItem {\n value: string\n title: React.ReactNode\n content?: React.ReactNode\n /** @deprecated Use `content` instead for cross-framework parity. */\n children?: React.ReactNode\n disabled?: boolean\n}\n\nexport interface AccordionFieldProps {\n /** Visible label for the accordion group. */\n label: React.ReactNode\n\n /** Optional description text below the label. */\n description?: React.ReactNode\n\n /** Error message. When present, sets aria-invalid on the group. */\n error?: React.ReactNode\n\n /** Accordion items to render. */\n items: AccordionFieldItem[]\n\n /** Allow multiple items open simultaneously. Defaults to `true`. */\n multiple?: boolean\n\n /** Controlled: currently open item values. */\n openItems?: string[]\n\n /** Controlled: called with the new open-items array when state changes. */\n onOpenItemsChange?: (openItems: string[]) => void\n\n /** Uncontrolled: initially open item values. */\n defaultOpenItems?: string[]\n\n /** Disables all accordion items. */\n disabled?: boolean\n\n /** Explicit ID. If omitted, generated via useId(). */\n id?: string\n\n /** Additional aria-describedby IDs to merge with internal description/error IDs. */\n ariaDescribedBy?: string\n\n /** Data attributes for AI-friendly metadata (used by context variants). */\n dataAttributes?: Record<string, string>\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) return false\n if (typeof value === \"string\") return value.trim().length > 0\n return true\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction resolveAccordionItemContent(item: AccordionFieldItem): React.ReactNode {\n return item.content ?? item.children\n}\n\nexport function AccordionField(props: AccordionFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-accordion-field-${reactId}`\n const multipleAllowed = props.multiple ?? true\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const isInvalid = hasError || false\n\n const { labelId, descriptionId, errorId, describedBy } = buildAccordionFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n // Controlled vs uncontrolled state\n const isControlled = props.openItems !== undefined\n const [internalOpenItems, setInternalOpenItems] = React.useState<string[]>(\n props.defaultOpenItems ?? [],\n )\n const openItems = isControlled ? (props.openItems ?? []) : internalOpenItems\n\n const handleToggle = (itemValue: string): void => {\n const isCurrentlyOpen = openItems.includes(itemValue)\n let nextOpenItems: string[]\n\n if (isCurrentlyOpen) {\n nextOpenItems = openItems.filter((v) => v !== itemValue)\n } else if (multipleAllowed) {\n nextOpenItems = [...openItems, itemValue]\n } else {\n nextOpenItems = [itemValue]\n }\n\n if (!isControlled) {\n setInternalOpenItems(nextOpenItems)\n }\n props.onOpenItemsChange?.(nextOpenItems)\n }\n\n const wrapperClass = cx(\n \"mw-accordion-field\",\n props.disabled && \"mw-accordion-field--disabled\",\n isInvalid && \"mw-accordion-field--invalid\",\n )\n\n return (\n <fieldset\n className={wrapperClass}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n aria-invalid={isInvalid ? true : undefined}\n {...props.dataAttributes}\n >\n <legend className=\"mw-accordion-field__label\" id={labelId}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </legend>\n\n <div className=\"mw-accordion-field__items\">\n {props.items.map((item) => {\n const isDisabled = props.disabled || item.disabled || false\n const isOpen = openItems.includes(item.value)\n\n return (\n <Accordion\n key={item.value}\n id={`${id}-item-${item.value}`}\n title={item.title}\n open={isOpen}\n disabled={isDisabled}\n onToggle={() => handleToggle(item.value)}\n >\n {resolveAccordionItemContent(item)}\n </Accordion>\n )\n })}\n </div>\n\n {hasDescription && (\n <div className=\"mw-accordion-field__description\" id={descriptionId}>\n <Paragraph size=\"sm\">{props.description}</Paragraph>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-accordion-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </fieldset>\n )\n}\n","import type * as React from \"react\"\nimport { AccordionField, type AccordionFieldProps } from \"./accordion-field\"\n\n/**\n * Purpose Components — Accordion\n *\n * Pre-configured accordion compositions that encode a specific semantic purpose.\n * Each sets `data-purpose` for machine-readable intent while keeping the\n * visual `variant` prop for presentation only.\n */\n\n// ============================================================================\n// FAQ ACCORDION - Single-open Q&A style\n// ============================================================================\n\nexport type FAQAccordionProps = Omit<AccordionFieldProps, \"multiple\">\n\n/**\n * FAQAccordion - For question-and-answer sections.\n *\n * **AI Context:**\n * - Enforces single-open behaviour (opening one closes others)\n * - Adds `data-purpose=\"faq\"` for AI parsing\n * - Ideal for FAQ pages, help sections, knowledge bases\n *\n * @example\n * ```tsx\n * import { FAQAccordion } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <FAQAccordion\n * label=\"Frequently Asked Questions\"\n * items={[\n * { value: \"q1\", title: \"What is Marwes?\", content: <p>A design system.</p> },\n * { value: \"q2\", title: \"Is it free?\", content: <p>Yes.</p> },\n * ]}\n * defaultOpenItems={[\"q1\"]}\n * />\n * );\n * }\n * ```\n */\nexport function FAQAccordion(props: FAQAccordionProps): React.ReactElement {\n return (\n <AccordionField\n {...props}\n multiple={false}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"faq\",\n }}\n />\n )\n}\n\n// ============================================================================\n// SETTINGS ACCORDION - Multi-open configuration panels\n// ============================================================================\n\nexport type SettingsAccordionProps = Omit<AccordionFieldProps, \"multiple\">\n\n/**\n * SettingsAccordion - For configuration and settings panels.\n *\n * **AI Context:**\n * - Enforces multi-open behaviour (multiple sections open simultaneously)\n * - Adds `data-purpose=\"settings\"` for AI parsing\n * - Ideal for preferences, admin panels, configuration forms\n *\n * @example\n * ```tsx\n * import { SettingsAccordion } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <SettingsAccordion\n * label=\"Account Settings\"\n * items={[\n * { value: \"profile\", title: \"Profile\", content: <ProfileForm /> },\n * { value: \"notifications\", title: \"Notifications\", content: <NotificationsForm /> },\n * { value: \"privacy\", title: \"Privacy\", content: <PrivacyForm /> },\n * ]}\n * />\n * );\n * }\n * ```\n */\nexport function SettingsAccordion(props: SettingsAccordionProps): React.ReactElement {\n return (\n <AccordionField\n {...props}\n multiple={true}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"settings\",\n }}\n />\n )\n}\n\n// ============================================================================\n// SECTIONS ACCORDION - Flexible content sections\n// ============================================================================\n\nexport type SectionsAccordionProps = AccordionFieldProps\n\n/**\n * SectionsAccordion - For generic collapsible content sections.\n *\n * **AI Context:**\n * - Same API as `AccordionField` with `data-purpose=\"sections\"` for AI parsing\n * - Defaults to multi-open but can be overridden with `multiple={false}`\n * - Use when no more specific purpose component fits\n * - Documentation, product details, order breakdowns\n *\n * @example\n * ```tsx\n * import { SectionsAccordion } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <SectionsAccordion\n * label=\"Product Details\"\n * items={[\n * { value: \"desc\", title: \"Description\", content: <p>Full description.</p> },\n * { value: \"specs\", title: \"Specifications\", content: <SpecsTable /> },\n * { value: \"reviews\", title: \"Reviews\", content: <ReviewsList /> },\n * ]}\n * />\n * );\n * }\n * ```\n */\nexport function SectionsAccordion(props: SectionsAccordionProps): React.ReactElement {\n return (\n <AccordionField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"sections\",\n }}\n />\n )\n}\n","/**\n * React adapter for Marwes Radio.\n * - Renders a native <input type=\"radio\"> using the core render kit.\n * - Applies strict a11y fields and modifier classes.\n */\n\nimport { radioRecipe } from \"@marwes-ui/core\"\nimport type { RadioOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport type RadioProps = RadioOptions & {\n /**\n * Called with the next checked value when the user selects this radio.\n * In a group, only the newly selected radio fires `true`.\n */\n onCheckedChange?: (checked: boolean) => void\n /** Raw event access escape hatch. */\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n}\n\n/**\n * Radio (Atom)\n *\n * Low-level radio control built on a native `<input type=\"radio\">`.\n * Use this when you need custom layout or when the label/grouping is handled\n * elsewhere (e.g. inside a list item, table row, or custom field wrapper).\n *\n * For most forms, prefer `RadioGroupField`, which composes `Radio` with\n * group label/description/error wiring, selection state, and consistent spacing.\n *\n * **AI Context:**\n * - Renders a native `<input type=\"radio\">` using the core `radioRecipe`\n * - Applies strict a11y attributes: `aria-label`, `aria-labelledby`, `aria-describedby`, `aria-invalid`\n * - Supports controlled (`checked` + `onCheckedChange`) and uncontrolled (`defaultChecked`) modes\n * - Modifier classes: `mw-radio`, `mw-radio--disabled`, `mw-radio--invalid`\n *\n * Accessibility:\n * - Provide **either** `ariaLabel` **or** `ariaLabelledBy` (or wrap with a `<label htmlFor>`).\n * - Use the same `name` attribute on all radios in a group for native keyboard navigation.\n * - Use `ariaDescribedBy` to connect supporting text (help/error).\n *\n * @example Basic (uncontrolled)\n * ```tsx\n * <Radio ariaLabel=\"Option A\" name=\"preference\" defaultChecked />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [selected, setSelected] = React.useState(\"a\");\n *\n * <Radio\n * name=\"color\"\n * value=\"a\"\n * checked={selected === \"a\"}\n * onCheckedChange={(checked) => { if (checked) setSelected(\"a\"); }}\n * ariaLabel=\"Red\"\n * />\n * ```\n *\n * @example With external label\n * ```tsx\n * const id = \"opt-1\";\n *\n * <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n * <Radio id={id} name=\"group\" value=\"a\" />\n * <label htmlFor={id}>Option A</label>\n * </div>\n * ```\n *\n * @example In a group (manual)\n * ```tsx\n * const [selected, setSelected] = React.useState(\"a\");\n * const options = [\n * { value: \"a\", label: \"Option A\" },\n * { value: \"b\", label: \"Option B\" },\n * ];\n *\n * <div role=\"radiogroup\" aria-label=\"Preference\">\n * {options.map(({ value, label }) => (\n * <label key={value}>\n * <Radio\n * name=\"preference\"\n * value={value}\n * checked={selected === value}\n * onCheckedChange={(checked) => { if (checked) setSelected(value); }}\n * />\n * {label}\n * </label>\n * ))}\n * </div>\n * ```\n */\n\nexport function Radio(props: RadioProps): React.ReactElement {\n const { onCheckedChange, onChange, ...coreProps } = props\n const kit = radioRecipe(coreProps)\n const { a11y } = kit\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n onChange?.(e)\n onCheckedChange?.(e.currentTarget.checked)\n }\n\n return (\n <input\n type=\"radio\"\n className={kit.className}\n id={a11y.id}\n name={a11y.name}\n value={a11y.value}\n disabled={a11y.disabled === true}\n required={a11y.required === true}\n aria-label={a11y.ariaLabel}\n aria-labelledby={a11y.ariaLabelledBy}\n aria-describedby={a11y.ariaDescribedBy}\n aria-invalid={a11y.ariaInvalid === true ? true : undefined}\n checked={kit.checked}\n defaultChecked={kit.defaultChecked}\n onChange={handleChange}\n />\n )\n}\n","/**\n * RadioGroupField (Molecule) — Recommended\n *\n * An accessible radio group with field semantics: group label, optional\n * description, optional error, and selection state management.\n *\n * Composes `Radio` atoms into a `role=\"radiogroup\"` container with:\n * - a visible label wired via `aria-labelledby`\n * - optional `description` and `error` regions\n * - automatic `aria-describedby` wiring (description + error + external IDs)\n * - automatic `aria-invalid` when `error` is present\n * - controlled (`value` + `onChange`) or uncontrolled (`defaultValue`) state\n *\n * Use `RadioGroupField` for most forms. Use `Radio` directly only when you\n * need a highly custom layout (tables, list rows, compound list items, etc.).\n *\n * **AI Context:**\n * - Renders `role=\"radiogroup\"` with proper ARIA wiring\n * - Manages selection state for child Radio atoms\n * - All child radios share the same `name` for native keyboard navigation\n * - Supports both controlled and uncontrolled patterns\n *\n * @example Basic (uncontrolled)\n * ```tsx\n * <RadioGroupField\n * name=\"color\"\n * label=\"Favorite color\"\n * options={[\n * { value: \"red\", label: \"Red\" },\n * { value: \"blue\", label: \"Blue\" },\n * { value: \"green\", label: \"Green\" },\n * ]}\n * defaultValue=\"red\"\n * />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [color, setColor] = React.useState(\"red\");\n *\n * <RadioGroupField\n * name=\"color\"\n * label=\"Favorite color\"\n * options={[\n * { value: \"red\", label: \"Red\" },\n * { value: \"blue\", label: \"Blue\" },\n * ]}\n * value={color}\n * onChange={setColor}\n * />\n * ```\n *\n * @example With description and error\n * ```tsx\n * <RadioGroupField\n * name=\"plan\"\n * label=\"Select a plan\"\n * description=\"Choose the plan that best fits your needs.\"\n * error=\"Please select a plan to continue.\"\n * options={[\n * { value: \"free\", label: \"Free\" },\n * { value: \"pro\", label: \"Pro\" },\n * ]}\n * />\n * ```\n */\n\nimport { buildRadioGroupFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { Radio } from \"./radio\"\n\nexport interface RadioGroupFieldOption {\n value: string\n label: React.ReactNode\n disabled?: boolean\n}\n\nexport interface RadioGroupFieldProps {\n /** Shared name for all radio inputs in the group. */\n name: string\n\n /** Visible label for the radio group. */\n label: React.ReactNode\n\n /** Optional description text below the label. */\n description?: React.ReactNode\n\n /** Error message. When present, sets aria-invalid on the group. */\n error?: React.ReactNode\n\n /** Controlled: current selected value. */\n value?: string\n\n /** Controlled: called with the new value when selection changes. */\n onChange?: (value: string) => void\n\n /** Uncontrolled: initial selected value. */\n defaultValue?: string\n\n /** Radio options to render. */\n options: RadioGroupFieldOption[]\n\n /** Disables all radio inputs in the group. */\n disabled?: boolean\n\n /** Marks the group as required. */\n required?: boolean\n\n /** Explicit ID. If omitted, generated via useId(). */\n id?: string\n\n /** Additional aria-describedby IDs to merge with internal description/error IDs. */\n ariaDescribedBy?: string\n\n /** Data attributes for AI-friendly metadata (used by context variants). */\n dataAttributes?: Record<string, string>\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) return false\n if (typeof value === \"string\") return value.trim().length > 0\n return true\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport function RadioGroupField(props: RadioGroupFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-radio-group-${reactId}`\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const isInvalid = hasError || false\n\n const { labelId, descriptionId, errorId, describedBy } = buildRadioGroupFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n // Controlled vs uncontrolled state\n const isControlled = props.value !== undefined\n const [internalValue, setInternalValue] = React.useState(props.defaultValue)\n const selectedValue = isControlled ? props.value : internalValue\n\n const handleSelect = (optionValue: string): void => {\n if (!isControlled) {\n setInternalValue(optionValue)\n }\n props.onChange?.(optionValue)\n }\n\n const wrapperClass = cx(\n \"mw-radio-group-field\",\n props.disabled && \"mw-radio-group-field--disabled\",\n isInvalid && \"mw-radio-group-field--invalid\",\n )\n\n return (\n <div className={wrapperClass} {...props.dataAttributes}>\n <div className=\"mw-radio-group-field__label\" id={labelId}>\n <Paragraph size=\"sm\">{props.label}</Paragraph>\n </div>\n\n {hasDescription && (\n <div className=\"mw-radio-group-field__description\" id={descriptionId}>\n <Paragraph size=\"sm\">{props.description}</Paragraph>\n </div>\n )}\n\n <div\n role=\"radiogroup\"\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n aria-invalid={isInvalid ? true : undefined}\n aria-required={props.required ? true : undefined}\n className=\"mw-radio-group-field__options\"\n >\n {props.options.map(({ value, label, disabled: optionDisabled }) => {\n const optionId = `${id}-option-${value}`\n const isDisabled = props.disabled || optionDisabled || false\n\n return (\n <label key={value} className=\"mw-radio-group-field__option\" htmlFor={optionId}>\n <Radio\n id={optionId}\n name={props.name}\n value={value}\n checked={selectedValue === value}\n disabled={isDisabled}\n invalid={isInvalid}\n {...(props.required ? { required: true } : {})}\n onCheckedChange={(checked) => {\n if (checked) handleSelect(value)\n }}\n />\n <Paragraph size=\"sm\">{label}</Paragraph>\n </label>\n )\n })}\n </div>\n\n {hasError && (\n <div className=\"mw-radio-group-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </div>\n )\n}\n","import type * as React from \"react\"\nimport { RadioGroupField, type RadioGroupFieldProps } from \"./radio-group-field\"\n\n/**\n * Purpose Components — Radio Group\n *\n * Pre-configured radio group compositions that encode a specific semantic purpose.\n * Each sets `data-purpose` for machine-readable intent while keeping the\n * visual `variant` prop for presentation only.\n */\n\n// ============================================================================\n// YES/NO RADIO GROUP - Binary Choice\n// ============================================================================\n\nexport type YesNoRadioGroupProps = Omit<RadioGroupFieldProps, \"options\"> & {\n /** Label for the \"Yes\" option. Defaults to \"Yes\". */\n yesLabel?: React.ReactNode\n /** Label for the \"No\" option. Defaults to \"No\". */\n noLabel?: React.ReactNode\n}\n\n/**\n * YesNoRadioGroup - For binary yes/no choices.\n *\n * **AI Context:**\n * - Pre-built options with values `\"yes\"` and `\"no\"`\n * - Adds `data-purpose=\"binary-choice\"` for AI parsing\n * - Labels customizable via `yesLabel` / `noLabel`\n *\n * @example\n * ```tsx\n * import { YesNoRadioGroup } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <YesNoRadioGroup\n * name=\"accept-terms\"\n * label=\"Do you accept the terms?\"\n * defaultValue=\"no\"\n * />\n * );\n * }\n * ```\n *\n * @example Custom labels\n * ```tsx\n * <YesNoRadioGroup\n * name=\"newsletter\"\n * label=\"Subscribe to newsletter?\"\n * yesLabel=\"Subscribe\"\n * noLabel=\"No thanks\"\n * />\n * ```\n */\nexport function YesNoRadioGroup(props: YesNoRadioGroupProps): React.ReactElement {\n const { yesLabel = \"Yes\", noLabel = \"No\", ...restProps } = props\n\n const options = [\n { value: \"yes\", label: yesLabel },\n { value: \"no\", label: noLabel },\n ]\n\n return (\n <RadioGroupField\n {...restProps}\n options={options}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"binary-choice\",\n }}\n />\n )\n}\n\n// ============================================================================\n// RATING RADIO GROUP - Numeric Scale\n// ============================================================================\n\nexport type RatingRadioGroupProps = Omit<RadioGroupFieldProps, \"options\"> & {\n /** Minimum value (inclusive). Defaults to 1. */\n min?: number\n /** Maximum value (inclusive). Defaults to 5. */\n max?: number\n /** Custom label function. Receives the numeric value, returns a label. Defaults to `String(value)`. */\n labelFn?: (value: number) => React.ReactNode\n}\n\n/**\n * RatingRadioGroup - For numeric scale selections.\n *\n * **AI Context:**\n * - Generates options from `min` to `max` (default 1–5)\n * - Values are string representations of numbers (\"1\", \"2\", etc.)\n * - Adds `data-purpose=\"rating\"` for AI parsing\n * - Custom labels via `labelFn`\n *\n * @example\n * ```tsx\n * import { RatingRadioGroup } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <RatingRadioGroup\n * name=\"satisfaction\"\n * label=\"How satisfied are you?\"\n * defaultValue=\"3\"\n * />\n * );\n * }\n * ```\n *\n * @example Custom range and labels\n * ```tsx\n * <RatingRadioGroup\n * name=\"priority\"\n * label=\"Priority level\"\n * min={1}\n * max={3}\n * labelFn={(v) => [\"Low\", \"Medium\", \"High\"][v - 1]}\n * />\n * ```\n */\nexport function RatingRadioGroup(props: RatingRadioGroupProps): React.ReactElement {\n const { min = 1, max = 5, labelFn = String, ...restProps } = props\n\n const options = Array.from({ length: max - min + 1 }, (_, i) => {\n const value = min + i\n return { value: String(value), label: labelFn(value) }\n })\n\n return (\n <RadioGroupField\n {...restProps}\n options={options}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"rating\",\n }}\n />\n )\n}\n\n// ============================================================================\n// OPTION RADIO GROUP - General Labeled Options\n// ============================================================================\n\nexport type OptionRadioGroupProps = RadioGroupFieldProps\n\n/**\n * OptionRadioGroup - For general labeled option selection.\n *\n * **AI Context:**\n * - Same API as `RadioGroupField` with `data-purpose=\"selection\"` for AI parsing\n * - Use when no more specific purpose component fits\n * - Preferences, categories, modes, or any custom option list\n *\n * @example\n * ```tsx\n * import { OptionRadioGroup } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <OptionRadioGroup\n * name=\"theme\"\n * label=\"Select theme\"\n * options={[\n * { value: \"light\", label: \"Light\" },\n * { value: \"dark\", label: \"Dark\" },\n * { value: \"system\", label: \"System\" },\n * ]}\n * defaultValue=\"system\"\n * />\n * );\n * }\n * ```\n */\nexport function OptionRadioGroup(props: OptionRadioGroupProps): React.ReactElement {\n return (\n <RadioGroupField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"selection\",\n }}\n />\n )\n}\n","import { createBadgeRecipe } from \"@marwes-ui/core\"\nimport type { BadgeOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport type BadgeProps = BadgeOptions & {\n children?: React.ReactNode\n className?: string\n id?: string\n /** Data attributes for AI-friendly metadata (used by context variants). */\n dataAttributes?: Record<string, string>\n}\n\nexport function Badge(props: BadgeProps): React.ReactElement {\n const { children, className, id, dataAttributes, ...coreProps } = props\n const kit = createBadgeRecipe(coreProps)\n\n return (\n <span\n id={id}\n className={[kit.className, className].filter(Boolean).join(\" \")}\n aria-label={kit.a11y.ariaLabel}\n {...kit.dataAttributes}\n {...dataAttributes}\n >\n {children}\n </span>\n )\n}\n","/**\n * BadgeGroup (Molecule) — Recommended\n *\n * An accessible badge group with a visible label. Groups related badges\n * into a `role=\"group\"` container with `aria-labelledby` wiring.\n *\n * Use `BadgeGroup` when displaying multiple related badges together\n * (e.g. a list of tags, status indicators, or categories).\n * Use `Badge` directly only when a single standalone badge is needed.\n *\n * @example\n * ```tsx\n * import { BadgeVariant } from \"@marwes-ui/core\";\n *\n * <BadgeGroup label=\"Status\">\n * <Badge variant={BadgeVariant.success}>Active</Badge>\n * <Badge variant={BadgeVariant.warning}>Pending review</Badge>\n * </BadgeGroup>\n * ```\n */\n\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\n\nexport interface BadgeGroupProps {\n /** Visible label for the badge group. */\n label: React.ReactNode\n\n /** Badge children to render inside the group. */\n children: React.ReactNode\n\n /** Additional CSS class names. */\n className?: string\n\n /** Explicit ID. If omitted, generated via useId(). */\n id?: string\n\n /** Data attributes for AI-friendly metadata (used by context variants). */\n dataAttributes?: Record<string, string>\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport function BadgeGroup(props: BadgeGroupProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-badge-group-${reactId}`\n const labelId = `${id}-label`\n\n const className = cx(\"mw-badge-group\", props.className)\n\n return (\n <fieldset className={className} aria-labelledby={labelId} {...props.dataAttributes}>\n <legend className=\"mw-badge-group__label\" id={labelId}>\n <Paragraph size=\"sm\">{props.label}</Paragraph>\n </legend>\n <div className=\"mw-badge-group__items\">{props.children}</div>\n </fieldset>\n )\n}\n","/**\n * Purpose Components — Badge\n *\n * Pre-configured badge compositions that encode a specific semantic purpose.\n * Each sets `data-purpose` for machine-readable intent while keeping the\n * visual `variant` prop for presentation only.\n */\n\nimport { createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Badge, type BadgeProps } from \"./badge\"\n\n// ============================================================================\n// STATUS BADGE - Operational/lifecycle status\n// ============================================================================\n\nexport type StatusBadgeProps = BadgeProps\n\n/**\n * StatusBadge - For operational or lifecycle status indicators.\n *\n * **AI Context:**\n * - Adds `data-purpose=\"status\"` for AI parsing\n * - Ideal for active/inactive, online/offline, enabled/disabled states\n *\n * @example\n * ```tsx\n * import { BadgeVariant } from \"@marwes-ui/core\";\n *\n * <StatusBadge variant={BadgeVariant.success}>Active</StatusBadge>\n * <StatusBadge variant={BadgeVariant.error}>Offline</StatusBadge>\n * ```\n */\nexport function StatusBadge(props: StatusBadgeProps): React.ReactElement {\n return (\n <Badge\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"status\"),\n }}\n />\n )\n}\n\n// ============================================================================\n// PRIORITY BADGE - Urgency or importance levels\n// ============================================================================\n\nexport type PriorityBadgeProps = BadgeProps\n\n/**\n * PriorityBadge - For urgency or importance indicators.\n *\n * **AI Context:**\n * - Adds `data-purpose=\"priority\"` for AI parsing\n * - Ideal for critical/high/medium/low priority labels\n *\n * @example\n * ```tsx\n * import { BadgeVariant } from \"@marwes-ui/core\";\n *\n * <PriorityBadge variant={BadgeVariant.error}>Critical</PriorityBadge>\n * <PriorityBadge variant={BadgeVariant.warning}>High</PriorityBadge>\n * ```\n */\nexport function PriorityBadge(props: PriorityBadgeProps): React.ReactElement {\n return (\n <Badge\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"priority\"),\n }}\n />\n )\n}\n\n// ============================================================================\n// NOTIFICATION BADGE - Counts and alerts\n// ============================================================================\n\nexport type NotificationBadgeProps = BadgeProps\n\n/**\n * NotificationBadge - For notification counts and alert indicators.\n *\n * **AI Context:**\n * - Adds `data-purpose=\"notification\"` for AI parsing\n * - Ideal for unread counts, new items, alert badges\n * - Always provide `ariaLabel` for numeric-only content\n *\n * @example\n * ```tsx\n * import { BadgeVariant } from \"@marwes-ui/core\";\n *\n * <NotificationBadge variant={BadgeVariant.info} ariaLabel=\"5 unread messages\">5</NotificationBadge>\n * ```\n */\nexport function NotificationBadge(props: NotificationBadgeProps): React.ReactElement {\n return (\n <Badge\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"notification\"),\n }}\n />\n )\n}\n","import { createSwitchRecipe } from \"@marwes-ui/core\"\nimport type { SwitchOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport type SwitchProps = SwitchOptions & {\n /** Label text rendered next to the toggle */\n children?: React.ReactNode\n className?: string\n id?: string\n onCheckedChange?: (checked: boolean) => void\n onClick?: React.MouseEventHandler<HTMLButtonElement>\n}\n\nexport function Switch(props: SwitchProps): React.ReactElement {\n const { children, className, id, onCheckedChange, onClick, ...coreProps } = props\n const kit = createSwitchRecipe(coreProps)\n const { a11y } = kit\n const isDisabled = a11y.ariaDisabled === true\n\n const handleClick: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n onClick?.(event)\n\n if (isDisabled || event.defaultPrevented) {\n return\n }\n\n onCheckedChange?.(!a11y.ariaChecked)\n }\n\n return (\n <button\n id={id}\n type=\"button\"\n role={a11y.role}\n disabled={isDisabled}\n aria-checked={a11y.ariaChecked}\n aria-disabled={a11y.ariaDisabled}\n aria-label={a11y.ariaLabel}\n aria-labelledby={a11y.ariaLabelledby}\n aria-describedby={a11y.ariaDescribedBy}\n className={[kit.className, className].filter(Boolean).join(\" \")}\n style={kit.vars}\n onClick={handleClick}\n >\n <span className=\"mw-switch__track\">\n <span className=\"mw-switch__thumb\" />\n </span>\n {children}\n </button>\n )\n}\n","import { buildSwitchFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { Switch } from \"./switch\"\nimport type { SwitchProps } from \"./switch\"\n\nexport type SwitchFieldProps = {\n id?: string\n label: React.ReactNode\n description?: React.ReactNode\n error?: React.ReactNode\n switch: SwitchProps\n ariaDescribedBy?: string\n dataAttributes?: Record<string, string>\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nexport function SwitchField(props: SwitchFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-switch-${reactId}`\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const { labelId, descriptionId, errorId, describedBy } = buildSwitchFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.switch.disabled || false\n const invalid = hasError\n const wrapperClass = cx(\n \"mw-switch-field\",\n disabled && \"mw-switch-field--disabled\",\n invalid && \"mw-switch-field--invalid\",\n )\n const {\n ariaLabel: _ignoredAriaLabel,\n ariaLabelledby: _ignoredAriaLabelledby,\n ariaDescribedBy: _ignoredAriaDescribedBy,\n children: _ignoredChildren,\n ...switchProps\n } = props.switch\n\n return (\n <div className={wrapperClass} {...props.dataAttributes}>\n <div className=\"mw-switch-field__row\">\n <Switch\n {...switchProps}\n id={id}\n ariaLabelledby={labelId}\n {...(describedBy ? { ariaDescribedBy: describedBy } : {})}\n />\n\n <span className=\"mw-switch-field__label\" id={labelId}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </span>\n </div>\n\n {hasDescription && (\n <div className=\"mw-switch-field__description\" id={descriptionId}>\n <Paragraph size=\"sm\">{props.description}</Paragraph>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-switch-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </div>\n )\n}\n","import type * as React from \"react\"\nimport { SwitchField, type SwitchFieldProps } from \"./switch-field\"\n\nexport type FeatureToggleProps = SwitchFieldProps\n\nexport function FeatureToggle(props: FeatureToggleProps): React.ReactElement {\n return (\n <SwitchField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"feature-toggle\",\n }}\n />\n )\n}\n\nexport type PreferenceSwitchProps = SwitchFieldProps\n\nexport function PreferenceSwitch(props: PreferenceSwitchProps): React.ReactElement {\n return (\n <SwitchField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"preference\",\n }}\n />\n )\n}\n\nexport type PermissionSwitchProps = SwitchFieldProps\n\nexport function PermissionSwitch(props: PermissionSwitchProps): React.ReactElement {\n return (\n <SwitchField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"permission\",\n }}\n />\n )\n}\n","import type { CssVars, SliderOptions } from \"@marwes-ui/core\"\nimport { createSliderRecipe } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\ntype NativeSliderProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"className\" | \"defaultValue\" | \"max\" | \"min\" | \"onChange\" | \"step\" | \"style\" | \"type\" | \"value\"\n>\n\nexport type SliderProps = SliderOptions &\n NativeSliderProps & {\n className?: string\n style?: React.CSSProperties\n onValueChange?: (value: number) => void\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n }\n\ntype SliderOptionDraft = {\n [Key in keyof SliderOptions]?: SliderOptions[Key] | undefined\n}\n\nfunction buildSliderOptions(options: SliderOptionDraft): SliderOptions {\n const sliderOptions: SliderOptions = {}\n\n if (options.id !== undefined) sliderOptions.id = options.id\n if (options.name !== undefined) sliderOptions.name = options.name\n if (options.min !== undefined) sliderOptions.min = options.min\n if (options.max !== undefined) sliderOptions.max = options.max\n if (options.step !== undefined) sliderOptions.step = options.step\n if (options.value !== undefined) sliderOptions.value = options.value\n if (options.defaultValue !== undefined) sliderOptions.defaultValue = options.defaultValue\n if (options.disabled !== undefined) sliderOptions.disabled = options.disabled\n if (options.required !== undefined) sliderOptions.required = options.required\n if (options.showTooltip !== undefined) sliderOptions.showTooltip = options.showTooltip\n if (options.showTouchArea !== undefined) sliderOptions.showTouchArea = options.showTouchArea\n if (options.orientation !== undefined) sliderOptions.orientation = options.orientation\n if (options.ariaLabel !== undefined) sliderOptions.ariaLabel = options.ariaLabel\n if (options.ariaLabelledBy !== undefined) sliderOptions.ariaLabelledBy = options.ariaLabelledBy\n if (options.ariaDescribedBy !== undefined) sliderOptions.ariaDescribedBy = options.ariaDescribedBy\n if (options.ariaValueText !== undefined) sliderOptions.ariaValueText = options.ariaValueText\n\n return sliderOptions\n}\n\nfunction resolveSliderValue(options: SliderOptionDraft): number {\n return createSliderRecipe(buildSliderOptions(options)).value\n}\n\nexport const Slider = React.forwardRef<HTMLInputElement, SliderProps>((props, ref) => {\n const {\n id,\n name,\n min,\n max,\n step,\n value,\n defaultValue,\n disabled,\n required,\n showTooltip,\n showTouchArea,\n orientation,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaValueText,\n className: customClassName,\n style: customStyle,\n onValueChange,\n onChange,\n ...inputProps\n } = props\n\n const isControlled = value !== undefined\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() =>\n resolveSliderValue({ min, max, step, value, defaultValue }),\n )\n\n React.useEffect(() => {\n if (!isControlled) {\n setUncontrolledValue(resolveSliderValue({ min, max, step, defaultValue }))\n }\n }, [defaultValue, isControlled, max, min, step])\n\n const currentValue = isControlled\n ? resolveSliderValue({ min, max, step, value })\n : uncontrolledValue\n\n const kit = createSliderRecipe(\n buildSliderOptions({\n id,\n name,\n min,\n max,\n step,\n value: currentValue,\n disabled,\n required,\n showTooltip,\n showTouchArea,\n orientation,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaValueText,\n }),\n )\n\n useRenderKitDebug(kit, \"Slider\")\n\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const nextValue = Number(event.currentTarget.value)\n\n if (!isControlled) {\n setUncontrolledValue(nextValue)\n }\n\n onChange?.(event)\n onValueChange?.(nextValue)\n }\n\n return (\n <div className={className} style={style} {...kit.dataAttributes}>\n <div className=\"mw-slider__control\">\n <input\n {...inputProps}\n ref={ref}\n type={kit.a11y.type}\n id={kit.a11y.id}\n name={kit.a11y.name}\n min={kit.a11y.min}\n max={kit.a11y.max}\n step={kit.a11y.step}\n disabled={kit.a11y.disabled === true}\n required={kit.a11y.required === true}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-describedby={kit.a11y.ariaDescribedBy}\n aria-valuetext={kit.a11y.ariaValueText}\n aria-orientation={kit.a11y.ariaOrientation}\n className={kit.inputClassName}\n value={currentValue}\n onChange={handleChange}\n />\n\n <div className=\"mw-slider__visual\" aria-hidden=\"true\">\n <span className=\"mw-slider__track\" />\n <span className=\"mw-slider__fill\" />\n <span className=\"mw-slider__touch-area\" />\n <span className=\"mw-slider__thumb\" />\n </div>\n\n {kit.showTooltip ? (\n <span className=\"mw-slider__tooltip\" aria-hidden=\"true\">\n {currentValue}\n </span>\n ) : null}\n </div>\n </div>\n )\n})\n\nSlider.displayName = \"Slider\"\n","import { buildSliderFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { Slider } from \"./slider\"\nimport type { SliderProps } from \"./slider\"\n\nexport type SliderFieldLabelPosition = \"top\" | \"inline\"\n\nexport type SliderFieldProps = {\n id?: string\n label: React.ReactNode\n description?: React.ReactNode\n error?: React.ReactNode\n slider: SliderProps\n ariaDescribedBy?: string\n minValueLabel?: React.ReactNode\n maxValueLabel?: React.ReactNode\n labelPosition?: SliderFieldLabelPosition\n showEdgeValues?: boolean\n dataAttributes?: Record<string, string>\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nfunction resolveEdgeValueLabel(\n value: React.ReactNode | undefined,\n fallback: number,\n): React.ReactNode {\n return value ?? `${fallback}`\n}\n\nexport function SliderField(props: SliderFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-slider-${reactId}`\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const { labelId, descriptionId, errorId, describedBy } = buildSliderFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.slider.disabled || false\n const labelPosition = props.labelPosition ?? \"top\"\n const showEdgeValues = props.showEdgeValues !== false\n const minValue = props.slider.min ?? 0\n const maxValue = props.slider.max ?? 100\n const minValueLabel = resolveEdgeValueLabel(props.minValueLabel, minValue)\n const maxValueLabel = resolveEdgeValueLabel(props.maxValueLabel, maxValue)\n const wrapperClass = cx(\n \"mw-slider-field\",\n labelPosition === \"top\" && \"mw-slider-field--label-top\",\n labelPosition === \"inline\" && \"mw-slider-field--label-inline\",\n disabled && \"mw-slider-field--disabled\",\n hasError && \"mw-slider-field--invalid\",\n )\n\n const {\n ariaLabel: _ignoredAriaLabel,\n ariaLabelledBy: _ignoredAriaLabelledBy,\n ariaDescribedBy: _ignoredAriaDescribedBy,\n style: sliderStyle,\n ...sliderProps\n } = props.slider\n\n const renderEdgeValue = (position: \"min\" | \"max\", value: React.ReactNode): React.ReactElement => (\n <span className={`mw-slider-field__edge-value mw-slider-field__edge-value--${position}`}>\n <Paragraph size=\"sm\">{value}</Paragraph>\n </span>\n )\n\n return (\n <div className={wrapperClass} data-label-position={labelPosition} {...props.dataAttributes}>\n <div className=\"mw-slider-field__header\">\n <div className=\"mw-slider-field__label\" id={labelId}>\n <Paragraph size=\"md\">{props.label}</Paragraph>\n </div>\n </div>\n\n {hasDescription && (\n <div className=\"mw-slider-field__description\" id={descriptionId}>\n <Paragraph size=\"sm\">{props.description}</Paragraph>\n </div>\n )}\n\n {labelPosition === \"top\" && showEdgeValues ? (\n <div className=\"mw-slider-field__values-row\">\n {renderEdgeValue(\"min\", minValueLabel)}\n {renderEdgeValue(\"max\", maxValueLabel)}\n </div>\n ) : null}\n\n <div className=\"mw-slider-field__control-row\">\n {labelPosition === \"inline\" && showEdgeValues\n ? renderEdgeValue(\"min\", minValueLabel)\n : null}\n\n <div className=\"mw-slider-field__slider\">\n <Slider\n {...sliderProps}\n id={id}\n ariaLabelledBy={labelId}\n {...(describedBy ? { ariaDescribedBy: describedBy } : {})}\n aria-invalid={hasError ? true : undefined}\n style={{ width: \"100%\", ...(sliderStyle ?? {}) }}\n />\n </div>\n\n {labelPosition === \"inline\" && showEdgeValues\n ? renderEdgeValue(\"max\", maxValueLabel)\n : null}\n </div>\n\n {hasError && (\n <div className=\"mw-slider-field__error\" id={errorId} aria-live=\"polite\">\n <Paragraph size=\"sm\">{props.error}</Paragraph>\n </div>\n )}\n </div>\n )\n}\n","import type * as React from \"react\"\nimport type { SliderProps } from \"./slider\"\nimport { SliderField, type SliderFieldProps } from \"./slider-field\"\n\ntype SliderFieldPurposeProps = Omit<\n SliderFieldProps,\n \"label\" | \"slider\" | \"minValueLabel\" | \"maxValueLabel\"\n> & {\n label?: React.ReactNode\n slider?: SliderProps\n orientation?: SliderProps[\"orientation\"]\n minValueLabel?: React.ReactNode\n maxValueLabel?: React.ReactNode\n}\n\nexport type VolumeSliderProps = SliderFieldPurposeProps\n\nexport function VolumeSlider(props: VolumeSliderProps): React.ReactElement {\n const { orientation, slider, ...fieldProps } = props\n\n return (\n <SliderField\n {...fieldProps}\n label={props.label ?? \"Volume\"}\n minValueLabel={props.minValueLabel ?? \"0\"}\n maxValueLabel={props.maxValueLabel ?? \"100\"}\n slider={{\n min: 0,\n max: 100,\n step: 1,\n showTooltip: true,\n ...(orientation !== undefined ? { orientation } : {}),\n ...slider,\n }}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"volume\",\n }}\n />\n )\n}\n\nexport type BrightnessSliderProps = SliderFieldPurposeProps\n\nexport function BrightnessSlider(props: BrightnessSliderProps): React.ReactElement {\n const { orientation, slider, ...fieldProps } = props\n\n return (\n <SliderField\n {...fieldProps}\n label={props.label ?? \"Brightness\"}\n minValueLabel={props.minValueLabel ?? \"0\"}\n maxValueLabel={props.maxValueLabel ?? \"100\"}\n slider={{\n min: 0,\n max: 100,\n step: 1,\n showTooltip: true,\n ...(orientation !== undefined ? { orientation } : {}),\n ...slider,\n }}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"brightness\",\n }}\n />\n )\n}\n\nexport type RadiusSliderProps = SliderFieldPurposeProps\n\nexport function RadiusSlider(props: RadiusSliderProps): React.ReactElement {\n const { orientation, slider, ...fieldProps } = props\n\n return (\n <SliderField\n {...fieldProps}\n label={props.label ?? \"Radius\"}\n minValueLabel={props.minValueLabel ?? \"0px\"}\n maxValueLabel={props.maxValueLabel ?? \"48px\"}\n slider={{\n min: 0,\n max: 48,\n step: 2,\n showTooltip: true,\n ...(orientation !== undefined ? { orientation } : {}),\n ...slider,\n }}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"radius\",\n }}\n />\n )\n}\n","/**\n * React adapter for Marwes Tab.\n * - Renders a native <button> using the core render kit.\n * - Applies strict a11y fields and modifier classes.\n */\n\nimport { createTabRecipe } from \"@marwes-ui/core\"\nimport type { TabOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport type TabProps = TabOptions & {\n children?: React.ReactNode\n className?: string\n onClick?: React.MouseEventHandler<HTMLButtonElement>\n id?: string\n}\n\nexport function Tab(props: TabProps): React.ReactElement {\n const { children, className, onClick, id, ...coreProps } = props\n const kit = createTabRecipe(coreProps)\n const { a11y } = kit\n\n return (\n <button\n id={id}\n className={[kit.className, className].filter(Boolean).join(\" \")}\n style={Object.keys(kit.vars).length > 0 ? kit.vars : undefined}\n role={a11y.role}\n aria-selected={a11y.ariaSelected}\n aria-disabled={a11y.ariaDisabled}\n aria-label={a11y.ariaLabel}\n aria-controls={a11y.ariaControls}\n tabIndex={a11y.tabIndex}\n disabled={coreProps.disabled}\n onClick={onClick}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n","import {\n type TabGroupItemState,\n buildTabGroupA11yIds,\n moveTabSelection,\n resolveTabValue,\n} from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { Tab } from \"./tab\"\n\nexport interface TabGroupItem {\n value: string\n label: React.ReactNode\n panel: React.ReactNode\n disabled?: boolean\n ariaLabel?: string\n}\n\nexport interface TabGroupProps {\n id?: string\n label?: React.ReactNode\n ariaLabel?: string\n tabs: TabGroupItem[]\n activeTab?: string\n defaultActiveTab?: string\n onActiveTabChange?: (value: string) => void\n className?: string\n dataAttributes?: Record<string, string>\n}\n\nexport interface TabPanelProps {\n id: string\n tabId: string\n hidden?: boolean\n className?: string\n children?: React.ReactNode\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nfunction focusTab(tabId: string): void {\n if (typeof document === \"undefined\") {\n return\n }\n\n const tab = document.getElementById(tabId)\n if (tab instanceof HTMLButtonElement) {\n tab.focus()\n }\n}\n\nfunction toItemState(tab: TabGroupItem): TabGroupItemState {\n const itemState: TabGroupItemState = { value: tab.value }\n\n if (tab.disabled) {\n itemState.disabled = true\n }\n\n return itemState\n}\n\nfunction renderPanelContent(children: React.ReactNode): React.ReactNode {\n if (typeof children === \"string\" || typeof children === \"number\") {\n return <Paragraph size=\"md\">{children}</Paragraph>\n }\n\n return children\n}\n\nexport function TabPanel(props: TabPanelProps): React.ReactElement {\n return (\n <div\n id={props.id}\n role=\"tabpanel\"\n aria-labelledby={props.tabId}\n className={cx(\"mw-tab-group__panel\", props.className)}\n hidden={props.hidden}\n tabIndex={props.hidden ? undefined : 0}\n >\n {renderPanelContent(props.children)}\n </div>\n )\n}\n\nexport function TabGroup(props: TabGroupProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-tab-group-${reactId}`\n const hasLabel = hasContent(props.label)\n const itemStates = React.useMemo<TabGroupItemState[]>(\n () => props.tabs.map((tab) => toItemState(tab)),\n [props.tabs],\n )\n const isControlled = props.activeTab !== undefined\n const [internalActiveTab, setInternalActiveTab] = React.useState<string | undefined>(() =>\n resolveTabValue(itemStates, props.defaultActiveTab),\n )\n\n const resolvedActiveTab = React.useMemo(\n () => resolveTabValue(itemStates, isControlled ? props.activeTab : internalActiveTab),\n [internalActiveTab, isControlled, itemStates, props.activeTab],\n )\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalActiveTab((currentValue) =>\n resolveTabValue(itemStates, currentValue ?? props.defaultActiveTab),\n )\n }\n }, [isControlled, itemStates, props.defaultActiveTab])\n\n const a11yIds = React.useMemo(\n () =>\n buildTabGroupA11yIds({\n id,\n itemValues: props.tabs.map((tab) => tab.value),\n hasLabel,\n }),\n [hasLabel, id, props.tabs],\n )\n\n const selectTab = React.useCallback(\n (nextValue: string | undefined) => {\n const resolvedValue = resolveTabValue(itemStates, nextValue)\n\n if (!resolvedValue) {\n return\n }\n\n if (!isControlled) {\n setInternalActiveTab(resolvedValue)\n }\n\n if (resolvedValue !== resolvedActiveTab) {\n props.onActiveTabChange?.(resolvedValue)\n }\n },\n [isControlled, itemStates, props.onActiveTabChange, resolvedActiveTab],\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n let direction: \"next\" | \"previous\" | \"start\" | \"end\" | undefined\n\n switch (event.key) {\n case \"ArrowRight\":\n direction = \"next\"\n break\n case \"ArrowLeft\":\n direction = \"previous\"\n break\n case \"Home\":\n direction = \"start\"\n break\n case \"End\":\n direction = \"end\"\n break\n default:\n return\n }\n\n event.preventDefault()\n\n const nextValue = moveTabSelection(itemStates, resolvedActiveTab, direction)\n if (!nextValue) {\n return\n }\n\n selectTab(nextValue)\n const nextTabId = a11yIds.tabIds[nextValue]\n if (nextTabId) {\n focusTab(nextTabId)\n }\n },\n [a11yIds.tabIds, itemStates, resolvedActiveTab, selectTab],\n )\n\n return (\n <section className={cx(\"mw-tab-group\", props.className)} {...props.dataAttributes}>\n {hasLabel && (\n <div className=\"mw-tab-group__header\">\n <Paragraph size=\"md\" id={a11yIds.labelId ?? `${id}-label`}>\n {props.label}\n </Paragraph>\n </div>\n )}\n\n <div\n id={a11yIds.tabListId}\n className=\"mw-tab-group__list\"\n role=\"tablist\"\n aria-label={hasLabel ? undefined : (props.ariaLabel ?? \"Tabs\")}\n aria-labelledby={hasLabel ? a11yIds.labelId : undefined}\n onKeyDown={handleKeyDown}\n >\n {props.tabs.map((tab) => {\n const tabId = a11yIds.tabIds[tab.value] ?? `${id}-tab-${tab.value}`\n const panelId = a11yIds.panelIds[tab.value] ?? `${id}-panel-${tab.value}`\n const tabProps: React.ComponentProps<typeof Tab> = {\n id: tabId,\n selected: tab.value === resolvedActiveTab,\n ariaControls: panelId,\n onClick: () => selectTab(tab.value),\n }\n\n if (tab.disabled) {\n tabProps.disabled = true\n }\n\n if (tab.ariaLabel) {\n tabProps.ariaLabel = tab.ariaLabel\n }\n\n return (\n <Tab key={tab.value} {...tabProps}>\n {tab.label}\n </Tab>\n )\n })}\n </div>\n\n <div className=\"mw-tab-group__panels\">\n {props.tabs.map((tab) => {\n const panelId = a11yIds.panelIds[tab.value] ?? `${id}-panel-${tab.value}`\n const tabId = a11yIds.tabIds[tab.value] ?? `${id}-tab-${tab.value}`\n\n return (\n <TabPanel\n key={tab.value}\n id={panelId}\n tabId={tabId}\n hidden={tab.value !== resolvedActiveTab}\n >\n {tab.panel}\n </TabPanel>\n )\n })}\n </div>\n </section>\n )\n}\n","import type * as React from \"react\"\nimport { TabGroup, type TabGroupProps } from \"./tab-group\"\n\nexport type NavigationTabsProps = TabGroupProps\n\nexport function NavigationTabs(props: NavigationTabsProps): React.ReactElement {\n return (\n <TabGroup\n {...props}\n ariaLabel={props.ariaLabel ?? \"Navigation tabs\"}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"navigation-tabs\",\n }}\n />\n )\n}\n\nexport type ContentTabsProps = TabGroupProps\n\nexport function ContentTabs(props: ContentTabsProps): React.ReactElement {\n return (\n <TabGroup\n {...props}\n ariaLabel={props.ariaLabel ?? \"Content tabs\"}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"content-tabs\",\n }}\n />\n )\n}\n\nexport type SettingsTabsProps = TabGroupProps\n\nexport function SettingsTabs(props: SettingsTabsProps): React.ReactElement {\n return (\n <TabGroup\n {...props}\n ariaLabel={props.ariaLabel ?? \"Settings tabs\"}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"settings-tabs\",\n }}\n />\n )\n}\n","import { type DialogOptions, IconName, createDialogRecipe } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nexport interface DialogProps extends DialogOptions {\n id?: string\n title?: React.ReactNode\n description?: React.ReactNode\n footer?: React.ReactNode\n children?: React.ReactNode\n onClose?: () => void\n className?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function Dialog(props: DialogProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-dialog-${reactId}`\n const titleId = `${id}-title`\n const descriptionId = `${id}-description`\n const hasTitle = hasContent(props.title)\n const hasDescription = hasContent(props.description)\n const hasFooter = hasContent(props.footer) && (props.showFooter ?? true)\n const dismissible = (props.dismissible ?? true) && props.onClose !== undefined\n const dialogOptions: DialogOptions = {\n showFooter: hasFooter,\n dismissible,\n ...(props.modal !== undefined ? { modal: props.modal } : {}),\n }\n\n if (props.dataAttributes) {\n dialogOptions.dataAttributes = props.dataAttributes\n }\n\n if (props.size) {\n dialogOptions.size = props.size\n }\n\n if (props.ariaLabel) {\n dialogOptions.ariaLabel = props.ariaLabel\n }\n\n if (props.ariaLabelledBy) {\n dialogOptions.ariaLabelledBy = props.ariaLabelledBy\n } else if (props.ariaLabel === undefined && hasTitle) {\n dialogOptions.ariaLabelledBy = titleId\n }\n\n if (props.ariaDescribedBy) {\n dialogOptions.ariaDescribedBy = props.ariaDescribedBy\n } else if (hasDescription) {\n dialogOptions.ariaDescribedBy = descriptionId\n }\n\n const kit = createDialogRecipe(dialogOptions)\n\n return (\n <section\n id={id}\n className={cx(kit.className, props.className)}\n role={kit.a11y.role}\n {...(kit.a11y.ariaModal ? { \"aria-modal\": \"true\" } : {})}\n {...(kit.a11y.ariaLabel ? { \"aria-label\": kit.a11y.ariaLabel } : {})}\n {...(kit.a11y.ariaLabelledBy ? { \"aria-labelledby\": kit.a11y.ariaLabelledBy } : {})}\n {...(kit.a11y.ariaDescribedBy ? { \"aria-describedby\": kit.a11y.ariaDescribedBy } : {})}\n tabIndex={-1}\n {...kit.dataAttributes}\n >\n {(hasTitle || kit.showCloseButton) && (\n <>\n <header className=\"mw-dialog__header\">\n {hasTitle ? (\n <div className=\"mw-dialog__heading-group\">\n <h2 className=\"mw-dialog__title\" id={titleId}>\n {props.title}\n </h2>\n </div>\n ) : (\n <span className=\"mw-dialog__spacer\" aria-hidden=\"true\" />\n )}\n\n {kit.showCloseButton && props.onClose && (\n <button\n type=\"button\"\n className=\"mw-dialog__close\"\n aria-label=\"Close dialog\"\n onClick={props.onClose}\n >\n <Icon name={IconName.X} decorative />\n </button>\n )}\n </header>\n <div className=\"mw-dialog__header-divider\" aria-hidden=\"true\" />\n </>\n )}\n\n <div className=\"mw-dialog__content\">\n {hasDescription && (\n <p className=\"mw-dialog__description\" id={descriptionId}>\n {props.description}\n </p>\n )}\n {props.children}\n </div>\n\n {hasFooter && (\n <>\n <div className=\"mw-dialog__footer-divider\" aria-hidden=\"true\" />\n <footer className=\"mw-dialog__footer\">{props.footer}</footer>\n </>\n )}\n </section>\n )\n}\n","import * as React from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { Dialog, type DialogProps } from \"./dialog\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction getFocusableElements(container: HTMLElement | null): HTMLElement[] {\n if (!container) {\n return []\n }\n\n return Array.from(\n container.querySelectorAll<HTMLElement>(\n [\n \"button:not([disabled])\",\n \"[href]\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"[tabindex]:not([tabindex='-1'])\",\n ].join(\",\"),\n ),\n ).filter(\n (element) => !element.hasAttribute(\"hidden\") && element.getAttribute(\"aria-hidden\") !== \"true\",\n )\n}\n\nfunction focusFirstElement(container: HTMLElement | null): void {\n const focusableElements = getFocusableElements(container)\n const firstFocusable = focusableElements[0]\n\n if (firstFocusable) {\n firstFocusable.focus()\n return\n }\n\n container?.focus()\n}\n\nexport interface DialogFooterControls {\n close: () => void\n}\n\nexport interface DialogModalProps extends Omit<DialogProps, \"footer\" | \"onClose\"> {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n closeOnEscape?: boolean\n closeOnScrimClick?: boolean\n restoreFocus?: boolean\n portalTarget?: HTMLElement | null\n overlayClassName?: string\n footer?: React.ReactNode | ((controls: DialogFooterControls) => React.ReactNode)\n}\n\nexport function DialogModal(props: DialogModalProps): React.ReactElement | null {\n const {\n open,\n defaultOpen = false,\n onOpenChange,\n closeOnEscape = true,\n closeOnScrimClick = true,\n restoreFocus = true,\n portalTarget,\n overlayClassName,\n footer,\n ...dialogProps\n } = props\n const isControlled = open !== undefined\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const resolvedOpen = isControlled ? open : internalOpen\n const overlayRef = React.useRef<HTMLDivElement>(null)\n const surfaceRef = React.useRef<HTMLDivElement>(null)\n const lastFocusedElementRef = React.useRef<HTMLElement | null>(null)\n\n const close = React.useCallback(() => {\n if (!resolvedOpen) {\n return\n }\n\n if (!isControlled) {\n setInternalOpen(false)\n }\n\n onOpenChange?.(false)\n }, [isControlled, onOpenChange, resolvedOpen])\n\n React.useEffect(() => {\n if (!resolvedOpen || typeof document === \"undefined\") {\n return\n }\n\n const previousOverflow = document.body.style.overflow\n lastFocusedElementRef.current =\n document.activeElement instanceof HTMLElement ? document.activeElement : null\n document.body.style.overflow = \"hidden\"\n\n const frameId = window.requestAnimationFrame(() => {\n const dialogElement = overlayRef.current?.querySelector<HTMLElement>(\".mw-dialog\") ?? null\n focusFirstElement(dialogElement)\n })\n\n return () => {\n window.cancelAnimationFrame(frameId)\n document.body.style.overflow = previousOverflow\n\n if (restoreFocus) {\n lastFocusedElementRef.current?.focus()\n }\n }\n }, [resolvedOpen, restoreFocus])\n\n React.useEffect(() => {\n if (!resolvedOpen || !closeOnEscape || typeof document === \"undefined\") {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault()\n close()\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [close, closeOnEscape, resolvedOpen])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\" && closeOnEscape) {\n event.preventDefault()\n event.stopPropagation()\n close()\n return\n }\n\n if (event.key !== \"Tab\") {\n return\n }\n\n const dialogElement = overlayRef.current?.querySelector<HTMLElement>(\".mw-dialog\") ?? null\n const focusableElements = getFocusableElements(dialogElement)\n\n if (focusableElements.length === 0) {\n event.preventDefault()\n dialogElement?.focus()\n return\n }\n\n const firstFocusable = focusableElements[0]\n const lastFocusable = focusableElements[focusableElements.length - 1]\n const activeElement = document.activeElement\n\n if (event.shiftKey && activeElement === firstFocusable) {\n event.preventDefault()\n lastFocusable?.focus()\n } else if (!event.shiftKey && activeElement === lastFocusable) {\n event.preventDefault()\n firstFocusable?.focus()\n }\n },\n [close, closeOnEscape],\n )\n\n const renderedFooter = React.useMemo(\n () => (typeof footer === \"function\" ? footer({ close }) : footer),\n [close, footer],\n )\n\n if (!resolvedOpen || typeof document === \"undefined\") {\n return null\n }\n\n const modalMarkup = (\n <div\n ref={overlayRef}\n className={cx(\"mw-dialog-modal\", overlayClassName)}\n onClick={(event) => {\n if (!closeOnScrimClick) {\n return\n }\n\n const clickTarget = event.target\n\n if (!(clickTarget instanceof Node)) {\n return\n }\n\n if (surfaceRef.current?.contains(clickTarget)) {\n return\n }\n\n close()\n }}\n onKeyDown={handleKeyDown}\n >\n <div className=\"mw-dialog-modal__scrim\" aria-hidden=\"true\" />\n <div ref={surfaceRef} className=\"mw-dialog-modal__surface\">\n <Dialog {...dialogProps} modal footer={renderedFooter} onClose={close} />\n </div>\n </div>\n )\n\n if (portalTarget === null) {\n return modalMarkup\n }\n\n return createPortal(modalMarkup, portalTarget ?? document.body)\n}\n","import { createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { CancelButton, ConfirmButton, DestructiveButton } from \"../button\"\nimport { DialogModal, type DialogModalProps } from \"./dialog-modal\"\n\nexport type ConfirmDialogProps = Omit<DialogModalProps, \"footer\"> & {\n confirmLabel?: React.ReactNode\n cancelLabel?: React.ReactNode\n onConfirm?: () => void\n onCancel?: () => void\n}\n\nexport function ConfirmDialog(props: ConfirmDialogProps): React.ReactElement {\n const {\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onCancel,\n dataAttributes,\n ...dialogProps\n } = props\n\n return (\n <DialogModal\n {...dialogProps}\n dataAttributes={{\n ...dataAttributes,\n ...createPurposeSemanticAttributes(\"confirm-dialog\"),\n }}\n footer={({ close }) => (\n <>\n <CancelButton\n onClick={() => {\n onCancel?.()\n close()\n }}\n >\n {cancelLabel}\n </CancelButton>\n <ConfirmButton\n onClick={() => {\n onConfirm?.()\n close()\n }}\n >\n {confirmLabel}\n </ConfirmButton>\n </>\n )}\n />\n )\n}\n\nexport type DestructiveDialogProps = Omit<DialogModalProps, \"footer\"> & {\n confirmLabel?: React.ReactNode\n cancelLabel?: React.ReactNode\n onConfirm?: () => void\n onCancel?: () => void\n}\n\nexport function DestructiveDialog(props: DestructiveDialogProps): React.ReactElement {\n const {\n confirmLabel = \"Delete\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onCancel,\n dataAttributes,\n ...dialogProps\n } = props\n\n return (\n <DialogModal\n {...dialogProps}\n dataAttributes={{\n ...dataAttributes,\n ...createPurposeSemanticAttributes(\"destructive-dialog\"),\n }}\n footer={({ close }) => (\n <>\n <CancelButton\n onClick={() => {\n onCancel?.()\n close()\n }}\n >\n {cancelLabel}\n </CancelButton>\n <DestructiveButton\n onClick={() => {\n onConfirm?.()\n close()\n }}\n >\n {confirmLabel}\n </DestructiveButton>\n </>\n )}\n />\n )\n}\n\nexport type InfoDialogProps = Omit<DialogModalProps, \"footer\"> & {\n acknowledgeLabel?: React.ReactNode\n onAcknowledge?: () => void\n}\n\nexport function InfoDialog(props: InfoDialogProps): React.ReactElement {\n const { acknowledgeLabel = \"Okay\", onAcknowledge, dataAttributes, ...dialogProps } = props\n\n return (\n <DialogModal\n {...dialogProps}\n dataAttributes={{\n ...dataAttributes,\n ...createPurposeSemanticAttributes(\"info-dialog\"),\n }}\n footer={({ close }) => (\n <ConfirmButton\n onClick={() => {\n onAcknowledge?.()\n close()\n }}\n >\n {acknowledgeLabel}\n </ConfirmButton>\n )}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/provider/marwes-context.ts","../src/provider/runtime-theme.ts","../src/provider/theme-mode-runtime.ts","../src/provider/marwes-provider.tsx","../src/provider/use-theme.ts","../src/provider/use-theme-mode.ts","../src/components/icon/icon.tsx","../src/components/spinner/spinner.tsx","../src/components/spinner/variants.tsx","../src/components/button/button.tsx","../src/components/button/icon-button.tsx","../src/components/button/variants.tsx","../src/components/text/text.tsx","../src/hooks/use-renderkit-debug.ts","../src/components/input/input.tsx","../src/components/input/input-field.tsx","../src/components/input/input-otp.tsx","../src/components/input/input-otp-field.tsx","../src/components/input/select-arrow-icon.tsx","../src/components/input/select.tsx","../src/components/input/select-field.tsx","../src/components/input/textarea.tsx","../src/components/input/textarea-field.tsx","../src/components/input/rich-text.tsx","../src/components/input/rich-text-field.tsx","../src/components/input/field-variants.tsx","../src/components/avatar/avatar.tsx","../src/components/avatar/avatar-badge.tsx","../src/components/avatar/avatar-group.tsx","../src/components/avatar/variants.tsx","../src/components/divider/divider.tsx","../src/components/context-menu/context-menu.tsx","../src/components/breadcrumb/breadcrumb.tsx","../src/components/skeleton/skeleton.tsx","../src/components/progress-bar/progress-bar.tsx","../src/components/spacing/spacing.tsx","../src/components/heading/h1.tsx","../src/components/heading/h2.tsx","../src/components/heading/h3.tsx","../src/components/paragraph/paragraph.tsx","../src/components/stat-tile/stat-tile.tsx","../src/components/date-picker/date-picker.tsx","../src/components/date-picker/date-picker-field.tsx","../src/components/drawer/drawer.tsx","../src/components/card/card.tsx","../src/components/card/variants.tsx","../src/components/toast/toast.tsx","../src/components/toast/variants.tsx","../src/components/toast/toast-container.tsx","../src/components/toast/toast-provider.tsx","../src/components/tooltip/tooltip.tsx","../src/components/tooltip/tooltip-group.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-field.tsx","../src/components/accordion/variants.tsx","../src/components/radio/radio.tsx","../src/components/radio/radio-group-field.tsx","../src/components/radio/variants.tsx","../src/components/badge/badge.tsx","../src/components/badge/badge-group.tsx","../src/components/badge/variants.tsx","../src/components/banner/banner.tsx","../src/components/banner/variants.tsx","../src/components/switch/switch.tsx","../src/components/switch/switch-field.tsx","../src/components/switch/variants.tsx","../src/components/slider/slider.tsx","../src/components/slider/slider-field.tsx","../src/components/slider/variants.tsx","../src/components/tab/tab.tsx","../src/components/tab/tab-group.tsx","../src/components/tab/variants.tsx","../src/components/segmented-control/segmented-control.tsx","../src/components/segmented-control/segmented-control-field.tsx","../src/components/pagination/pagination.tsx","../src/components/pagination/pagination-field.tsx","../src/components/skip-link/skip-link.tsx","../src/components/dialog/dialog.tsx","../src/components/dialog/dialog-modal.tsx","../src/components/dialog/variants.tsx","../src/components/checkbox/checkbox.tsx","../src/components/checkbox/checkbox-field.tsx","../src/components/checkbox/checkbox-group-field.tsx"],"names":["React","MwThemeMode","mwTheme","React3","React4","ThemeMode","jsx","ButtonVariant","useEffect","React5","jsxs","cx","React6","hasTextContent","React7","buildInputFieldA11yIds","React8","getInitialSelectValue","React9","Fragment","IconName","React10","React11","React12","createAvatarRecipe","createPurposeSemanticAttributes","React13","React14","headingRecipe","React15","React16","React17","React18","React19","React20","hasContent","React21","React22","React23","React24","React25","React26","React27","toItemState","React28","React29","React30","React31","React32","React33","handleKeyDown","React34","React35","React36"],"mappings":"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","file":"index.js","sourcesContent":["import type { ResolvedTheme, ThemeMode, ThemePreference } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\nexport type MarwesContextValue = {\n theme: ResolvedTheme\n mode: ThemeMode\n preference: ThemePreference\n systemMode: ThemeMode\n setMode: (mode: ThemeMode) => void\n setPreference: (preference: ThemePreference) => void\n toggleMode: () => void\n /**\n * DOM element that hosts the theme (CSS variables + mode class). Portalled\n * components — DialogModal, dropdowns, overlays — should default their\n * portal target to this element so they stay inside the theme scope.\n * `null` until the provider mounts.\n */\n providerElement: HTMLElement | null\n}\n\nexport const MarwesContext = React.createContext<MarwesContextValue | null>(null)\n","import type { FontLoadingConfig, ResolvedTheme } from \"@marwes-ui/core\"\nimport {\n buildGoogleFontsUrl,\n extractFontFamilyName,\n extractUsedWeights,\n shouldLoadGoogleFont,\n themeToCSSVars,\n} from \"@marwes-ui/core\"\n\nconst loadedFonts = new Set<string>()\nlet preconnected = false\n\nexport function themeToRootStyle(theme: ResolvedTheme): Record<string, string> {\n return {\n ...themeToCSSVars(theme),\n backgroundColor: theme.color.background,\n color: theme.color.text,\n }\n}\n\nexport function applyThemeToElement(element: HTMLElement, theme: ResolvedTheme): void {\n element.setAttribute(\"data-marwes-theme\", \"true\")\n element.setAttribute(\"data-marwes-mode\", theme.mode)\n\n for (const [property, value] of Object.entries(themeToRootStyle(theme))) {\n if (property === \"backgroundColor\") {\n element.style.backgroundColor = value\n continue\n }\n\n element.style.setProperty(property, value)\n }\n}\n\nfunction ensureFontPreconnect(): void {\n if (preconnected || typeof document === \"undefined\") return\n\n preconnected = true\n\n for (const href of [\"https://fonts.googleapis.com\", \"https://fonts.gstatic.com\"]) {\n const linkElement = document.createElement(\"link\")\n linkElement.rel = \"preconnect\"\n linkElement.href = href\n\n if (href.includes(\"gstatic\")) {\n linkElement.crossOrigin = \"anonymous\"\n }\n\n document.head.appendChild(linkElement)\n }\n}\n\nfunction loadGoogleFontToDocument(family: string, weights: number[]): void {\n if (typeof document === \"undefined\") return\n\n const cacheKey = `${family}:${weights.join(\",\")}`\n if (loadedFonts.has(cacheKey)) return\n\n loadedFonts.add(cacheKey)\n ensureFontPreconnect()\n\n const linkElement = document.createElement(\"link\")\n linkElement.rel = \"stylesheet\"\n linkElement.href = buildGoogleFontsUrl(family, weights)\n linkElement.dataset.marwesFont = family\n document.head.appendChild(linkElement)\n}\n\nexport function loadThemeFonts(theme: ResolvedTheme, config: FontLoadingConfig = \"auto\"): void {\n const weights = extractUsedWeights(theme.typography)\n const fontStacks = [theme.font.primary, theme.font.secondary]\n\n for (const fontStack of fontStacks) {\n const familyName = extractFontFamilyName(fontStack)\n\n if (familyName && shouldLoadGoogleFont(familyName, config)) {\n loadGoogleFontToDocument(familyName, weights)\n }\n }\n}\n\nexport function resetThemeRuntimeState(): void {\n loadedFonts.clear()\n preconnected = false\n}\n","import { ThemeMode, isThemePreference } from \"@marwes-ui/core\"\nimport type { ThemePreference } from \"@marwes-ui/core\"\n\nconst mediaQuery = \"(prefers-color-scheme: dark)\"\n\nexport type ThemeTarget = \"provider\" | \"html\" | \"body\"\nexport type ThemeAttribute = \"class\" | \"data-theme\" | \"data-mode\"\n\nexport function getSystemThemeMode(): ThemeMode {\n if (typeof window === \"undefined\") return ThemeMode.light\n return window.matchMedia?.(mediaQuery).matches ? ThemeMode.dark : ThemeMode.light\n}\n\nexport function subscribeToSystemThemeMode(onChange: (mode: ThemeMode) => void): () => void {\n if (typeof window === \"undefined\" || !window.matchMedia) return () => {}\n\n const media = window.matchMedia(mediaQuery)\n const listener = (event: MediaQueryListEvent) => {\n onChange(event.matches ? ThemeMode.dark : ThemeMode.light)\n }\n\n if (media.addEventListener) {\n media.addEventListener(\"change\", listener)\n } else {\n media.addListener?.(listener)\n }\n\n return () => {\n if (media.removeEventListener) {\n media.removeEventListener(\"change\", listener)\n } else {\n media.removeListener?.(listener)\n }\n }\n}\n\nexport function readStoredThemePreference(storageKey: string | false): ThemePreference | undefined {\n if (!storageKey || typeof window === \"undefined\") return undefined\n\n try {\n const value = window.localStorage.getItem(storageKey)\n return isThemePreference(value) ? value : undefined\n } catch {\n return undefined\n }\n}\n\nexport function writeStoredThemePreference(\n storageKey: string | false,\n preference: ThemePreference,\n): void {\n if (!storageKey || typeof window === \"undefined\") return\n\n try {\n window.localStorage.setItem(storageKey, preference)\n } catch {\n // Ignore unavailable storage.\n }\n}\n\nexport function applyModeAttribute({\n target,\n providerElement,\n mode,\n attribute,\n}: {\n target: ThemeTarget\n providerElement: HTMLElement | null\n mode: ThemeMode\n attribute: ThemeAttribute\n}): void {\n const element = getTargetElement(target, providerElement)\n if (!element) return\n\n if (attribute === \"class\") {\n const oppositeMode = mode === ThemeMode.dark ? ThemeMode.light : ThemeMode.dark\n element.classList.remove(oppositeMode)\n element.classList.add(mode)\n return\n }\n\n element.setAttribute(attribute, mode)\n}\n\nexport function withoutModeTransitions(callback: () => void): void {\n if (typeof document === \"undefined\" || typeof window === \"undefined\") {\n callback()\n return\n }\n\n const style = document.createElement(\"style\")\n style.dataset.marwesDisableTransitions = \"true\"\n style.textContent = \"* { transition: none !important; }\"\n document.head.appendChild(style)\n\n callback()\n window.getComputedStyle(document.body)\n window.requestAnimationFrame(() => {\n style.remove()\n })\n}\n\nfunction getTargetElement(\n target: ThemeTarget,\n providerElement: HTMLElement | null,\n): HTMLElement | null {\n if (target === \"provider\") return providerElement\n if (typeof document === \"undefined\") return null\n return target === \"html\" ? document.documentElement : document.body\n}\n","import type {\n FontLoadingConfig,\n MwTheme,\n ResolvedTheme,\n ThemeInput,\n ThemeMode,\n ThemePreference,\n ThemeVariableStrategy,\n} from \"@marwes-ui/core\"\nimport {\n ThemeMode as MwThemeMode,\n createMwTheme,\n nextThemeMode,\n resolveThemeInput,\n resolveThemePreference,\n} from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { MarwesContext } from \"./marwes-context\"\nimport { applyThemeToElement, loadThemeFonts, themeToRootStyle } from \"./runtime-theme\"\nimport {\n applyModeAttribute,\n getSystemThemeMode,\n readStoredThemePreference,\n subscribeToSystemThemeMode,\n withoutModeTransitions,\n writeStoredThemePreference,\n} from \"./theme-mode-runtime\"\nimport type { ThemeAttribute, ThemeTarget } from \"./theme-mode-runtime\"\n\nexport type MarwesProviderChildren = React.ReactNode | ((mwTheme: MwTheme) => React.ReactNode)\n\nexport type MarwesProviderProps = {\n theme?: ThemeInput\n defaultPreference?: ThemePreference\n preference?: ThemePreference\n defaultMode?: ThemeMode\n mode?: ThemeMode\n fontLoading?: FontLoadingConfig\n onPreferenceChange?: (preference: ThemePreference) => void\n onModeChange?: (mode: ThemeMode) => void\n storageKey?: string | false\n enableSystem?: boolean\n target?: ThemeTarget\n attribute?: ThemeAttribute\n disableTransitionOnChange?: boolean\n variableStrategy?: ThemeVariableStrategy\n children: MarwesProviderChildren\n}\n\nexport function MarwesProvider({\n theme,\n defaultPreference,\n preference: controlledPreference,\n defaultMode,\n mode: controlledMode,\n fontLoading = \"auto\",\n onPreferenceChange,\n onModeChange,\n storageKey = false,\n enableSystem = true,\n target = \"provider\",\n attribute = \"class\",\n disableTransitionOnChange = false,\n variableStrategy = \"inline\",\n children,\n}: MarwesProviderProps) {\n const [providerElement, setProviderElement] = React.useState<HTMLDivElement | null>(null)\n const [internalPreference, setInternalPreference] = React.useState<ThemePreference>(\n defaultPreference ?? defaultMode ?? MwThemeMode.light,\n )\n const [systemMode, setSystemMode] = React.useState<ThemeMode>(() =>\n enableSystem ? getSystemThemeMode() : MwThemeMode.light,\n )\n\n const activePreference =\n controlledPreference ?? controlledMode ?? theme?.mode ?? internalPreference\n const activeMode = resolveThemePreference(activePreference, systemMode)\n const isPreferenceControlled =\n controlledPreference !== undefined || controlledMode !== undefined || theme?.mode !== undefined\n\n React.useEffect(() => {\n const storedPreference = readStoredThemePreference(storageKey)\n if (storedPreference !== undefined && !isPreferenceControlled) {\n setInternalPreference(storedPreference)\n }\n }, [isPreferenceControlled, storageKey])\n\n React.useEffect(() => {\n if (!enableSystem) {\n setSystemMode(MwThemeMode.light)\n return\n }\n\n setSystemMode(getSystemThemeMode())\n\n if (activePreference !== \"system\") {\n return\n }\n\n return subscribeToSystemThemeMode(setSystemMode)\n }, [activePreference, enableSystem])\n\n const setPreference = React.useCallback(\n (nextPreference: ThemePreference) => {\n if (!isPreferenceControlled) {\n setInternalPreference(nextPreference)\n }\n\n writeStoredThemePreference(storageKey, nextPreference)\n onPreferenceChange?.(nextPreference)\n },\n [isPreferenceControlled, onPreferenceChange, storageKey],\n )\n\n const setMode = React.useCallback(\n (nextMode: ThemeMode) => {\n setPreference(nextMode)\n onModeChange?.(nextMode)\n },\n [onModeChange, setPreference],\n )\n\n const toggleMode = React.useCallback(() => {\n setMode(nextThemeMode(activeMode))\n }, [activeMode, setMode])\n\n const resolved: ResolvedTheme = React.useMemo(\n () => resolveThemeInput({ ...(theme ?? {}), mode: activeMode }),\n [activeMode, theme],\n )\n const mwTheme = React.useMemo(() => createMwTheme(resolved), [resolved])\n const renderedChildren = typeof children === \"function\" ? children(mwTheme) : children\n const rootStyle = React.useMemo(() => {\n if (variableStrategy === \"style-tag\") return undefined\n return themeToRootStyle(resolved) as React.CSSProperties\n }, [resolved, variableStrategy])\n\n React.useEffect(() => {\n if (variableStrategy === \"style-tag\") return\n if (providerElement) {\n applyThemeToElement(providerElement, resolved)\n }\n }, [providerElement, resolved, variableStrategy])\n\n React.useEffect(() => {\n if (target === \"provider\") return\n\n const apply = () => {\n applyModeAttribute({\n target,\n providerElement: null,\n mode: activeMode,\n attribute,\n })\n }\n\n if (disableTransitionOnChange) {\n withoutModeTransitions(apply)\n return\n }\n\n apply()\n }, [activeMode, attribute, disableTransitionOnChange, target])\n\n React.useEffect(() => {\n loadThemeFonts(resolved, fontLoading)\n }, [resolved, fontLoading])\n\n const contextValue = React.useMemo(\n () => ({\n theme: resolved,\n mode: activeMode,\n preference: activePreference,\n systemMode,\n setMode,\n setPreference,\n toggleMode,\n providerElement,\n }),\n [\n activeMode,\n activePreference,\n providerElement,\n resolved,\n setMode,\n setPreference,\n systemMode,\n toggleMode,\n ],\n )\n\n return (\n <MarwesContext.Provider value={contextValue}>\n <div\n ref={setProviderElement}\n className={`mw-theme--${resolved.mode}`}\n data-marwes-theme=\"true\"\n data-marwes-mode={resolved.mode}\n data-marwes-personality={resolved.personality}\n style={rootStyle}\n >\n {renderedChildren}\n </div>\n </MarwesContext.Provider>\n )\n}\n","import type { ResolvedTheme } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { MarwesContext } from \"./marwes-context\"\n\nexport function useTheme(): ResolvedTheme {\n const ctx = React.useContext(MarwesContext)\n if (!ctx) {\n throw new Error(\"MarwesProvider is missing. Wrap your app in <MarwesProvider />.\")\n }\n return ctx.theme\n}\n","import { ThemeMode } from \"@marwes-ui/core\"\nimport type { ThemePreference } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { MarwesContext } from \"./marwes-context\"\n\nexport type ThemeModeContextValue = {\n mode: ThemeMode\n preference: ThemePreference\n systemMode: ThemeMode\n setMode: (mode: ThemeMode) => void\n setPreference: (preference: ThemePreference) => void\n toggleMode: () => void\n isDark: boolean\n isLight: boolean\n isSystem: boolean\n}\n\nexport function useThemeMode(): ThemeModeContextValue {\n const ctx = React.useContext(MarwesContext)\n\n if (!ctx) {\n throw new Error(\"MarwesProvider is missing. Wrap your app in <MarwesProvider />.\")\n }\n\n return {\n mode: ctx.mode,\n preference: ctx.preference,\n systemMode: ctx.systemMode,\n setMode: ctx.setMode,\n setPreference: ctx.setPreference,\n toggleMode: ctx.toggleMode,\n isDark: ctx.mode === ThemeMode.dark,\n isLight: ctx.mode === ThemeMode.light,\n isSystem: ctx.preference === \"system\",\n }\n}\n","import {\n type IconSize,\n type IconStrokeWidth,\n iconRegistry,\n resolveIconA11y,\n resolveIconSize,\n resolveIconStrokeWidth,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\ntype IconName = keyof typeof iconRegistry\n\nexport type IconProps = {\n name: IconName\n\n /**\n * Icon scale token (\"xs\"|\"sm\"|\"md\"|\"lg\") or an explicit pixel size.\n * Defaults to system.theme.icon.size\n */\n size?: IconSize | number\n\n /**\n * Stroke-width token (\"xs\"|\"sm\"|\"md\"|\"lg\") or an explicit numeric stroke width.\n * Defaults to system.theme.icon.strokeWidth\n */\n strokeWidth?: IconStrokeWidth | number\n\n /**\n * Common props\n */\n className?: string\n ariaLabel?: string\n decorative?: boolean\n}\n\nexport function Icon({ name, size, strokeWidth, className, ariaLabel, decorative }: IconProps) {\n const px = resolveIconSize(size ?? \"sm\")\n const sw = resolveIconStrokeWidth(strokeWidth ?? \"md\")\n\n const def = iconRegistry[name]\n const a11y = resolveIconA11y({\n ...(ariaLabel !== undefined ? { ariaLabel } : {}),\n ...(decorative !== undefined ? { decorative } : {}),\n })\n\n return (\n <svg\n width={px}\n height={px}\n viewBox={def.viewBox}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={sw}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden={a11y.ariaHidden ? \"true\" : undefined}\n aria-label={a11y.ariaLabel}\n role={a11y.role}\n focusable=\"false\"\n >\n {def.nodes.map((iconNode, nodeIndex) => {\n const TagName = iconNode.tag\n // biome-ignore lint/suspicious/noArrayIndexKey: Icon nodes are static and never reordered\n return <TagName key={nodeIndex} {...(iconNode.attrs as React.SVGAttributes<SVGElement>)} />\n })}\n </svg>\n )\n}\n","import {\n type CssVars,\n type SpinnerOptions,\n type SpinnerSvgNode,\n createSpinnerRecipe,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface SpinnerProps\n extends SpinnerOptions,\n Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n dataAttributes?: Record<string, string>\n}\n\nfunction renderSpinnerSvgNode(\n spinnerSvgNode: SpinnerSvgNode,\n nodeIndex: number,\n): React.ReactElement {\n const TagName = spinnerSvgNode.tag\n\n return <TagName key={nodeIndex} {...(spinnerSvgNode.attrs as React.SVGAttributes<SVGElement>)} />\n}\n\nexport function Spinner(props: SpinnerProps): React.ReactElement {\n const {\n className,\n style,\n dataAttributes,\n variant,\n size,\n decorative,\n ariaLabel,\n id,\n ...nativeSpanProps\n } = props\n\n const resolvedAriaLabel =\n ariaLabel ??\n (typeof nativeSpanProps[\"aria-label\"] === \"string\"\n ? (nativeSpanProps[\"aria-label\"] as string)\n : undefined)\n\n const spinnerOptions: SpinnerOptions = {\n ...(variant !== undefined ? { variant } : {}),\n ...(size !== undefined ? { size } : {}),\n ...(decorative !== undefined ? { decorative } : {}),\n ...(resolvedAriaLabel !== undefined ? { ariaLabel: resolvedAriaLabel } : {}),\n ...(id !== undefined ? { id } : {}),\n }\n\n const renderKit = createSpinnerRecipe(spinnerOptions)\n const mergedClassName = [renderKit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(renderKit.vars as StyleWithVars), ...style }\n\n return (\n <span\n {...nativeSpanProps}\n {...renderKit.dataAttributes}\n {...dataAttributes}\n className={mergedClassName}\n style={mergedStyle}\n role={renderKit.a11y.role}\n id={renderKit.a11y.id}\n aria-hidden={renderKit.a11y.ariaHidden ? \"true\" : undefined}\n aria-label={renderKit.a11y.ariaLabel}\n aria-live={renderKit.a11y.ariaLive}\n >\n <svg\n className=\"mw-spinner__svg\"\n viewBox={renderKit.svg.viewBox}\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n {renderKit.svg.nodes.map(renderSpinnerSvgNode)}\n </svg>\n </span>\n )\n}\n","import type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Spinner, type SpinnerProps } from \"./spinner\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type ButtonSpinnerProps = SpinnerProps & {\n inverted?: boolean\n}\n\n/**\n * ButtonSpinner — purpose variant of Spinner for in-button loading states.\n *\n * Defaults (`variant=\"classic\"`, `size=\"xs\"`, `decorative=true`) are\n * intentionally overridable: the `Button` atom forwards\n * `loading.spinnerVariant` through this prop. If you want a different\n * loading look, just override the prop; use the base `Spinner` directly\n * only when you need to escape the button-loading data-attributes.\n */\nexport function ButtonSpinner(props: ButtonSpinnerProps): React.ReactElement {\n const { inverted = false, style, dataAttributes, ...spinnerProps } = props\n\n const spinnerStyle: StyleWithVars = {\n \"--mw-spinner-track-color\": inverted\n ? \"color-mix(in srgb, currentColor 80%, transparent)\"\n : \"color-mix(in srgb, currentColor 35%, transparent)\",\n \"--mw-spinner-indicator-color\": \"currentColor\",\n ...(style as StyleWithVars | undefined),\n }\n\n return (\n <Spinner\n {...spinnerProps}\n variant={props.variant ?? \"classic\"}\n size={props.size ?? \"xs\"}\n decorative={props.decorative ?? true}\n style={spinnerStyle}\n dataAttributes={{\n ...dataAttributes,\n \"data-purpose\": \"button-loading\",\n \"data-context\": \"button-loading\",\n }}\n />\n )\n}\n\nexport type EmptyStateSpinnerProps = SpinnerProps\n\n/**\n * EmptyStateSpinner — purpose variant of Spinner for empty/loading-state regions.\n *\n * Defaults (`variant=\"dots-round\"`, `size=\"lg\"`, `decorative=true`) are\n * intentionally overridable — same rationale as `ButtonSpinner`.\n */\nexport function EmptyStateSpinner(props: EmptyStateSpinnerProps): React.ReactElement {\n return (\n <Spinner\n {...props}\n variant={props.variant ?? \"dots-round\"}\n size={props.size ?? \"lg\"}\n decorative={props.decorative ?? true}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"empty-state\",\n \"data-context\": \"empty-state\",\n }}\n />\n )\n}\n","import type { ButtonOptions, ButtonVariant, CssVars } from \"@marwes-ui/core\"\nimport { createButtonRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { ButtonSpinner } from \"../spinner\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nfunction isFilledButtonVariant(variant: ButtonVariant): boolean {\n return variant === \"primary\" || variant === \"success\" || variant === \"danger\"\n}\n\nfunction hasRenderableLabel(label: React.ReactNode): boolean {\n if (label === undefined || label === null || label === false) return false\n if (typeof label === \"string\") return label.length > 0\n return true\n}\n\nexport type ButtonProps = ButtonOptions & {\n children?: React.ReactNode\n onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void\n className?: string\n}\n\nexport function Button(props: ButtonProps) {\n const kit = createButtonRecipe(props)\n\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n\n const resolvedVariant = (props.variant ?? \"primary\") as ButtonVariant\n const resolvedLoading = kit.loading\n const visibleLabel =\n resolvedLoading.isLoading && resolvedLoading.loadingLabel !== undefined\n ? resolvedLoading.loadingLabel\n : props.children\n\n const content = (\n <>\n {resolvedLoading.isLoading ? (\n <ButtonSpinner\n variant={resolvedLoading.spinnerVariant}\n inverted={isFilledButtonVariant(resolvedVariant)}\n />\n ) : props.iconLeft ? (\n <Icon name={props.iconLeft} size=\"xs\" strokeWidth=\"sm\" decorative />\n ) : null}\n {hasRenderableLabel(visibleLabel) ? (\n <span className=\"mw-btn__label\">{visibleLabel}</span>\n ) : null}\n {!resolvedLoading.isLoading && props.iconRight ? (\n <Icon name={props.iconRight} size=\"xs\" strokeWidth=\"sm\" decorative />\n ) : null}\n </>\n )\n\n if (kit.tag === \"button\") {\n return (\n <button\n type={kit.a11y.type}\n disabled={kit.a11y.disabled}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-busy={kit.a11y.ariaBusy}\n aria-disabled={kit.a11y.ariaDisabled}\n aria-pressed={kit.a11y.ariaPressed}\n aria-expanded={kit.a11y.ariaExpanded}\n aria-controls={kit.a11y.ariaControls}\n title={kit.a11y.title}\n className={className}\n style={style}\n onClick={(e) => props.onClick?.(e)}\n {...kit.dataAttributes}\n >\n {content}\n </button>\n )\n }\n\n return (\n <a\n href={kit.a11y.href}\n role={kit.a11y.role}\n tabIndex={kit.a11y.tabIndex}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-busy={kit.a11y.ariaBusy}\n aria-disabled={kit.a11y.ariaDisabled}\n aria-pressed={kit.a11y.ariaPressed}\n aria-expanded={kit.a11y.ariaExpanded}\n aria-controls={kit.a11y.ariaControls}\n title={kit.a11y.title}\n className={className}\n style={style}\n onClick={(e) => {\n if (kit.blockClick) {\n e.preventDefault()\n return\n }\n props.onClick?.(e)\n }}\n {...kit.dataAttributes}\n >\n {content}\n </a>\n )\n}\n","import type { ButtonOptions, IconName } from \"@marwes-ui/core\"\nimport { ButtonVariant } from \"@marwes-ui/core\"\nimport { Button, type ButtonProps } from \"./button\"\n\nexport type IconButtonProps = Omit<\n ButtonProps,\n \"children\" | \"hasVisibleText\" | \"iconLeft\" | \"iconOnly\" | \"iconRight\"\n> & {\n icon: IconName\n /** Accessible name — required for icon-only buttons. Prefer `label`; `ariaLabel` also accepted. */\n label?: string\n ariaLabel?: string\n}\n\nexport function IconButton(props: IconButtonProps) {\n const { icon, variant = ButtonVariant.neutral, ...buttonProps } = props\n\n return (\n <Button\n {...(buttonProps as ButtonOptions)}\n variant={variant}\n iconLeft={icon}\n iconOnly\n hasVisibleText={false}\n />\n )\n}\n","import {\n ButtonAction,\n ButtonVariant,\n IconName,\n createPurposeSemanticAttributes,\n} from \"@marwes-ui/core\"\nimport { Button, type ButtonProps } from \"./button\"\n\ntype PurposeButtonForbiddenProp = \"variant\" | \"action\" | \"as\"\ntype ButtonPropKey = keyof ButtonProps\n\nfunction isDevelopmentEnvironment(): boolean {\n const nodeProcess = (\n globalThis as unknown as {\n process?: { env?: Record<string, string | undefined> }\n }\n ).process\n\n const nodeEnv = nodeProcess?.env?.NODE_ENV\n if (nodeEnv) {\n return nodeEnv !== \"production\"\n }\n\n const meta = import.meta as unknown as {\n env?: { MODE?: string; PROD?: boolean }\n }\n\n if (typeof meta.env?.PROD === \"boolean\") {\n return !meta.env.PROD\n }\n\n if (meta.env?.MODE) {\n return meta.env.MODE !== \"production\"\n }\n\n return true\n}\n\nfunction warnForForbiddenPurposeProps(\n componentName: string,\n rawProps: Partial<ButtonProps>,\n forbiddenProps: readonly PurposeButtonForbiddenProp[],\n): void {\n if (!isDevelopmentEnvironment()) {\n return\n }\n\n const warningByProp: Record<PurposeButtonForbiddenProp, string> = {\n variant: \"Use Button if you need a custom visual treatment.\",\n action: \"Use Button if you need a custom semantic action.\",\n as: \"Use Button if you need a custom element mode.\",\n }\n\n for (const forbiddenProp of forbiddenProps) {\n if (!Object.prototype.hasOwnProperty.call(rawProps, forbiddenProp)) {\n continue\n }\n\n console.warn(\n `[marwes] ${componentName} does not support \\`${forbiddenProp}\\`. ${warningByProp[forbiddenProp]}`,\n )\n }\n}\n\nfunction omitButtonProps(\n rawProps: Partial<ButtonProps>,\n omittedKeys: readonly ButtonPropKey[],\n): ButtonProps {\n const forwardedProps: Partial<ButtonProps> = { ...rawProps }\n\n for (const omittedKey of omittedKeys) {\n delete forwardedProps[omittedKey]\n }\n\n return forwardedProps as ButtonProps\n}\n\nfunction createPurposeButtonDataAttributes(\n purpose: Parameters<typeof createPurposeSemanticAttributes>[0],\n existingDataAttributes: ButtonProps[\"dataAttributes\"],\n localDataAttributes: ButtonProps[\"dataAttributes\"] = {},\n): Record<string, string | boolean | undefined> {\n return {\n ...existingDataAttributes,\n ...createPurposeSemanticAttributes(purpose),\n ...localDataAttributes,\n }\n}\n\n/**\n * Purpose Components — Button\n *\n * Pre-configured button compositions that encode a specific semantic purpose.\n * Purpose buttons lock semantic intent and canonical visual treatment.\n */\n\n// ============================================================================\n// DESTRUCTIVE BUTTON - Destructive Actions\n// ============================================================================\n\nexport type DestructiveButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\" | \"href\"> & {\n /**\n * Override automatic confirmation requirement.\n * Defaults to `true` for destructive actions.\n */\n confirmation?: boolean\n}\n\nexport function DestructiveButton(props: DestructiveButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"DestructiveButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\", \"href\"])\n const confirmation = props.confirmation ?? true\n\n return (\n <Button\n {...forwardedProps}\n as=\"button\"\n variant={ButtonVariant.danger}\n action={ButtonAction.delete}\n confirmation={confirmation}\n dataAttributes={createPurposeButtonDataAttributes(\n \"destructive\",\n forwardedProps.dataAttributes,\n {\n \"data-confirmation-required\": confirmation ? \"true\" : \"false\",\n },\n )}\n />\n )\n}\n\n// ============================================================================\n// CREATE BUTTON - Creation Actions\n// ============================================================================\n\nexport type CreateButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function CreateButton(props: CreateButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"CreateButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.create}\n variant={ButtonVariant.primary}\n dataAttributes={createPurposeButtonDataAttributes(\"create\", forwardedProps.dataAttributes, {\n \"data-creative\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// SUBMIT BUTTON - Form Submissions\n// ============================================================================\n\nexport type SubmitButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\" | \"href\">\n\nexport function SubmitButton(props: SubmitButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"SubmitButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\", \"href\"])\n\n return (\n <Button\n {...forwardedProps}\n as=\"button\"\n action={ButtonAction.submit}\n variant={ButtonVariant.primary}\n dataAttributes={createPurposeButtonDataAttributes(\"submit\", forwardedProps.dataAttributes)}\n />\n )\n}\n\n// ============================================================================\n// CANCEL BUTTON - Cancel/Reset Actions\n// ============================================================================\n\nexport type CancelButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function CancelButton(props: CancelButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"CancelButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.cancel}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"cancel\", forwardedProps.dataAttributes, {\n \"data-cancel\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// LINK BUTTON - Navigation Actions\n// ============================================================================\n\nexport type LinkButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\"> & {\n href: string\n}\n\nexport function LinkButton(props: LinkButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"LinkButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\"])\n\n return (\n <Button\n {...forwardedProps}\n as=\"a\"\n action={ButtonAction.navigate}\n variant={ButtonVariant.text}\n dataAttributes={createPurposeButtonDataAttributes(\n \"navigation\",\n forwardedProps.dataAttributes,\n {\n \"data-navigation\": \"true\",\n },\n )}\n />\n )\n}\n\n// ============================================================================\n// SAVE BUTTON - Save/Persist Actions\n// ============================================================================\n\nexport type SaveButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function SaveButton(props: SaveButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"SaveButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.submit}\n variant={ButtonVariant.primary}\n dataAttributes={createPurposeButtonDataAttributes(\"save\", forwardedProps.dataAttributes, {\n \"data-persist\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// CONFIRM BUTTON - Positive Confirmation Actions\n// ============================================================================\n\nexport type ConfirmButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\" | \"href\">\n\nexport function ConfirmButton(props: ConfirmButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"ConfirmButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\", \"href\"])\n\n return (\n <Button\n {...forwardedProps}\n as=\"button\"\n action={ButtonAction.button}\n variant={ButtonVariant.success}\n dataAttributes={createPurposeButtonDataAttributes(\"confirm\", forwardedProps.dataAttributes)}\n />\n )\n}\n\n// ============================================================================\n// VERIFY BUTTON - Positive Verification Actions\n// ============================================================================\n\nexport type VerifyButtonProps = Omit<ButtonProps, \"variant\" | \"action\" | \"as\" | \"href\">\n\nexport function VerifyButton(props: VerifyButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"VerifyButton\", rawProps, [\"variant\", \"action\", \"as\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\", \"as\", \"href\"])\n\n return (\n <Button\n {...forwardedProps}\n as=\"button\"\n action={ButtonAction.button}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.CheckCircle}\n dataAttributes={createPurposeButtonDataAttributes(\"verify\", forwardedProps.dataAttributes, {\n \"data-verification\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// EDIT BUTTON - Edit/Modify Actions\n// ============================================================================\n\nexport type EditButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function EditButton(props: EditButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"EditButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.edit}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.Edit}\n dataAttributes={createPurposeButtonDataAttributes(\"edit\", forwardedProps.dataAttributes, {\n \"data-edit\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// CLOSE BUTTON - Close/Dismiss Actions\n// ============================================================================\n\nexport type CloseButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function CloseButton(props: CloseButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"CloseButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.cancel}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"close\", forwardedProps.dataAttributes, {\n \"data-close\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// REFRESH BUTTON - Refresh/Reload Actions\n// ============================================================================\n\nexport type RefreshButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function RefreshButton(props: RefreshButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"RefreshButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.neutral}\n iconRight={forwardedProps.iconRight ?? IconName.RefreshCw}\n dataAttributes={createPurposeButtonDataAttributes(\"refresh\", forwardedProps.dataAttributes, {\n \"data-refresh\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// WAVE 2 UTILITY BUTTONS - Upload/Download/Search Utilities\n// ============================================================================\n\nexport type UploadButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function UploadButton(props: UploadButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"UploadButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.Upload}\n dataAttributes={createPurposeButtonDataAttributes(\"upload\", forwardedProps.dataAttributes, {\n \"data-transfer\": \"upload\",\n })}\n />\n )\n}\n\nexport type DownloadButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function DownloadButton(props: DownloadButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"DownloadButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.Download}\n dataAttributes={createPurposeButtonDataAttributes(\"download\", forwardedProps.dataAttributes, {\n \"data-transfer\": \"download\",\n })}\n />\n )\n}\n\nexport type CopyButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function CopyButton(props: CopyButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"CopyButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"copy\", forwardedProps.dataAttributes, {\n \"data-copy\": \"true\",\n })}\n />\n )\n}\n\nexport type SearchButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function SearchButton(props: SearchButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"SearchButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.primary}\n iconRight={forwardedProps.iconRight ?? IconName.Search}\n dataAttributes={createPurposeButtonDataAttributes(\"search\", forwardedProps.dataAttributes, {\n \"data-search\": \"true\",\n })}\n />\n )\n}\n\nexport type FilterButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function FilterButton(props: FilterButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"FilterButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"filter\", forwardedProps.dataAttributes, {\n \"data-filter\": \"true\",\n })}\n />\n )\n}\n\nexport type SortButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function SortButton(props: SortButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"SortButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.neutral}\n dataAttributes={createPurposeButtonDataAttributes(\"sort\", forwardedProps.dataAttributes, {\n \"data-sort\": \"true\",\n })}\n />\n )\n}\n\nexport type DropdownButtonProps = Omit<ButtonProps, \"variant\" | \"action\">\n\nexport function DropdownButton(props: DropdownButtonProps) {\n const rawProps = props as ButtonProps\n\n warnForForbiddenPurposeProps(\"DropdownButton\", rawProps, [\"variant\", \"action\"])\n\n const forwardedProps = omitButtonProps(rawProps, [\"variant\", \"action\"])\n\n return (\n <Button\n {...forwardedProps}\n action={ButtonAction.button}\n variant={ButtonVariant.secondary}\n iconRight={forwardedProps.iconRight ?? IconName.ChevronDown}\n dataAttributes={createPurposeButtonDataAttributes(\"dropdown\", forwardedProps.dataAttributes, {\n \"data-dropdown\": \"true\",\n })}\n />\n )\n}\n\n// ============================================================================\n// PRIMARY BUTTON - General Actions\n// ============================================================================\n\nexport type PrimaryButtonProps = Omit<ButtonProps, \"variant\" | \"as\"> & {}\n\nexport function PrimaryButton(props: PrimaryButtonProps) {\n return <Button {...props} variant=\"primary\" as=\"button\" />\n}\n\n// ============================================================================\n// SECONDARY BUTTON - General Actions\n// ============================================================================\n\nexport type SecondaryButtonProps = Omit<ButtonProps, \"variant\" | \"as\"> & {}\n\nexport function SecondaryButton(props: SecondaryButtonProps) {\n return <Button {...props} variant=\"secondary\" as=\"button\" />\n}\n\n// ============================================================================\n// TEXT BUTTON - General Actions\n// ============================================================================\n\nexport type TextButtonProps = Omit<ButtonProps, \"variant\" | \"as\"> & {}\n\nexport function TextButton(props: TextButtonProps) {\n return <Button {...props} variant=\"text\" as=\"button\" />\n}\n\n// ============================================================================\n// SUCCESS BUTTON - Positive Confirmation Actions\n// ============================================================================\n\nexport type SuccessButtonProps = Omit<ButtonProps, \"variant\" | \"as\"> & {}\n\nexport function SuccessButton(props: SuccessButtonProps) {\n return (\n <Button\n {...props}\n variant=\"success\"\n as=\"button\"\n dataAttributes={createPurposeButtonDataAttributes(\"success\", props.dataAttributes)}\n />\n )\n}\n","/**\n * React adapter for Marwes Text component.\n * - Renders non-heading typography styles without creating document outline.\n */\n\nimport { textRecipe } from \"@marwes-ui/core\"\nimport type { CssVars, TextAs, TextOptions, TextVariant } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type TextProps = TextOptions & {\n /**\n * Visual typography variant.\n * @default \"caption\"\n */\n variant?: TextVariant\n\n /**\n * Rendered HTML element.\n * @default \"span\"\n */\n as?: TextAs\n\n /**\n * Content of the text node.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\nexport function Text(props: TextProps): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n const kit = textRecipe(opts, theme)\n const Tag = kit.tag\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <Tag id={kit.a11y.id} className={className} style={style}>\n {children}\n </Tag>\n )\n}\n\nexport type TextComponent = typeof Text\nexport const TypographyText = Text\n","import { useEffect } from \"react\"\n\nconst RENDERKIT_EVENT = \"marwes/renderkit/renderkit-update\"\nconst RENDERKIT_DEBUG_FLAG = \"__MARWES_RENDERKIT_DEBUG__\"\n\nfunction isRenderKitDebugEnabled(): boolean {\n if (typeof window === \"undefined\") {\n return false\n }\n\n const renderKitDebugWindow = window as Window & {\n [RENDERKIT_DEBUG_FLAG]?: boolean\n }\n\n return renderKitDebugWindow[RENDERKIT_DEBUG_FLAG] === true\n}\n\nexport function useRenderKitDebug(renderKit: unknown, componentName: string) {\n useEffect(() => {\n if (!isRenderKitDebugEnabled()) {\n return\n }\n\n const event = new CustomEvent(RENDERKIT_EVENT, {\n detail: {\n ...(renderKit as Record<string, unknown>),\n _meta: { component: componentName },\n },\n })\n\n window.dispatchEvent(event)\n }, [renderKit, componentName])\n}\n","import type { CssVars, InputOptions } from \"@marwes-ui/core\"\nimport { createInputRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type InputProps = InputOptions & {\n onValueChange?: (value: string) => void\n className?: string\n}\n\nexport function Input(props: InputProps) {\n const kit = createInputRecipe(props)\n\n // Debug hook for Storybook RenderKit addon\n useRenderKitDebug(kit, \"Input\")\n\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n props.onValueChange?.(e.target.value)\n }\n\n return (\n <input\n className={className}\n style={style}\n id={kit.a11y.id}\n name={kit.a11y.name}\n type={kit.a11y.type}\n inputMode={kit.a11y.inputMode}\n autoComplete={kit.a11y.autoComplete}\n placeholder={kit.a11y.placeholder}\n disabled={kit.a11y.disabled}\n readOnly={kit.a11y.readOnly}\n required={kit.a11y.required}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-describedby={kit.a11y.ariaDescribedBy}\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={handleChange}\n />\n )\n}\n","import { buildInputFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { Text } from \"../text\"\nimport { Input } from \"./input\"\nimport type { InputProps } from \"./input\"\n\nexport type InputFieldProps = {\n /** Optional: if omitted, we generate one via useId(). */\n id?: string\n\n /** Field label (required for accessibility). */\n label: string\n\n /** Optional helper text shown below the input. */\n helperText?: string\n\n /** Optional error message. When present, input is marked invalid. */\n error?: string\n\n /** Props forwarded to the Input atom. */\n input: InputProps\n\n /** Additional aria-describedby IDs to merge with internal helper/error IDs. */\n ariaDescribedBy?: string\n\n /** Optional leading text symbol displayed inside the input on the left (e.g. \"$\", \"€\", \"kr\"). */\n leadingSymbol?: string\n}\n\nfunction cx(...parts: Array<string | false>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\n/**\n * InputField (Molecule) — Recommended\n *\n * A convenient, accessible wrapper around `Input` that provides:\n * - a visible `<label>` wired via `htmlFor`/`id`\n * - optional `helperText` and `error` regions\n * - automatic `aria-describedby` wiring (helperText + error + any external ids)\n * - automatic invalid state when `error` is present\n *\n * Use `InputField` for most forms. Use `Input` directly only when you need\n * a highly custom layout or composite inputs.\n *\n * Accessibility\n * - Generates a stable `id` via `useId()` when `id` is not provided.\n * - Always renders a visible `<label>` element connected to the input control.\n * - When `helperText` and/or `error` are present, it sets `aria-describedby`\n * on the input to reference their ids.\n * - When `error` is present, the input is marked invalid (aria-invalid).\n * - Error region has `aria-live=\"polite\"` for screen reader announcements.\n *\n * @example Minimal (recommended)\n * ```tsx\n * <InputField\n * label=\"Email address\"\n * input={{ type: \"email\", placeholder: \"you@example.com\" }}\n * />\n * ```\n *\n * @example With helper text\n * ```tsx\n * <InputField\n * label=\"Username\"\n * helperText=\"Choose a unique username between 3-20 characters.\"\n * input={{ type: \"text\", placeholder: \"johnsmith\" }}\n * />\n * ```\n *\n * @example With error (invalid state)\n * ```tsx\n * <InputField\n * label=\"Password\"\n * error=\"Password must be at least 8 characters.\"\n * input={{ type: \"password\", required: true }}\n * />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [email, setEmail] = React.useState(\"\");\n *\n * <InputField\n * label=\"Email\"\n * input={{\n * type: \"email\",\n * value: email,\n * onValueChange: setEmail,\n * }}\n * />\n * ```\n *\n * @example Disabled\n * ```tsx\n * <InputField\n * label=\"Account ID\"\n * helperText=\"This value cannot be changed.\"\n * input={{ value: \"ACC-12345\", disabled: true }}\n * />\n * ```\n *\n * @example Read-only\n * ```tsx\n * <InputField\n * label=\"Account created\"\n * input={{ value: \"January 15, 2026\", readOnly: true }}\n * />\n * ```\n *\n * @example Custom describedBy (merge with internal helper/error)\n * ```tsx\n * <InputField\n * ariaDescribedBy=\"my-extra-help\"\n * label=\"API Key\"\n * helperText=\"Your key is stored securely.\"\n * input={{ type: \"password\" }}\n * />\n *\n * <div id=\"my-extra-help\">This can be regenerated from your settings.</div>\n * ```\n */\nexport function InputField(props: InputFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-input-${reactId}`\n\n // Password visibility toggle\n const isPasswordField = props.input.type === \"password\"\n const [showPassword, setShowPassword] = React.useState(false)\n\n // Search clear button - track if search has value\n const isSearchField = props.input.type === \"search\"\n const [searchValue, setSearchValue] = React.useState(\n props.input.value || props.input.defaultValue || \"\",\n )\n\n // Determine if clear button should show based on controlled vs uncontrolled\n const hasSearchValue =\n isSearchField &&\n (props.input.value !== undefined\n ? String(props.input.value).length > 0\n : String(searchValue).length > 0)\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.input.disabled || false\n const readOnly = props.input.readOnly || false\n const invalid = hasError || props.input.invalid || false\n const showSearchClearButton = hasSearchValue && !disabled && !readOnly\n const showSearchIcon = isSearchField && !showSearchClearButton\n\n const wrapperClass = cx(\n \"mw-input-field\",\n disabled && \"mw-input-field--disabled\",\n invalid && \"mw-input-field--invalid\",\n readOnly && \"mw-input-field--readonly\",\n )\n\n // Prepare input props with proper describedBy merging\n const inputProps: InputProps = {\n ...props.input,\n id,\n invalid,\n }\n\n // Override type when showing password\n if (isPasswordField && showPassword) {\n inputProps.type = \"text\"\n }\n\n // Track search value changes and make search inputs controlled\n if (isSearchField) {\n const originalOnValueChange = props.input.onValueChange\n\n // Use parent's value if controlled, otherwise use local state\n if (props.input.value === undefined) {\n inputProps.value = searchValue\n }\n\n inputProps.onValueChange = (value: string) => {\n setSearchValue(value)\n originalOnValueChange?.(value)\n }\n }\n\n if (mergedDescribedBy) {\n inputProps.describedBy = mergedDescribedBy\n }\n\n const handleTogglePassword = () => {\n setShowPassword((prev) => !prev)\n }\n\n const handleClearSearch = () => {\n // For controlled inputs: notify parent to update state\n // For uncontrolled: update local state\n setSearchValue(\"\")\n props.input.onValueChange?.(\"\")\n }\n\n return (\n <div className={wrapperClass}>\n <label className=\"mw-input-field__label\" htmlFor={id}>\n <Text variant=\"label\">{props.label}</Text>\n </label>\n\n <div className=\"mw-input-field__input-wrapper\">\n {props.leadingSymbol && (\n <span className=\"mw-input-field__leading-symbol\" aria-hidden=\"true\">\n {props.leadingSymbol}\n </span>\n )}\n <Input {...inputProps} />\n\n {isPasswordField && !disabled && (\n <button\n type=\"button\"\n className=\"mw-input-field__toggle-password\"\n onClick={handleTogglePassword}\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\n tabIndex={0}\n >\n <Icon name={showPassword ? \"eyeOff\" : \"eye\"} size=\"xs\" decorative />\n </button>\n )}\n\n {showSearchIcon && (\n <span className=\"mw-input-field__search-icon\" aria-hidden=\"true\">\n <Icon name=\"search\" size=\"xs\" decorative />\n </span>\n )}\n\n {showSearchClearButton && (\n <button\n type=\"button\"\n className=\"mw-input-field__clear-search\"\n onClick={handleClearSearch}\n aria-label=\"Clear search\"\n tabIndex={0}\n >\n <Icon name=\"x\" size=\"xs\" decorative />\n </button>\n )}\n </div>\n\n {hasHelperText && !hasError && (\n <div className=\"mw-input-field__helper\" id={helperTextId}>\n <Text variant=\"caption\">{props.helperText}</Text>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-input-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import { createInputOtpRecipe, sanitizeInputOtpValue } from \"@marwes-ui/core\"\nimport type { CssVars, InputOtpOptions } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\n/**\n * Props for the bare `InputOtp` atom.\n *\n * The atom renders only the OTP cells + hidden input — no label, helper,\n * or error region. Use `InputOtpField` for labeled forms; reach for the\n * atom directly only when you need a custom layout.\n */\nexport type InputOtpProps = Omit<InputOtpOptions, \"describedBy\"> & {\n onValueChange?: (value: string) => void\n className?: string\n /** ID(s) of elements that describe the input. Pre-merged by `InputOtpField`. */\n describedBy?: string\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\n/**\n * InputOtp (Atom) — bare OTP cells. Renders the visual cells and a hidden\n * native `<input>` that captures keyboard entry. Pair with `InputOtpField`\n * for label + helper/error wiring, or wire a `<label htmlFor>` yourself.\n */\nexport function InputOtp(props: InputOtpProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-input-otp-${reactId}`\n const otpLength = Math.max(1, props.length ?? 6)\n const isControlled = props.value !== undefined\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() => {\n return sanitizeInputOtpValue(props.defaultValue, otpLength)\n })\n\n const currentValue = sanitizeInputOtpValue(\n isControlled ? props.value : uncontrolledValue,\n otpLength,\n )\n\n const recipeOptions: InputOtpOptions = {\n id,\n value: currentValue,\n length: otpLength,\n }\n\n if (props.name) recipeOptions.name = props.name\n if (props.placeholderCharacter) recipeOptions.placeholderCharacter = props.placeholderCharacter\n if (props.disabled) recipeOptions.disabled = true\n if (props.readOnly) recipeOptions.readOnly = true\n if (props.required) recipeOptions.required = true\n if (props.invalid) recipeOptions.invalid = true\n if (props.describedBy) recipeOptions.describedBy = props.describedBy\n if (props.ariaLabel) recipeOptions.ariaLabel = props.ariaLabel\n if (props.label) recipeOptions.label = props.label\n if (props.ariaLabelledBy) recipeOptions.ariaLabelledBy = props.ariaLabelledBy\n\n const kit = createInputOtpRecipe(recipeOptions)\n\n const className = cx(kit.className, props.className)\n const style = kit.vars as StyleWithVars\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextValue = sanitizeInputOtpValue(event.target.value, otpLength)\n if (!isControlled) {\n setUncontrolledValue(nextValue)\n }\n props.onValueChange?.(nextValue)\n }\n\n return (\n <div\n className={className}\n style={style}\n data-component=\"input-otp\"\n data-invalid={props.invalid ? \"true\" : undefined}\n data-disabled={props.disabled ? \"true\" : undefined}\n >\n <div className=\"mw-input-otp__cells\">\n {kit.displayCells.map((displayCell) => (\n <span\n key={displayCell.key}\n className={cx(\"mw-input-otp__cell\", displayCell.filled && \"mw-input-otp__cell--filled\")}\n aria-hidden=\"true\"\n >\n {displayCell.character}\n </span>\n ))}\n\n <input\n id={kit.a11y.id}\n className=\"mw-input-otp__input\"\n type=\"text\"\n name={kit.a11y.name}\n inputMode={kit.a11y.inputMode}\n autoComplete={kit.a11y.autoComplete}\n maxLength={kit.a11y.maxLength}\n pattern={kit.a11y.pattern}\n disabled={kit.a11y.disabled}\n readOnly={kit.a11y.readOnly}\n required={kit.a11y.required}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-describedby={kit.a11y.ariaDescribedBy}\n value={kit.displayValue}\n onChange={handleChange}\n />\n </div>\n </div>\n )\n}\n","import { buildInputFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { InputOtp, type InputOtpProps } from \"./input-otp\"\n\nexport type InputOtpFieldProps = {\n /** Optional: if omitted, a stable id is generated via useId(). */\n id?: string\n /** Field label (required for accessibility). */\n label: string\n /** Optional helper text shown below the cells. */\n helperText?: string\n /** Optional error message. */\n error?: string\n /** Props forwarded to the bare `InputOtp` atom. */\n inputOtp?: Omit<InputOtpProps, \"id\" | \"ariaLabel\" | \"ariaLabelledBy\" | \"describedBy\">\n /** Additional aria-describedby IDs to merge with internal helper/error IDs. */\n ariaDescribedBy?: string\n className?: string\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\n/**\n * InputOtpField (Molecule)\n *\n * Labeled wrapper around the `InputOtp` atom. Renders the visible label,\n * the OTP cells (via the atom), and optional helper/error regions.\n * Auto-wires `aria-labelledby` and `aria-describedby`.\n *\n * Replaces the old self-contained `InputOtp` field — use this anywhere\n * you previously used `<InputOtp label={...} />`.\n */\nexport function InputOtpField(props: InputOtpFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-input-otp-${reactId}`\n const inputOtp = props.inputOtp ?? {}\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n const invalid = hasError || inputOtp.invalid === true\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const wrapperClass = cx(\n \"mw-input-otp-field\",\n hasError && \"mw-input-otp-field--invalid\",\n inputOtp.disabled && \"mw-input-otp-field--disabled\",\n props.className,\n )\n\n const otpProps: InputOtpProps = {\n ...inputOtp,\n id,\n invalid,\n ariaLabelledBy: `${id}-label`,\n }\n if (mergedDescribedBy) {\n otpProps.describedBy = mergedDescribedBy\n }\n\n return (\n <div className={wrapperClass}>\n <label className=\"mw-input-otp-field__label\" htmlFor={id} id={`${id}-label`}>\n <Text variant=\"label\">{props.label}</Text>\n </label>\n\n <InputOtp {...otpProps} />\n\n {hasError ? (\n <div className=\"mw-input-otp-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n ) : hasHelperText ? (\n <div className=\"mw-input-otp-field__helper\" id={helperTextId}>\n <Text variant=\"caption\">{props.helperText}</Text>\n </div>\n ) : null}\n </div>\n )\n}\n","import type * as React from \"react\"\n\nexport type SelectArrowIconProps = {\n className?: string\n}\n\nexport function SelectArrowIcon(props: SelectArrowIconProps): React.ReactElement {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M11.5288 5.52876C11.7891 5.26841 12.2111 5.26841 12.4715 5.52876C12.7318 5.78911 12.7318 6.21114 12.4715 6.47147L8.47148 10.4715C8.21115 10.7318 7.78912 10.7318 7.52877 10.4715L3.52876 6.47147C3.26841 6.21112 3.26841 5.78911 3.52876 5.52876C3.78911 5.26841 4.21112 5.26841 4.47147 5.52876L6.58591 7.6432C7.36696 8.42425 8.63329 8.42425 9.41434 7.6432L11.5288 5.52876Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n","import type {\n SelectAppearance as CoreSelectAppearance,\n SelectOption as CoreSelectOption,\n CssVars,\n SelectOptions,\n} from \"@marwes-ui/core\"\nimport { createSelectRecipe } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\nimport { SelectArrowIcon } from \"./select-arrow-icon\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type SelectAppearance = CoreSelectAppearance\nexport type SelectOption = CoreSelectOption\n\nexport type SelectProps = SelectOptions & {\n onValueChange?: (value: string) => void\n className?: string\n}\n\nfunction getInitialSelectValue(props: SelectProps): string {\n if (props.value !== undefined) {\n return props.value\n }\n\n if (props.defaultValue !== undefined) {\n return props.defaultValue\n }\n\n if (props.placeholder !== undefined) {\n return \"\"\n }\n\n return props.options[0]?.value ?? \"\"\n}\n\nexport function Select(props: SelectProps) {\n const kit = createSelectRecipe(props)\n const isControlled = props.value !== undefined\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() =>\n getInitialSelectValue(props),\n )\n\n useRenderKitDebug(kit, \"Select\")\n\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n const value = isControlled ? (props.value ?? \"\") : uncontrolledValue\n const hasPlaceholder = props.placeholder !== undefined\n const placeholderSelected = hasPlaceholder && value === \"\"\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const nextValue = e.target.value\n\n if (!isControlled) {\n setUncontrolledValue(nextValue)\n }\n\n props.onValueChange?.(nextValue)\n }\n\n const selectElement = (\n <select\n className={className}\n style={style}\n data-placeholder-selected={placeholderSelected ? \"true\" : undefined}\n id={kit.a11y.id}\n name={kit.a11y.name}\n disabled={kit.a11y.disabled}\n required={kit.a11y.required}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-describedby={kit.a11y.ariaDescribedBy}\n value={value}\n onChange={handleChange}\n >\n {props.placeholder ? (\n <option value=\"\" disabled={props.required ? true : undefined}>\n {props.placeholder}\n </option>\n ) : null}\n {props.options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled ? true : undefined}\n >\n {option.label}\n </option>\n ))}\n </select>\n )\n\n return (\n <span className=\"mw-select__control\">\n {selectElement}\n <SelectArrowIcon className=\"mw-select__control-icon\" />\n </span>\n )\n}\n","import { IconName, buildInputFieldA11yIds, resolveSelectMode } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { Text } from \"../text\"\nimport { Select } from \"./select\"\nimport type { SelectProps } from \"./select\"\nimport { SelectArrowIcon } from \"./select-arrow-icon\"\n\nexport type SelectFieldVariant = \"default\" | \"date\"\n\nexport type SelectFieldProps = {\n id?: string\n label: string\n helperText?: string\n error?: string\n select: SelectProps\n ariaDescribedBy?: string\n variant?: SelectFieldVariant\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\nfunction getInitialSelectValue(props: SelectProps): string {\n if (props.value !== undefined) {\n return props.value\n }\n\n if (props.defaultValue !== undefined) {\n return props.defaultValue\n }\n\n if (props.placeholder !== undefined) {\n return \"\"\n }\n\n return props.options[0]?.value ?? \"\"\n}\n\nfunction getFirstEnabledOptionIndex(options: SelectProps[\"options\"]): number {\n return options.findIndex((option) => !option.disabled)\n}\n\nfunction getLastEnabledOptionIndex(options: SelectProps[\"options\"]): number {\n for (let index = options.length - 1; index >= 0; index -= 1) {\n if (!options[index]?.disabled) {\n return index\n }\n }\n\n return -1\n}\n\nfunction getSelectedOptionIndex(options: SelectProps[\"options\"], value: string): number {\n return options.findIndex((option) => option.value === value && !option.disabled)\n}\n\nfunction getInitialActiveOptionIndex(options: SelectProps[\"options\"], value: string): number {\n const selectedIndex = getSelectedOptionIndex(options, value)\n\n if (selectedIndex !== -1) {\n return selectedIndex\n }\n\n return getFirstEnabledOptionIndex(options)\n}\n\nfunction getNextEnabledOptionIndex(\n options: SelectProps[\"options\"],\n currentIndex: number,\n direction: 1 | -1,\n): number {\n if (options.length === 0) {\n return -1\n }\n\n let nextIndex = currentIndex\n\n for (let attempts = 0; attempts < options.length; attempts += 1) {\n nextIndex = (nextIndex + direction + options.length) % options.length\n\n if (!options[nextIndex]?.disabled) {\n return nextIndex\n }\n }\n\n return currentIndex\n}\n\ntype MarwesSelectFieldControlProps = {\n id: string\n label?: string\n select: SelectProps\n}\n\nfunction MarwesSelectFieldControl(props: MarwesSelectFieldControlProps): React.ReactElement {\n const { id, label, select } = props\n const listboxId = `${id}-listbox`\n const isControlled = select.value !== undefined\n const [internalValue, setInternalValue] = React.useState(() => getInitialSelectValue(select))\n const value = isControlled ? (select.value ?? \"\") : internalValue\n const [open, setOpen] = React.useState(false)\n const [activeIndex, setActiveIndex] = React.useState(() =>\n getInitialActiveOptionIndex(select.options, value),\n )\n const rootRef = React.useRef<HTMLDivElement | null>(null)\n const buttonRef = React.useRef<HTMLButtonElement | null>(null)\n\n const selectedOption =\n select.options.find((option) => option.value === value) ??\n (select.placeholder === undefined ? select.options[0] : undefined)\n const placeholderSelected = select.placeholder !== undefined && value === \"\"\n const displayText = placeholderSelected ? select.placeholder : (selectedOption?.label ?? \"\")\n const accessibleName =\n select.ariaLabel ??\n (hasTextContent(label) ? label : undefined) ??\n (hasTextContent(displayText) ? displayText : undefined)\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n\n function handlePointerDown(event: PointerEvent) {\n if (rootRef.current?.contains(event.target as Node)) {\n return\n }\n\n setOpen(false)\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown)\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n\n setActiveIndex(getInitialActiveOptionIndex(select.options, value))\n }, [open, select.options, value])\n\n React.useEffect(() => {\n if (!select.disabled) {\n return\n }\n\n setOpen(false)\n }, [select.disabled])\n\n const commitValue = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue)\n }\n\n select.onValueChange?.(nextValue)\n }\n\n const selectOptionAtIndex = (index: number) => {\n const option = select.options[index]\n\n if (!option || option.disabled) {\n return\n }\n\n commitValue(option.value)\n setOpen(false)\n buttonRef.current?.focus()\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (select.disabled) {\n return\n }\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n setActiveIndex(getInitialActiveOptionIndex(select.options, value))\n return\n }\n\n setActiveIndex((currentIndex) => getNextEnabledOptionIndex(select.options, currentIndex, 1))\n return\n }\n case \"ArrowUp\": {\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n setActiveIndex(getInitialActiveOptionIndex(select.options, value))\n return\n }\n\n setActiveIndex((currentIndex) =>\n getNextEnabledOptionIndex(select.options, currentIndex, -1),\n )\n return\n }\n case \"Home\": {\n if (!open) {\n return\n }\n\n event.preventDefault()\n setActiveIndex(getFirstEnabledOptionIndex(select.options))\n return\n }\n case \"End\": {\n if (!open) {\n return\n }\n\n event.preventDefault()\n setActiveIndex(getLastEnabledOptionIndex(select.options))\n return\n }\n case \"Enter\":\n case \" \": {\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n setActiveIndex(getInitialActiveOptionIndex(select.options, value))\n return\n }\n\n if (activeIndex !== -1) {\n selectOptionAtIndex(activeIndex)\n }\n return\n }\n case \"Escape\": {\n if (!open) {\n return\n }\n\n event.preventDefault()\n setOpen(false)\n return\n }\n case \"Tab\": {\n setOpen(false)\n return\n }\n default:\n return\n }\n }\n\n return (\n <div\n ref={rootRef}\n className={cx(\"mw-select-field__control\", open && \"mw-select-field__control--open\")}\n >\n <button\n ref={buttonRef}\n id={id}\n type=\"button\"\n className={cx(\n \"mw-select-field__trigger\",\n placeholderSelected && \"mw-select-field__trigger--placeholder\",\n select.invalid && \"is-invalid\",\n open && \"mw-select-field__trigger--open\",\n )}\n role=\"combobox\"\n aria-controls={listboxId}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-label={accessibleName}\n aria-describedby={select.describedBy}\n aria-invalid={select.invalid ? \"true\" : undefined}\n aria-required={select.required ? \"true\" : undefined}\n aria-activedescendant={\n open && activeIndex !== -1 ? `${id}-option-${activeIndex}` : undefined\n }\n disabled={select.disabled}\n data-placeholder-selected={placeholderSelected ? \"true\" : undefined}\n onClick={() => {\n if (select.disabled) {\n return\n }\n\n setOpen((currentOpen) => !currentOpen)\n }}\n onKeyDown={handleKeyDown}\n >\n <span className=\"mw-select-field__trigger-text\">{displayText}</span>\n <SelectArrowIcon className=\"mw-select-field__trigger-icon\" />\n </button>\n\n {select.name ? (\n <input\n aria-hidden=\"true\"\n className=\"mw-select-field__proxy-input\"\n name={select.name}\n type=\"hidden\"\n value={value}\n readOnly\n />\n ) : null}\n\n {open ? (\n <>\n <div className=\"mw-select-field__list\" id={listboxId} role=\"listbox\" tabIndex={-1}>\n {select.options.map((option, optionIndex) => {\n const selected = option.value === value\n const active = optionIndex === activeIndex\n\n return (\n <div\n id={`${id}-option-${optionIndex}`}\n key={option.value}\n className={cx(\n \"mw-select-field__option\",\n active && \"mw-select-field__option--active\",\n selected && \"mw-select-field__option--selected\",\n option.disabled && \"mw-select-field__option--disabled\",\n )}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={option.disabled ? \"true\" : undefined}\n tabIndex={-1}\n onClick={() => selectOptionAtIndex(optionIndex)}\n onKeyDown={(event) => {\n if (option.disabled) {\n return\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n selectOptionAtIndex(optionIndex)\n }\n }}\n onMouseDown={(event) => event.preventDefault()}\n onMouseEnter={() => {\n if (!option.disabled) {\n setActiveIndex(optionIndex)\n }\n }}\n >\n <span className=\"mw-select-field__option-label\">{option.label}</span>\n {selected ? (\n <Icon\n className=\"mw-select-field__option-check\"\n name={IconName.Check}\n size=\"xs\"\n decorative\n />\n ) : null}\n </div>\n )\n })}\n </div>\n </>\n ) : null}\n </div>\n )\n}\n\nexport function SelectField(props: SelectFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-select-${reactId}`\n const mode = resolveSelectMode(props.select)\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.select.disabled || false\n const invalid = hasError || props.select.invalid || false\n\n const wrapperClass = cx(\n \"mw-input-field\",\n \"mw-input-field--select\",\n mode === \"marwes\" && \"mw-input-field--select-marwes\",\n props.variant === \"date\" && \"mw-input-field--select-date\",\n disabled && \"mw-input-field--disabled\",\n invalid && \"mw-input-field--invalid\",\n )\n\n const selectProps: SelectProps = {\n ...props.select,\n id,\n invalid,\n }\n\n if (mergedDescribedBy) {\n selectProps.describedBy = mergedDescribedBy\n }\n\n return (\n <div className={wrapperClass}>\n <label className=\"mw-input-field__label\" htmlFor={id}>\n <Text variant=\"label\">{props.label}</Text>\n </label>\n\n <div className=\"mw-input-field__input-wrapper\">\n {mode === \"native\" ? (\n <Select {...selectProps} native />\n ) : (\n <MarwesSelectFieldControl id={id} label={props.label} select={selectProps} />\n )}\n </div>\n\n {hasHelperText && !hasError && (\n <div className=\"mw-input-field__helper\" id={helperTextId}>\n <Text variant=\"caption\">{props.helperText}</Text>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-input-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import type { CssVars, TextareaOptions } from \"@marwes-ui/core\"\nimport { createTextareaRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type TextareaProps = TextareaOptions & {\n onValueChange?: (value: string) => void\n className?: string\n}\n\nexport function Textarea(props: TextareaProps) {\n const kit = createTextareaRecipe(props)\n\n useRenderKitDebug(kit, \"Textarea\")\n\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n props.onValueChange?.(e.target.value)\n }\n\n return (\n <textarea\n className={className}\n style={style}\n id={kit.a11y.id}\n name={kit.a11y.name}\n inputMode={kit.a11y.inputMode}\n autoComplete={kit.a11y.autoComplete}\n placeholder={kit.a11y.placeholder}\n disabled={kit.a11y.disabled}\n readOnly={kit.a11y.readOnly}\n required={kit.a11y.required}\n rows={kit.a11y.rows}\n cols={kit.a11y.cols}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-describedby={kit.a11y.ariaDescribedBy}\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={handleChange}\n />\n )\n}\n","import { buildInputFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { Textarea } from \"./textarea\"\nimport type { TextareaProps } from \"./textarea\"\n\nexport type TextareaFieldProps = {\n id?: string\n label: string\n helperText?: string\n counterText?: string\n error?: string\n textarea: TextareaProps\n ariaDescribedBy?: string\n}\n\nfunction cx(...parts: Array<string | false>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\nexport function TextareaField(props: TextareaFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-textarea-${reactId}`\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasCounterText = hasTextContent(props.counterText)\n const hasError = hasTextContent(props.error)\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.textarea.disabled || false\n const readOnly = props.textarea.readOnly || false\n const invalid = hasError || props.textarea.invalid || false\n\n const wrapperClass = cx(\n \"mw-input-field\",\n \"mw-input-field--textarea\",\n disabled && \"mw-input-field--disabled\",\n invalid && \"mw-input-field--invalid\",\n readOnly && \"mw-input-field--readonly\",\n )\n\n const textareaProps: TextareaProps = {\n ...props.textarea,\n id,\n invalid,\n }\n\n if (mergedDescribedBy) {\n textareaProps.describedBy = mergedDescribedBy\n }\n\n return (\n <div className={wrapperClass}>\n <label className=\"mw-input-field__label\" htmlFor={id}>\n <Text variant=\"label\">{props.label}</Text>\n </label>\n\n <div className=\"mw-input-field__input-wrapper\">\n <Textarea {...textareaProps} />\n </div>\n\n {(hasHelperText || hasCounterText) && !hasError && (\n <div className=\"mw-input-field__meta\">\n {hasHelperText ? (\n <div className=\"mw-input-field__helper\" id={helperTextId}>\n <Text variant=\"caption\">{props.helperText}</Text>\n </div>\n ) : (\n <span aria-hidden=\"true\" />\n )}\n\n {hasCounterText && (\n <div className=\"mw-input-field__counter\">\n <Text variant=\"caption\">{props.counterText}</Text>\n </div>\n )}\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-input-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import {\n createRichTextRecipe,\n isRichTextHtmlEmpty,\n normalizeRichTextHtml,\n resolveRichTextAllowedFormats,\n richTextCommandByFormat,\n} from \"@marwes-ui/core\"\nimport type { CssVars, RichTextFormat, RichTextOptions } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\nimport { Icon } from \"../icon\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type RichTextProps = RichTextOptions & {\n onValueChange?: (value: string) => void\n className?: string\n}\n\nconst formatLabels: Record<RichTextFormat, string> = {\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n}\n\ntype RichTextCommandDocument = Document & {\n execCommand?: (commandId: string) => boolean\n queryCommandState?: (commandId: string) => boolean\n}\n\nfunction getRichTextCommandDocument(): RichTextCommandDocument {\n return document as unknown as RichTextCommandDocument\n}\n\nfunction mergeRefs<T>(...refs: Array<React.Ref<T> | undefined>): (value: T | null) => void {\n return (value) => {\n for (const ref of refs) {\n if (!ref) continue\n\n if (typeof ref === \"function\") {\n ref(value)\n continue\n }\n ;(ref as React.MutableRefObject<T | null>).current = value\n }\n }\n}\n\nfunction isNodeWithinEditor(node: Node | null, editorElement: HTMLDivElement | null): boolean {\n if (!node || !editorElement) {\n return false\n }\n\n return editorElement.contains(node.nodeType === Node.TEXT_NODE ? node.parentNode : node)\n}\n\nfunction getActiveFormatsFromSelection(editorElement: HTMLDivElement | null): RichTextFormat[] {\n if (!editorElement || typeof window === \"undefined\" || typeof document === \"undefined\") {\n return []\n }\n\n const commandDocument = getRichTextCommandDocument()\n const selection = window.getSelection()\n const anchorNode = selection?.anchorNode ?? null\n\n if (!anchorNode || !isNodeWithinEditor(anchorNode, editorElement)) {\n return []\n }\n\n const activeFormats = new Set<RichTextFormat>()\n\n if (typeof commandDocument.queryCommandState === \"function\") {\n for (const format of Object.keys(richTextCommandByFormat) as RichTextFormat[]) {\n try {\n if (commandDocument.queryCommandState(richTextCommandByFormat[format])) {\n activeFormats.add(format)\n }\n } catch {\n // Ignore queryCommandState failures and fall back to DOM inspection below.\n }\n }\n }\n\n if (activeFormats.size > 0) {\n return Array.from(activeFormats)\n }\n\n let currentNode: Node | null =\n anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentNode : anchorNode\n\n while (currentNode && currentNode !== editorElement) {\n if (!(currentNode instanceof HTMLElement)) {\n currentNode = currentNode.parentNode\n continue\n }\n\n const tagName = currentNode.tagName.toLowerCase()\n\n if (tagName === \"strong\" || tagName === \"b\") activeFormats.add(\"bold\")\n if (tagName === \"em\" || tagName === \"i\") activeFormats.add(\"italic\")\n if (tagName === \"u\") activeFormats.add(\"underline\")\n\n currentNode = currentNode.parentNode\n }\n\n return Array.from(activeFormats)\n}\n\nfunction ensureEditorSelection(editorElement: HTMLDivElement): void {\n if (typeof window === \"undefined\") {\n return\n }\n\n editorElement.focus()\n\n const selection = window.getSelection()\n const anchorNode = selection?.anchorNode ?? null\n\n if (anchorNode && isNodeWithinEditor(anchorNode, editorElement)) {\n return\n }\n\n const range = document.createRange()\n range.selectNodeContents(editorElement)\n range.collapse(false)\n selection?.removeAllRanges()\n selection?.addRange(range)\n}\n\nfunction getFormatTagNames(format: RichTextFormat): string[] {\n if (format === \"bold\") return [\"strong\", \"b\"]\n if (format === \"italic\") return [\"em\", \"i\"]\n return [\"u\"]\n}\n\nfunction findNearestFormatElement(\n node: Node | null,\n editorElement: HTMLDivElement,\n format: RichTextFormat,\n): HTMLElement | null {\n const tagNames = getFormatTagNames(format)\n let currentNode: Node | null = node?.nodeType === Node.TEXT_NODE ? node.parentNode : node\n\n while (currentNode && currentNode !== editorElement) {\n if (\n currentNode instanceof HTMLElement &&\n tagNames.includes(currentNode.tagName.toLowerCase())\n ) {\n return currentNode\n }\n\n currentNode = currentNode.parentNode\n }\n\n return null\n}\n\nfunction exitActiveFormatAtCaret(editorElement: HTMLDivElement, format: RichTextFormat): boolean {\n if (typeof window === \"undefined\") {\n return false\n }\n\n const selection = window.getSelection()\n\n if (!selection || selection.rangeCount === 0) {\n return false\n }\n\n const range = selection.getRangeAt(0)\n const anchorNode = selection.anchorNode\n\n if (!range.collapsed || !anchorNode || !isNodeWithinEditor(anchorNode, editorElement)) {\n return false\n }\n\n const formatElement = findNearestFormatElement(anchorNode, editorElement, format)\n\n if (!formatElement || !formatElement.parentNode) {\n return false\n }\n\n const trailingRange = document.createRange()\n trailingRange.setStart(range.startContainer, range.startOffset)\n trailingRange.setEndAfter(formatElement)\n\n const trailingFragment = trailingRange.extractContents()\n const caretTextNode = document.createTextNode(\"\\u200B\")\n const parentNode = formatElement.parentNode\n parentNode.insertBefore(caretTextNode, formatElement.nextSibling)\n parentNode.insertBefore(trailingFragment, caretTextNode.nextSibling)\n\n if (formatElement.textContent?.replaceAll(\"\\u200B\", \"\").trim().length === 0) {\n formatElement.remove()\n }\n\n const nextRange = document.createRange()\n nextRange.setStart(caretTextNode, 1)\n nextRange.collapse(true)\n selection.removeAllRanges()\n selection.addRange(nextRange)\n\n return true\n}\n\nexport const RichText = React.forwardRef<HTMLDivElement, RichTextProps>((props, forwardedRef) => {\n const kit = createRichTextRecipe(props)\n const allowedFormats = React.useMemo(\n () => resolveRichTextAllowedFormats(props.allowedFormats),\n [props.allowedFormats],\n )\n const normalizedControlledValue = React.useMemo(\n () => normalizeRichTextHtml(props.value),\n [props.value],\n )\n const initialUncontrolledValue = React.useMemo(\n () => normalizeRichTextHtml(props.defaultValue),\n [props.defaultValue],\n )\n const isControlled = props.value !== undefined\n const [uncontrolledHtml, setUncontrolledHtml] = React.useState(initialUncontrolledValue)\n const [isEditorEmpty, setIsEditorEmpty] = React.useState(\n isRichTextHtmlEmpty(isControlled ? normalizedControlledValue : initialUncontrolledValue),\n )\n const [activeFormats, setActiveFormats] = React.useState<RichTextFormat[]>([])\n const editorElementRef = React.useRef<HTMLDivElement | null>(null)\n\n useRenderKitDebug(kit, \"RichText\")\n\n const editorHtml = isControlled ? normalizedControlledValue : uncontrolledHtml\n const style = kit.vars as StyleWithVars\n const className = props.className ? `${kit.className} ${props.className}` : kit.className\n const showToolbar = !props.readOnly\n\n const syncEditorState = React.useCallback(\n (nextHtml: string) => {\n const normalizedHtml = normalizeRichTextHtml(nextHtml)\n const emptyState = isRichTextHtmlEmpty(normalizedHtml)\n\n if (!isControlled) {\n setUncontrolledHtml(normalizedHtml)\n }\n\n setIsEditorEmpty(emptyState)\n props.onValueChange?.(normalizedHtml)\n\n return normalizedHtml\n },\n [isControlled, props],\n )\n\n const refreshActiveFormats = React.useCallback(() => {\n setActiveFormats(getActiveFormatsFromSelection(editorElementRef.current))\n }, [])\n\n React.useLayoutEffect(() => {\n const editorElement = editorElementRef.current\n\n if (!editorElement) {\n return\n }\n\n const normalizedDomHtml = normalizeRichTextHtml(editorElement.innerHTML)\n\n if (normalizedDomHtml !== editorHtml) {\n editorElement.innerHTML = editorHtml\n }\n\n setIsEditorEmpty(isRichTextHtmlEmpty(editorHtml))\n }, [editorHtml])\n\n React.useEffect(() => {\n if (typeof document === \"undefined\") {\n return undefined\n }\n\n const handleSelectionChange = () => {\n refreshActiveFormats()\n }\n\n document.addEventListener(\"selectionchange\", handleSelectionChange)\n\n return () => {\n document.removeEventListener(\"selectionchange\", handleSelectionChange)\n }\n }, [refreshActiveFormats])\n\n const handleInput = () => {\n const editorElement = editorElementRef.current\n\n if (!editorElement || props.disabled || props.readOnly) {\n return\n }\n\n syncEditorState(editorElement.innerHTML)\n refreshActiveFormats()\n }\n\n const toggleFormat = (format: RichTextFormat) => {\n if (props.disabled || props.readOnly || typeof document === \"undefined\") {\n return\n }\n\n const commandDocument = getRichTextCommandDocument()\n const editorElement = editorElementRef.current\n\n if (!editorElement) {\n return\n }\n\n ensureEditorSelection(editorElement)\n const activeFormatsBeforeToggle = getActiveFormatsFromSelection(editorElement)\n\n if (exitActiveFormatAtCaret(editorElement, format)) {\n if (\n typeof commandDocument.queryCommandState === \"function\" &&\n commandDocument.queryCommandState(richTextCommandByFormat[format]) &&\n typeof commandDocument.execCommand === \"function\"\n ) {\n commandDocument.execCommand(richTextCommandByFormat[format])\n }\n\n if (\n typeof commandDocument.queryCommandState === \"function\" &&\n typeof commandDocument.execCommand === \"function\"\n ) {\n for (const activeFormat of activeFormatsBeforeToggle) {\n if (activeFormat === format) {\n continue\n }\n\n if (!commandDocument.queryCommandState(richTextCommandByFormat[activeFormat])) {\n commandDocument.execCommand(richTextCommandByFormat[activeFormat])\n }\n }\n }\n\n syncEditorState(editorElement.innerHTML)\n refreshActiveFormats()\n return\n }\n\n if (typeof commandDocument.execCommand === \"function\") {\n commandDocument.execCommand(richTextCommandByFormat[format])\n }\n\n syncEditorState(editorElement.innerHTML)\n refreshActiveFormats()\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!(event.metaKey || event.ctrlKey) || event.altKey) {\n return\n }\n\n const formatByKey: Partial<Record<string, RichTextFormat>> = {\n b: \"bold\",\n i: \"italic\",\n u: \"underline\",\n }\n\n const requestedFormat = formatByKey[event.key.toLowerCase()]\n\n if (!requestedFormat || !allowedFormats.includes(requestedFormat)) {\n return\n }\n\n event.preventDefault()\n toggleFormat(requestedFormat)\n }\n\n return (\n <div className={className} style={style} {...kit.dataAttributes}>\n {showToolbar && (\n <div className=\"mw-rich-text__toolbar\" data-rich-text-toolbar>\n {allowedFormats.map((format) => {\n const isActive = activeFormats.includes(format)\n const iconName =\n format === \"bold\" ? \"bold\" : format === \"italic\" ? \"italic\" : \"underline\"\n\n return (\n <button\n key={format}\n type=\"button\"\n className=\"mw-rich-text__toolbar-button\"\n data-format={format}\n data-active={isActive ? \"true\" : undefined}\n aria-label={formatLabels[format]}\n aria-pressed={isActive}\n disabled={props.disabled}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n toggleFormat(format)\n }}\n >\n <Icon name={iconName} size=\"xs\" decorative />\n </button>\n )\n })}\n </div>\n )}\n\n <div\n ref={mergeRefs(editorElementRef, forwardedRef)}\n className=\"mw-rich-text__editor\"\n data-rich-text-editor\n data-empty={isEditorEmpty ? \"true\" : undefined}\n data-placeholder={props.placeholder}\n id={kit.a11y.id}\n role={kit.a11y.role}\n tabIndex={kit.a11y.tabIndex}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-describedby={kit.a11y.ariaDescribedBy}\n aria-invalid={kit.a11y.ariaInvalid}\n aria-disabled={kit.a11y.ariaDisabled}\n aria-readonly={kit.a11y.ariaReadOnly}\n aria-required={kit.a11y.ariaRequired}\n aria-multiline={kit.a11y.ariaMultiline}\n contentEditable={!props.disabled && !props.readOnly}\n suppressContentEditableWarning\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onFocus={refreshActiveFormats}\n onBlur={() => {\n syncEditorState(editorElementRef.current?.innerHTML ?? \"\")\n setActiveFormats([])\n }}\n />\n\n {props.name && (\n <input type=\"hidden\" name={props.name} value={editorHtml} disabled={props.disabled} />\n )}\n </div>\n )\n})\n\nRichText.displayName = \"RichText\"\n","import { buildRichTextFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { RichText } from \"./rich-text\"\nimport type { RichTextProps } from \"./rich-text\"\n\nexport type RichTextFieldProps = {\n id?: string\n label: string\n helperText?: string\n error?: string\n editor: RichTextProps\n ariaDescribedBy?: string\n}\n\nfunction cx(...parts: Array<string | false>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\nexport function RichTextField(props: RichTextFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-rich-text-${reactId}`\n const editorRef = React.useRef<HTMLDivElement | null>(null)\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n\n const { labelId, helperTextId, errorId, describedBy } = buildRichTextFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.editor.disabled || false\n const readOnly = props.editor.readOnly || false\n const invalid = hasError || props.editor.invalid || false\n\n const wrapperClass = cx(\n \"mw-input-field\",\n \"mw-input-field--rich-text\",\n disabled && \"mw-input-field--disabled\",\n invalid && \"mw-input-field--invalid\",\n readOnly && \"mw-input-field--readonly\",\n )\n\n const editorProps: RichTextProps = {\n ...props.editor,\n id,\n invalid,\n labelledBy: labelId,\n }\n\n if (describedBy) {\n editorProps.describedBy = describedBy\n }\n\n return (\n <div className={wrapperClass}>\n <button\n type=\"button\"\n className=\"mw-input-field__label\"\n id={labelId}\n onClick={() => {\n editorRef.current?.focus()\n }}\n >\n <Text variant=\"label\">{props.label}</Text>\n </button>\n\n <div className=\"mw-input-field__input-wrapper\">\n <RichText ref={editorRef} {...editorProps} />\n </div>\n\n {hasHelperText && !hasError && (\n <div className=\"mw-input-field__helper\" id={helperTextId}>\n <Text variant=\"caption\">{props.helperText}</Text>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-input-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import { buildCurrencyHelperText, getCurrencySymbol, sanitizeCurrencyValue } from \"@marwes-ui/core\"\nimport type { CurrencyCode } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport type { InputProps } from \"./input\"\nimport { InputField, type InputFieldProps } from \"./input-field\"\nimport type { SelectProps } from \"./select\"\nimport { SelectField, type SelectFieldProps } from \"./select-field\"\n\n/**\n * Field Variants - AI-Friendly Components\n *\n * These variants encode best practices and automatically set AI-friendly\n * metadata, making it easier for both developers and AI tools to understand\n * the purpose and behavior of each field.\n *\n * Each variant manages its own purpose-specific logic (password toggle,\n * search clear, etc.) and sets appropriate semantic attributes.\n */\n\n// ============================================================================\n// DROPDOWN FIELD - Figma dropdown wrapper\n// ============================================================================\n\nexport type DropdownFieldProps = Omit<SelectFieldProps, \"select\"> & {\n /**\n * Select-specific props. Use `native` to opt back into the browser dropdown.\n */\n select: Omit<SelectProps, \"appearance\"> & {\n native?: boolean\n }\n}\n\n/**\n * DropdownField - For the Figma-aligned dropdown presentation.\n *\n * **AI Context:**\n * - Reuses `SelectField` accessibility and state wiring\n * - Defaults to the Marwes dropdown presentation\n * - Allows `native={true}` to fall back to the browser dropdown\n * - Adds `data-purpose=\"dropdown\"` for semantic parsing\n *\n * **Features:**\n * - Same label/helper/error contract as `SelectField`\n * - Controlled and uncontrolled modes supported\n * - Prevents API drift between generic select and dropdown styling\n *\n * @example\n * ```tsx\n * <DropdownField\n * label=\"Country\"\n * select={{\n * placeholder: \"Choose a country\",\n * options: [\n * { value: \"se\", label: \"Sweden\" },\n * { value: \"us\", label: \"United States\" },\n * ],\n * }}\n * />\n * ```\n */\nexport function DropdownField(props: DropdownFieldProps): React.ReactElement {\n return (\n <div data-purpose=\"dropdown\">\n <SelectField\n {...props}\n select={{\n ...props.select,\n native: props.select.native ?? false,\n }}\n />\n </div>\n )\n}\n\n// ============================================================================\n// SEARCH FIELD - Search inputs with clear button\n// ============================================================================\n\nexport type SearchFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type is auto-set to \"search\")\n */\n input?: Omit<InputProps, \"type\">\n}\n\n/**\n * SearchField - For search inputs with an automatic search affordance and clear button.\n *\n * **AI Context:**\n * - Sets `type=\"search\"` automatically\n * - Sets `inputMode=\"search\"` for mobile keyboards\n * - Shows a search icon by default and a clear button (X icon) when field has content\n * - Adds `data-purpose=\"search\"` for AI parsing\n *\n * **Features:**\n * - Automatic clear button that appears when typing\n * - Native search input behavior\n * - Optimized mobile keyboard\n * - Controlled and uncontrolled modes supported\n *\n * @example Basic usage\n * ```tsx\n * import { SearchField } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * const [query, setQuery] = React.useState(\"\");\n * return (\n * <SearchField\n * label=\"Search products\"\n * input={{ value: query, onValueChange: setQuery }}\n * />\n * );\n * }\n * ```\n */\nexport function SearchField(props: SearchFieldProps): React.ReactElement {\n // Enhanced input props with search-specific settings\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"search\",\n inputMode: \"search\",\n }\n\n return (\n <div data-purpose=\"search\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// PASSWORD FIELD - Password inputs with show/hide toggle\n// ============================================================================\n\nexport type PasswordFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type is auto-set to \"password\")\n */\n input?: Omit<InputProps, \"type\">\n\n /**\n * Autocomplete hint: \"current-password\" or \"new-password\"\n * Defaults to \"current-password\"\n */\n autoComplete?: \"current-password\" | \"new-password\"\n}\n\n/**\n * PasswordField - For password inputs with automatic show/hide toggle.\n *\n * **AI Context:**\n * - Sets `type=\"password\"` automatically (toggles to \"text\" when shown)\n * - Shows eye/eyeOff icon toggle button\n * - Sets appropriate `autoComplete` attribute\n * - Adds `data-purpose=\"password\"` for AI parsing\n *\n * **Features:**\n * - Automatic show/hide toggle with eye icon\n * - Proper autocomplete for password managers\n * - Accessible toggle button with clear labels\n * - Controlled and uncontrolled modes supported\n *\n * @example Basic usage\n * ```tsx\n * import { PasswordField } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * const [password, setPassword] = React.useState(\"\");\n * return (\n * <PasswordField\n * label=\"Password\"\n * input={{ value: password, onValueChange: setPassword }}\n * />\n * );\n * }\n * ```\n *\n * @example New password (signup/reset)\n * ```tsx\n * <PasswordField\n * label=\"New Password\"\n * autoComplete=\"new-password\"\n * helperText=\"Must be at least 8 characters\"\n * />\n * ```\n */\nexport function PasswordField(props: PasswordFieldProps): React.ReactElement {\n const { autoComplete = \"current-password\", ...restProps } = props\n\n // Enhanced input props with password-specific settings\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"password\",\n autoComplete,\n }\n\n return (\n <div data-purpose=\"password\">\n <InputField {...restProps} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// EMAIL FIELD - Email inputs with proper semantic attributes\n// ============================================================================\n\nexport type EmailFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * EmailField - For email address inputs with proper semantic attributes.\n *\n * **AI Context:**\n * - Sets `type=\"email\"` for validation\n * - Sets `inputMode=\"email\"` for optimized mobile keyboard\n * - Sets `autoComplete=\"email\"` for autofill\n * - Adds `data-purpose=\"email\"` for AI parsing\n *\n * **Features:**\n * - Browser email validation\n * - Email-optimized mobile keyboard\n * - Autofill support for email addresses\n *\n * @example\n * ```tsx\n * import { EmailField } from \"@marwes-ui/react\";\n *\n * <EmailField\n * label=\"Email address\"\n * input={{ placeholder: \"you@example.com\" }}\n * />\n * ```\n */\nexport function EmailField(props: EmailFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"email\",\n inputMode: \"email\",\n autoComplete: \"email\",\n }\n\n return (\n <div data-purpose=\"email\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// DATE OF BIRTH FIELD - Birthday inputs with native date semantics\n// ============================================================================\n\nexport type DateOfBirthFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * DateOfBirthField - For birthday inputs with native date semantics.\n *\n * **AI Context:**\n * - Sets `type=\"date\"` for native browser date controls\n * - Sets `autoComplete=\"bday\"` for profile/password-manager autofill\n * - Adds `data-purpose=\"date-of-birth\"` for AI parsing\n *\n * **Features:**\n * - Native date picker where the platform supports it\n * - ISO value handling (`YYYY-MM-DD`) for predictable form state\n * - Keeps the same label/helper/error contract as `InputField`\n */\nexport function DateOfBirthField(props: DateOfBirthFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"date\",\n autoComplete: \"bday\",\n }\n\n return (\n <div data-purpose=\"date-of-birth\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// ZIP CODE FIELD - Postal code inputs with low-regret semantics\n// ============================================================================\n\nexport type ZipCodeFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * ZipCodeField - For postal/ZIP code inputs that should keep text semantics.\n *\n * **AI Context:**\n * - Sets `type=\"text\"` to preserve leading zeros\n * - Sets `inputMode=\"numeric\"` for the mobile number keypad\n * - Sets `autoComplete=\"postal-code\"` for address autofill\n * - Adds `data-purpose=\"zip-code\"` for AI parsing\n *\n * **Features:**\n * - Low-regret default for US ZIP and broader postal-code entry\n * - Avoids number-input quirks like spinner UI and lost leading zeroes\n * - Keeps the same label/helper/error contract as `InputField`\n */\nexport function ZipCodeField(props: ZipCodeFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"text\",\n inputMode: \"numeric\",\n autoComplete: \"postal-code\",\n }\n\n return (\n <div data-purpose=\"zip-code\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// PHONE FIELD - Phone number inputs with proper semantic attributes\n// ============================================================================\n\nexport type PhoneFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * PhoneField - For phone number inputs with proper semantic attributes.\n *\n * **AI Context:**\n * - Sets `type=\"tel\"` for telephone input\n * - Sets `inputMode=\"tel\"` for phone keyboard\n * - Sets `autoComplete=\"tel\"` for autofill\n * - Adds `data-purpose=\"phone\"` for AI parsing\n *\n * **Features:**\n * - Phone-optimized mobile keyboard\n * - Autofill support for phone numbers\n * - Accepts any phone format (formatting should be done externally)\n *\n * @example\n * ```tsx\n * import { PhoneField } from \"@marwes-ui/react\";\n *\n * <PhoneField\n * label=\"Phone number\"\n * input={{ placeholder: \"+1 (555) 000-0000\" }}\n * />\n * ```\n */\nexport function PhoneField(props: PhoneFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"tel\",\n inputMode: \"tel\",\n autoComplete: \"tel\",\n }\n\n return (\n <div data-purpose=\"phone\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// URL FIELD - URL inputs with proper semantic attributes\n// ============================================================================\n\nexport type URLFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode, autoComplete auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\" | \"autoComplete\">\n}\n\n/**\n * URLField - For URL inputs with proper semantic attributes.\n *\n * **AI Context:**\n * - Sets `type=\"url\"` for URL validation\n * - Sets `inputMode=\"url\"` for URL keyboard\n * - Sets `autoComplete=\"url\"` for autofill\n * - Adds `data-purpose=\"url\"` for AI parsing\n *\n * **Features:**\n * - Browser URL validation\n * - URL-optimized mobile keyboard\n * - Autofill support for URLs\n *\n * @example\n * ```tsx\n * import { URLField } from \"@marwes-ui/react\";\n *\n * <URLField\n * label=\"Website\"\n * input={{ placeholder: \"https://example.com\" }}\n * />\n * ```\n */\nexport function URLField(props: URLFieldProps): React.ReactElement {\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"url\",\n inputMode: \"url\",\n autoComplete: \"url\",\n }\n\n return (\n <div data-purpose=\"url\">\n <InputField {...props} input={enhancedInput} />\n </div>\n )\n}\n\n// ============================================================================\n// CURRENCY FIELD - Currency/monetary inputs with formatting hints\n// ============================================================================\n\nexport type CurrencyFieldProps = Omit<InputFieldProps, \"input\"> & {\n /**\n * Input-specific props (type, inputMode auto-set)\n */\n input?: Omit<InputProps, \"type\" | \"inputMode\">\n\n /**\n * Currency code (e.g., \"USD\", \"EUR\", \"GBP\").\n * Prefer `CurrencyCode` for autocomplete and Storybook controls.\n * Unknown strings are tolerated and simply render without a leading symbol.\n */\n currency?: CurrencyCode | string\n}\n\n/**\n * CurrencyField - For monetary amount inputs with currency context.\n *\n * **AI Context:**\n * - Sets `type=\"text\"` (better browser support than \"number\")\n * - Sets `inputMode=\"decimal\"` for numeric keyboard with decimal\n * - Adds currency code to helper text if provided\n * - Adds `data-purpose=\"currency\"` and `data-currency` for AI parsing\n *\n * **Features:**\n * - Decimal keyboard on mobile\n * - Currency code display in helper text\n * - Better input control than type=\"number\"\n * - Sanitizes values passed through `input.onValueChange`\n * - Note: Formatting should be handled by parent component\n *\n * **Controlled usage recommended:**\n * - Use `input.value` + `input.onValueChange` when you need guaranteed sanitized state\n * - In uncontrolled usage, the callback still receives sanitized values, but the DOM input may temporarily display unsanitized text\n *\n * @example\n * ```tsx\n * import { CurrencyField } from \"@marwes-ui/react\";\n *\n * <CurrencyField\n * label=\"Amount\"\n * currency=\"USD\"\n * input={{\n * value: amount,\n * onValueChange: setAmount,\n * placeholder: \"0.00\",\n * }}\n * />\n * ```\n */\nexport function CurrencyField(props: CurrencyFieldProps): React.ReactElement {\n const { currency, ...restProps } = props\n\n const enhancedInput: InputProps = {\n ...props.input,\n type: \"text\",\n inputMode: \"decimal\",\n onValueChange: (rawValue: string) => {\n const sanitizedValue = sanitizeCurrencyValue(rawValue)\n props.input?.onValueChange?.(sanitizedValue)\n },\n }\n\n const helperText = buildCurrencyHelperText(props.helperText, currency)\n const leadingSymbol = getCurrencySymbol(currency)\n\n return (\n <div data-purpose=\"currency\" data-currency={currency}>\n <InputField\n {...restProps}\n input={enhancedInput}\n helperText={helperText || \"\"}\n {...(leadingSymbol ? { leadingSymbol } : {})}\n />\n </div>\n )\n}\n","import {\n type AvatarOptions,\n type AvatarRenderContent,\n type CssVars,\n createAvatarRecipe,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface AvatarProps\n extends AvatarOptions,\n Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n dataAttributes?: Record<string, string>\n}\n\nfunction renderAvatarContent(\n content: AvatarRenderContent,\n isOuterShellAccessible: boolean,\n isDecorative: boolean,\n): React.ReactNode {\n if (content.type === \"image\") {\n return (\n <img\n className=\"mw-avatar__image\"\n src={content.src}\n alt={isDecorative ? \"\" : (content.alt ?? \"\")}\n />\n )\n }\n\n if (content.type === \"initials\") {\n return (\n <span\n aria-hidden={isOuterShellAccessible ? \"true\" : undefined}\n className=\"mw-avatar__initials\"\n >\n {content.initials}\n </span>\n )\n }\n\n return <Icon name={content.iconName ?? \"user\"} className=\"mw-avatar__icon\" decorative />\n}\n\nexport function Avatar(props: AvatarProps): React.ReactElement {\n const {\n className,\n style,\n dataAttributes,\n size,\n type,\n initials,\n src,\n alt,\n iconName,\n decorative,\n ariaLabel,\n ...nativeSpanProps\n } = props\n\n const ariaLabelFromNativeProps =\n typeof nativeSpanProps[\"aria-label\"] === \"string\" ? nativeSpanProps[\"aria-label\"] : undefined\n\n const avatarOptions: AvatarOptions = {}\n if (size !== undefined) avatarOptions.size = size\n if (type !== undefined) avatarOptions.type = type\n if (initials !== undefined) avatarOptions.initials = initials\n if (src !== undefined) avatarOptions.src = src\n if (alt !== undefined) avatarOptions.alt = alt\n if (iconName !== undefined) avatarOptions.iconName = iconName\n if (decorative !== undefined) avatarOptions.decorative = decorative\n\n const resolvedAriaLabel = ariaLabel ?? ariaLabelFromNativeProps\n if (resolvedAriaLabel !== undefined) {\n avatarOptions.ariaLabel = resolvedAriaLabel\n }\n\n const kit = createAvatarRecipe(avatarOptions)\n\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(kit.vars as StyleWithVars), ...style }\n const isOuterShellAccessible = kit.a11y.role === \"img\"\n const isDecorative = kit.a11y.ariaHidden === true\n\n return (\n <span\n {...nativeSpanProps}\n {...kit.dataAttributes}\n {...dataAttributes}\n className={mergedClassName}\n style={mergedStyle}\n role={kit.a11y.role}\n aria-hidden={isDecorative ? \"true\" : undefined}\n aria-label={kit.a11y.ariaLabel}\n >\n {renderAvatarContent(kit.content, isOuterShellAccessible, isDecorative)}\n </span>\n )\n}\n","import { type AvatarOptions, createAvatarRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Avatar, type AvatarProps } from \"./avatar\"\n\nexport interface AvatarBadgeProps extends AvatarProps {\n statusLabel?: string\n}\n\nfunction buildAvatarOptions(props: AvatarBadgeProps): AvatarOptions {\n const avatarOptions: AvatarOptions = {}\n if (props.size !== undefined) avatarOptions.size = props.size\n if (props.type !== undefined) avatarOptions.type = props.type\n if (props.initials !== undefined) avatarOptions.initials = props.initials\n if (props.src !== undefined) avatarOptions.src = props.src\n if (props.alt !== undefined) avatarOptions.alt = props.alt\n if (props.iconName !== undefined) avatarOptions.iconName = props.iconName\n if (props.decorative !== undefined) avatarOptions.decorative = props.decorative\n\n const nativeAriaLabel = typeof props[\"aria-label\"] === \"string\" ? props[\"aria-label\"] : undefined\n const resolvedAriaLabel = props.ariaLabel ?? nativeAriaLabel\n if (resolvedAriaLabel !== undefined) {\n avatarOptions.ariaLabel = resolvedAriaLabel\n }\n\n return avatarOptions\n}\n\nfunction resolveAvatarBadgeLabel(\n avatarOptions: AvatarOptions,\n statusLabel: string,\n): string | undefined {\n const avatarKit = createAvatarRecipe(avatarOptions)\n\n if (avatarKit.a11y.ariaHidden) {\n return undefined\n }\n\n if (avatarKit.content.type === \"image\") {\n return avatarKit.content.alt ? `${avatarKit.content.alt}, ${statusLabel}` : statusLabel\n }\n\n return avatarKit.a11y.ariaLabel ? `${avatarKit.a11y.ariaLabel}, ${statusLabel}` : statusLabel\n}\n\nexport function AvatarBadge(props: AvatarBadgeProps): React.ReactElement {\n const {\n className,\n dataAttributes,\n statusLabel = \"Online\",\n decorative,\n style,\n size,\n type,\n initials,\n src,\n alt,\n iconName,\n ariaLabel,\n ...nativeSpanProps\n } = props\n\n const avatarOptions = buildAvatarOptions(props)\n const avatarKit = createAvatarRecipe(avatarOptions)\n const accessibleLabel = resolveAvatarBadgeLabel(avatarOptions, statusLabel)\n const resolvedSize = avatarKit.dataAttributes[\"data-size\"]\n const mergedClassName = [\"mw-avatar-badge\", `mw-avatar-badge--${resolvedSize}`, className]\n .filter(Boolean)\n .join(\" \")\n const innerAvatarProps: AvatarProps = { decorative: true }\n if (size !== undefined) innerAvatarProps.size = size\n if (type !== undefined) innerAvatarProps.type = type\n if (initials !== undefined) innerAvatarProps.initials = initials\n if (src !== undefined) innerAvatarProps.src = src\n if (alt !== undefined) innerAvatarProps.alt = alt\n if (iconName !== undefined) innerAvatarProps.iconName = iconName\n if (ariaLabel !== undefined) innerAvatarProps.ariaLabel = ariaLabel\n\n return (\n <span\n {...nativeSpanProps}\n {...dataAttributes}\n className={mergedClassName}\n style={style}\n data-component=\"avatar-badge\"\n data-size={resolvedSize}\n data-status=\"online\"\n role={decorative ? undefined : \"img\"}\n aria-hidden={decorative ? \"true\" : undefined}\n aria-label={decorative ? undefined : accessibleLabel}\n >\n <Avatar {...innerAvatarProps} />\n <span aria-hidden=\"true\" className=\"mw-avatar-badge__indicator\" />\n </span>\n )\n}\n","import type * as React from \"react\"\nimport { Avatar, type AvatarProps } from \"./avatar\"\n\nexport interface AvatarGroupItem extends Omit<AvatarProps, \"size\" | \"className\" | \"style\"> {\n id?: string\n}\n\nexport interface AvatarGroupProps\n extends Omit<React.HTMLAttributes<HTMLFieldSetElement>, \"children\"> {\n items: AvatarGroupItem[]\n overflowCount?: number\n overflowLabel?: string\n ariaLabel?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function AvatarGroup(props: AvatarGroupProps): React.ReactElement {\n const {\n items,\n overflowCount,\n overflowLabel,\n ariaLabel,\n className,\n dataAttributes,\n ...nativeFieldsetProps\n } = props\n\n const nativeAriaLabel =\n typeof nativeFieldsetProps[\"aria-label\"] === \"string\"\n ? nativeFieldsetProps[\"aria-label\"]\n : undefined\n const groupLabel = ariaLabel ?? nativeAriaLabel ?? \"Avatar group\"\n const mergedClassName = [\"mw-avatar-group\", className].filter(Boolean).join(\" \")\n const shouldRenderOverflowCounter = overflowCount !== undefined && overflowCount > 0\n const resolvedOverflowLabel = overflowLabel ?? `${overflowCount} more people`\n\n return (\n <fieldset\n {...nativeFieldsetProps}\n {...dataAttributes}\n className={mergedClassName}\n data-component=\"avatar-group\"\n aria-label={groupLabel}\n >\n {items.map((item, itemIndex) => (\n <span\n className=\"mw-avatar-group__item\"\n key={item.id ?? `${itemIndex}-${item.initials ?? item.alt ?? \"avatar\"}`}\n >\n <Avatar {...item} size=\"medium\" />\n </span>\n ))}\n\n {shouldRenderOverflowCounter ? (\n <span aria-label={resolvedOverflowLabel} className=\"mw-avatar-group__counter\" role=\"img\">\n +{overflowCount}\n </span>\n ) : null}\n </fieldset>\n )\n}\n","import { createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Avatar, type AvatarProps } from \"./avatar\"\nimport { AvatarBadge, type AvatarBadgeProps } from \"./avatar-badge\"\nimport { AvatarGroup, type AvatarGroupProps } from \"./avatar-group\"\n\nexport type ProfileAvatarProps = AvatarProps\n\nexport function ProfileAvatar(props: ProfileAvatarProps): React.ReactElement {\n return (\n <Avatar\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"profile\"),\n }}\n />\n )\n}\n\nexport type PresenceAvatarProps = AvatarBadgeProps\n\nexport function PresenceAvatar(props: PresenceAvatarProps): React.ReactElement {\n return (\n <AvatarBadge\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"presence\"),\n }}\n />\n )\n}\n\nexport type TeamAvatarGroupProps = AvatarGroupProps\n\nexport function TeamAvatarGroup(props: TeamAvatarGroupProps): React.ReactElement {\n return (\n <AvatarGroup\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"team\"),\n }}\n />\n )\n}\n","/**\n * React adapter for Marwes Divider component.\n * - Renders semantic <hr> using the core divider recipe.\n * - Supports 7 size variants: xxs/xs/sm/md/lg/xl/xxl.\n * - Supports horizontal and vertical orientation.\n * - Figma reference: component 1574:21053\n */\n\nimport { createDividerRecipe } from \"@marwes-ui/core\"\nimport type { DividerOptions, DividerOrientation, DividerSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type DividerProps = DividerOptions &\n Omit<React.HTMLAttributes<HTMLHRElement>, \"children\"> & {\n /**\n * Size variant for the divider.\n * Maps to pixel values: xxs=1px, xs=8px, sm=16px, md=32px, lg=48px, xl=64px, xxl=80px\n * @default \"md\"\n */\n size?: DividerSize\n\n /**\n * Orientation of the divider.\n * @default \"horizontal\"\n */\n orientation?: DividerOrientation\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n }\n\n/**\n * Divider\n *\n * Semantic separator rendered as `<hr>`.\n * Supports size variants and both horizontal and vertical orientations.\n *\n * @example Basic usage (horizontal, medium size)\n * ```tsx\n * <Divider />\n * ```\n *\n * @example Different sizes\n * ```tsx\n * <Divider size=\"xxs\" /> // 1px hairline\n * <Divider size=\"sm\" /> // 16px\n * <Divider size=\"lg\" /> // 48px\n * ```\n *\n * @example Vertical divider\n * ```tsx\n * <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>\n * <span>Left content</span>\n * <Divider orientation=\"vertical\" size=\"sm\" />\n * <span>Right content</span>\n * </div>\n * ```\n *\n * @example With custom ID\n * ```tsx\n * <Divider id=\"section-break\" />\n * ```\n */\n\nexport const Divider = React.forwardRef<HTMLHRElement, DividerProps>((props, ref) => {\n const { className: customClassName, style: customStyle, ...opts } = props\n\n const kit = createDividerRecipe(opts)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return <hr ref={ref} {...kit.a11y} {...kit.dataAttributes} className={className} style={style} />\n})\n\nDivider.displayName = \"Divider\"\n","import { createContextMenuRecipe } from \"@marwes-ui/core\"\nimport type { ContextMenuActionItem, ContextMenuEntry, ContextMenuOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport interface ContextMenuProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\" | \"onSelect\">,\n ContextMenuOptions {\n items: readonly ContextMenuEntry[]\n onSelect?: (value: string, item: ContextMenuActionItem) => void\n}\n\nexport function ContextMenu(props: ContextMenuProps): React.ReactElement {\n const { items, ariaLabel, dataAttributes, onSelect, className, ...restProps } = props\n const recipeOptions: ContextMenuOptions = { items }\n\n if (ariaLabel !== undefined) {\n recipeOptions.ariaLabel = ariaLabel\n }\n\n if (dataAttributes !== undefined) {\n recipeOptions.dataAttributes = dataAttributes\n }\n\n const kit = createContextMenuRecipe(recipeOptions)\n\n return (\n <div\n {...restProps}\n {...kit.dataAttributes}\n className={cx(kit.className, className)}\n role={kit.a11y.role}\n aria-label={kit.a11y.ariaLabel}\n >\n {kit.items.map((item) => {\n if (item.kind === \"divider\") {\n return (\n <div\n key={item.key}\n className={item.className}\n role={item.a11y.role}\n aria-orientation={item.a11y.ariaOrientation}\n {...item.dataAttributes}\n />\n )\n }\n\n return (\n <button\n key={item.key}\n type={item.a11y.type}\n role={item.a11y.role}\n disabled={item.a11y.disabled}\n aria-disabled={item.a11y.ariaDisabled}\n className={item.className}\n onClick={() => {\n if (item.item.disabled) return\n onSelect?.(item.value, item.item)\n }}\n {...item.dataAttributes}\n >\n {item.icon && (\n <span className=\"mw-context-menu__icon\" aria-hidden=\"true\">\n <Icon name={item.icon} decorative />\n </span>\n )}\n <span className=\"mw-context-menu__label\">{item.label}</span>\n </button>\n )\n })}\n </div>\n )\n}\n","import { IconName, createBreadcrumbRecipe } from \"@marwes-ui/core\"\nimport type { BreadcrumbItem, BreadcrumbOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport interface BreadcrumbProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\">,\n BreadcrumbOptions {\n items: readonly BreadcrumbItem[]\n onItemSelect?: (\n value: string,\n item: BreadcrumbItem,\n event: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>,\n ) => void\n onHomeClick?: (event: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>) => void\n}\n\nexport function Breadcrumb(props: BreadcrumbProps): React.ReactElement {\n const {\n items,\n ariaLabel,\n showHome,\n homeHref,\n homeLabel,\n dataAttributes,\n onItemSelect,\n onHomeClick,\n className,\n ...restProps\n } = props\n const kit = createBreadcrumbRecipe({\n items,\n ...(ariaLabel !== undefined ? { ariaLabel } : {}),\n ...(showHome !== undefined ? { showHome } : {}),\n ...(homeHref !== undefined ? { homeHref } : {}),\n ...(homeLabel !== undefined ? { homeLabel } : {}),\n ...(dataAttributes !== undefined ? { dataAttributes } : {}),\n })\n\n return (\n <nav\n {...restProps}\n {...kit.dataAttributes}\n className={cx(kit.className, className)}\n aria-label={kit.a11y.ariaLabel}\n >\n <ol className={kit.list.className} role={kit.list.a11y.role}>\n {kit.items.map((item, index) => (\n <li key={item.key} className={item.className} {...item.dataAttributes}>\n {index > 0 && (\n <span className={kit.separator.className} aria-hidden={kit.separator.a11y.ariaHidden}>\n <Icon name={IconName.ChevronRight} decorative size={12} />\n </span>\n )}\n {item.kind === \"home\" ? (\n renderHomeItem(item, onHomeClick)\n ) : (\n <BreadcrumbAction item={item} onItemSelect={onItemSelect} />\n )}\n </li>\n ))}\n </ol>\n </nav>\n )\n}\n\nfunction renderHomeItem(\n item: ReturnType<typeof createBreadcrumbRecipe>[\"items\"][number],\n onHomeClick: BreadcrumbProps[\"onHomeClick\"],\n): React.ReactElement {\n const commonProps = {\n className: item.actionClassName,\n \"aria-label\": item.a11y.ariaLabel,\n \"aria-current\": item.current ? (\"page\" as const) : undefined,\n }\n\n if (item.href) {\n return (\n <a\n {...commonProps}\n href={item.href}\n onClick={(event) => {\n onHomeClick?.(event)\n }}\n >\n <Icon name={IconName.Home} decorative size={14} />\n </a>\n )\n }\n\n if (onHomeClick && !item.current) {\n return (\n <button type=\"button\" {...commonProps} onClick={onHomeClick}>\n <Icon name={IconName.Home} decorative size={14} />\n </button>\n )\n }\n\n return (\n <span {...commonProps}>\n <Icon name={IconName.Home} decorative size={14} />\n </span>\n )\n}\n\ninterface BreadcrumbActionProps {\n item: Extract<ReturnType<typeof createBreadcrumbRecipe>[\"items\"][number], { kind: \"item\" }>\n onItemSelect?: BreadcrumbProps[\"onItemSelect\"]\n}\n\nfunction BreadcrumbAction({ item, onItemSelect }: BreadcrumbActionProps): React.ReactElement {\n const sourceItem = item.item ?? {\n label: item.label,\n ...(item.value ? { value: item.value } : {}),\n ...(item.href ? { href: item.href } : {}),\n current: item.current,\n }\n const commonProps = {\n className: item.actionClassName,\n \"aria-label\": item.a11y.ariaLabel,\n \"aria-current\": item.a11y.ariaCurrent,\n }\n\n if (item.current) {\n return <span {...commonProps}>{item.label}</span>\n }\n\n if (item.href) {\n return (\n <a\n {...commonProps}\n href={item.href}\n onClick={(event) => {\n onItemSelect?.(item.value ?? item.label, sourceItem, event)\n }}\n >\n {item.label}\n </a>\n )\n }\n\n return (\n <button\n type=\"button\"\n {...commonProps}\n onClick={(event) => {\n onItemSelect?.(item.value ?? item.label, sourceItem, event)\n }}\n >\n {item.label}\n </button>\n )\n}\n","import { type CssVars, type SkeletonOptions, createSkeletonRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface SkeletonProps\n extends SkeletonOptions,\n Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n dataAttributes?: Record<string, string>\n}\n\nexport function Skeleton(props: SkeletonProps): React.ReactElement {\n const {\n className,\n style,\n dataAttributes,\n variant,\n width,\n height,\n radius,\n animation,\n decorative,\n ariaLabel,\n id,\n ...nativeSpanProps\n } = props\n\n const resolvedAriaLabel =\n ariaLabel ??\n (typeof nativeSpanProps[\"aria-label\"] === \"string\"\n ? (nativeSpanProps[\"aria-label\"] as string)\n : undefined)\n\n const skeletonOptions: SkeletonOptions = {\n ...(variant !== undefined ? { variant } : {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n ...(radius !== undefined ? { radius } : {}),\n ...(animation !== undefined ? { animation } : {}),\n ...(decorative !== undefined ? { decorative } : {}),\n ...(resolvedAriaLabel !== undefined ? { ariaLabel: resolvedAriaLabel } : {}),\n ...(id !== undefined ? { id } : {}),\n }\n\n const renderKit = createSkeletonRecipe(skeletonOptions)\n const mergedClassName = [renderKit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(renderKit.vars as StyleWithVars), ...style }\n\n return (\n <span\n {...nativeSpanProps}\n {...renderKit.dataAttributes}\n {...dataAttributes}\n className={mergedClassName}\n style={mergedStyle}\n role={renderKit.a11y.role}\n id={renderKit.a11y.id}\n aria-hidden={renderKit.a11y.ariaHidden ? \"true\" : undefined}\n aria-label={renderKit.a11y.ariaLabel}\n aria-live={renderKit.a11y.ariaLive}\n />\n )\n}\n","import { type CssVars, type ProgressBarOptions, createProgressBarRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface ProgressBarProps\n extends ProgressBarOptions,\n Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n dataAttributes?: Record<string, string>\n}\n\nexport function ProgressBar(props: ProgressBarProps): React.ReactElement {\n const {\n className,\n style,\n dataAttributes,\n id,\n label,\n value,\n min,\n max,\n size,\n state,\n disabled,\n showLabel,\n showPercentage,\n valueLabel,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ...nativeDivProps\n } = props\n\n const resolvedAriaLabel =\n ariaLabel ??\n (typeof nativeDivProps[\"aria-label\"] === \"string\"\n ? (nativeDivProps[\"aria-label\"] as string)\n : undefined)\n\n const kit = createProgressBarRecipe({\n ...(id !== undefined ? { id } : {}),\n ...(label !== undefined ? { label } : {}),\n ...(value !== undefined ? { value } : {}),\n ...(min !== undefined ? { min } : {}),\n ...(max !== undefined ? { max } : {}),\n ...(size !== undefined ? { size } : {}),\n ...(state !== undefined ? { state } : {}),\n ...(disabled !== undefined ? { disabled } : {}),\n ...(showLabel !== undefined ? { showLabel } : {}),\n ...(showPercentage !== undefined ? { showPercentage } : {}),\n ...(valueLabel !== undefined ? { valueLabel } : {}),\n ...(resolvedAriaLabel !== undefined ? { ariaLabel: resolvedAriaLabel } : {}),\n ...(ariaLabelledBy !== undefined ? { ariaLabelledBy } : {}),\n ...(ariaDescribedBy !== undefined ? { ariaDescribedBy } : {}),\n })\n\n useRenderKitDebug(kit, \"ProgressBar\")\n\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(kit.vars as StyleWithVars), ...style }\n const hasLabelRow = kit.showLabel || kit.showPercentage\n\n return (\n <div\n {...nativeDivProps}\n {...kit.dataAttributes}\n {...dataAttributes}\n id={kit.a11y.id}\n role={kit.a11y.role}\n aria-valuemin={kit.a11y.ariaValueMin}\n aria-valuemax={kit.a11y.ariaValueMax}\n aria-valuenow={kit.a11y.ariaValueNow}\n aria-valuetext={kit.a11y.ariaValueText}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-describedby={kit.a11y.ariaDescribedBy}\n aria-disabled={kit.a11y.ariaDisabled ? \"true\" : undefined}\n className={mergedClassName}\n style={mergedStyle}\n >\n {hasLabelRow ? (\n <div className=\"mw-progress-bar__label-row\">\n {kit.showLabel ? (\n <span id={kit.labelId} className={kit.labelClassName}>\n {kit.label}\n </span>\n ) : null}\n {kit.showPercentage ? (\n <span className={kit.percentageClassName}>{kit.percentageLabel}</span>\n ) : null}\n </div>\n ) : null}\n\n <div className={kit.trackClassName} aria-hidden=\"true\">\n <span className={kit.fillClassName} />\n </div>\n </div>\n )\n}\n","/**\n * React adapter for Marwes Spacing component.\n * - Renders a decorative, aria-hidden div using the core spacing recipe.\n * - Inserts a fixed vertical gap driven by the --mw-spacing-* token scale.\n */\n\nimport { createSpacingRecipe } from \"@marwes-ui/core\"\nimport type { SpacingOptions, SpacingSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type SpacingProps = SpacingOptions &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> & {\n /**\n * Size variant for the spacing.\n * Maps to token values: sp-0=0px, sp-2=2px, sp-4=4px, sp-8=8px,\n * sp-16=16px, sp-24=24px, sp-32=32px, up to sp-120=120px.\n * @default \"sp-24\"\n */\n size?: SpacingSize\n\n /**\n * Ergonomic alias for `size`.\n * Prefer this on `Spacer` for readable layout code.\n */\n spacing?: SpacingSize\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n }\n\nexport type SpacerProps = SpacingProps\n\n/**\n * Spacing\n *\n * Pure layout primitive that inserts a fixed vertical gap between elements.\n * Driven by the design token scale — no magic numbers required.\n *\n * @example Basic usage (24px gap)\n * ```tsx\n * <Spacing />\n * ```\n *\n * @example Semantic size\n * ```tsx\n * <H1>Hello</H1>\n * <Spacing size={Spacings.sp24} />\n * <Paragraph>World</Paragraph>\n * ```\n *\n * @example All sizes\n * ```tsx\n * <Spacing size=\"sp-2\" /> // 2px\n * <Spacing size=\"sp-8\" /> // 8px\n * <Spacing size=\"sp-32\" /> // 32px\n * ```\n */\nexport const Spacing = React.forwardRef<HTMLDivElement, SpacingProps>((props, ref) => {\n const { className: customClassName, scale, size, spacing, style: customStyle } = props\n const resolvedSize = spacing ?? size\n\n const kit = createSpacingRecipe({\n ...(resolvedSize !== undefined ? { size: resolvedSize } : {}),\n ...(scale !== undefined ? { scale } : {}),\n })\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return <div ref={ref} {...kit.a11y} {...kit.dataAttributes} className={className} style={style} />\n})\n\nSpacing.displayName = \"Spacing\"\n\n/**\n * Spacer\n *\n * Alias for `Spacing` with a layout-oriented prop name.\n *\n * @example\n * ```tsx\n * <Spacer spacing={Spacings.sp24} />\n * ```\n */\nexport const Spacer = Spacing\n","/**\n * React adapter for Marwes H1 component.\n * - Renders semantic <h1> using the core heading recipe.\n * - Supports size override for visual/semantic mismatch.\n */\n\nimport { headingRecipe } from \"@marwes-ui/core\"\nimport type { HeadingOptions, HeadingSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type H1Props = Omit<HeadingOptions, \"level\"> & {\n /**\n * Visual size override.\n * Allows using h1 semantics with different visual styling.\n * @default \"h1\"\n */\n size?: HeadingSize\n\n /**\n * Content of the heading.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\n/**\n * H1 (Heading Level 1)\n *\n * Semantic top-level heading rendered as `<h1>`.\n * Supports visual size override for cases where semantic and visual hierarchy differ.\n *\n * @remarks\n * Marwes officially styles H1-H3 only. For semantic H4-H6 (deep section\n * nesting, accessibility outlines), render `<Text headingLevel={4..6}\n * variant=\"...\" />` — it produces the correct heading tag while letting\n * the consumer pick the visual variant. Type your wrappers against\n * `SemanticHeadingLevel` from `@marwes-ui/core`.\n *\n * @example Basic usage\n * ```tsx\n * <H1>Page Title</H1>\n * ```\n *\n * @example With size override\n * ```tsx\n * <H1 size=\"h2\">Visually smaller but semantically h1</H1>\n * ```\n *\n * @example With ID for anchor linking\n * ```tsx\n * <H1 id=\"introduction\">Introduction</H1>\n * ```\n */\nexport function H1(props: H1Props): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n\n const kit = headingRecipe({ ...opts, level: 1 }, theme)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <h1 id={kit.a11y.id} aria-label={kit.a11y.ariaLabel} className={className} style={style}>\n {children}\n </h1>\n )\n}\n","/**\n * React adapter for Marwes H2 component.\n * - Renders semantic <h2> using the core heading recipe.\n * - Supports size override for visual/semantic mismatch.\n */\n\nimport { headingRecipe } from \"@marwes-ui/core\"\nimport type { HeadingOptions, HeadingSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type H2Props = Omit<HeadingOptions, \"level\"> & {\n /**\n * Visual size override.\n * Allows using h2 semantics with different visual styling.\n * @default \"h2\"\n */\n size?: HeadingSize\n\n /**\n * Content of the heading.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\n/**\n * H2 (Heading Level 2)\n *\n * Semantic section heading rendered as `<h2>`.\n * Supports visual size override for cases where semantic and visual hierarchy differ.\n *\n * @remarks\n * Marwes officially styles H1-H3 only. For semantic H4-H6, use\n * `<Text headingLevel={4..6} variant=\"...\" />`.\n *\n * @example Basic usage\n * ```tsx\n * <H2>Section Title</H2>\n * ```\n *\n * @example With size override\n * ```tsx\n * <H2 size=\"h1\">Visually larger but semantically h2</H2>\n * ```\n */\nexport function H2(props: H2Props): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n\n const kit = headingRecipe({ ...opts, level: 2 }, theme)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <h2 id={kit.a11y.id} aria-label={kit.a11y.ariaLabel} className={className} style={style}>\n {children}\n </h2>\n )\n}\n","/**\n * React adapter for Marwes H3 component.\n * - Renders semantic <h3> using the core heading recipe.\n * - Supports size override for visual/semantic mismatch.\n */\n\nimport { headingRecipe } from \"@marwes-ui/core\"\nimport type { HeadingOptions, HeadingSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type H3Props = Omit<HeadingOptions, \"level\"> & {\n /**\n * Visual size override.\n * Allows using h3 semantics with different visual styling.\n * @default \"h3\"\n */\n size?: HeadingSize\n\n /**\n * Content of the heading.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\n/**\n * H3 (Heading Level 3)\n *\n * Semantic subsection heading rendered as `<h3>`.\n * Supports visual size override for cases where semantic and visual hierarchy differ.\n *\n * @remarks\n * Marwes officially styles H1-H3 only — H3 is the deepest blessed rung.\n * For H4-H6, use `<Text headingLevel={4..6} variant=\"...\" />`.\n *\n * @example Basic usage\n * ```tsx\n * <H3>Subsection Title</H3>\n * ```\n *\n * @example With size override\n * ```tsx\n * <H3 size=\"h2\">Visually larger but semantically h3</H3>\n * ```\n */\nexport function H3(props: H3Props): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n\n const kit = headingRecipe({ ...opts, level: 3 }, theme)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <h3 id={kit.a11y.id} aria-label={kit.a11y.ariaLabel} className={className} style={style}>\n {children}\n </h3>\n )\n}\n","/**\n * React adapter for Marwes Paragraph component.\n * - Renders semantic <p> using the core paragraph recipe.\n * - Supports size variants: sm/md/lg.\n */\n\nimport { paragraphRecipe } from \"@marwes-ui/core\"\nimport type { ParagraphOptions, ParagraphSize } from \"@marwes-ui/core\"\nimport type { CssVars } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { useTheme } from \"../../provider/use-theme\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport type ParagraphProps = ParagraphOptions & {\n /**\n * Size variant.\n * @default \"md\"\n */\n size?: ParagraphSize\n\n /**\n * Content of the paragraph.\n */\n children?: React.ReactNode\n\n /**\n * Additional CSS class names.\n */\n className?: string\n\n /**\n * Inline styles.\n */\n style?: React.CSSProperties\n}\n\n/**\n * Paragraph\n *\n * Semantic text block rendered as `<p>`.\n * Supports size variants for different text contexts.\n *\n * @example Basic usage\n * ```tsx\n * <Paragraph>This is a standard paragraph.</Paragraph>\n * ```\n *\n * @example With size variant\n * ```tsx\n * <Paragraph size=\"sm\">Small text for disclaimers.</Paragraph>\n * <Paragraph size=\"lg\">Emphasized lead paragraph.</Paragraph>\n * ```\n *\n * @example With ID\n * ```tsx\n * <Paragraph id=\"intro\">Introduction text.</Paragraph>\n * ```\n */\nexport function Paragraph(props: ParagraphProps): React.ReactElement {\n const { children, className: customClassName, style: customStyle, ...opts } = props\n const theme = useTheme()\n\n const kit = paragraphRecipe(opts, theme)\n\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n\n return (\n <p id={kit.a11y.id} className={className} style={style}>\n {children}\n </p>\n )\n}\n","import {\n type StatTileOptions,\n type StatTileTone,\n type StatTileTrendDirection,\n createStatTileRecipe,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport interface StatTileProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"title\">,\n Pick<StatTileOptions, \"dataAttributes\"> {\n label: React.ReactNode\n value: React.ReactNode\n subtitle?: React.ReactNode\n trendValue?: React.ReactNode\n trendDirection?: StatTileTrendDirection\n tone?: StatTileTone\n}\n\nexport function StatTile(props: StatTileProps): React.ReactElement {\n const {\n className,\n dataAttributes,\n label,\n value,\n subtitle,\n trendValue,\n trendDirection,\n tone,\n ...nativeArticleProps\n } = props\n const kit = createStatTileRecipe({\n ...(tone !== undefined ? { tone } : {}),\n ...(trendDirection !== undefined ? { trendDirection } : {}),\n ...(typeof trendValue === \"string\" ? { trendValue } : {}),\n ...(dataAttributes !== undefined ? { dataAttributes } : {}),\n })\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n\n return (\n <article {...nativeArticleProps} {...kit.dataAttributes} className={mergedClassName}>\n <div className={kit.slots.headerClassName}>\n <span className={kit.slots.labelClassName}>{label}</span>\n {trendValue ? (\n <span\n {...kit.trendDataAttributes}\n className={kit.slots.trendClassName}\n aria-label={kit.a11y.trendAriaLabel}\n >\n {kit.trendIcon ? (\n <span className={kit.slots.trendIconClassName} aria-hidden=\"true\">\n {kit.trendIcon}\n </span>\n ) : null}\n <span className={kit.slots.trendValueClassName}>{trendValue}</span>\n </span>\n ) : null}\n </div>\n <div className={kit.slots.valueClassName}>{value}</div>\n {subtitle ? <div className={kit.slots.subtitleClassName}>{subtitle}</div> : null}\n </article>\n )\n}\n","import {\n type DatePickerDay,\n type DatePickerDevice,\n type DatePickerOptions,\n createDatePickerRecipe,\n} from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport interface DatePickerProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"onSelect\">,\n Pick<\n DatePickerOptions,\n | \"monthLabel\"\n | \"weekdayLabels\"\n | \"weeks\"\n | \"previousYearLabel\"\n | \"previousMonthLabel\"\n | \"nextMonthLabel\"\n | \"nextYearLabel\"\n | \"cancelLabel\"\n | \"applyLabel\"\n | \"ariaLabel\"\n | \"ariaLabelledBy\"\n | \"ariaDescribedBy\"\n | \"calendarLabel\"\n | \"dataAttributes\"\n > {\n device?: DatePickerDevice\n onPreviousYear?: () => void\n onPreviousMonth?: () => void\n onNextMonth?: () => void\n onNextYear?: () => void\n onDaySelect?: (day: DatePickerDay) => void\n onCancel?: () => void\n onApply?: () => void\n}\n\nexport function DatePicker(props: DatePickerProps): React.ReactElement {\n const {\n className,\n monthLabel,\n weekdayLabels,\n weeks,\n device,\n previousYearLabel,\n previousMonthLabel,\n nextMonthLabel,\n nextYearLabel,\n cancelLabel,\n applyLabel,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n calendarLabel,\n dataAttributes,\n onPreviousYear,\n onPreviousMonth,\n onNextMonth,\n onNextYear,\n onDaySelect,\n onCancel,\n onApply,\n ...nativeProps\n } = props\n const kit = createDatePickerRecipe({\n ...(monthLabel !== undefined ? { monthLabel } : {}),\n ...(weekdayLabels !== undefined ? { weekdayLabels } : {}),\n ...(weeks !== undefined ? { weeks } : {}),\n ...(device !== undefined ? { device } : {}),\n ...(previousYearLabel !== undefined ? { previousYearLabel } : {}),\n ...(previousMonthLabel !== undefined ? { previousMonthLabel } : {}),\n ...(nextMonthLabel !== undefined ? { nextMonthLabel } : {}),\n ...(nextYearLabel !== undefined ? { nextYearLabel } : {}),\n ...(cancelLabel !== undefined ? { cancelLabel } : {}),\n ...(applyLabel !== undefined ? { applyLabel } : {}),\n ...(ariaLabel !== undefined ? { ariaLabel } : {}),\n ...(ariaLabelledBy !== undefined ? { ariaLabelledBy } : {}),\n ...(ariaDescribedBy !== undefined ? { ariaDescribedBy } : {}),\n ...(calendarLabel !== undefined ? { calendarLabel } : {}),\n ...(dataAttributes !== undefined ? { dataAttributes } : {}),\n })\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n\n return (\n <section\n {...nativeProps}\n {...kit.dataAttributes}\n className={mergedClassName}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-describedby={kit.a11y.ariaDescribedBy}\n >\n <header className={kit.slots.headerClassName}>\n <div className={kit.slots.navGroupClassName}>\n <button\n type=\"button\"\n className={kit.slots.navButtonClassName}\n aria-label={kit.labels.previousYear}\n onClick={onPreviousYear}\n >\n «\n </button>\n <button\n type=\"button\"\n className={kit.slots.navButtonClassName}\n aria-label={kit.labels.previousMonth}\n onClick={onPreviousMonth}\n >\n ‹\n </button>\n </div>\n <div className={kit.slots.monthLabelClassName}>{kit.monthLabel}</div>\n <div className={kit.slots.navGroupClassName}>\n <button\n type=\"button\"\n className={kit.slots.navButtonClassName}\n aria-label={kit.labels.nextMonth}\n onClick={onNextMonth}\n >\n ›\n </button>\n <button\n type=\"button\"\n className={kit.slots.navButtonClassName}\n aria-label={kit.labels.nextYear}\n onClick={onNextYear}\n >\n »\n </button>\n </div>\n </header>\n <table className={kit.slots.gridClassName} aria-label={kit.monthLabel}>\n <thead>\n <tr className=\"mw-date-picker__weekdays\">\n {kit.weekdayLabels.map((weekday) => (\n <th key={weekday} className={kit.slots.weekdayClassName} scope=\"col\">\n {weekday}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {kit.weeks.map((week, weekIndex) => (\n <tr\n key={week.map((day) => day.date ?? day.label).join(\"-\")}\n className={kit.slots.weekClassName}\n >\n {week.map((day, dayIndex) => {\n const dayKit = kit.dayKits[weekIndex]?.[dayIndex]\n if (!dayKit) return null\n return (\n <td\n key={day.date ?? `${weekIndex}-${dayIndex}`}\n className={kit.slots.cellClassName}\n >\n <button\n type=\"button\"\n {...dayKit.dataAttributes}\n className={dayKit.className}\n aria-label={dayKit.ariaLabel}\n aria-pressed={dayKit.selected ? \"true\" : undefined}\n disabled={dayKit.disabled}\n onClick={() => onDaySelect?.(day)}\n >\n {day.label}\n </button>\n </td>\n )\n })}\n </tr>\n ))}\n </tbody>\n </table>\n <footer className={kit.slots.footerClassName}>\n <button type=\"button\" className={kit.slots.footerButtonClassName} onClick={onCancel}>\n {kit.labels.cancel}\n </button>\n {kit.labels.apply ? (\n <button\n type=\"button\"\n className={`${kit.slots.footerButtonClassName} mw-date-picker__footer-button--primary`}\n onClick={onApply}\n >\n {kit.labels.apply}\n </button>\n ) : null}\n </footer>\n </section>\n )\n}\n","import { buildInputFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { DatePicker } from \"./date-picker\"\nimport type { DatePickerProps } from \"./date-picker\"\n\nexport type DatePickerFieldProps = {\n /** Optional: if omitted, a stable id is generated via useId(). */\n id?: string\n\n /** Field label (required for accessibility). */\n label: string\n\n /** Optional helper text shown below the calendar. */\n helperText?: string\n\n /** Optional error message. */\n error?: string\n\n /** Props forwarded to the DatePicker atom. */\n datePicker?: Omit<DatePickerProps, \"ariaLabel\" | \"ariaLabelledBy\" | \"calendarLabel\">\n\n /** Additional aria-describedby IDs to merge with internal helper/error IDs. */\n ariaDescribedBy?: string\n\n className?: string\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasTextContent(value: string | undefined): boolean {\n return value !== undefined && value.trim().length > 0\n}\n\n/**\n * DatePickerField (Molecule)\n *\n * A labeled wrapper around `DatePicker` that:\n * - renders a visible `<label>` wired via `aria-labelledby`\n * - generates a stable id via `useId()` when one isn't provided\n * - optionally renders helper text and error messages\n * - threads `aria-describedby` to the calendar when helper/error are present\n */\nexport function DatePickerField(props: DatePickerFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-date-picker-${reactId}`\n const labelId = `${id}-label`\n\n const hasHelperText = hasTextContent(props.helperText)\n const hasError = hasTextContent(props.error)\n\n const {\n helperTextId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const wrapperClass = cx(\n \"mw-date-picker-field\",\n hasError && \"mw-date-picker-field--invalid\",\n props.className,\n )\n\n return (\n <div className={wrapperClass}>\n <span className=\"mw-date-picker-field__label\" id={labelId}>\n <Text variant=\"label\">{props.label}</Text>\n </span>\n\n <DatePicker\n {...props.datePicker}\n ariaLabelledBy={labelId}\n {...(mergedDescribedBy ? { ariaDescribedBy: mergedDescribedBy } : {})}\n />\n\n {hasHelperText && !hasError && (\n <div className=\"mw-date-picker-field__helper\" id={helperTextId}>\n <Text variant=\"caption\">{props.helperText}</Text>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-date-picker-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import { type DrawerOptions, IconName, createDrawerRecipe } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nexport interface DrawerProps extends DrawerOptions {\n id?: string\n title?: React.ReactNode\n description?: React.ReactNode\n footer?: React.ReactNode\n children?: React.ReactNode\n onClose?: () => void\n className?: string\n panelClassName?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function Drawer(props: DrawerProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-drawer-${reactId}`\n const titleId = `${id}-title`\n const descriptionId = `${id}-description`\n const hasTitle = hasContent(props.title)\n const hasDescription = hasContent(props.description)\n const hasFooter = hasContent(props.footer) && (props.showFooter ?? true)\n const dismissible = (props.dismissible ?? true) && props.onClose !== undefined\n const drawerOptions: DrawerOptions = {\n showFooter: hasFooter,\n dismissible,\n ...(props.modal !== undefined ? { modal: props.modal } : {}),\n ...(props.showScrim !== undefined ? { showScrim: props.showScrim } : {}),\n }\n\n if (props.dataAttributes) {\n drawerOptions.dataAttributes = props.dataAttributes\n }\n\n if (props.size) {\n drawerOptions.size = props.size\n }\n\n if (props.placement) {\n drawerOptions.placement = props.placement\n }\n\n if (props.ariaLabel) {\n drawerOptions.ariaLabel = props.ariaLabel\n }\n\n if (props.ariaLabelledBy) {\n drawerOptions.ariaLabelledBy = props.ariaLabelledBy\n } else if (props.ariaLabel === undefined && hasTitle) {\n drawerOptions.ariaLabelledBy = titleId\n }\n\n if (props.ariaDescribedBy) {\n drawerOptions.ariaDescribedBy = props.ariaDescribedBy\n } else if (hasDescription) {\n drawerOptions.ariaDescribedBy = descriptionId\n }\n\n const kit = createDrawerRecipe(drawerOptions)\n\n return (\n <div className={cx(kit.className, props.className)} style={kit.vars} {...kit.dataAttributes}>\n {kit.showScrim && (\n <div\n className={kit.scrim.className}\n style={kit.scrim.vars}\n aria-hidden=\"true\"\n onClick={dismissible ? props.onClose : undefined}\n {...kit.scrim.dataAttributes}\n />\n )}\n\n <div\n id={id}\n className={cx(kit.panel.className, props.panelClassName)}\n style={kit.panel.vars}\n role={kit.panel.a11y.role}\n {...(kit.panel.a11y.ariaModal ? { \"aria-modal\": \"true\" } : {})}\n {...(kit.panel.a11y.ariaLabel ? { \"aria-label\": kit.panel.a11y.ariaLabel } : {})}\n {...(kit.panel.a11y.ariaLabelledBy\n ? { \"aria-labelledby\": kit.panel.a11y.ariaLabelledBy }\n : {})}\n {...(kit.panel.a11y.ariaDescribedBy\n ? { \"aria-describedby\": kit.panel.a11y.ariaDescribedBy }\n : {})}\n tabIndex={-1}\n {...kit.panel.dataAttributes}\n >\n {(hasTitle || kit.showCloseButton) && (\n <>\n <div className=\"mw-drawer__header\">\n {hasTitle ? (\n <div className=\"mw-drawer__heading-group\">\n <h2 className=\"mw-drawer__title\" id={titleId}>\n {props.title}\n </h2>\n </div>\n ) : (\n <span className=\"mw-drawer__spacer\" aria-hidden=\"true\" />\n )}\n\n {kit.showCloseButton && props.onClose && (\n <button\n type=\"button\"\n className=\"mw-drawer__close\"\n aria-label=\"Close drawer\"\n onClick={props.onClose}\n >\n <Icon name={IconName.X} decorative />\n </button>\n )}\n </div>\n <div className=\"mw-drawer__header-divider\" aria-hidden=\"true\" />\n </>\n )}\n\n <div className=\"mw-drawer__content\">\n {hasDescription && (\n <p className=\"mw-drawer__description\" id={descriptionId}>\n {props.description}\n </p>\n )}\n {props.children}\n </div>\n\n {hasFooter && (\n <>\n <div className=\"mw-drawer__footer-divider\" aria-hidden=\"true\" />\n <div className=\"mw-drawer__footer\">{props.footer}</div>\n </>\n )}\n </div>\n </div>\n )\n}\n","import { createCardRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Optional title rendered above the body content */\n title?: React.ReactNode\n /** Card body content */\n children?: React.ReactNode\n /** Data attributes for AI-friendly metadata (used by purpose variants). */\n dataAttributes?: Record<string, string>\n}\n\nexport function Card(props: CardProps): React.ReactElement {\n const { title, children, className, dataAttributes, ...nativeDivProps } = props\n const kit = createCardRecipe(dataAttributes ? { dataAttributes } : {})\n\n return (\n <div\n {...nativeDivProps}\n {...kit.dataAttributes}\n className={[kit.className, className].filter(Boolean).join(\" \")}\n >\n {title ? (\n <div className=\"mw-card__header\">\n <span className=\"mw-card__title\">{title}</span>\n </div>\n ) : null}\n <div className=\"mw-card__body\">{children}</div>\n </div>\n )\n}\n","import type * as React from \"react\"\nimport { Card, type CardProps } from \"./card\"\n\nexport type ProductCardProps = CardProps\n\nexport function ProductCard(props: ProductCardProps): React.ReactElement {\n return (\n <Card\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"product-card\",\n }}\n />\n )\n}\n\nexport type ProfileCardProps = CardProps\n\nexport function ProfileCard(props: ProfileCardProps): React.ReactElement {\n return (\n <Card\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"profile-card\",\n }}\n />\n )\n}\n\nexport type StatCardProps = CardProps\n\nexport function StatCard(props: StatCardProps): React.ReactElement {\n return (\n <Card\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"stat-card\",\n }}\n />\n )\n}\n","import { createToastRecipe } from \"@marwes-ui/core\"\nimport type { ToastOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport interface ToastProps extends ToastOptions {\n /** Main notification message */\n children: React.ReactNode\n /** Icon element shown on the left (e.g. an <Icon> component) */\n icon?: React.ReactNode\n /** Action element shown inline after the message (e.g. a text action or <a>) */\n action?: React.ReactNode\n /** When provided, renders a dismiss (×) button and calls this on click */\n onDismiss?: () => void\n className?: string\n id?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function Toast(props: ToastProps): React.ReactElement {\n const { children, icon, action, onDismiss, className, id, dataAttributes, ...coreProps } = props\n const kit = createToastRecipe(coreProps)\n const { a11y } = kit\n\n return (\n <div\n id={id}\n className={cx(kit.className, className)}\n role={a11y.role}\n aria-live={a11y.ariaLive}\n aria-atomic=\"true\"\n {...kit.dataAttributes}\n {...dataAttributes}\n >\n {icon && (\n <span className=\"mw-toast__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <div className=\"mw-toast__body\">\n <span className=\"mw-toast__text\">{children}</span>\n {action && <span className=\"mw-toast__action\">{action}</span>}\n </div>\n {onDismiss && (\n <button\n type=\"button\"\n className=\"mw-toast__dismiss\"\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n />\n )}\n </div>\n )\n}\n","import { IconName, createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { Toast, type ToastProps } from \"./toast\"\n\nfunction getDefaultIcon(iconName: IconName): React.ReactNode {\n return <Icon name={iconName} decorative />\n}\n\nexport type SuccessToastProps = ToastProps\n\nexport function SuccessToast(props: SuccessToastProps): React.ReactElement {\n return (\n <Toast\n {...props}\n variant={props.variant ?? \"outline\"}\n ariaLive={props.ariaLive ?? \"polite\"}\n icon={props.icon ?? getDefaultIcon(IconName.Check)}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"success-toast\"),\n }}\n />\n )\n}\n\nexport type ErrorToastProps = ToastProps\n\nexport function ErrorToast(props: ErrorToastProps): React.ReactElement {\n return (\n <Toast\n {...props}\n variant={props.variant ?? \"outline\"}\n ariaLive={props.ariaLive ?? \"assertive\"}\n icon={props.icon ?? getDefaultIcon(IconName.XCircle)}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"error-toast\"),\n }}\n />\n )\n}\n\nexport type WarningToastProps = ToastProps\n\nexport function WarningToast(props: WarningToastProps): React.ReactElement {\n return (\n <Toast\n {...props}\n variant={props.variant ?? \"outline\"}\n ariaLive={props.ariaLive ?? \"polite\"}\n icon={props.icon ?? getDefaultIcon(IconName.AlertTriangle)}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"warning-toast\"),\n }}\n />\n )\n}\n\nexport type InfoToastProps = ToastProps\n\nexport function InfoToast(props: InfoToastProps): React.ReactElement {\n return (\n <Toast\n {...props}\n variant={props.variant ?? \"outline\"}\n ariaLive={props.ariaLive ?? \"polite\"}\n icon={props.icon ?? getDefaultIcon(IconName.Info)}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"info-toast\"),\n }}\n />\n )\n}\n","import type { ToastIntent } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Toast, type ToastProps } from \"./toast\"\nimport type { ManagedToast, ToastContainerProps } from \"./toast-manager-types\"\nimport { ErrorToast, InfoToast, SuccessToast, WarningToast } from \"./variants\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction renderToastByIntent(\n toast: ManagedToast,\n onDismiss: ((id: string) => void) | undefined,\n): React.ReactElement {\n const sharedProps: ToastProps = {\n id: toast.id,\n children: toast.children,\n }\n const dismissHandler = onDismiss ? () => onDismiss(toast.id) : undefined\n\n if (toast.icon !== undefined) {\n sharedProps.icon = toast.icon\n }\n\n if (toast.action !== undefined) {\n sharedProps.action = toast.action\n }\n\n if (dismissHandler) {\n sharedProps.onDismiss = dismissHandler\n }\n\n if (toast.className !== undefined) {\n sharedProps.className = toast.className\n }\n\n if (toast.variant !== undefined) {\n sharedProps.variant = toast.variant\n }\n\n if (toast.ariaLive !== undefined) {\n sharedProps.ariaLive = toast.ariaLive\n }\n\n if (toast.dataAttributes !== undefined || toast.intent !== undefined) {\n sharedProps.dataAttributes = {\n ...(toast.dataAttributes ?? {}),\n ...(toast.intent !== undefined ? { \"data-intent\": toast.intent } : {}),\n }\n }\n\n switch (toast.intent as ToastIntent | undefined) {\n case \"success\":\n return <SuccessToast {...sharedProps} />\n case \"error\":\n return <ErrorToast {...sharedProps} />\n case \"warning\":\n return <WarningToast {...sharedProps} />\n case \"info\":\n return <InfoToast {...sharedProps} />\n default:\n return <Toast {...sharedProps} />\n }\n}\n\nfunction ToastViewportItem(props: {\n toast: ManagedToast\n onDismiss?: (id: string) => void\n}): React.ReactElement {\n const timerHandleRef = React.useRef<number | null>(null)\n const timerStartedAtRef = React.useRef<number | null>(null)\n const remainingDurationRef = React.useRef<number | null>(null)\n const pointerInsideRef = React.useRef(false)\n const focusInsideRef = React.useRef(false)\n\n const clearDismissTimer = React.useCallback(() => {\n if (timerHandleRef.current === null) {\n return\n }\n\n window.clearTimeout(timerHandleRef.current)\n timerHandleRef.current = null\n timerStartedAtRef.current = null\n }, [])\n\n const scheduleDismissTimer = React.useCallback(\n (delay: number) => {\n if (\n !props.onDismiss ||\n delay <= 0 ||\n pointerInsideRef.current ||\n focusInsideRef.current ||\n timerHandleRef.current !== null\n ) {\n return\n }\n\n timerStartedAtRef.current = Date.now()\n timerHandleRef.current = window.setTimeout(() => {\n timerHandleRef.current = null\n timerStartedAtRef.current = null\n remainingDurationRef.current = 0\n props.onDismiss?.(props.toast.id)\n }, delay)\n },\n [props.onDismiss, props.toast.id],\n )\n\n const pauseDismissTimer = React.useCallback(() => {\n if (timerHandleRef.current === null || timerStartedAtRef.current === null) {\n return\n }\n\n const elapsed = Date.now() - timerStartedAtRef.current\n const remainingDuration = remainingDurationRef.current ?? 0\n\n remainingDurationRef.current = Math.max(remainingDuration - elapsed, 0)\n clearDismissTimer()\n }, [clearDismissTimer])\n\n const resumeDismissTimer = React.useCallback(() => {\n if (pointerInsideRef.current || focusInsideRef.current) {\n return\n }\n\n const remainingDuration = remainingDurationRef.current\n\n if (remainingDuration === null || remainingDuration === undefined || remainingDuration <= 0) {\n return\n }\n\n scheduleDismissTimer(remainingDuration)\n }, [scheduleDismissTimer])\n\n React.useEffect(() => {\n clearDismissTimer()\n pointerInsideRef.current = false\n focusInsideRef.current = false\n\n if (!props.onDismiss || props.toast.duration === undefined || props.toast.duration === null) {\n remainingDurationRef.current = null\n return\n }\n\n if (props.toast.duration <= 0) {\n remainingDurationRef.current = 0\n return\n }\n\n remainingDurationRef.current = props.toast.duration\n scheduleDismissTimer(props.toast.duration)\n\n return () => {\n clearDismissTimer()\n }\n }, [clearDismissTimer, props.onDismiss, props.toast.duration, scheduleDismissTimer])\n\n return (\n <div\n className=\"mw-toast-container__item\"\n onMouseEnter={() => {\n pointerInsideRef.current = true\n pauseDismissTimer()\n }}\n onMouseLeave={() => {\n pointerInsideRef.current = false\n resumeDismissTimer()\n }}\n onFocusCapture={() => {\n focusInsideRef.current = true\n pauseDismissTimer()\n }}\n onBlurCapture={(event) => {\n if (event.currentTarget.contains(event.relatedTarget)) {\n return\n }\n\n focusInsideRef.current = false\n resumeDismissTimer()\n }}\n >\n {renderToastByIntent(props.toast, props.onDismiss)}\n </div>\n )\n}\n\nexport function ToastContainer(props: ToastContainerProps): React.ReactElement {\n const placement = props.placement ?? \"top-right\"\n const visibleToasts =\n props.maxVisible && props.maxVisible > 0 ? props.toasts.slice(-props.maxVisible) : props.toasts\n\n return (\n <div className={cx(\"mw-toast-container\", `mw-toast-container--${placement}`, props.className)}>\n {visibleToasts.map((toast) => (\n <ToastViewportItem\n key={toast.id}\n toast={toast}\n {...(props.onDismiss ? { onDismiss: props.onDismiss } : {})}\n />\n ))}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { ToastContainer } from \"./toast-container\"\nimport type {\n ManagedToast,\n ShowToastOptions,\n ToastController,\n ToastProviderProps,\n} from \"./toast-manager-types\"\n\nconst ToastContext = React.createContext<ToastController | null>(null)\n\nexport function ToastProvider(props: ToastProviderProps): React.ReactElement {\n const [toasts, setToasts] = React.useState<ManagedToast[]>([])\n const idRef = React.useRef(0)\n\n const dismiss = React.useCallback((id: string) => {\n setToasts((currentToasts) => {\n const toast = currentToasts.find((item) => item.id === id)\n toast?.onDismiss?.()\n return currentToasts.filter((item) => item.id !== id)\n })\n }, [])\n\n const clear = React.useCallback(() => {\n setToasts((currentToasts) => {\n for (const toast of currentToasts) {\n toast.onDismiss?.()\n }\n\n return []\n })\n }, [])\n\n const show = React.useCallback(\n (toast: ShowToastOptions) => {\n idRef.current += 1\n const id = `mw-toast-${idRef.current}`\n\n setToasts((currentToasts) => [\n ...currentToasts,\n {\n ...toast,\n id,\n duration:\n toast.duration === undefined\n ? props.defaultDuration === undefined\n ? 4000\n : props.defaultDuration\n : toast.duration,\n },\n ])\n\n return id\n },\n [props.defaultDuration],\n )\n\n const value = React.useMemo<ToastController>(\n () => ({\n show,\n dismiss,\n clear,\n }),\n [clear, dismiss, show],\n )\n\n return (\n <ToastContext.Provider value={value}>\n {props.children}\n <ToastContainer\n toasts={toasts}\n onDismiss={dismiss}\n {...(props.placement ? { placement: props.placement } : {})}\n {...(props.maxVisible !== undefined ? { maxVisible: props.maxVisible } : {})}\n {...(props.className ? { className: props.className } : {})}\n />\n </ToastContext.Provider>\n )\n}\n\nexport function useToast(): ToastController {\n const context = React.useContext(ToastContext)\n\n if (!context) {\n throw new Error(\"ToastProvider is missing. Wrap your app in <ToastProvider />.\")\n }\n\n return context\n}\n","import { type CssVars, type TooltipOptions, createTooltipRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\nexport interface TooltipProps\n extends TooltipOptions,\n Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n children: React.ReactNode\n dataAttributes?: Record<string, string>\n}\n\nexport function Tooltip(props: TooltipProps): React.ReactElement {\n const { children, className, style, dataAttributes, id, ...nativeSpanProps } = props\n const tooltipOptions: TooltipOptions = {}\n\n if (id !== undefined) {\n tooltipOptions.id = id\n }\n\n const kit = createTooltipRecipe(tooltipOptions)\n const mergedClassName = [kit.className, className].filter(Boolean).join(\" \")\n const mergedStyle = { ...(kit.vars as StyleWithVars), ...style }\n\n return (\n <span\n {...nativeSpanProps}\n {...kit.dataAttributes}\n {...dataAttributes}\n id={kit.a11y.id}\n className={mergedClassName}\n style={mergedStyle}\n role={kit.a11y.role}\n >\n {children}\n </span>\n )\n}\n","import { IconName, type IconNameType } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\nimport { Tooltip } from \"./tooltip\"\n\nconst TOOLTIP_EXIT_DURATION_MS = 160\n\nfunction cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport interface TooltipGroupProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"content\"> {\n content: React.ReactNode\n icon?: IconNameType\n triggerLabel?: string\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n tooltipId?: string\n tooltipClassName?: string\n triggerClassName?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function TooltipGroup(props: TooltipGroupProps): React.ReactElement {\n const reactId = React.useId()\n const {\n content,\n icon = IconName.HelpCircle,\n triggerLabel = \"Show tooltip\",\n open,\n defaultOpen = false,\n onOpenChange,\n tooltipId,\n tooltipClassName,\n triggerClassName,\n dataAttributes,\n className,\n id,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n onKeyDown,\n ...nativeSpanProps\n } = props\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const isControlled = open !== undefined\n const resolvedOpen = isControlled ? open : internalOpen\n const [isTooltipMounted, setIsTooltipMounted] = React.useState(resolvedOpen)\n const resolvedTooltipId = tooltipId ?? `${id ?? `mw-tooltip-group-${reactId}`}-tooltip`\n\n React.useEffect(() => {\n if (resolvedOpen) {\n setIsTooltipMounted(true)\n return\n }\n\n const timeoutId = window.setTimeout(() => {\n setIsTooltipMounted(false)\n }, TOOLTIP_EXIT_DURATION_MS)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [resolvedOpen])\n\n const updateOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (resolvedOpen === nextOpen) {\n return\n }\n\n if (!isControlled) {\n setInternalOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n },\n [isControlled, onOpenChange, resolvedOpen],\n )\n\n return (\n <span\n {...nativeSpanProps}\n {...dataAttributes}\n id={id}\n className={cx(\"mw-tooltip-group\", className)}\n data-component=\"tooltip-group\"\n data-open={resolvedOpen ? \"true\" : undefined}\n onMouseEnter={(event) => {\n onMouseEnter?.(event)\n updateOpen(true)\n }}\n onMouseLeave={(event) => {\n onMouseLeave?.(event)\n updateOpen(false)\n }}\n onFocus={(event) => {\n onFocus?.(event)\n updateOpen(true)\n }}\n onBlur={(event) => {\n onBlur?.(event)\n\n const nextFocusedElement = event.relatedTarget\n if (\n nextFocusedElement instanceof Node &&\n event.currentTarget.contains(nextFocusedElement)\n ) {\n return\n }\n\n updateOpen(false)\n }}\n onKeyDown={(event) => {\n onKeyDown?.(event)\n\n if (event.key === \"Escape\") {\n updateOpen(false)\n }\n }}\n >\n {isTooltipMounted ? (\n <Tooltip\n id={resolvedTooltipId}\n className={tooltipClassName}\n data-state={resolvedOpen ? \"open\" : \"closed\"}\n aria-hidden={resolvedOpen ? undefined : \"true\"}\n >\n {content}\n </Tooltip>\n ) : null}\n\n <button\n type=\"button\"\n className={cx(\"mw-tooltip-group__trigger\", triggerClassName)}\n aria-label={triggerLabel}\n aria-describedby={resolvedOpen ? resolvedTooltipId : undefined}\n >\n <Icon name={icon} decorative />\n </button>\n </span>\n )\n}\n","/**\n * React adapter for Marwes Accordion.\n * - Renders a compound structure: wrapper div > trigger button + panel div.\n * - id is optional; falls back to React.useId() for aria wiring.\n */\n\nimport { createAccordionRecipe } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\nexport interface AccordionProps {\n /** Unique id for aria wiring. Defaults to React.useId() when omitted. */\n id?: string\n open?: boolean\n disabled?: boolean\n /** Content of the trigger button header */\n title: React.ReactNode\n /** Content shown in the collapsible panel */\n children: React.ReactNode\n className?: string\n /** Called when the trigger is clicked */\n onToggle?: () => void\n}\n\nexport function Accordion(props: AccordionProps): React.ReactElement {\n const { title, children, className, onToggle, id: idProp, open, disabled } = props\n const autoId = React.useId()\n const resolvedId = idProp ?? autoId.replace(/:/g, \"\")\n\n const opts: import(\"@marwes-ui/core\").AccordionOptions = { id: resolvedId }\n if (open !== undefined) opts.open = open\n if (disabled !== undefined) opts.disabled = disabled\n const kit = createAccordionRecipe(opts)\n const { a11y } = kit\n\n function handleTriggerClick(): void {\n if (disabled) return\n onToggle?.()\n }\n\n return (\n <div className={[kit.className, className].filter(Boolean).join(\" \")}>\n <button\n id={a11y.triggerId}\n type=\"button\"\n className=\"mw-accordion__trigger\"\n aria-expanded={a11y.ariaExpanded}\n aria-controls={a11y.panelId}\n aria-disabled={a11y.ariaDisabled}\n disabled={disabled}\n onClick={handleTriggerClick}\n >\n <span className=\"mw-accordion__title\">{title}</span>\n <span className=\"mw-accordion__icon\" aria-hidden=\"true\" />\n </button>\n <section\n id={a11y.panelId}\n aria-labelledby={a11y.triggerId}\n className=\"mw-accordion__panel\"\n hidden={!open}\n >\n <div className=\"mw-accordion__content\">{children}</div>\n </section>\n </div>\n )\n}\n","/**\n * AccordionField (Molecule) — Recommended\n *\n * An accessible accordion group with field semantics: group label, optional\n * description, optional error, and coordinated open-state management.\n *\n * Composes `Accordion` atoms into a `role=\"group\"` container with:\n * - a visible label wired via `aria-labelledby`\n * - optional `description` and `error` regions\n * - automatic `aria-describedby` wiring (description + error + external IDs)\n * - automatic `aria-invalid` when `error` is present\n * - controlled (`openItems` + `onOpenItemsChange`) or uncontrolled (`defaultOpenItems`) state\n * - single-open (`multiple=false`, default) or multi-open (`multiple=true`) behaviour\n *\n * Use `AccordionField` for most accordion groups. Use `Accordion` directly only\n * when you need a standalone collapsible panel outside of group semantics.\n *\n * @example Basic (uncontrolled, single-open)\n * ```tsx\n * <AccordionField\n * label=\"FAQ\"\n * items={[\n * { value: \"q1\", title: \"What is Marwes?\", content: <p>A design system.</p> },\n * { value: \"q2\", title: \"Is it free?\", content: <p>Yes.</p> },\n * ]}\n * defaultOpenItems={[\"q1\"]}\n * />\n * ```\n *\n * @example Multi-open, controlled\n * ```tsx\n * const [open, setOpen] = React.useState<string[]>([]);\n *\n * <AccordionField\n * label=\"Settings\"\n * items={settingsItems}\n * openItems={open}\n * onOpenItemsChange={setOpen}\n * multiple\n * />\n * ```\n */\n\nimport { buildAccordionFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { Accordion } from \"./accordion\"\n\nexport interface AccordionFieldItem {\n value: string\n title: React.ReactNode\n content?: React.ReactNode\n /** @deprecated Use `content` instead for cross-framework parity. */\n children?: React.ReactNode\n disabled?: boolean\n}\n\nexport interface AccordionFieldProps {\n /** Visible label for the accordion group. */\n label: React.ReactNode\n\n /** Optional description text below the label. */\n description?: React.ReactNode\n\n /** Error message. When present, sets aria-invalid on the group. */\n error?: React.ReactNode\n\n /** Accordion items to render. */\n items: AccordionFieldItem[]\n\n /** Allow multiple items open simultaneously. Defaults to `true`. */\n multiple?: boolean\n\n /** Controlled: currently open item values. */\n openItems?: string[]\n\n /** Controlled: called with the new open-items array when state changes. */\n onOpenItemsChange?: (openItems: string[]) => void\n\n /** Uncontrolled: initially open item values. */\n defaultOpenItems?: string[]\n\n /** Disables all accordion items. */\n disabled?: boolean\n\n /** Explicit ID. If omitted, generated via useId(). */\n id?: string\n\n /** Additional aria-describedby IDs to merge with internal description/error IDs. */\n ariaDescribedBy?: string\n\n /** Data attributes for AI-friendly metadata (used by context variants). */\n dataAttributes?: Record<string, string>\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) return false\n if (typeof value === \"string\") return value.trim().length > 0\n return true\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction resolveAccordionItemContent(item: AccordionFieldItem): React.ReactNode {\n return item.content ?? item.children\n}\n\nexport function AccordionField(props: AccordionFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-accordion-field-${reactId}`\n const multipleAllowed = props.multiple ?? true\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const isInvalid = hasError || false\n\n const { labelId, descriptionId, errorId, describedBy } = buildAccordionFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n // Controlled vs uncontrolled state\n const isControlled = props.openItems !== undefined\n const [internalOpenItems, setInternalOpenItems] = React.useState<string[]>(\n props.defaultOpenItems ?? [],\n )\n const openItems = isControlled ? (props.openItems ?? []) : internalOpenItems\n\n const handleToggle = (itemValue: string): void => {\n const isCurrentlyOpen = openItems.includes(itemValue)\n let nextOpenItems: string[]\n\n if (isCurrentlyOpen) {\n nextOpenItems = openItems.filter((v) => v !== itemValue)\n } else if (multipleAllowed) {\n nextOpenItems = [...openItems, itemValue]\n } else {\n nextOpenItems = [itemValue]\n }\n\n if (!isControlled) {\n setInternalOpenItems(nextOpenItems)\n }\n props.onOpenItemsChange?.(nextOpenItems)\n }\n\n const wrapperClass = cx(\n \"mw-accordion-field\",\n props.disabled && \"mw-accordion-field--disabled\",\n isInvalid && \"mw-accordion-field--invalid\",\n )\n\n return (\n <fieldset\n className={wrapperClass}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n aria-invalid={isInvalid ? true : undefined}\n {...props.dataAttributes}\n >\n <legend className=\"mw-accordion-field__label\" id={labelId}>\n <Text variant=\"label\">{props.label}</Text>\n </legend>\n\n <div className=\"mw-accordion-field__items\">\n {props.items.map((item) => {\n const isDisabled = props.disabled || item.disabled || false\n const isOpen = openItems.includes(item.value)\n\n return (\n <Accordion\n key={item.value}\n id={`${id}-item-${item.value}`}\n title={item.title}\n open={isOpen}\n disabled={isDisabled}\n onToggle={() => handleToggle(item.value)}\n >\n {resolveAccordionItemContent(item)}\n </Accordion>\n )\n })}\n </div>\n\n {hasDescription && (\n <div className=\"mw-accordion-field__description\" id={descriptionId}>\n <Text variant=\"caption\">{props.description}</Text>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-accordion-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </fieldset>\n )\n}\n","import type * as React from \"react\"\nimport { AccordionField, type AccordionFieldProps } from \"./accordion-field\"\n\n/**\n * Purpose Components — Accordion\n *\n * Pre-configured accordion compositions that encode a specific semantic purpose.\n * Each sets `data-purpose` for machine-readable intent while keeping the\n * visual `variant` prop for presentation only.\n */\n\n// ============================================================================\n// FAQ ACCORDION - Single-open Q&A style\n// ============================================================================\n\nexport type FAQAccordionProps = Omit<AccordionFieldProps, \"multiple\">\n\n/**\n * FAQAccordion - For question-and-answer sections.\n *\n * **AI Context:**\n * - Enforces single-open behaviour (opening one closes others)\n * - Adds `data-purpose=\"faq\"` for AI parsing\n * - Ideal for FAQ pages, help sections, knowledge bases\n *\n * @example\n * ```tsx\n * import { FAQAccordion } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <FAQAccordion\n * label=\"Frequently Asked Questions\"\n * items={[\n * { value: \"q1\", title: \"What is Marwes?\", content: <p>A design system.</p> },\n * { value: \"q2\", title: \"Is it free?\", content: <p>Yes.</p> },\n * ]}\n * defaultOpenItems={[\"q1\"]}\n * />\n * );\n * }\n * ```\n */\nexport function FAQAccordion(props: FAQAccordionProps): React.ReactElement {\n return (\n <AccordionField\n {...props}\n multiple={false}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"faq\",\n }}\n />\n )\n}\n\n// ============================================================================\n// SETTINGS ACCORDION - Multi-open configuration panels\n// ============================================================================\n\nexport type SettingsAccordionProps = Omit<AccordionFieldProps, \"multiple\">\n\n/**\n * SettingsAccordion - For configuration and settings panels.\n *\n * **AI Context:**\n * - Enforces multi-open behaviour (multiple sections open simultaneously)\n * - Adds `data-purpose=\"settings\"` for AI parsing\n * - Ideal for preferences, admin panels, configuration forms\n *\n * @example\n * ```tsx\n * import { SettingsAccordion } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <SettingsAccordion\n * label=\"Account Settings\"\n * items={[\n * { value: \"profile\", title: \"Profile\", content: <ProfileForm /> },\n * { value: \"notifications\", title: \"Notifications\", content: <NotificationsForm /> },\n * { value: \"privacy\", title: \"Privacy\", content: <PrivacyForm /> },\n * ]}\n * />\n * );\n * }\n * ```\n */\nexport function SettingsAccordion(props: SettingsAccordionProps): React.ReactElement {\n return (\n <AccordionField\n {...props}\n multiple={true}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"settings\",\n }}\n />\n )\n}\n\n// ============================================================================\n// SECTIONS ACCORDION - Flexible content sections\n// ============================================================================\n\nexport type SectionsAccordionProps = AccordionFieldProps\n\n/**\n * SectionsAccordion - For generic collapsible content sections.\n *\n * **AI Context:**\n * - Same API as `AccordionField` with `data-purpose=\"sections\"` for AI parsing\n * - Defaults to multi-open but can be overridden with `multiple={false}`\n * - Use when no more specific purpose component fits\n * - Documentation, product details, order breakdowns\n *\n * @example\n * ```tsx\n * import { SectionsAccordion } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <SectionsAccordion\n * label=\"Product Details\"\n * items={[\n * { value: \"desc\", title: \"Description\", content: <p>Full description.</p> },\n * { value: \"specs\", title: \"Specifications\", content: <SpecsTable /> },\n * { value: \"reviews\", title: \"Reviews\", content: <ReviewsList /> },\n * ]}\n * />\n * );\n * }\n * ```\n */\nexport function SectionsAccordion(props: SectionsAccordionProps): React.ReactElement {\n return (\n <AccordionField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"sections\",\n }}\n />\n )\n}\n","/**\n * React adapter for Marwes Radio.\n * - Renders a native <input type=\"radio\"> using the core render kit.\n * - Applies strict a11y fields and modifier classes.\n */\n\nimport { radioRecipe } from \"@marwes-ui/core\"\nimport type { RadioOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport type RadioProps = RadioOptions & {\n /**\n * Called with the next checked value when the user selects this radio.\n * In a group, only the newly selected radio fires `true`.\n */\n onCheckedChange?: (checked: boolean) => void\n /** Raw event access escape hatch. */\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n}\n\n/**\n * Radio (Atom)\n *\n * Low-level radio control built on a native `<input type=\"radio\">`.\n * Use this when you need custom layout or when the label/grouping is handled\n * elsewhere (e.g. inside a list item, table row, or custom field wrapper).\n *\n * For most forms, prefer `RadioGroupField`, which composes `Radio` with\n * group label/description/error wiring, selection state, and consistent spacing.\n *\n * **AI Context:**\n * - Renders a native `<input type=\"radio\">` using the core `radioRecipe`\n * - Applies strict a11y attributes: `aria-label`, `aria-labelledby`, `aria-describedby`, `aria-invalid`\n * - Supports controlled (`checked` + `onCheckedChange`) and uncontrolled (`defaultChecked`) modes\n * - Modifier classes: `mw-radio`, `mw-radio--disabled`, `mw-radio--invalid`\n *\n * Accessibility:\n * - Provide **either** `ariaLabel` **or** `ariaLabelledBy` (or wrap with a `<label htmlFor>`).\n * - Use the same `name` attribute on all radios in a group for native keyboard navigation.\n * - Use `ariaDescribedBy` to connect supporting text (help/error).\n *\n * @example Basic (uncontrolled)\n * ```tsx\n * <Radio ariaLabel=\"Option A\" name=\"preference\" defaultChecked />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [selected, setSelected] = React.useState(\"a\");\n *\n * <Radio\n * name=\"color\"\n * value=\"a\"\n * checked={selected === \"a\"}\n * onCheckedChange={(checked) => { if (checked) setSelected(\"a\"); }}\n * ariaLabel=\"Red\"\n * />\n * ```\n *\n * @example With external label\n * ```tsx\n * const id = \"opt-1\";\n *\n * <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n * <Radio id={id} name=\"group\" value=\"a\" />\n * <label htmlFor={id}>Option A</label>\n * </div>\n * ```\n *\n * @example In a group (manual)\n * ```tsx\n * const [selected, setSelected] = React.useState(\"a\");\n * const options = [\n * { value: \"a\", label: \"Option A\" },\n * { value: \"b\", label: \"Option B\" },\n * ];\n *\n * <div role=\"radiogroup\" aria-label=\"Preference\">\n * {options.map(({ value, label }) => (\n * <label key={value}>\n * <Radio\n * name=\"preference\"\n * value={value}\n * checked={selected === value}\n * onCheckedChange={(checked) => { if (checked) setSelected(value); }}\n * />\n * {label}\n * </label>\n * ))}\n * </div>\n * ```\n */\n\nexport function Radio(props: RadioProps): React.ReactElement {\n const { onCheckedChange, onChange, ...coreProps } = props\n const kit = radioRecipe(coreProps)\n const { a11y } = kit\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n onChange?.(e)\n onCheckedChange?.(e.currentTarget.checked)\n }\n\n return (\n <input\n type=\"radio\"\n className={kit.className}\n id={a11y.id}\n name={a11y.name}\n value={a11y.value}\n disabled={a11y.disabled === true}\n required={a11y.required === true}\n aria-label={a11y.ariaLabel}\n aria-labelledby={a11y.ariaLabelledBy}\n aria-describedby={a11y.ariaDescribedBy}\n aria-invalid={a11y.ariaInvalid === true ? true : undefined}\n checked={kit.checked}\n defaultChecked={kit.defaultChecked}\n onChange={handleChange}\n />\n )\n}\n","/**\n * RadioGroupField (Molecule) — Recommended\n *\n * An accessible radio group with field semantics: group label, optional\n * description, optional error, and selection state management.\n *\n * Composes `Radio` atoms into a `role=\"radiogroup\"` container with:\n * - a visible label wired via `aria-labelledby`\n * - optional `description` and `error` regions\n * - automatic `aria-describedby` wiring (description + error + external IDs)\n * - automatic `aria-invalid` when `error` is present\n * - controlled (`value` + `onChange`) or uncontrolled (`defaultValue`) state\n *\n * Use `RadioGroupField` for most forms. Use `Radio` directly only when you\n * need a highly custom layout (tables, list rows, compound list items, etc.).\n *\n * **AI Context:**\n * - Renders `role=\"radiogroup\"` with proper ARIA wiring\n * - Manages selection state for child Radio atoms\n * - All child radios share the same `name` for native keyboard navigation\n * - Supports both controlled and uncontrolled patterns\n *\n * @example Basic (uncontrolled)\n * ```tsx\n * <RadioGroupField\n * name=\"color\"\n * label=\"Favorite color\"\n * options={[\n * { value: \"red\", label: \"Red\" },\n * { value: \"blue\", label: \"Blue\" },\n * { value: \"green\", label: \"Green\" },\n * ]}\n * defaultValue=\"red\"\n * />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [color, setColor] = React.useState(\"red\");\n *\n * <RadioGroupField\n * name=\"color\"\n * label=\"Favorite color\"\n * options={[\n * { value: \"red\", label: \"Red\" },\n * { value: \"blue\", label: \"Blue\" },\n * ]}\n * value={color}\n * onChange={setColor}\n * />\n * ```\n *\n * @example With description and error\n * ```tsx\n * <RadioGroupField\n * name=\"plan\"\n * label=\"Select a plan\"\n * description=\"Choose the plan that best fits your needs.\"\n * error=\"Please select a plan to continue.\"\n * options={[\n * { value: \"free\", label: \"Free\" },\n * { value: \"pro\", label: \"Pro\" },\n * ]}\n * />\n * ```\n */\n\nimport { buildRadioGroupFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { Radio } from \"./radio\"\n\nexport interface RadioGroupFieldOption {\n value: string\n label: React.ReactNode\n description?: React.ReactNode\n disabled?: boolean\n}\n\nexport interface RadioGroupFieldProps {\n /** Shared name for all radio inputs in the group. */\n name: string\n\n /** Visible label for the radio group. */\n label: React.ReactNode\n\n /** Optional description text below the label. */\n description?: React.ReactNode\n\n /** Error message. When present, sets aria-invalid on the group. */\n error?: React.ReactNode\n\n /** Controlled: current selected value. */\n value?: string\n\n /** Controlled: called with the new value when selection changes. */\n onChange?: (value: string) => void\n\n /** Uncontrolled: initial selected value. */\n defaultValue?: string\n\n /** Radio options to render. */\n options: RadioGroupFieldOption[]\n\n /** Disables all radio inputs in the group. */\n disabled?: boolean\n\n /** Marks the group as required. */\n required?: boolean\n\n /** Explicit ID. If omitted, generated via useId(). */\n id?: string\n\n /** Additional aria-describedby IDs to merge with internal description/error IDs. */\n ariaDescribedBy?: string\n\n /** Data attributes for AI-friendly metadata (used by context variants). */\n dataAttributes?: Record<string, string>\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) return false\n if (typeof value === \"string\") return value.trim().length > 0\n return true\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport function RadioGroupField(props: RadioGroupFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-radio-group-${reactId}`\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const isInvalid = hasError || false\n\n const { labelId, descriptionId, errorId, describedBy } = buildRadioGroupFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n // Controlled vs uncontrolled state\n const isControlled = props.value !== undefined\n const [internalValue, setInternalValue] = React.useState(props.defaultValue)\n const selectedValue = isControlled ? props.value : internalValue\n\n const handleSelect = (optionValue: string): void => {\n if (!isControlled) {\n setInternalValue(optionValue)\n }\n props.onChange?.(optionValue)\n }\n\n const wrapperClass = cx(\n \"mw-radio-group-field\",\n props.disabled && \"mw-radio-group-field--disabled\",\n isInvalid && \"mw-radio-group-field--invalid\",\n )\n\n return (\n <div className={wrapperClass} {...props.dataAttributes}>\n <div className=\"mw-radio-group-field__label\" id={labelId}>\n <Text variant=\"label\">{props.label}</Text>\n </div>\n\n {hasDescription && (\n <div className=\"mw-radio-group-field__description\" id={descriptionId}>\n <Text variant=\"caption\">{props.description}</Text>\n </div>\n )}\n\n <div\n role=\"radiogroup\"\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n aria-invalid={isInvalid ? true : undefined}\n aria-required={props.required ? true : undefined}\n className=\"mw-radio-group-field__options\"\n >\n {props.options.map(({ value, label, description, disabled: optionDisabled }) => {\n const optionId = `${id}-option-${value}`\n const optionLabelId = `${optionId}-label`\n const optionDescriptionId = `${optionId}-description`\n const hasOptionDescription = hasContent(description)\n const isDisabled = props.disabled || optionDisabled || false\n\n return (\n <label\n key={value}\n className={cx(\n \"mw-radio-group-field__option\",\n hasOptionDescription && \"mw-radio-group-field__option--with-description\",\n )}\n htmlFor={optionId}\n >\n <Radio\n id={optionId}\n name={props.name}\n value={value}\n ariaLabelledBy={optionLabelId}\n {...(hasOptionDescription ? { ariaDescribedBy: optionDescriptionId } : {})}\n checked={selectedValue === value}\n disabled={isDisabled}\n invalid={isInvalid}\n {...(props.required ? { required: true } : {})}\n onCheckedChange={(checked) => {\n if (checked) handleSelect(value)\n }}\n />\n <span className=\"mw-radio-group-field__option-content\">\n <Text\n id={optionLabelId}\n variant=\"label\"\n className=\"mw-radio-group-field__option-label\"\n >\n {label}\n </Text>\n {hasOptionDescription && (\n <Text\n id={optionDescriptionId}\n variant=\"label-small\"\n className=\"mw-radio-group-field__option-description\"\n >\n {description}\n </Text>\n )}\n </span>\n </label>\n )\n })}\n </div>\n\n {hasError && (\n <div className=\"mw-radio-group-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import type * as React from \"react\"\nimport { RadioGroupField, type RadioGroupFieldProps } from \"./radio-group-field\"\n\n/**\n * Purpose Components — Radio Group\n *\n * Pre-configured radio group compositions that encode a specific semantic purpose.\n * Each sets `data-purpose` for machine-readable intent while keeping the\n * visual `variant` prop for presentation only.\n */\n\n// ============================================================================\n// YES/NO RADIO GROUP - Binary Choice\n// ============================================================================\n\nexport type YesNoRadioGroupProps = Omit<RadioGroupFieldProps, \"options\"> & {\n /** Label for the \"Yes\" option. Defaults to \"Yes\". */\n yesLabel?: React.ReactNode\n /** Label for the \"No\" option. Defaults to \"No\". */\n noLabel?: React.ReactNode\n}\n\n/**\n * YesNoRadioGroup - For binary yes/no choices.\n *\n * **AI Context:**\n * - Pre-built options with values `\"yes\"` and `\"no\"`\n * - Adds `data-purpose=\"binary-choice\"` for AI parsing\n * - Labels customizable via `yesLabel` / `noLabel`\n *\n * @example\n * ```tsx\n * import { YesNoRadioGroup } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <YesNoRadioGroup\n * name=\"accept-terms\"\n * label=\"Do you accept the terms?\"\n * defaultValue=\"no\"\n * />\n * );\n * }\n * ```\n *\n * @example Custom labels\n * ```tsx\n * <YesNoRadioGroup\n * name=\"newsletter\"\n * label=\"Subscribe to newsletter?\"\n * yesLabel=\"Subscribe\"\n * noLabel=\"No thanks\"\n * />\n * ```\n */\nexport function YesNoRadioGroup(props: YesNoRadioGroupProps): React.ReactElement {\n const { yesLabel = \"Yes\", noLabel = \"No\", ...restProps } = props\n\n const options = [\n { value: \"yes\", label: yesLabel },\n { value: \"no\", label: noLabel },\n ]\n\n return (\n <RadioGroupField\n {...restProps}\n options={options}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"binary-choice\",\n }}\n />\n )\n}\n\n// ============================================================================\n// RATING RADIO GROUP - Numeric Scale\n// ============================================================================\n\nexport type RatingRadioGroupProps = Omit<RadioGroupFieldProps, \"options\"> & {\n /** Minimum value (inclusive). Defaults to 1. */\n min?: number\n /** Maximum value (inclusive). Defaults to 5. */\n max?: number\n /** Custom label function. Receives the numeric value, returns a label. Defaults to `String(value)`. */\n labelFn?: (value: number) => React.ReactNode\n}\n\n/**\n * RatingRadioGroup - For numeric scale selections.\n *\n * **AI Context:**\n * - Generates options from `min` to `max` (default 1–5)\n * - Values are string representations of numbers (\"1\", \"2\", etc.)\n * - Adds `data-purpose=\"rating\"` for AI parsing\n * - Custom labels via `labelFn`\n *\n * @example\n * ```tsx\n * import { RatingRadioGroup } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <RatingRadioGroup\n * name=\"satisfaction\"\n * label=\"How satisfied are you?\"\n * defaultValue=\"3\"\n * />\n * );\n * }\n * ```\n *\n * @example Custom range and labels\n * ```tsx\n * <RatingRadioGroup\n * name=\"priority\"\n * label=\"Priority level\"\n * min={1}\n * max={3}\n * labelFn={(v) => [\"Low\", \"Medium\", \"High\"][v - 1]}\n * />\n * ```\n */\nexport function RatingRadioGroup(props: RatingRadioGroupProps): React.ReactElement {\n const { min = 1, max = 5, labelFn = String, ...restProps } = props\n\n const options = Array.from({ length: max - min + 1 }, (_, i) => {\n const value = min + i\n return { value: String(value), label: labelFn(value) }\n })\n\n return (\n <RadioGroupField\n {...restProps}\n options={options}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"rating\",\n }}\n />\n )\n}\n\n// ============================================================================\n// OPTION RADIO GROUP - General Labeled Options\n// ============================================================================\n\nexport type OptionRadioGroupProps = RadioGroupFieldProps\n\n/**\n * OptionRadioGroup - For general labeled option selection.\n *\n * **AI Context:**\n * - Same API as `RadioGroupField` with `data-purpose=\"selection\"` for AI parsing\n * - Use when no more specific purpose component fits\n * - Preferences, categories, modes, or any custom option list\n *\n * @example\n * ```tsx\n * import { OptionRadioGroup } from \"@marwes-ui/react\";\n *\n * export function Example() {\n * return (\n * <OptionRadioGroup\n * name=\"theme\"\n * label=\"Select theme\"\n * options={[\n * { value: \"light\", label: \"Light\" },\n * { value: \"dark\", label: \"Dark\" },\n * { value: \"system\", label: \"System\" },\n * ]}\n * defaultValue=\"system\"\n * />\n * );\n * }\n * ```\n */\nexport function OptionRadioGroup(props: OptionRadioGroupProps): React.ReactElement {\n return (\n <RadioGroupField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"selection\",\n }}\n />\n )\n}\n","import { createBadgeRecipe } from \"@marwes-ui/core\"\nimport type { BadgeOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport type BadgeProps = BadgeOptions & {\n children?: React.ReactNode\n className?: string\n id?: string\n /** Data attributes for AI-friendly metadata (used by context variants). */\n dataAttributes?: Record<string, string>\n}\n\nexport function Badge(props: BadgeProps): React.ReactElement {\n const { children, className, id, dataAttributes, ...coreProps } = props\n const kit = createBadgeRecipe(coreProps)\n\n return (\n <span\n id={id}\n className={[kit.className, className].filter(Boolean).join(\" \")}\n aria-label={kit.a11y.ariaLabel}\n {...kit.dataAttributes}\n {...dataAttributes}\n >\n {children}\n </span>\n )\n}\n","/**\n * BadgeGroup (Molecule) — Recommended\n *\n * An accessible badge group with a visible label. Groups related badges\n * into a `role=\"group\"` container with `aria-labelledby` wiring.\n *\n * Use `BadgeGroup` when displaying multiple related badges together\n * (e.g. a list of tags, status indicators, or categories).\n * Use `Badge` directly only when a single standalone badge is needed.\n *\n * @example\n * ```tsx\n * import { BadgeVariant } from \"@marwes-ui/core\";\n *\n * <BadgeGroup label=\"Status\">\n * <Badge variant={BadgeVariant.success}>Active</Badge>\n * <Badge variant={BadgeVariant.warning}>Pending review</Badge>\n * </BadgeGroup>\n * ```\n */\n\nimport * as React from \"react\"\nimport { Text } from \"../text\"\n\nexport interface BadgeGroupProps {\n /** Visible label for the badge group. */\n label: React.ReactNode\n\n /** Badge children to render inside the group. */\n children: React.ReactNode\n\n /** Additional CSS class names. */\n className?: string\n\n /** Explicit ID. If omitted, generated via useId(). */\n id?: string\n\n /** Data attributes for AI-friendly metadata (used by context variants). */\n dataAttributes?: Record<string, string>\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nexport function BadgeGroup(props: BadgeGroupProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-badge-group-${reactId}`\n const labelId = `${id}-label`\n\n const className = cx(\"mw-badge-group\", props.className)\n\n return (\n <fieldset className={className} aria-labelledby={labelId} {...props.dataAttributes}>\n <legend className=\"mw-badge-group__label\" id={labelId}>\n <Text variant=\"caption\">{props.label}</Text>\n </legend>\n <div className=\"mw-badge-group__items\">{props.children}</div>\n </fieldset>\n )\n}\n","/**\n * Purpose Components — Badge\n *\n * Pre-configured badge compositions that encode a specific semantic purpose.\n * Each sets `data-purpose` for machine-readable intent while keeping the\n * visual `variant` prop for presentation only.\n */\n\nimport { createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Badge, type BadgeProps } from \"./badge\"\n\n// ============================================================================\n// STATUS BADGE - Operational/lifecycle status\n// ============================================================================\n\nexport type StatusBadgeProps = BadgeProps\n\n/**\n * StatusBadge - For operational or lifecycle status indicators.\n *\n * **AI Context:**\n * - Adds `data-purpose=\"status\"` for AI parsing\n * - Ideal for active/inactive, online/offline, enabled/disabled states\n *\n * @example\n * ```tsx\n * import { BadgeVariant } from \"@marwes-ui/core\";\n *\n * <StatusBadge variant={BadgeVariant.success}>Active</StatusBadge>\n * <StatusBadge variant={BadgeVariant.error}>Offline</StatusBadge>\n * ```\n */\nexport function StatusBadge(props: StatusBadgeProps): React.ReactElement {\n return (\n <Badge\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"status\"),\n }}\n />\n )\n}\n\n// ============================================================================\n// PRIORITY BADGE - Urgency or importance levels\n// ============================================================================\n\nexport type PriorityBadgeProps = BadgeProps\n\n/**\n * PriorityBadge - For urgency or importance indicators.\n *\n * **AI Context:**\n * - Adds `data-purpose=\"priority\"` for AI parsing\n * - Ideal for critical/high/medium/low priority labels\n *\n * @example\n * ```tsx\n * import { BadgeVariant } from \"@marwes-ui/core\";\n *\n * <PriorityBadge variant={BadgeVariant.error}>Critical</PriorityBadge>\n * <PriorityBadge variant={BadgeVariant.warning}>High</PriorityBadge>\n * ```\n */\nexport function PriorityBadge(props: PriorityBadgeProps): React.ReactElement {\n return (\n <Badge\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"priority\"),\n }}\n />\n )\n}\n\n// ============================================================================\n// NOTIFICATION BADGE - Counts and alerts\n// ============================================================================\n\nexport type NotificationBadgeProps = BadgeProps\n\n/**\n * NotificationBadge - For notification counts and alert indicators.\n *\n * **AI Context:**\n * - Adds `data-purpose=\"notification\"` for AI parsing\n * - Ideal for unread counts, new items, alert badges\n * - Always provide `ariaLabel` for numeric-only content\n *\n * @example\n * ```tsx\n * import { BadgeVariant } from \"@marwes-ui/core\";\n *\n * <NotificationBadge variant={BadgeVariant.info} ariaLabel=\"5 unread messages\">5</NotificationBadge>\n * ```\n */\nexport function NotificationBadge(props: NotificationBadgeProps): React.ReactElement {\n return (\n <Badge\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n ...createPurposeSemanticAttributes(\"notification\"),\n }}\n />\n )\n}\n","import { IconName, createBannerRecipe } from \"@marwes-ui/core\"\nimport type { BannerOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Icon } from \"../icon\"\n\nexport type BannerProps = BannerOptions & {\n /** Banner message content. */\n children?: React.ReactNode\n /** Optional CTA/action content rendered in the action slot. */\n action?: React.ReactNode\n /** Custom icon element. If omitted, a default status icon is rendered when showIcon is true. */\n icon?: React.ReactNode\n /** Callback when the dismiss button is clicked. */\n onDismiss?: () => void\n className?: string\n id?: string\n}\n\nexport function Banner(props: BannerProps): React.ReactElement {\n const { children, action, icon, onDismiss, className, id, ...coreProps } = props\n const kit = createBannerRecipe({\n ...coreProps,\n showAction: coreProps.showAction ?? Boolean(action),\n })\n\n return (\n <div\n id={id}\n className={[kit.root.className, className].filter(Boolean).join(\" \")}\n role={kit.root.a11y.role}\n aria-label={kit.root.a11y.ariaLabel}\n aria-live={kit.root.a11y.ariaLive}\n {...kit.root.dataAttributes}\n >\n <div className={kit.content.className}>\n {kit.icon.visible && (\n <span className={kit.icon.className}>\n {icon ?? <Icon name={IconName.Info} decorative />}\n </span>\n )}\n <span className={kit.message.className}>{children}</span>\n </div>\n {kit.action.visible && action && <div className={kit.action.className}>{action}</div>}\n {kit.dismiss.visible && (\n <button\n type=\"button\"\n className={kit.dismiss.className}\n aria-label={kit.dismiss.ariaLabel}\n onClick={onDismiss}\n />\n )}\n </div>\n )\n}\n","/**\n * Purpose Components — Banner\n *\n * Thin semantic wrappers that preset the `variant` prop and emit\n * canonical `data-purpose` and `data-intent` metadata.\n */\n\nimport { createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { Banner, type BannerProps } from \"./banner\"\n\n// ============================================================================\n// INFO BANNER\n// ============================================================================\n\nexport type InfoBannerProps = Omit<BannerProps, \"variant\">\n\n/**\n * InfoBanner - Informational page-level messages.\n *\n * @example\n * ```tsx\n * <InfoBanner>Your profile has been updated.</InfoBanner>\n * ```\n */\nexport function InfoBanner(props: InfoBannerProps): React.ReactElement {\n const purposeAttrs = createPurposeSemanticAttributes(\"info-banner\")\n return (\n <Banner\n {...props}\n variant=\"info\"\n data-purpose={purposeAttrs[\"data-purpose\"]}\n data-intent={purposeAttrs[\"data-intent\"]}\n />\n )\n}\n\n// ============================================================================\n// SUCCESS BANNER\n// ============================================================================\n\nexport type SuccessBannerProps = Omit<BannerProps, \"variant\">\n\n/**\n * SuccessBanner - Positive confirmation messages.\n *\n * @example\n * ```tsx\n * <SuccessBanner>Payment processed successfully.</SuccessBanner>\n * ```\n */\nexport function SuccessBanner(props: SuccessBannerProps): React.ReactElement {\n const purposeAttrs = createPurposeSemanticAttributes(\"success-banner\")\n return (\n <Banner\n {...props}\n variant=\"success\"\n data-purpose={purposeAttrs[\"data-purpose\"]}\n data-intent={purposeAttrs[\"data-intent\"]}\n />\n )\n}\n\n// ============================================================================\n// WARNING BANNER\n// ============================================================================\n\nexport type WarningBannerProps = Omit<BannerProps, \"variant\">\n\n/**\n * WarningBanner - Caution or upcoming deadline messages.\n *\n * @example\n * ```tsx\n * <WarningBanner>Your subscription expires in 3 days.</WarningBanner>\n * ```\n */\nexport function WarningBanner(props: WarningBannerProps): React.ReactElement {\n const purposeAttrs = createPurposeSemanticAttributes(\"warning-banner\")\n return (\n <Banner\n {...props}\n variant=\"warning\"\n data-purpose={purposeAttrs[\"data-purpose\"]}\n data-intent={purposeAttrs[\"data-intent\"]}\n />\n )\n}\n\n// ============================================================================\n// ERROR BANNER\n// ============================================================================\n\nexport type ErrorBannerProps = Omit<BannerProps, \"variant\">\n\n/**\n * ErrorBanner - Error or critical issue messages.\n *\n * @example\n * ```tsx\n * <ErrorBanner>Failed to save changes. Please try again.</ErrorBanner>\n * ```\n */\nexport function ErrorBanner(props: ErrorBannerProps): React.ReactElement {\n const purposeAttrs = createPurposeSemanticAttributes(\"error-banner\")\n return (\n <Banner\n {...props}\n variant=\"error\"\n data-purpose={purposeAttrs[\"data-purpose\"]}\n data-intent={purposeAttrs[\"data-intent\"]}\n />\n )\n}\n","import { createSwitchRecipe } from \"@marwes-ui/core\"\nimport type { SwitchOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport type SwitchProps = SwitchOptions & {\n /** Label text rendered next to the toggle */\n children?: React.ReactNode\n className?: string\n id?: string\n onCheckedChange?: (checked: boolean) => void\n onClick?: React.MouseEventHandler<HTMLButtonElement>\n}\n\nexport function Switch(props: SwitchProps): React.ReactElement {\n const { children, className, id, onCheckedChange, onClick, ...coreProps } = props\n const kit = createSwitchRecipe(coreProps)\n const { a11y } = kit\n const isDisabled = a11y.ariaDisabled === true\n\n const handleClick: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n onClick?.(event)\n\n if (isDisabled || event.defaultPrevented) {\n return\n }\n\n onCheckedChange?.(!a11y.ariaChecked)\n }\n\n return (\n <button\n id={id}\n type=\"button\"\n role={a11y.role}\n disabled={isDisabled}\n aria-checked={a11y.ariaChecked}\n aria-disabled={a11y.ariaDisabled}\n aria-label={a11y.ariaLabel}\n aria-labelledby={a11y.ariaLabelledBy}\n aria-describedby={a11y.ariaDescribedBy}\n className={[kit.className, className].filter(Boolean).join(\" \")}\n style={kit.vars}\n onClick={handleClick}\n >\n <span className=\"mw-switch__track\">\n <span className=\"mw-switch__thumb\" />\n </span>\n {children}\n </button>\n )\n}\n","import { buildSwitchFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { Switch } from \"./switch\"\nimport type { SwitchProps } from \"./switch\"\n\nexport type SwitchFieldProps = {\n id?: string\n label: React.ReactNode\n description?: React.ReactNode\n error?: React.ReactNode\n switch: SwitchProps\n ariaDescribedBy?: string\n dataAttributes?: Record<string, string>\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nexport function SwitchField(props: SwitchFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-switch-${reactId}`\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const { labelId, descriptionId, errorId, describedBy } = buildSwitchFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.switch.disabled || false\n const invalid = hasError\n const wrapperClass = cx(\n \"mw-switch-field\",\n disabled && \"mw-switch-field--disabled\",\n invalid && \"mw-switch-field--invalid\",\n )\n const {\n ariaLabel: _ignoredAriaLabel,\n ariaLabelledBy: _ignoredAriaLabelledby,\n ariaDescribedBy: _ignoredAriaDescribedBy,\n children: _ignoredChildren,\n ...switchProps\n } = props.switch\n\n return (\n <div className={wrapperClass} {...props.dataAttributes}>\n <div className=\"mw-switch-field__row\">\n <Switch\n {...switchProps}\n id={id}\n ariaLabelledBy={labelId}\n {...(describedBy ? { ariaDescribedBy: describedBy } : {})}\n />\n\n <span className=\"mw-switch-field__label\" id={labelId}>\n <Text variant=\"label\">{props.label}</Text>\n </span>\n </div>\n\n {hasDescription && (\n <div className=\"mw-switch-field__description\" id={descriptionId}>\n <Text variant=\"caption\">{props.description}</Text>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-switch-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import type * as React from \"react\"\nimport { SwitchField, type SwitchFieldProps } from \"./switch-field\"\n\nexport type FeatureToggleProps = SwitchFieldProps\n\nexport function FeatureToggle(props: FeatureToggleProps): React.ReactElement {\n return (\n <SwitchField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"feature-toggle\",\n }}\n />\n )\n}\n\nexport type PreferenceSwitchProps = SwitchFieldProps\n\nexport function PreferenceSwitch(props: PreferenceSwitchProps): React.ReactElement {\n return (\n <SwitchField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"preference\",\n }}\n />\n )\n}\n\nexport type PermissionSwitchProps = SwitchFieldProps\n\nexport function PermissionSwitch(props: PermissionSwitchProps): React.ReactElement {\n return (\n <SwitchField\n {...props}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"permission\",\n }}\n />\n )\n}\n","import type { CssVars, SliderOptions } from \"@marwes-ui/core\"\nimport { createSliderRecipe } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { useRenderKitDebug } from \"../../hooks/use-renderkit-debug\"\n\ntype StyleWithVars = React.CSSProperties & CssVars\n\ntype NativeSliderProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"className\" | \"defaultValue\" | \"max\" | \"min\" | \"onChange\" | \"step\" | \"style\" | \"type\" | \"value\"\n>\n\nexport type SliderProps = SliderOptions &\n NativeSliderProps & {\n className?: string\n style?: React.CSSProperties\n onValueChange?: (value: number) => void\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n }\n\ntype SliderOptionDraft = {\n [Key in keyof SliderOptions]?: SliderOptions[Key] | undefined\n}\n\nfunction buildSliderOptions(options: SliderOptionDraft): SliderOptions {\n const sliderOptions: SliderOptions = {}\n\n if (options.id !== undefined) sliderOptions.id = options.id\n if (options.name !== undefined) sliderOptions.name = options.name\n if (options.min !== undefined) sliderOptions.min = options.min\n if (options.max !== undefined) sliderOptions.max = options.max\n if (options.step !== undefined) sliderOptions.step = options.step\n if (options.value !== undefined) sliderOptions.value = options.value\n if (options.defaultValue !== undefined) sliderOptions.defaultValue = options.defaultValue\n if (options.disabled !== undefined) sliderOptions.disabled = options.disabled\n if (options.required !== undefined) sliderOptions.required = options.required\n if (options.showTooltip !== undefined) sliderOptions.showTooltip = options.showTooltip\n if (options.showTouchArea !== undefined) sliderOptions.showTouchArea = options.showTouchArea\n if (options.orientation !== undefined) sliderOptions.orientation = options.orientation\n if (options.ariaLabel !== undefined) sliderOptions.ariaLabel = options.ariaLabel\n if (options.ariaLabelledBy !== undefined) sliderOptions.ariaLabelledBy = options.ariaLabelledBy\n if (options.ariaDescribedBy !== undefined) sliderOptions.ariaDescribedBy = options.ariaDescribedBy\n if (options.ariaValueText !== undefined) sliderOptions.ariaValueText = options.ariaValueText\n\n return sliderOptions\n}\n\nfunction resolveSliderValue(options: SliderOptionDraft): number {\n return createSliderRecipe(buildSliderOptions(options)).value\n}\n\nexport const Slider = React.forwardRef<HTMLInputElement, SliderProps>((props, ref) => {\n const {\n id,\n name,\n min,\n max,\n step,\n value,\n defaultValue,\n disabled,\n required,\n showTooltip,\n showTouchArea,\n orientation,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaValueText,\n className: customClassName,\n style: customStyle,\n onValueChange,\n onChange,\n ...inputProps\n } = props\n\n const isControlled = value !== undefined\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() =>\n resolveSliderValue({ min, max, step, value, defaultValue }),\n )\n\n React.useEffect(() => {\n if (!isControlled) {\n setUncontrolledValue(resolveSliderValue({ min, max, step, defaultValue }))\n }\n }, [defaultValue, isControlled, max, min, step])\n\n const currentValue = isControlled\n ? resolveSliderValue({ min, max, step, value })\n : uncontrolledValue\n\n const kit = createSliderRecipe(\n buildSliderOptions({\n id,\n name,\n min,\n max,\n step,\n value: currentValue,\n disabled,\n required,\n showTooltip,\n showTouchArea,\n orientation,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaValueText,\n }),\n )\n\n useRenderKitDebug(kit, \"Slider\")\n\n const className = customClassName ? `${kit.className} ${customClassName}` : kit.className\n const style = { ...(kit.vars as StyleWithVars), ...customStyle }\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const nextValue = Number(event.currentTarget.value)\n\n if (!isControlled) {\n setUncontrolledValue(nextValue)\n }\n\n onChange?.(event)\n onValueChange?.(nextValue)\n }\n\n return (\n <div className={className} style={style} {...kit.dataAttributes}>\n <div className=\"mw-slider__control\">\n <input\n {...inputProps}\n ref={ref}\n type={kit.a11y.type}\n id={kit.a11y.id}\n name={kit.a11y.name}\n min={kit.a11y.min}\n max={kit.a11y.max}\n step={kit.a11y.step}\n disabled={kit.a11y.disabled === true}\n required={kit.a11y.required === true}\n aria-label={kit.a11y.ariaLabel}\n aria-labelledby={kit.a11y.ariaLabelledBy}\n aria-describedby={kit.a11y.ariaDescribedBy}\n aria-valuetext={kit.a11y.ariaValueText}\n aria-orientation={kit.a11y.ariaOrientation}\n className={kit.inputClassName}\n value={currentValue}\n onChange={handleChange}\n />\n\n <div className=\"mw-slider__visual\" aria-hidden=\"true\">\n <span className=\"mw-slider__track\" />\n <span className=\"mw-slider__fill\" />\n <span className=\"mw-slider__touch-area\" />\n <span className=\"mw-slider__thumb\" />\n </div>\n\n {kit.showTooltip ? (\n <span className=\"mw-slider__tooltip\" aria-hidden=\"true\">\n {currentValue}\n </span>\n ) : null}\n </div>\n </div>\n )\n})\n\nSlider.displayName = \"Slider\"\n","import { buildSliderFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { Slider } from \"./slider\"\nimport type { SliderProps } from \"./slider\"\n\nexport type SliderFieldLabelPosition = \"top\" | \"inline\"\n\nexport type SliderFieldProps = {\n id?: string\n label: React.ReactNode\n description?: React.ReactNode\n error?: React.ReactNode\n slider: SliderProps\n ariaDescribedBy?: string\n minValueLabel?: React.ReactNode\n maxValueLabel?: React.ReactNode\n labelPosition?: SliderFieldLabelPosition\n showEdgeValues?: boolean\n dataAttributes?: Record<string, string>\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nfunction resolveEdgeValueLabel(\n value: React.ReactNode | undefined,\n fallback: number,\n): React.ReactNode {\n return value ?? `${fallback}`\n}\n\nexport function SliderField(props: SliderFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-slider-${reactId}`\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const { labelId, descriptionId, errorId, describedBy } = buildSliderFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.slider.disabled || false\n const labelPosition = props.labelPosition ?? \"top\"\n const showEdgeValues = props.showEdgeValues !== false\n const minValue = props.slider.min ?? 0\n const maxValue = props.slider.max ?? 100\n const minValueLabel = resolveEdgeValueLabel(props.minValueLabel, minValue)\n const maxValueLabel = resolveEdgeValueLabel(props.maxValueLabel, maxValue)\n const wrapperClass = cx(\n \"mw-slider-field\",\n labelPosition === \"top\" && \"mw-slider-field--label-top\",\n labelPosition === \"inline\" && \"mw-slider-field--label-inline\",\n disabled && \"mw-slider-field--disabled\",\n hasError && \"mw-slider-field--invalid\",\n )\n\n const {\n ariaLabel: _ignoredAriaLabel,\n ariaLabelledBy: _ignoredAriaLabelledBy,\n ariaDescribedBy: _ignoredAriaDescribedBy,\n style: sliderStyle,\n ...sliderProps\n } = props.slider\n\n const renderEdgeValue = (position: \"min\" | \"max\", value: React.ReactNode): React.ReactElement => (\n <span className={`mw-slider-field__edge-value mw-slider-field__edge-value--${position}`}>\n <Text variant=\"caption\">{value}</Text>\n </span>\n )\n\n return (\n <div className={wrapperClass} data-label-position={labelPosition} {...props.dataAttributes}>\n <div className=\"mw-slider-field__header\">\n <div className=\"mw-slider-field__label\" id={labelId}>\n <Text variant=\"label\">{props.label}</Text>\n </div>\n </div>\n\n {hasDescription && (\n <div className=\"mw-slider-field__description\" id={descriptionId}>\n <Text variant=\"caption\">{props.description}</Text>\n </div>\n )}\n\n {labelPosition === \"top\" && showEdgeValues ? (\n <div className=\"mw-slider-field__values-row\">\n {renderEdgeValue(\"min\", minValueLabel)}\n {renderEdgeValue(\"max\", maxValueLabel)}\n </div>\n ) : null}\n\n <div className=\"mw-slider-field__control-row\">\n {labelPosition === \"inline\" && showEdgeValues\n ? renderEdgeValue(\"min\", minValueLabel)\n : null}\n\n <div className=\"mw-slider-field__slider\">\n <Slider\n {...sliderProps}\n id={id}\n ariaLabelledBy={labelId}\n {...(describedBy ? { ariaDescribedBy: describedBy } : {})}\n aria-invalid={hasError ? true : undefined}\n style={{ width: \"100%\", ...(sliderStyle ?? {}) }}\n />\n </div>\n\n {labelPosition === \"inline\" && showEdgeValues\n ? renderEdgeValue(\"max\", maxValueLabel)\n : null}\n </div>\n\n {hasError && (\n <div className=\"mw-slider-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import type * as React from \"react\"\nimport type { SliderProps } from \"./slider\"\nimport { SliderField, type SliderFieldProps } from \"./slider-field\"\n\ntype SliderFieldPurposeProps = Omit<\n SliderFieldProps,\n \"label\" | \"slider\" | \"minValueLabel\" | \"maxValueLabel\"\n> & {\n label?: React.ReactNode\n slider?: SliderProps\n orientation?: SliderProps[\"orientation\"]\n minValueLabel?: React.ReactNode\n maxValueLabel?: React.ReactNode\n}\n\nexport type VolumeSliderProps = SliderFieldPurposeProps\n\nexport function VolumeSlider(props: VolumeSliderProps): React.ReactElement {\n const { orientation, slider, ...fieldProps } = props\n\n return (\n <SliderField\n {...fieldProps}\n label={props.label ?? \"Volume\"}\n minValueLabel={props.minValueLabel ?? \"0\"}\n maxValueLabel={props.maxValueLabel ?? \"100\"}\n slider={{\n min: 0,\n max: 100,\n step: 1,\n showTooltip: true,\n ...(orientation !== undefined ? { orientation } : {}),\n ...slider,\n }}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"volume\",\n }}\n />\n )\n}\n\nexport type BrightnessSliderProps = SliderFieldPurposeProps\n\nexport function BrightnessSlider(props: BrightnessSliderProps): React.ReactElement {\n const { orientation, slider, ...fieldProps } = props\n\n return (\n <SliderField\n {...fieldProps}\n label={props.label ?? \"Brightness\"}\n minValueLabel={props.minValueLabel ?? \"0\"}\n maxValueLabel={props.maxValueLabel ?? \"100\"}\n slider={{\n min: 0,\n max: 100,\n step: 1,\n showTooltip: true,\n ...(orientation !== undefined ? { orientation } : {}),\n ...slider,\n }}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"brightness\",\n }}\n />\n )\n}\n\nexport type RadiusSliderProps = SliderFieldPurposeProps\n\nexport function RadiusSlider(props: RadiusSliderProps): React.ReactElement {\n const { orientation, slider, ...fieldProps } = props\n\n return (\n <SliderField\n {...fieldProps}\n label={props.label ?? \"Radius\"}\n minValueLabel={props.minValueLabel ?? \"0px\"}\n maxValueLabel={props.maxValueLabel ?? \"48px\"}\n slider={{\n min: 0,\n max: 48,\n step: 2,\n showTooltip: true,\n ...(orientation !== undefined ? { orientation } : {}),\n ...slider,\n }}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"radius\",\n }}\n />\n )\n}\n","/**\n * React adapter for Marwes Tab.\n * - Renders a native <button> using the core render kit.\n * - Applies strict a11y fields and modifier classes.\n */\n\nimport { createTabRecipe } from \"@marwes-ui/core\"\nimport type { TabOptions } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport type TabProps = TabOptions & {\n children?: React.ReactNode\n className?: string\n onClick?: React.MouseEventHandler<HTMLButtonElement>\n id?: string\n}\n\nexport function Tab(props: TabProps): React.ReactElement {\n const { children, className, onClick, id, ...coreProps } = props\n const kit = createTabRecipe(coreProps)\n const { a11y } = kit\n\n return (\n <button\n id={id}\n className={[kit.className, className].filter(Boolean).join(\" \")}\n style={Object.keys(kit.vars).length > 0 ? kit.vars : undefined}\n role={a11y.role}\n aria-selected={a11y.ariaSelected}\n aria-disabled={a11y.ariaDisabled}\n aria-label={a11y.ariaLabel}\n aria-controls={a11y.ariaControls}\n tabIndex={a11y.tabIndex}\n disabled={coreProps.disabled}\n onClick={onClick}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n","import {\n type TabGroupItemState,\n buildTabGroupA11yIds,\n moveTabSelection,\n resolveTabValue,\n} from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Paragraph } from \"../paragraph\"\nimport { Text } from \"../text\"\nimport { Tab } from \"./tab\"\n\nexport interface TabGroupItem {\n value: string\n label: React.ReactNode\n panel: React.ReactNode\n disabled?: boolean\n ariaLabel?: string\n}\n\nexport interface TabGroupProps {\n id?: string\n label?: React.ReactNode\n ariaLabel?: string\n tabs: TabGroupItem[]\n activeTab?: string\n defaultActiveTab?: string\n onActiveTabChange?: (value: string) => void\n className?: string\n dataAttributes?: Record<string, string>\n}\n\nexport interface TabPanelProps {\n id: string\n tabId: string\n hidden?: boolean\n className?: string\n children?: React.ReactNode\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nfunction focusTab(tabId: string): void {\n if (typeof document === \"undefined\") {\n return\n }\n\n const tab = document.getElementById(tabId)\n if (tab instanceof HTMLButtonElement) {\n tab.focus()\n }\n}\n\nfunction toItemState(tab: TabGroupItem): TabGroupItemState {\n const itemState: TabGroupItemState = { value: tab.value }\n\n if (tab.disabled) {\n itemState.disabled = true\n }\n\n return itemState\n}\n\nfunction renderPanelContent(children: React.ReactNode): React.ReactNode {\n if (typeof children === \"string\" || typeof children === \"number\") {\n return <Paragraph size=\"md\">{children}</Paragraph>\n }\n\n return children\n}\n\nexport function TabPanel(props: TabPanelProps): React.ReactElement {\n return (\n <div\n id={props.id}\n role=\"tabpanel\"\n aria-labelledby={props.tabId}\n className={cx(\"mw-tab-group__panel\", props.className)}\n hidden={props.hidden}\n tabIndex={props.hidden ? undefined : 0}\n >\n {renderPanelContent(props.children)}\n </div>\n )\n}\n\nexport function TabGroup(props: TabGroupProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-tab-group-${reactId}`\n const hasLabel = hasContent(props.label)\n const itemStates = React.useMemo<TabGroupItemState[]>(\n () => props.tabs.map((tab) => toItemState(tab)),\n [props.tabs],\n )\n const isControlled = props.activeTab !== undefined\n const [internalActiveTab, setInternalActiveTab] = React.useState<string | undefined>(() =>\n resolveTabValue(itemStates, props.defaultActiveTab),\n )\n\n const resolvedActiveTab = React.useMemo(\n () => resolveTabValue(itemStates, isControlled ? props.activeTab : internalActiveTab),\n [internalActiveTab, isControlled, itemStates, props.activeTab],\n )\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalActiveTab((currentValue) =>\n resolveTabValue(itemStates, currentValue ?? props.defaultActiveTab),\n )\n }\n }, [isControlled, itemStates, props.defaultActiveTab])\n\n const a11yIds = React.useMemo(\n () =>\n buildTabGroupA11yIds({\n id,\n itemValues: props.tabs.map((tab) => tab.value),\n hasLabel,\n }),\n [hasLabel, id, props.tabs],\n )\n\n const selectTab = React.useCallback(\n (nextValue: string | undefined) => {\n const resolvedValue = resolveTabValue(itemStates, nextValue)\n\n if (!resolvedValue) {\n return\n }\n\n if (!isControlled) {\n setInternalActiveTab(resolvedValue)\n }\n\n if (resolvedValue !== resolvedActiveTab) {\n props.onActiveTabChange?.(resolvedValue)\n }\n },\n [isControlled, itemStates, props.onActiveTabChange, resolvedActiveTab],\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n let direction: \"next\" | \"previous\" | \"start\" | \"end\" | undefined\n\n switch (event.key) {\n case \"ArrowRight\":\n direction = \"next\"\n break\n case \"ArrowLeft\":\n direction = \"previous\"\n break\n case \"Home\":\n direction = \"start\"\n break\n case \"End\":\n direction = \"end\"\n break\n default:\n return\n }\n\n event.preventDefault()\n\n const nextValue = moveTabSelection(itemStates, resolvedActiveTab, direction)\n if (!nextValue) {\n return\n }\n\n selectTab(nextValue)\n const nextTabId = a11yIds.tabIds[nextValue]\n if (nextTabId) {\n focusTab(nextTabId)\n }\n },\n [a11yIds.tabIds, itemStates, resolvedActiveTab, selectTab],\n )\n\n return (\n <section className={cx(\"mw-tab-group\", props.className)} {...props.dataAttributes}>\n {hasLabel && (\n <div className=\"mw-tab-group__header\">\n <Text variant=\"label\" id={a11yIds.labelId ?? `${id}-label`}>\n {props.label}\n </Text>\n </div>\n )}\n\n <div\n id={a11yIds.tabListId}\n className=\"mw-tab-group__list\"\n role=\"tablist\"\n aria-label={hasLabel ? undefined : (props.ariaLabel ?? \"Tabs\")}\n aria-labelledby={hasLabel ? a11yIds.labelId : undefined}\n onKeyDown={handleKeyDown}\n >\n {props.tabs.map((tab) => {\n const tabId = a11yIds.tabIds[tab.value] ?? `${id}-tab-${tab.value}`\n const panelId = a11yIds.panelIds[tab.value] ?? `${id}-panel-${tab.value}`\n const tabProps: React.ComponentProps<typeof Tab> = {\n id: tabId,\n selected: tab.value === resolvedActiveTab,\n ariaControls: panelId,\n onClick: () => selectTab(tab.value),\n }\n\n if (tab.disabled) {\n tabProps.disabled = true\n }\n\n if (tab.ariaLabel) {\n tabProps.ariaLabel = tab.ariaLabel\n }\n\n return (\n <Tab key={tab.value} {...tabProps}>\n {tab.label}\n </Tab>\n )\n })}\n </div>\n\n <div className=\"mw-tab-group__panels\">\n {props.tabs.map((tab) => {\n const panelId = a11yIds.panelIds[tab.value] ?? `${id}-panel-${tab.value}`\n const tabId = a11yIds.tabIds[tab.value] ?? `${id}-tab-${tab.value}`\n\n return (\n <TabPanel\n key={tab.value}\n id={panelId}\n tabId={tabId}\n hidden={tab.value !== resolvedActiveTab}\n >\n {tab.panel}\n </TabPanel>\n )\n })}\n </div>\n </section>\n )\n}\n","import type * as React from \"react\"\nimport { TabGroup, type TabGroupProps } from \"./tab-group\"\n\nexport type NavigationTabsProps = TabGroupProps\n\nexport function NavigationTabs(props: NavigationTabsProps): React.ReactElement {\n return (\n <TabGroup\n {...props}\n ariaLabel={props.ariaLabel ?? \"Navigation tabs\"}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"navigation-tabs\",\n }}\n />\n )\n}\n\nexport type ContentTabsProps = TabGroupProps\n\nexport function ContentTabs(props: ContentTabsProps): React.ReactElement {\n return (\n <TabGroup\n {...props}\n ariaLabel={props.ariaLabel ?? \"Content tabs\"}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"content-tabs\",\n }}\n />\n )\n}\n\nexport type SettingsTabsProps = TabGroupProps\n\nexport function SettingsTabs(props: SettingsTabsProps): React.ReactElement {\n return (\n <TabGroup\n {...props}\n ariaLabel={props.ariaLabel ?? \"Settings tabs\"}\n dataAttributes={{\n ...props.dataAttributes,\n \"data-purpose\": \"settings-tabs\",\n }}\n />\n )\n}\n","/**\n * React adapter for Marwes SegmentedControl.\n * Single-select segmented toggle using radiogroup semantics.\n */\n\nimport {\n createSegmentedControlItemRecipe,\n createSegmentedControlRecipe,\n moveSegmentedControlSelection,\n resolveSegmentedControlValue,\n} from \"@marwes-ui/core\"\nimport type {\n SegmentedControlItemState,\n SegmentedControlSize,\n SegmentedControlVariant,\n} from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\nexport interface SegmentedControlItem<T extends string = string> {\n value: T\n label?: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n ariaLabel?: string\n}\n\nexport interface SegmentedControlProps<T extends string = string> {\n items: SegmentedControlItem<T>[]\n value?: T\n defaultValue?: T\n onValueChange?: (value: T) => void\n variant?: SegmentedControlVariant\n size?: SegmentedControlSize\n disabled?: boolean\n ariaLabel?: string\n ariaLabelledBy?: string\n ariaDescribedBy?: string\n /** Stretch the control to fill its container. Defaults to inline width. */\n fullWidth?: boolean\n className?: string\n id?: string\n style?: React.CSSProperties\n}\n\nfunction toItemState<T extends string>(item: SegmentedControlItem<T>): SegmentedControlItemState {\n const state: SegmentedControlItemState = { value: item.value }\n if (item.disabled) state.disabled = true\n return state\n}\n\nexport function SegmentedControl<T extends string = string>(\n props: SegmentedControlProps<T>,\n): React.ReactElement {\n const {\n items,\n value: controlledValue,\n defaultValue,\n onValueChange,\n variant,\n size,\n disabled,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n fullWidth,\n className,\n id,\n style,\n } = props\n\n const itemStates = React.useMemo<SegmentedControlItemState[]>(\n () => items.map(toItemState),\n [items],\n )\n\n const isControlled = controlledValue !== undefined\n const [internalValue, setInternalValue] = React.useState<string | undefined>(() =>\n resolveSegmentedControlValue(itemStates, defaultValue),\n )\n\n const resolvedValue = React.useMemo(\n () => resolveSegmentedControlValue(itemStates, isControlled ? controlledValue : internalValue),\n [itemStates, isControlled, controlledValue, internalValue],\n )\n\n const selectItem = React.useCallback(\n (nextValue: string | undefined) => {\n const resolved = resolveSegmentedControlValue(itemStates, nextValue)\n if (!resolved || resolved === resolvedValue) return\n\n if (!isControlled) setInternalValue(resolved)\n // `resolved` always traces back to one of `items[i].value: T`, so this cast is safe.\n onValueChange?.(resolved as T)\n },\n [itemStates, isControlled, resolvedValue, onValueChange],\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n let direction: \"next\" | \"previous\" | \"start\" | \"end\" | undefined\n\n switch (event.key) {\n case \"ArrowRight\":\n direction = \"next\"\n break\n case \"ArrowLeft\":\n direction = \"previous\"\n break\n case \"Home\":\n direction = \"start\"\n break\n case \"End\":\n direction = \"end\"\n break\n default:\n return\n }\n\n event.preventDefault()\n const nextValue = moveSegmentedControlSelection(itemStates, resolvedValue, direction)\n if (nextValue) {\n selectItem(nextValue)\n const btn = event.currentTarget.querySelector<HTMLButtonElement>(\n `[data-value=\"${nextValue}\"]`,\n )\n btn?.focus()\n }\n },\n [itemStates, resolvedValue, selectItem],\n )\n\n const trackKit = createSegmentedControlRecipe({\n value: resolvedValue,\n variant,\n size,\n disabled,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n fullWidth,\n })\n const trackClassName = [trackKit.className, className].filter(Boolean).join(\" \")\n\n return (\n <div\n id={id}\n className={trackClassName}\n role={trackKit.a11y.role}\n aria-label={trackKit.a11y.ariaLabel}\n aria-labelledby={trackKit.a11y.ariaLabelledBy}\n aria-describedby={trackKit.a11y.ariaDescribedBy}\n aria-disabled={trackKit.a11y.ariaDisabled}\n onKeyDown={handleKeyDown}\n style={style}\n >\n {items.map((item) => {\n const isSelected = item.value === resolvedValue\n const isItemDisabled = disabled || item.disabled\n const isIconOnly = item.icon != null && item.label == null\n const itemKit = createSegmentedControlItemRecipe({\n value: item.value,\n selected: isSelected,\n disabled: isItemDisabled,\n ariaLabel: item.ariaLabel,\n iconOnly: isIconOnly,\n })\n\n return (\n <button\n key={item.value}\n type=\"button\"\n className={itemKit.className}\n role={itemKit.a11y.role}\n aria-checked={itemKit.a11y.ariaChecked}\n aria-disabled={itemKit.a11y.ariaDisabled}\n aria-label={itemKit.a11y.ariaLabel}\n tabIndex={itemKit.a11y.tabIndex}\n disabled={isItemDisabled}\n data-value={item.value}\n onClick={() => selectItem(item.value)}\n >\n {item.icon}\n {item.label}\n </button>\n )\n })}\n </div>\n )\n}\n","import { buildInputFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { SegmentedControl } from \"./segmented-control\"\nimport type { SegmentedControlProps } from \"./segmented-control\"\n\nexport type SegmentedControlFieldProps<T extends string = string> = {\n /** Optional: if omitted, a stable id is generated via useId(). */\n id?: string\n /** Field label (required for accessibility). */\n label: React.ReactNode\n /** Optional description text shown below the label. */\n description?: React.ReactNode\n /** Optional error message. */\n error?: React.ReactNode\n /** Props forwarded to the SegmentedControl atom. */\n segmentedControl: Omit<\n SegmentedControlProps<T>,\n \"ariaLabel\" | \"ariaLabelledBy\" | \"ariaDescribedBy\"\n >\n /** Additional aria-describedby IDs to merge with internal description/error IDs. */\n ariaDescribedBy?: string\n className?: string\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n return true\n}\n\n/**\n * SegmentedControlField (Molecule)\n *\n * A labeled wrapper around `SegmentedControl` that:\n * - renders a visible label wired via aria-labelledby\n * - generates a stable id with useId() when one isn't supplied\n * - optionally renders description and error regions\n * - threads aria-describedby to the radiogroup\n */\nexport function SegmentedControlField<T extends string = string>(\n props: SegmentedControlFieldProps<T>,\n): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-segmented-control-${reactId}`\n const labelId = `${id}-label`\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n\n const {\n helperTextId: descriptionId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText: hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const wrapperClass = cx(\n \"mw-segmented-control-field\",\n hasError && \"mw-segmented-control-field--invalid\",\n props.className,\n )\n\n return (\n <div className={wrapperClass}>\n <span className=\"mw-segmented-control-field__label\" id={labelId}>\n <Text variant=\"label\">{props.label}</Text>\n </span>\n\n {hasDescription && !hasError && (\n <div className=\"mw-segmented-control-field__description\" id={descriptionId}>\n <Text variant=\"caption\">{props.description}</Text>\n </div>\n )}\n\n <SegmentedControl\n {...(props.segmentedControl as SegmentedControlProps<T>)}\n ariaLabelledBy={labelId}\n {...(mergedDescribedBy ? { ariaDescribedBy: mergedDescribedBy } : {})}\n />\n\n {hasError && (\n <div className=\"mw-segmented-control-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import {\n IconName,\n clampPaginationPage,\n createPaginationControlRecipe,\n createPaginationEllipsisRecipe,\n createPaginationListItemRecipe,\n createPaginationListRecipe,\n createPaginationPageRecipe,\n createPaginationRecipe,\n resolvePaginationAdaptiveProfile,\n resolvePaginationItemAriaLabel,\n} from \"@marwes-ui/core\"\nimport type {\n IconName as IconNameType,\n PaginationAdaptiveProfile,\n PaginationControlDirection,\n PaginationControlDisplay,\n PaginationGetItemAriaLabel,\n PaginationResolvedControlDisplay,\n} from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"onChange\" | \"children\"> {\n pageCount: number\n page?: number\n defaultPage?: number\n onPageChange?: (page: number) => void\n siblingCount?: number\n boundaryCount?: number\n maxVisibleItems?: number\n controlDisplay?: PaginationControlDisplay\n adaptive?: boolean\n showPrevNext?: boolean\n showFirstLast?: boolean\n disabled?: boolean\n firstLabel?: string\n previousLabel?: string\n nextLabel?: string\n lastLabel?: string\n ariaLabel?: string\n ariaLabelledBy?: string\n ariaDescribedBy?: string\n getItemAriaLabel?: PaginationGetItemAriaLabel\n}\n\nexport function Pagination(props: PaginationProps): React.ReactElement {\n const {\n pageCount,\n page: controlledPage,\n defaultPage,\n onPageChange,\n siblingCount,\n boundaryCount,\n maxVisibleItems,\n controlDisplay = \"auto\",\n adaptive = true,\n showPrevNext,\n showFirstLast,\n disabled,\n firstLabel = \"First\",\n previousLabel = \"Previous\",\n nextLabel = \"Next\",\n lastLabel = \"Last\",\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n getItemAriaLabel,\n className,\n id,\n style,\n ...rest\n } = props\n\n const isControlled = controlledPage !== undefined\n const rootRef = React.useRef<HTMLElement>(null)\n const adaptiveProfile = useAdaptivePaginationProfile(rootRef, {\n adaptive,\n pageCount,\n ...(siblingCount !== undefined ? { siblingCount } : {}),\n ...(boundaryCount !== undefined ? { boundaryCount } : {}),\n ...(maxVisibleItems !== undefined ? { maxVisibleItems } : {}),\n controlDisplay,\n })\n const [internalPage, setInternalPage] = React.useState(() =>\n clampPaginationPage(defaultPage, pageCount),\n )\n const resolvedPage = clampPaginationPage(isControlled ? controlledPage : internalPage, pageCount)\n const resolvedControlDisplay: PaginationResolvedControlDisplay =\n adaptive && adaptiveProfile\n ? adaptiveProfile.controlDisplay\n : controlDisplay === \"icon\"\n ? \"icon\"\n : \"label\"\n const resolvedMaxVisibleItems =\n adaptive && adaptiveProfile ? adaptiveProfile.maxVisibleItems : maxVisibleItems\n const rootKit = createPaginationRecipe({\n page: resolvedPage,\n pageCount,\n ...(siblingCount !== undefined ? { siblingCount } : {}),\n ...(boundaryCount !== undefined ? { boundaryCount } : {}),\n ...(resolvedMaxVisibleItems !== undefined ? { maxVisibleItems: resolvedMaxVisibleItems } : {}),\n controlDisplay: resolvedControlDisplay,\n ...(showPrevNext !== undefined ? { showPrevNext } : {}),\n ...(showFirstLast !== undefined ? { showFirstLast } : {}),\n ...(disabled !== undefined ? { disabled } : {}),\n ...(ariaLabel !== undefined ? { ariaLabel } : {}),\n ...(ariaLabelledBy !== undefined ? { ariaLabelledBy } : {}),\n ...(ariaDescribedBy !== undefined ? { ariaDescribedBy } : {}),\n firstLabel,\n previousLabel,\n nextLabel,\n lastLabel,\n ...(getItemAriaLabel !== undefined ? { getItemAriaLabel } : {}),\n })\n const listKit = createPaginationListRecipe()\n const listItemKit = createPaginationListItemRecipe()\n const rootClassName = [rootKit.className, className].filter(Boolean).join(\" \")\n\n const selectPage = React.useCallback(\n (nextPage: number) => {\n if (disabled) return\n\n const resolved = clampPaginationPage(nextPage, pageCount)\n if (resolved === 0 || resolved === resolvedPage) return\n\n if (!isControlled) setInternalPage(resolved)\n onPageChange?.(resolved)\n },\n [disabled, isControlled, onPageChange, pageCount, resolvedPage],\n )\n\n const previousDisabled = disabled || resolvedPage <= 1\n const nextDisabled = disabled || resolvedPage <= 0 || resolvedPage >= pageCount\n const firstDisabled = disabled || resolvedPage <= 1\n const lastDisabled = disabled || resolvedPage <= 0 || resolvedPage >= pageCount\n\n const firstKit = createPaginationControlRecipe({\n direction: \"first\",\n disabled: firstDisabled,\n label: firstLabel,\n ...(getItemAriaLabel !== undefined\n ? {\n ariaLabel: resolvePaginationItemAriaLabel(getItemAriaLabel, {\n type: \"first\",\n page: 1,\n selected: false,\n }),\n }\n : {}),\n })\n const previousKit = createPaginationControlRecipe({\n direction: \"previous\",\n disabled: previousDisabled,\n label: previousLabel,\n ...(getItemAriaLabel !== undefined\n ? {\n ariaLabel: resolvePaginationItemAriaLabel(getItemAriaLabel, {\n type: \"previous\",\n page: resolvedPage - 1,\n selected: false,\n }),\n }\n : {}),\n })\n const nextKit = createPaginationControlRecipe({\n direction: \"next\",\n disabled: nextDisabled,\n label: nextLabel,\n ...(getItemAriaLabel !== undefined\n ? {\n ariaLabel: resolvePaginationItemAriaLabel(getItemAriaLabel, {\n type: \"next\",\n page: resolvedPage + 1,\n selected: false,\n }),\n }\n : {}),\n })\n const lastKit = createPaginationControlRecipe({\n direction: \"last\",\n disabled: lastDisabled,\n label: lastLabel,\n ...(getItemAriaLabel !== undefined\n ? {\n ariaLabel: resolvePaginationItemAriaLabel(getItemAriaLabel, {\n type: \"last\",\n page: pageCount,\n selected: false,\n }),\n }\n : {}),\n })\n\n const renderControl = (\n direction: PaginationControlDirection,\n kit: typeof firstKit | typeof previousKit | typeof nextKit | typeof lastKit,\n controlDisabled: boolean,\n targetPage: number,\n label: string,\n iconName: IconNameType,\n ) => {\n const isLeadingIcon = direction === \"first\" || direction === \"previous\"\n const icon = (\n <span className=\"mw-pagination__control-icon\">\n <Icon name={iconName} decorative size={12} />\n </span>\n )\n\n return (\n <button\n type=\"button\"\n className={kit.className}\n aria-label={kit.a11y.ariaLabel}\n aria-disabled={kit.a11y.ariaDisabled}\n disabled={controlDisabled}\n onClick={() => selectPage(targetPage)}\n >\n {isLeadingIcon && icon}\n <span className=\"mw-pagination__control-label\">{label}</span>\n {!isLeadingIcon && icon}\n </button>\n )\n }\n\n return (\n <nav\n {...rest}\n ref={rootRef}\n id={id}\n className={rootClassName}\n style={{ ...rootKit.vars, ...style } as React.CSSProperties}\n aria-label={rootKit.a11y.ariaLabel}\n aria-labelledby={rootKit.a11y.ariaLabelledBy}\n aria-describedby={rootKit.a11y.ariaDescribedBy}\n data-component=\"pagination\"\n data-control-display={rootKit.controlDisplay}\n >\n {rootKit.showFirstLast &&\n renderControl(\"first\", firstKit, firstDisabled, 1, firstLabel, IconName.ChevronsLeft)}\n {rootKit.showPrevNext &&\n renderControl(\n \"previous\",\n previousKit,\n previousDisabled,\n resolvedPage - 1,\n previousLabel,\n IconName.ChevronLeft,\n )}\n <ul className={listKit.className} role={listKit.a11y.role}>\n {rootKit.items.map((item) => {\n if (item.type !== \"page\") {\n const ellipsisKit = createPaginationEllipsisRecipe()\n\n return (\n <li key={item.key} className={listItemKit.className}>\n <span className={ellipsisKit.className} aria-hidden={ellipsisKit.a11y.ariaHidden}>\n ...\n </span>\n </li>\n )\n }\n\n const pageKit = createPaginationPageRecipe({\n page: item.page,\n selected: item.selected,\n ...(disabled !== undefined ? { disabled } : {}),\n ...(getItemAriaLabel !== undefined\n ? {\n ariaLabel: resolvePaginationItemAriaLabel(getItemAriaLabel, {\n type: \"page\",\n page: item.page,\n selected: item.selected,\n }),\n }\n : {}),\n })\n\n return (\n <li key={item.key} className={listItemKit.className}>\n <button\n type=\"button\"\n className={pageKit.className}\n aria-label={pageKit.a11y.ariaLabel}\n aria-current={pageKit.a11y.ariaCurrent}\n aria-disabled={pageKit.a11y.ariaDisabled}\n disabled={disabled}\n onClick={() => selectPage(item.page)}\n >\n {item.page}\n </button>\n </li>\n )\n })}\n </ul>\n {rootKit.showPrevNext &&\n renderControl(\n \"next\",\n nextKit,\n nextDisabled,\n resolvedPage + 1,\n nextLabel,\n IconName.ChevronRight,\n )}\n {rootKit.showFirstLast &&\n renderControl(\"last\", lastKit, lastDisabled, pageCount, lastLabel, IconName.ChevronsRight)}\n </nav>\n )\n}\n\nfunction parsePxValue(value: string, fallback: number): number {\n const parsed = Number.parseFloat(value)\n return Number.isFinite(parsed) ? parsed : fallback\n}\n\ninterface AdaptivePaginationProfileOptions {\n adaptive: boolean\n pageCount: number\n siblingCount?: number\n boundaryCount?: number\n maxVisibleItems?: number\n controlDisplay: PaginationControlDisplay\n}\n\nfunction resolveControlWidths(\n controls: HTMLElement[],\n itemSize: number,\n): { labelControlWidth: number; iconControlWidth: number } {\n const labelControlWidth = controls.reduce((total, control) => {\n const icon = control.querySelector<HTMLElement>(\".mw-pagination__control-icon\")\n const label = control.querySelector<HTMLElement>(\".mw-pagination__control-label\")\n const iconWidth = icon?.getBoundingClientRect().width ?? 0\n const labelWidth = label?.scrollWidth ?? label?.getBoundingClientRect().width ?? 0\n const labelGap = iconWidth > 0 && labelWidth > 0 ? 4 : 0\n const measuredLabelWidth = iconWidth + labelGap + labelWidth\n\n return total + Math.max(control.getBoundingClientRect().width, measuredLabelWidth)\n }, 0)\n\n return {\n labelControlWidth,\n iconControlWidth: controls.length * itemSize,\n }\n}\n\nfunction useAdaptivePaginationProfile(\n rootRef: React.RefObject<HTMLElement | null>,\n opts: AdaptivePaginationProfileOptions,\n): PaginationAdaptiveProfile | undefined {\n const [profile, setProfile] = React.useState<PaginationAdaptiveProfile | undefined>(undefined)\n\n React.useLayoutEffect(() => {\n const root = rootRef.current\n if (!opts.adaptive || !root || typeof window === \"undefined\") {\n setProfile(undefined)\n return\n }\n\n const parent = root.parentElement\n if (!parent) return\n\n let frame = 0\n const measure = () => {\n window.cancelAnimationFrame(frame)\n frame = window.requestAnimationFrame(() => {\n const rootStyles = window.getComputedStyle(root)\n const parentStyles = window.getComputedStyle(parent)\n const itemSize = parsePxValue(rootStyles.getPropertyValue(\"--mw-pagination-size\"), 32)\n const itemGap = parsePxValue(rootStyles.getPropertyValue(\"--mw-pagination-gap\"), 2)\n const sectionGap = parsePxValue(\n rootStyles.getPropertyValue(\"--mw-pagination-section-gap\"),\n 12,\n )\n const parentWidth =\n parent.getBoundingClientRect().width -\n parsePxValue(parentStyles.paddingLeft, 0) -\n parsePxValue(parentStyles.paddingRight, 0)\n if (parentWidth <= 0) {\n setProfile(undefined)\n return\n }\n const controls = Array.from(root.querySelectorAll<HTMLElement>(\".mw-pagination__control\"))\n const { labelControlWidth, iconControlWidth } = resolveControlWidths(controls, itemSize)\n const nextProfile = resolvePaginationAdaptiveProfile({\n containerWidth: parentWidth,\n labelControlWidth,\n iconControlWidth,\n controlCount: controls.length,\n itemSize,\n itemGap,\n sectionGap,\n pageCount: opts.pageCount,\n ...(opts.siblingCount !== undefined ? { siblingCount: opts.siblingCount } : {}),\n ...(opts.boundaryCount !== undefined ? { boundaryCount: opts.boundaryCount } : {}),\n ...(opts.maxVisibleItems !== undefined ? { maxVisibleItems: opts.maxVisibleItems } : {}),\n controlDisplay: opts.controlDisplay,\n })\n\n setProfile((previous) =>\n previous?.controlDisplay === nextProfile.controlDisplay &&\n previous?.maxVisibleItems === nextProfile.maxVisibleItems &&\n previous?.reservedItemCount === nextProfile.reservedItemCount\n ? previous\n : nextProfile,\n )\n })\n }\n\n measure()\n\n const Observer = window.ResizeObserver\n const resizeObserver = Observer ? new Observer(measure) : undefined\n resizeObserver?.observe(parent)\n resizeObserver?.observe(root)\n window.addEventListener(\"resize\", measure)\n\n return () => {\n window.cancelAnimationFrame(frame)\n resizeObserver?.disconnect()\n window.removeEventListener(\"resize\", measure)\n }\n }, [\n opts.adaptive,\n opts.boundaryCount,\n opts.controlDisplay,\n opts.maxVisibleItems,\n opts.pageCount,\n opts.siblingCount,\n rootRef,\n ])\n\n return profile\n}\n","import { buildInputFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { Pagination } from \"./pagination\"\nimport type { PaginationProps } from \"./pagination\"\n\nexport type PaginationFieldProps = {\n /** Optional: if omitted, a stable id is generated via useId(). */\n id?: string\n /** Field label (required for accessibility). */\n label: React.ReactNode\n /** Optional description text shown below the label. */\n description?: React.ReactNode\n /** Optional error message. */\n error?: React.ReactNode\n /** Props forwarded to the Pagination atom. */\n pagination: Omit<PaginationProps, \"ariaLabel\" | \"ariaLabelledBy\" | \"ariaDescribedBy\">\n /** Additional aria-describedby IDs to merge with internal description/error IDs. */\n ariaDescribedBy?: string\n className?: string\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n return true\n}\n\n/**\n * PaginationField (Molecule)\n *\n * A labeled wrapper around `Pagination` that:\n * - renders a visible label wired via aria-labelledby\n * - generates a stable id with useId() when one isn't supplied\n * - optionally renders description and error regions\n * - threads aria-describedby to the pagination nav\n */\nexport function PaginationField(props: PaginationFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-pagination-${reactId}`\n const labelId = `${id}-label`\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n\n const {\n helperTextId: descriptionId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildInputFieldA11yIds({\n id,\n hasHelperText: hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const wrapperClass = cx(\n \"mw-pagination-field\",\n hasError && \"mw-pagination-field--invalid\",\n props.className,\n )\n\n return (\n <div className={wrapperClass}>\n <span className=\"mw-pagination-field__label\" id={labelId}>\n <Text variant=\"label\">{props.label}</Text>\n </span>\n\n {hasDescription && !hasError && (\n <div className=\"mw-pagination-field__description\" id={descriptionId}>\n <Text variant=\"caption\">{props.description}</Text>\n </div>\n )}\n\n <Pagination\n {...props.pagination}\n ariaLabelledBy={labelId}\n {...(mergedDescribedBy ? { ariaDescribedBy: mergedDescribedBy } : {})}\n />\n\n {hasError && (\n <div className=\"mw-pagination-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","/**\n * React adapter for Marwes SkipLink.\n * Visually hidden anchor that becomes visible on focus, lets keyboard\n * users jump to a target landmark (typically <main>).\n */\n\nimport { createSkipLinkRecipe } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\n\nexport interface SkipLinkProps {\n /** Anchor href, typically a fragment like \"#main\". */\n href: string\n children: React.ReactNode\n className?: string\n}\n\nexport function SkipLink(props: SkipLinkProps): React.ReactElement {\n const { href, children, className } = props\n const kit = createSkipLinkRecipe({ href, className })\n\n return (\n <a href={href} className={kit.className}>\n {children}\n </a>\n )\n}\n","import { type DialogOptions, IconName, createDialogRecipe } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Icon } from \"../icon\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\nexport interface DialogProps extends DialogOptions {\n id?: string\n title?: React.ReactNode\n description?: React.ReactNode\n footer?: React.ReactNode\n children?: React.ReactNode\n onClose?: () => void\n className?: string\n dataAttributes?: Record<string, string>\n}\n\nexport function Dialog(props: DialogProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-dialog-${reactId}`\n const titleId = `${id}-title`\n const descriptionId = `${id}-description`\n const hasTitle = hasContent(props.title)\n const hasDescription = hasContent(props.description)\n const hasFooter = hasContent(props.footer) && (props.showFooter ?? true)\n const dismissible = (props.dismissible ?? true) && props.onClose !== undefined\n const dialogOptions: DialogOptions = {\n showFooter: hasFooter,\n dismissible,\n ...(props.modal !== undefined ? { modal: props.modal } : {}),\n }\n\n if (props.dataAttributes) {\n dialogOptions.dataAttributes = props.dataAttributes\n }\n\n if (props.size) {\n dialogOptions.size = props.size\n }\n\n if (props.ariaLabel) {\n dialogOptions.ariaLabel = props.ariaLabel\n }\n\n if (props.ariaLabelledBy) {\n dialogOptions.ariaLabelledBy = props.ariaLabelledBy\n } else if (props.ariaLabel === undefined && hasTitle) {\n dialogOptions.ariaLabelledBy = titleId\n }\n\n if (props.ariaDescribedBy) {\n dialogOptions.ariaDescribedBy = props.ariaDescribedBy\n } else if (hasDescription) {\n dialogOptions.ariaDescribedBy = descriptionId\n }\n\n const kit = createDialogRecipe(dialogOptions)\n\n return (\n <section\n id={id}\n className={cx(kit.className, props.className)}\n role={kit.a11y.role}\n {...(kit.a11y.ariaModal ? { \"aria-modal\": \"true\" } : {})}\n {...(kit.a11y.ariaLabel ? { \"aria-label\": kit.a11y.ariaLabel } : {})}\n {...(kit.a11y.ariaLabelledBy ? { \"aria-labelledby\": kit.a11y.ariaLabelledBy } : {})}\n {...(kit.a11y.ariaDescribedBy ? { \"aria-describedby\": kit.a11y.ariaDescribedBy } : {})}\n tabIndex={-1}\n {...kit.dataAttributes}\n >\n {(hasTitle || kit.showCloseButton) && (\n <>\n <header className=\"mw-dialog__header\">\n {hasTitle ? (\n <div className=\"mw-dialog__heading-group\">\n <h2 className=\"mw-dialog__title\" id={titleId}>\n {props.title}\n </h2>\n </div>\n ) : (\n <span className=\"mw-dialog__spacer\" aria-hidden=\"true\" />\n )}\n\n {kit.showCloseButton && props.onClose && (\n <button\n type=\"button\"\n className=\"mw-dialog__close\"\n aria-label=\"Close dialog\"\n onClick={props.onClose}\n >\n <Icon name={IconName.X} decorative />\n </button>\n )}\n </header>\n <div className=\"mw-dialog__header-divider\" aria-hidden=\"true\" />\n </>\n )}\n\n <div className=\"mw-dialog__content\">\n {hasDescription && (\n <p className=\"mw-dialog__description\" id={descriptionId}>\n {props.description}\n </p>\n )}\n {props.children}\n </div>\n\n {hasFooter && (\n <>\n <div className=\"mw-dialog__footer-divider\" aria-hidden=\"true\" />\n <footer className=\"mw-dialog__footer\">{props.footer}</footer>\n </>\n )}\n </section>\n )\n}\n","import * as React from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { MarwesContext } from \"../../provider/marwes-context\"\nimport { Dialog, type DialogProps } from \"./dialog\"\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction getFocusableElements(container: HTMLElement | null): HTMLElement[] {\n if (!container) {\n return []\n }\n\n return Array.from(\n container.querySelectorAll<HTMLElement>(\n [\n \"button:not([disabled])\",\n \"[href]\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"[tabindex]:not([tabindex='-1'])\",\n ].join(\",\"),\n ),\n ).filter(\n (element) => !element.hasAttribute(\"hidden\") && element.getAttribute(\"aria-hidden\") !== \"true\",\n )\n}\n\nfunction focusFirstElement(container: HTMLElement | null): void {\n const focusableElements = getFocusableElements(container)\n const firstFocusable = focusableElements[0]\n\n if (firstFocusable) {\n firstFocusable.focus()\n return\n }\n\n container?.focus()\n}\n\nexport interface DialogFooterControls {\n close: () => void\n}\n\nexport type DialogModalTone = \"default\" | \"calm\"\nexport type DialogModalDivider = \"visible\" | \"hidden\"\n\nexport interface DialogModalProps extends Omit<DialogProps, \"footer\" | \"onClose\"> {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n closeOnEscape?: boolean\n closeOnScrimClick?: boolean\n restoreFocus?: boolean\n portalTarget?: HTMLElement | null\n overlayClassName?: string\n surfaceWidth?: string | number\n tone?: DialogModalTone\n divider?: DialogModalDivider\n footer?: React.ReactNode | ((controls: DialogFooterControls) => React.ReactNode)\n}\n\ntype DialogModalStyle = React.CSSProperties & {\n \"--mw-dialog-surface-width\"?: string\n}\n\nfunction toCSSDimension(value: string | number): string {\n return typeof value === \"number\" ? `${value}px` : value\n}\n\nexport function DialogModal(props: DialogModalProps): React.ReactElement | null {\n const {\n open,\n defaultOpen = false,\n onOpenChange,\n closeOnEscape = true,\n closeOnScrimClick = true,\n restoreFocus = true,\n portalTarget,\n overlayClassName,\n surfaceWidth,\n tone = \"default\",\n divider = \"visible\",\n footer,\n ...dialogProps\n } = props\n const isControlled = open !== undefined\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const resolvedOpen = isControlled ? open : internalOpen\n const marwesContext = React.useContext(MarwesContext)\n const overlayRef = React.useRef<HTMLDivElement>(null)\n const surfaceRef = React.useRef<HTMLDivElement>(null)\n const lastFocusedElementRef = React.useRef<HTMLElement | null>(null)\n\n const close = React.useCallback(() => {\n if (!resolvedOpen) {\n return\n }\n\n if (!isControlled) {\n setInternalOpen(false)\n }\n\n onOpenChange?.(false)\n }, [isControlled, onOpenChange, resolvedOpen])\n\n React.useEffect(() => {\n if (!resolvedOpen || typeof document === \"undefined\") {\n return\n }\n\n const previousOverflow = document.body.style.overflow\n lastFocusedElementRef.current =\n document.activeElement instanceof HTMLElement ? document.activeElement : null\n document.body.style.overflow = \"hidden\"\n\n const frameId = window.requestAnimationFrame(() => {\n const dialogElement = overlayRef.current?.querySelector<HTMLElement>(\".mw-dialog\") ?? null\n focusFirstElement(dialogElement)\n })\n\n return () => {\n window.cancelAnimationFrame(frameId)\n document.body.style.overflow = previousOverflow\n\n if (restoreFocus) {\n lastFocusedElementRef.current?.focus()\n }\n }\n }, [resolvedOpen, restoreFocus])\n\n React.useEffect(() => {\n if (!resolvedOpen || !closeOnEscape || typeof document === \"undefined\") {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault()\n close()\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [close, closeOnEscape, resolvedOpen])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\" && closeOnEscape) {\n event.preventDefault()\n event.stopPropagation()\n close()\n return\n }\n\n if (event.key !== \"Tab\") {\n return\n }\n\n const dialogElement = overlayRef.current?.querySelector<HTMLElement>(\".mw-dialog\") ?? null\n const focusableElements = getFocusableElements(dialogElement)\n\n if (focusableElements.length === 0) {\n event.preventDefault()\n dialogElement?.focus()\n return\n }\n\n const firstFocusable = focusableElements[0]\n const lastFocusable = focusableElements[focusableElements.length - 1]\n const activeElement = document.activeElement\n\n if (event.shiftKey && activeElement === firstFocusable) {\n event.preventDefault()\n lastFocusable?.focus()\n } else if (!event.shiftKey && activeElement === lastFocusable) {\n event.preventDefault()\n firstFocusable?.focus()\n }\n },\n [close, closeOnEscape],\n )\n\n const renderedFooter = React.useMemo(\n () => (typeof footer === \"function\" ? footer({ close }) : footer),\n [close, footer],\n )\n\n if (!resolvedOpen || typeof document === \"undefined\") {\n return null\n }\n\n const modalStyle: DialogModalStyle | undefined =\n surfaceWidth === undefined\n ? undefined\n : { \"--mw-dialog-surface-width\": toCSSDimension(surfaceWidth) }\n\n const modalMarkup = (\n <div\n ref={overlayRef}\n className={cx(\"mw-dialog-modal\", overlayClassName)}\n style={modalStyle}\n data-surface-width={surfaceWidth === undefined ? undefined : \"custom\"}\n data-tone={tone}\n data-divider={divider}\n onClick={(event) => {\n if (!closeOnScrimClick) {\n return\n }\n\n const clickTarget = event.target\n\n if (!(clickTarget instanceof Node)) {\n return\n }\n\n if (surfaceRef.current?.contains(clickTarget)) {\n return\n }\n\n close()\n }}\n onKeyDown={handleKeyDown}\n >\n <div className=\"mw-dialog-modal__scrim\" aria-hidden=\"true\" />\n <div ref={surfaceRef} className=\"mw-dialog-modal__surface\">\n <Dialog {...dialogProps} modal footer={renderedFooter} onClose={close} />\n </div>\n </div>\n )\n\n if (portalTarget === null) {\n return modalMarkup\n }\n\n const resolvedTarget = portalTarget ?? marwesContext?.providerElement ?? document.body\n return createPortal(modalMarkup, resolvedTarget)\n}\n","import { createPurposeSemanticAttributes } from \"@marwes-ui/core\"\nimport type * as React from \"react\"\nimport { CancelButton, ConfirmButton, DestructiveButton } from \"../button\"\nimport { DialogModal, type DialogModalProps } from \"./dialog-modal\"\n\nexport type ConfirmDialogProps = Omit<DialogModalProps, \"footer\"> & {\n confirmLabel?: React.ReactNode\n cancelLabel?: React.ReactNode\n onConfirm?: () => void\n onCancel?: () => void\n}\n\nexport function ConfirmDialog(props: ConfirmDialogProps): React.ReactElement {\n const {\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onCancel,\n dataAttributes,\n ...dialogProps\n } = props\n\n return (\n <DialogModal\n {...dialogProps}\n dataAttributes={{\n ...dataAttributes,\n ...createPurposeSemanticAttributes(\"confirm-dialog\"),\n }}\n footer={({ close }) => (\n <>\n <CancelButton\n onClick={() => {\n onCancel?.()\n close()\n }}\n >\n {cancelLabel}\n </CancelButton>\n <ConfirmButton\n onClick={() => {\n onConfirm?.()\n close()\n }}\n >\n {confirmLabel}\n </ConfirmButton>\n </>\n )}\n />\n )\n}\n\nexport type DestructiveDialogProps = Omit<DialogModalProps, \"footer\"> & {\n confirmLabel?: React.ReactNode\n cancelLabel?: React.ReactNode\n onConfirm?: () => void\n onCancel?: () => void\n}\n\nexport function DestructiveDialog(props: DestructiveDialogProps): React.ReactElement {\n const {\n confirmLabel = \"Delete\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onCancel,\n dataAttributes,\n ...dialogProps\n } = props\n\n return (\n <DialogModal\n {...dialogProps}\n dataAttributes={{\n ...dataAttributes,\n ...createPurposeSemanticAttributes(\"destructive-dialog\"),\n }}\n footer={({ close }) => (\n <>\n <CancelButton\n onClick={() => {\n onCancel?.()\n close()\n }}\n >\n {cancelLabel}\n </CancelButton>\n <DestructiveButton\n onClick={() => {\n onConfirm?.()\n close()\n }}\n >\n {confirmLabel}\n </DestructiveButton>\n </>\n )}\n />\n )\n}\n\nexport type InfoDialogProps = Omit<DialogModalProps, \"footer\"> & {\n acknowledgeLabel?: React.ReactNode\n onAcknowledge?: () => void\n}\n\nexport function InfoDialog(props: InfoDialogProps): React.ReactElement {\n const { acknowledgeLabel = \"Okay\", onAcknowledge, dataAttributes, ...dialogProps } = props\n\n return (\n <DialogModal\n {...dialogProps}\n dataAttributes={{\n ...dataAttributes,\n ...createPurposeSemanticAttributes(\"info-dialog\"),\n }}\n footer={({ close }) => (\n <ConfirmButton\n onClick={() => {\n onAcknowledge?.()\n close()\n }}\n >\n {acknowledgeLabel}\n </ConfirmButton>\n )}\n />\n )\n}\n","/**\n * React adapter for Marwes Checkbox.\n * - Renders a native <input type=\"checkbox\"> using the core render kit.\n * - Applies strict a11y fields and CSS vars.\n * - Sets `indeterminate` via DOM property (not an HTML attribute).\n */\n\nimport { checkboxRecipe } from \"@marwes-ui/core\"\nimport type { CheckboxProps as CoreCheckboxProps } from \"@marwes-ui/core\"\nimport * as React from \"react\"\n\nexport type CheckboxProps = CoreCheckboxProps & {\n /**\n * Called with the next checked value when the user toggles the checkbox.\n * For indeterminate state: browser toggling typically results in `checked=true` and `indeterminate=false`\n * unless you keep controlling it.\n */\n onCheckedChange?: (checked: boolean) => void\n\n /**\n * Escape hatch for consumers that want raw event access.\n * (Optional – keep if you want parity with other components.)\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n}\n\n/**\n * Checkbox (Atom)\n *\n * Low-level checkbox control built on a native `<input type=\"checkbox\">`.\n * Use this when you need custom layout or when the label/description is handled\n * elsewhere (e.g. inside a list item, table row, or custom field wrapper).\n *\n * For most forms, prefer `CheckboxField`, which composes `Checkbox` with\n * label/description/error wiring and consistent spacing.\n *\n * Accessibility\n * - Provide **either** `ariaLabel` **or** `ariaLabelledBy` (or use `CheckboxField` which wires a `<label>`).\n * - Use `ariaDescribedBy` to connect supporting text (help/error).\n * - `indeterminate` is applied via a DOM property, not an HTML attribute.\n *\n * @example Basic (uncontrolled)\n * ```tsx\n * <Checkbox ariaLabel=\"Subscribe to updates\" defaultChecked />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [checked, setChecked] = React.useState(false);\n *\n * <Checkbox\n * ariaLabel=\"Accept terms\"\n * checked={checked}\n * onCheckedChange={setChecked}\n * />\n * ```\n *\n * @example Indeterminate (mixed)\n * ```tsx\n * const [checked, setChecked] = React.useState(false);\n * const [mixed, setMixed] = React.useState(true);\n *\n * <Checkbox\n * ariaLabel=\"Select all\"\n * checked={checked}\n * indeterminate={mixed}\n * onCheckedChange={(next) => {\n * setMixed(false); // first interaction clears mixed state\n * setChecked(next);\n * }}\n * />\n * ```\n *\n * @example With external label + description\n * ```tsx\n * const id = \"terms\";\n * const descId = \"terms-desc\";\n *\n * <>\n * <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n * <Checkbox id={id} ariaDescribedBy={descId} />\n * <label htmlFor={id}>I accept the terms</label>\n * </div>\n * <div id={descId}>Required to continue.</div>\n * </>\n * ```\n */\n\nexport function Checkbox(props: CheckboxProps): React.ReactElement {\n const { onCheckedChange, onChange, ...coreProps } = props\n\n const kit = checkboxRecipe({ ...coreProps })\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n // Keep DOM property in sync.\n React.useLayoutEffect(() => {\n const el = inputRef.current\n if (!el) return\n el.indeterminate = kit.indeterminate\n }, [kit.indeterminate])\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n onChange?.(e)\n onCheckedChange?.(e.currentTarget.checked)\n }\n\n const { a11y } = kit\n\n return (\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={kit.className}\n style={kit.vars}\n id={a11y.id}\n name={a11y.name}\n value={a11y.value}\n disabled={a11y.disabled === true}\n required={a11y.required === true}\n aria-label={a11y.ariaLabel}\n aria-labelledby={a11y.ariaLabelledBy}\n aria-describedby={a11y.ariaDescribedBy}\n aria-checked={a11y.ariaChecked}\n aria-invalid={a11y.ariaInvalid === true ? true : undefined}\n checked={kit.checked}\n defaultChecked={kit.defaultChecked}\n onChange={handleChange}\n />\n )\n}\n","import { buildCheckboxFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { Checkbox } from \"./checkbox\"\nimport type { CheckboxProps } from \"./checkbox\"\n\nexport type CheckboxFieldProps = {\n /** Optional: if omitted, we generate one via useId(). */\n id?: string\n\n /** Field content (rendered by adapter). */\n label: React.ReactNode\n description?: React.ReactNode\n error?: React.ReactNode\n\n /** Props forwarded to the Checkbox atom. */\n checkbox: CheckboxProps\n\n /** Additional aria-describedby IDs to merge with internal description/error IDs. */\n ariaDescribedBy?: string\n}\n\nfunction cx(...parts: Array<string | false>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) {\n return false\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0\n }\n\n return true\n}\n\n/**\n * CheckboxField (Molecule) — Recommended\n *\n * A convenient, accessible wrapper around `Checkbox` that provides:\n * - a clickable `<label>` wired via `htmlFor`/`id`\n * - optional `description` and `error` regions\n * - automatic `aria-describedby` wiring (description + error + any external ids)\n * - automatic invalid state when `error` is present\n *\n * Use `CheckboxField` for most forms. Use `Checkbox` directly only when you need\n * a highly custom layout (tables, list rows, compound list items, etc.).\n *\n * Accessibility\n * - Generates a stable `id` via `useId()` when `id` is not provided.\n * - Always renders a real `<label>` element connected to the checkbox control.\n * - When `description` and/or `error` are present, it sets `aria-describedby`\n * on the checkbox to reference their ids.\n * - When `error` is present, the checkbox is marked invalid (aria-invalid via core).\n *\n * @example Minimal (recommended)\n * ```tsx\n * <CheckboxField\n * label=\"Subscribe to updates\"\n * checkbox={{ defaultChecked: true }}\n * />\n * ```\n *\n * @example With description\n * ```tsx\n * <CheckboxField\n * label=\"Subscribe to updates\"\n * description=\"We'll only email you about important product changes.\"\n * checkbox={{}}\n * />\n * ```\n *\n * @example With error (invalid state)\n * ```tsx\n * <CheckboxField\n * label=\"Accept terms\"\n * error=\"You must accept the terms to continue.\"\n * checkbox={{ required: true }}\n * />\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [checked, setChecked] = React.useState(false);\n *\n * <CheckboxField\n * label=\"Accept terms\"\n * checkbox={{\n * checked,\n * onCheckedChange: setChecked,\n * }}\n * />\n * ```\n *\n * @example Indeterminate (mixed)\n * ```tsx\n * const [checked, setChecked] = React.useState(false);\n * const [mixed, setMixed] = React.useState(true);\n *\n * <CheckboxField\n * label=\"Select all\"\n * description=\"Applies to all items in the current view.\"\n * checkbox={{\n * checked,\n * indeterminate: mixed,\n * onCheckedChange: (next) => {\n * setMixed(false);\n * setChecked(next);\n * },\n * }}\n * />\n * ```\n *\n * @example Custom describedBy (merge with internal description/error)\n * ```tsx\n * <CheckboxField\n * ariaDescribedBy=\"my-extra-help\"\n * label=\"Enable telemetry\"\n * description=\"Helps us improve the product.\"\n * checkbox={{}}\n * />\n *\n * <div id=\"my-extra-help\">This setting can be changed later.</div>\n * ```\n */\n\nexport function CheckboxField(props: CheckboxFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-checkbox-${reactId}`\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n\n const {\n descriptionId: descId,\n errorId,\n describedBy: mergedDescribedBy,\n } = buildCheckboxFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const disabled = props.checkbox.disabled || false\n const invalid = hasError || props.checkbox.invalid || false\n\n const wrapperClass = cx(\n \"mw-checkbox-field\",\n disabled && \"mw-checkbox-field--disabled\",\n invalid && \"mw-checkbox-field--invalid\",\n )\n\n // Prepare checkbox props with proper ariaDescribedBy merging\n const checkboxProps: CheckboxProps = {\n ...props.checkbox,\n id,\n invalid,\n }\n\n if (mergedDescribedBy) {\n checkboxProps.ariaDescribedBy = mergedDescribedBy\n }\n\n return (\n <div className={wrapperClass}>\n <div className=\"mw-checkbox-field__row\">\n <Checkbox {...checkboxProps} />\n\n <label className=\"mw-checkbox-field__label\" htmlFor={id}>\n <Text variant=\"label\">{props.label}</Text>\n </label>\n </div>\n\n {hasDescription && (\n <div className=\"mw-checkbox-field__description\" id={descId}>\n <Text variant=\"caption\">{props.description}</Text>\n </div>\n )}\n\n {hasError && (\n <div className=\"mw-checkbox-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </div>\n )\n}\n","import { buildCheckboxGroupFieldA11yIds } from \"@marwes-ui/core\"\nimport * as React from \"react\"\nimport { Text } from \"../text\"\nimport { Checkbox, type CheckboxProps } from \"./checkbox\"\n\nexport interface CheckboxGroupFieldOption {\n value: string\n label: React.ReactNode\n description?: React.ReactNode\n disabled?: boolean\n indeterminate?: boolean\n}\n\nexport type CheckboxGroupFieldCheckboxProps = Omit<\n CheckboxProps,\n | \"ariaDescribedBy\"\n | \"ariaLabel\"\n | \"ariaLabelledBy\"\n | \"checked\"\n | \"defaultChecked\"\n | \"disabled\"\n | \"id\"\n | \"indeterminate\"\n | \"invalid\"\n | \"name\"\n | \"onChange\"\n | \"onCheckedChange\"\n | \"required\"\n | \"value\"\n>\n\nexport interface CheckboxGroupFieldProps {\n label: React.ReactNode\n options: CheckboxGroupFieldOption[]\n description?: React.ReactNode\n error?: React.ReactNode\n value?: string[]\n onChange?: (value: string[]) => void\n defaultValue?: string[]\n checkbox?: CheckboxGroupFieldCheckboxProps\n disabled?: boolean\n required?: boolean\n name?: string\n id?: string\n ariaDescribedBy?: string\n dataAttributes?: Record<string, string>\n}\n\nfunction hasContent(value: React.ReactNode | undefined): boolean {\n if (value === undefined || value === null || value === false) return false\n if (typeof value === \"string\") return value.trim().length > 0\n return true\n}\n\nfunction cx(...parts: Array<string | false | undefined>): string {\n return parts.filter(Boolean).join(\" \")\n}\n\nfunction orderSelectedValues(values: string[], options: CheckboxGroupFieldOption[]): string[] {\n const optionValues = new Set(options.map((option) => option.value))\n const selectedValues = new Set(values)\n const knownValues = options\n .map((option) => option.value)\n .filter((value) => selectedValues.has(value))\n const unknownValues = values.filter((value) => !optionValues.has(value))\n return [...knownValues, ...unknownValues]\n}\n\nexport function CheckboxGroupField(props: CheckboxGroupFieldProps): React.ReactElement {\n const reactId = React.useId()\n const id = props.id ?? `mw-checkbox-group-${reactId}`\n\n const hasDescription = hasContent(props.description)\n const hasError = hasContent(props.error)\n const isInvalid = hasError\n\n const { labelId, descriptionId, errorId, describedBy } = buildCheckboxGroupFieldA11yIds({\n id,\n hasDescription,\n hasError,\n externalDescribedBy: props.ariaDescribedBy,\n })\n\n const isControlled = props.value !== undefined\n const [internalValue, setInternalValue] = React.useState<string[]>(\n orderSelectedValues(props.defaultValue ?? [], props.options),\n )\n const selectedValues = orderSelectedValues(\n isControlled ? (props.value ?? []) : internalValue,\n props.options,\n )\n const selectedValueSet = new Set(selectedValues)\n\n const handleToggle = (nextValue: string): void => {\n const rawNextValue = selectedValueSet.has(nextValue)\n ? selectedValues.filter((value) => value !== nextValue)\n : [...selectedValues, nextValue]\n const orderedNextValue = orderSelectedValues(rawNextValue, props.options)\n\n if (!isControlled) {\n setInternalValue(orderedNextValue)\n }\n\n props.onChange?.(orderedNextValue)\n }\n\n const wrapperClass = cx(\n \"mw-checkbox-group-field\",\n props.disabled && \"mw-checkbox-group-field--disabled\",\n isInvalid && \"mw-checkbox-group-field--invalid\",\n )\n\n return (\n <fieldset\n className={wrapperClass}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n aria-invalid={isInvalid ? true : undefined}\n aria-required={props.required ? true : undefined}\n disabled={props.disabled ? true : undefined}\n {...props.dataAttributes}\n >\n <legend className=\"mw-checkbox-group-field__label\" id={labelId}>\n <Text variant=\"label\">{props.label}</Text>\n </legend>\n\n {hasDescription && (\n <div className=\"mw-checkbox-group-field__description\" id={descriptionId}>\n <Text variant=\"caption\">{props.description}</Text>\n </div>\n )}\n\n <div className=\"mw-checkbox-group-field__options\">\n {props.options.map((option, index) => {\n const optionId = `${id}-option-${index}`\n const optionLabelId = `${optionId}-label`\n const optionDescriptionId = `${optionId}-description`\n const hasOptionDescription = hasContent(option.description)\n const isOptionDisabled = props.disabled || option.disabled || false\n const checkboxProps: CheckboxProps = {\n ...(props.checkbox ?? {}),\n id: optionId,\n value: option.value,\n ariaLabelledBy: optionLabelId,\n checked: selectedValueSet.has(option.value),\n disabled: isOptionDisabled,\n invalid: isInvalid,\n onCheckedChange: () => handleToggle(option.value),\n }\n\n if (hasOptionDescription) {\n checkboxProps.ariaDescribedBy = optionDescriptionId\n }\n\n if (props.name !== undefined) {\n checkboxProps.name = props.name\n }\n\n if (option.indeterminate !== undefined) {\n checkboxProps.indeterminate = option.indeterminate\n }\n\n return (\n <label\n key={option.value}\n className={cx(\n \"mw-checkbox-group-field__option\",\n hasOptionDescription && \"mw-checkbox-group-field__option--with-description\",\n )}\n htmlFor={optionId}\n >\n <Checkbox {...checkboxProps} />\n <span className=\"mw-checkbox-group-field__option-content\">\n <Text\n id={optionLabelId}\n variant=\"label\"\n className=\"mw-checkbox-group-field__option-label\"\n >\n {option.label}\n </Text>\n {hasOptionDescription && (\n <Text\n id={optionDescriptionId}\n variant=\"caption\"\n className=\"mw-checkbox-group-field__option-description\"\n >\n {option.description}\n </Text>\n )}\n </span>\n </label>\n )\n })}\n </div>\n\n {hasError && (\n <div className=\"mw-checkbox-group-field__error\" id={errorId} aria-live=\"polite\">\n <Text variant=\"caption\">{props.error}</Text>\n </div>\n )}\n </fieldset>\n )\n}\n"]}