@proyecto-viviana/silapse 0.4.0 → 0.4.2

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/button/Button.tsx","../src/provider/index.tsx","../src/theme-light/index.ts","../src/theme-dark/index.ts","../src/button/ToggleButton.tsx","../src/button/ActionButton.tsx","../src/button/ClearButton.tsx","../src/button/FieldButton.tsx","../src/button/LogicButton.tsx","../src/badge/index.tsx","../src/alert/index.tsx","../src/avatar/index.tsx","../src/switch/index.tsx","../src/switch/ToggleSwitch.tsx","../src/checkbox/index.tsx","../src/radio/index.tsx","../src/dialog/Dialog.tsx","../src/dialog/AlertDialog.tsx","../src/icon/index.tsx","../src/icon/icons/GitHubIcon.tsx","../src/icon/Illustration.tsx","../src/icon/UIIcon.tsx","../src/tooltip/index.tsx","../src/popover/index.tsx","../src/overlays/Modal.tsx","../src/overlays/Overlay.tsx","../src/overlays/Tray.tsx","../src/overlays/OpenTransition.tsx","../src/textfield/index.tsx","../src/textfield/TextArea.tsx","../src/link/index.tsx","../src/progress-bar/index.tsx","../src/progress/ProgressCircle.tsx","../src/separator/index.tsx","../src/text/index.tsx","../src/text/Heading.tsx","../src/text/Keyboard.tsx","../src/label/index.tsx","../src/form/index.tsx","../src/form/Field.tsx","../src/form/HelpText.tsx","../src/toolbar/index.tsx","../src/actionbar/index.tsx","../src/actiongroup/index.tsx","../src/buttongroup/index.tsx","../src/autocomplete/index.tsx","../src/combobox/index.tsx","../src/select/index.tsx","../src/menu/index.tsx","../src/menu/ActionMenu.tsx","../src/menu/SubmenuTrigger.tsx","../src/menu/ContextualHelpTrigger.tsx","../src/listbox/index.tsx","../src/gridlist/index.tsx","../src/tabs/index.tsx","../src/breadcrumbs/index.tsx","../src/numberfield/index.tsx","../src/dropzone/index.tsx","../src/filetrigger/index.tsx","../src/searchfield/index.tsx","../src/contextualhelp/index.tsx","../src/slider/index.tsx","../src/slider/RangeSlider.tsx","../src/toast/index.tsx","../src/disclosure/index.tsx","../src/meter/index.tsx","../src/tag-group/index.tsx","../src/labeledvalue/index.tsx","../src/statuslight/index.tsx","../src/calendar/index.tsx","../src/calendar/RangeCalendar.tsx","../src/calendar/DateField.tsx","../src/calendar/TimeField.tsx","../src/calendar/DatePicker.tsx","../src/calendar/DateRangePicker.tsx","../src/table/index.tsx","../src/tree/index.tsx","../src/color/index.tsx","../src/color/ColorEditor.tsx","../src/color/ColorSwatchPicker.tsx","../src/landmark/index.tsx","../src/view/index.tsx","../src/view/Content.tsx","../src/well/index.tsx","../src/card/index.tsx","../src/image/index.tsx","../src/custom/page-layout/index.tsx","../src/layout/Flex.tsx","../src/layout/Grid.tsx","../src/layout/css-utils.ts","../src/illustratedmessage/index.tsx","../src/steplist/index.tsx","../src/dnd/index.tsx","../src/shared-element/index.tsx","../src/index.ts","../src/story-utils/ErrorBoundary.tsx","../src/story-utils/generatePowerset.ts","../src/story-utils/index.ts","../src/style-macro-s1/index.ts","../src/theme-express/index.ts","../src/custom/chip/index.tsx","../src/custom/nav-header/index.tsx","../src/custom/logo/index.tsx","../src/custom/header/index.tsx","../src/custom/lateral-nav/index.tsx","../src/custom/timeline-item/index.tsx","../src/custom/conversation/index.tsx","../src/custom/profile-card/index.tsx","../src/custom/event-card/index.tsx","../src/custom/calendar-card/index.tsx","../src/custom/project-card/index.tsx"],"sourcesContent":["/**\n * Button component for proyecto-viviana-silapse\n *\n * A styled button component built on top of solidaria-components.\n * This component only handles styling - all behavior and accessibility\n * is provided by the headless Button from solidaria-components.\n */\n\nimport { type JSX, splitProps, mergeProps as solidMergeProps } from 'solid-js';\nimport { Button as HeadlessButton, type ButtonRenderProps } from '@proyecto-viviana/solidaria-components';\nimport type { ButtonProps } from './types';\nimport { useProviderProps } from '../provider';\n\n/**\n * Buttons allow users to perform an action or to navigate to another page.\n * They have multiple styles for various needs, and are ideal for calling attention to\n * where a user needs to do something in order to move forward in a flow.\n *\n * Built on solidaria-components Button for full accessibility support.\n * Styles are defined in components.css using the vui-button class system.\n */\nexport function Button(props: ButtonProps): JSX.Element {\n const providerProps = useProviderProps(props);\n const defaultProps: Partial<ButtonProps> = {\n variant: 'primary',\n buttonStyle: 'fill',\n size: 'md',\n };\n\n const merged = solidMergeProps(defaultProps, providerProps);\n\n const [local, headlessProps] = splitProps(merged, [\n 'variant',\n 'buttonStyle',\n 'size',\n 'fullWidth',\n 'staticColor',\n 'class',\n ]);\n\n // Generate class based on render props\n const getClassName = (renderProps: ButtonRenderProps): string => {\n const classList = [\n 'vui-button',\n `vui-button--${local.buttonStyle}`,\n `vui-button--${local.variant}`,\n `vui-button--${local.size}`,\n ];\n\n if (renderProps.isPressed) {\n classList.push('is-pressed');\n }\n\n if (local.fullWidth) {\n classList.push('vui-button--full-width');\n }\n\n if (local.class) {\n classList.push(local.class);\n }\n\n return classList.join(' ');\n };\n\n return (\n <HeadlessButton\n {...headlessProps}\n class={getClassName}\n data-variant={local.variant}\n data-style={local.buttonStyle}\n data-static-color={local.staticColor || undefined}\n >\n {props.children}\n </HeadlessButton>\n );\n}\n","/**\n * Provider component for proyecto-viviana-silapse\n *\n * Compound provider wrapping locale, modal, and theme context.\n * Modeled after React Spectrum's <Provider> behavior.\n */\n\nimport {\n type JSX,\n type ParentProps,\n createContext,\n createMemo,\n mergeProps,\n splitProps,\n useContext,\n} from 'solid-js';\nimport {\n I18nProvider,\n ModalProvider,\n isRTL,\n useLocale,\n useModalProvider,\n type Direction,\n} from '@proyecto-viviana/solidaria';\nimport type { Theme } from '../theme/types';\nimport { lightTheme } from '../theme-light';\nimport { darkTheme } from '../theme-dark';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ColorScheme = 'light' | 'dark';\nexport type Scale = 'medium' | 'large';\nexport type ValidationState = 'valid' | 'invalid';\n\nexport interface ProviderInheritedProps {\n /** Whether controls should render in their quiet/subtle style. */\n isQuiet?: boolean;\n /** Whether controls should render in their emphasized style. */\n isEmphasized?: boolean;\n /** Whether controls should be disabled. */\n isDisabled?: boolean;\n /** Whether controls should be required. */\n isRequired?: boolean;\n /** Whether controls should be read only. */\n isReadOnly?: boolean;\n /** Shared validation state for descendant form fields. */\n validationState?: ValidationState;\n}\n\nexport interface ThemeContextValue {\n /** The current color scheme. */\n colorScheme: ColorScheme;\n /** The UI scale. */\n scale: Scale;\n /** CSS class name for the active theme. */\n themeClass: string;\n /** The full resolved theme object. */\n theme: Theme;\n}\n\nexport interface ProviderContextValue extends ThemeContextValue, ProviderInheritedProps {\n /** The locale applied by the provider. */\n locale: string;\n /** The writing direction applied by the provider. */\n direction: Direction;\n}\n\nexport interface ProviderProps extends ParentProps, ProviderInheritedProps {\n /** The locale for i18n. If not provided, inherits the nearest locale. */\n locale?: string;\n /** The color scheme. Inherits from the nearest provider when omitted. */\n colorScheme?: ColorScheme;\n /** The UI scale. Inherits from the nearest provider when omitted. */\n scale?: Scale;\n /** The theme CSS class (string) or a full Theme object. */\n theme?: string | Theme;\n /** Additional CSS class name for the provider wrapper. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n}\n\ninterface InternalProviderContextValue extends ProviderContextValue {\n themeSource?: string | Theme;\n}\n\n// ============================================\n// CONTEXT\n// ============================================\n\nconst defaultThemeContext: ThemeContextValue = {\n colorScheme: 'light',\n scale: 'medium',\n themeClass: lightTheme.className,\n theme: lightTheme,\n};\n\nexport const ThemeContext = createContext<ThemeContextValue>(defaultThemeContext);\nconst ProviderContext = createContext<InternalProviderContextValue | null>(null);\n\n/**\n * Hook to access the current theme context.\n */\nexport function useTheme(): ThemeContextValue {\n const provider = useContext(ProviderContext);\n if (provider) {\n return provider;\n }\n\n return useContext(ThemeContext);\n}\n\n/**\n * Returns the settings applied by the nearest provider.\n */\nexport function useProvider(): ProviderContextValue {\n const context = useContext(ProviderContext);\n\n if (!context) {\n throw new Error('No root provider found. Wrap this subtree in <Provider>.');\n }\n\n return context;\n}\n\n/**\n * Merges inherited provider props with the component's explicit props.\n */\nexport function useProviderProps<T extends object>(props: T): T {\n const context = useContext(ProviderContext);\n\n if (!context) {\n return props;\n }\n\n return mergeProps(\n ({\n isQuiet: context.isQuiet,\n isEmphasized: context.isEmphasized,\n isDisabled: context.isDisabled,\n isRequired: context.isRequired,\n isReadOnly: context.isReadOnly,\n validationState: context.validationState,\n } as unknown as Partial<T>),\n props\n ) as T;\n}\n\n// ============================================\n// THEME RESOLUTION\n// ============================================\n\nfunction getBuiltInTheme(colorScheme: ColorScheme): Theme {\n return colorScheme === 'dark' ? darkTheme : lightTheme;\n}\n\nfunction resolveTheme(\n themeInput: string | Theme | undefined,\n colorScheme: ColorScheme,\n inheritedThemeClass?: string\n): { className: string; properties: Record<string, string>; themeObj: Theme } {\n if (themeInput && typeof themeInput === 'object') {\n return {\n className: themeInput.className,\n properties: themeInput.properties,\n themeObj: themeInput,\n };\n }\n\n const builtIn = getBuiltInTheme(colorScheme);\n\n if (typeof themeInput === 'string') {\n return {\n className: themeInput,\n properties: builtIn.properties,\n themeObj: builtIn,\n };\n }\n\n if (inheritedThemeClass && inheritedThemeClass !== builtIn.className) {\n return {\n className: inheritedThemeClass,\n properties: builtIn.properties,\n themeObj: builtIn,\n };\n }\n\n return {\n className: builtIn.className,\n properties: builtIn.properties,\n themeObj: builtIn,\n };\n}\n\n// ============================================\n// INTERNAL COMPONENTS\n// ============================================\n\ninterface ProviderRootProps {\n children: JSX.Element;\n class: string;\n style: JSX.CSSProperties;\n colorScheme: ColorScheme;\n rest: Record<string, unknown>;\n}\n\nfunction ProviderRoot(props: ProviderRootProps): JSX.Element {\n const locale = useLocale();\n const { modalProviderProps } = useModalProvider();\n\n return (\n <div\n {...props.rest}\n {...modalProviderProps}\n class={props.class}\n style={props.style}\n lang={locale().locale}\n dir={locale().direction}\n data-color-scheme={props.colorScheme}\n >\n {props.children}\n </div>\n );\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * Root provider for proyecto-viviana UI.\n *\n * Wraps I18nProvider for locale management, provides inherited component props,\n * and applies theme CSS custom properties to a scoped wrapper element.\n */\nexport function Provider(props: ProviderProps): JSX.Element {\n const parentProvider = useContext(ProviderContext);\n const inheritedLocale = useLocale();\n\n const [local, rest] = splitProps(props, [\n 'locale',\n 'colorScheme',\n 'scale',\n 'theme',\n 'class',\n 'style',\n 'children',\n 'isQuiet',\n 'isEmphasized',\n 'isDisabled',\n 'isRequired',\n 'isReadOnly',\n 'validationState',\n ]);\n\n const colorScheme = createMemo<ColorScheme>(() => local.colorScheme ?? parentProvider?.colorScheme ?? 'light');\n const scale = createMemo<Scale>(() => local.scale ?? parentProvider?.scale ?? 'medium');\n const locale = createMemo(() => local.locale ?? parentProvider?.locale ?? inheritedLocale().locale);\n\n const inheritedThemeClass = createMemo(() => {\n if (!parentProvider) {\n return undefined;\n }\n\n const builtInParentTheme = getBuiltInTheme(parentProvider.colorScheme);\n return parentProvider.themeClass !== builtInParentTheme.className ? parentProvider.themeClass : undefined;\n });\n\n const resolvedTheme = createMemo(() =>\n resolveTheme(\n local.theme ?? parentProvider?.themeSource,\n colorScheme(),\n inheritedThemeClass()\n )\n );\n\n const providerValue: InternalProviderContextValue = {\n get locale() {\n return locale();\n },\n get direction() {\n return local.locale ? (isRTL(local.locale) ? 'rtl' : 'ltr') : inheritedLocale().direction;\n },\n get colorScheme() {\n return colorScheme();\n },\n get scale() {\n return scale();\n },\n get themeClass() {\n return resolvedTheme().className;\n },\n get theme() {\n return resolvedTheme().themeObj;\n },\n get themeSource() {\n return local.theme ?? parentProvider?.themeSource;\n },\n get isQuiet() {\n return local.isQuiet ?? parentProvider?.isQuiet;\n },\n get isEmphasized() {\n return local.isEmphasized ?? parentProvider?.isEmphasized;\n },\n get isDisabled() {\n return local.isDisabled ?? parentProvider?.isDisabled;\n },\n get isRequired() {\n return local.isRequired ?? parentProvider?.isRequired;\n },\n get isReadOnly() {\n return local.isReadOnly ?? parentProvider?.isReadOnly;\n },\n get validationState() {\n return local.validationState ?? parentProvider?.validationState;\n },\n };\n\n const classes = createMemo(() => {\n const parts = [\n 'vui-provider',\n `vui-provider--${colorScheme()}`,\n `vui-provider--${scale()}`,\n resolvedTheme().className,\n local.class,\n ];\n\n return parts.filter(Boolean).join(' ');\n });\n\n const mergedStyle = createMemo<JSX.CSSProperties>(() => ({\n ...resolvedTheme().properties,\n 'color-scheme': colorScheme(),\n isolation: parentProvider ? undefined : 'isolate',\n ...(local.style ?? {}),\n }));\n\n return (\n <ProviderContext.Provider value={providerValue}>\n <ThemeContext.Provider value={providerValue}>\n <I18nProvider locale={locale()}>\n <ModalProvider>\n <ProviderRoot\n rest={rest as Record<string, unknown>}\n class={classes()}\n style={mergedStyle()}\n colorScheme={colorScheme()}\n >\n {local.children}\n </ProviderRoot>\n </ModalProvider>\n </I18nProvider>\n </ThemeContext.Provider>\n </ProviderContext.Provider>\n );\n}\n","/**\n * Theme Light module for proyecto-viviana-silapse\n *\n * Light theme CSS custom properties. Apply the class to the root element\n * or use the Provider component with colorScheme=\"light\".\n */\n\nimport type { Theme } from '../theme/types';\n\nexport const themeLightClass = 'vui-theme-light';\n\nexport const lightTheme: Theme = {\n className: themeLightClass,\n properties: {\n // Backgrounds\n '--vui-bg-100': '#ffffff',\n '--vui-bg-200': '#fafafa',\n '--vui-bg-300': '#f5f5f5',\n '--vui-bg-400': '#eeeeee',\n '--vui-bg-500': '#e0e0e0',\n\n // Text / Primary\n '--vui-text-primary': '#1a1a1a',\n '--vui-text-secondary': '#666666',\n '--vui-text-tertiary': '#999999',\n '--vui-text-disabled': '#bdbdbd',\n\n // Accent\n '--vui-accent': '#6366f1',\n '--vui-accent-hover': '#5558e6',\n '--vui-accent-active': '#4f46e5',\n '--vui-accent-subtle': 'rgba(99, 102, 241, 0.1)',\n\n // Border\n '--vui-border': '#e5e7eb',\n '--vui-border-hover': '#d1d5db',\n '--vui-border-focus': '#6366f1',\n\n // Focus\n '--vui-focus-ring': 'rgba(99, 102, 241, 0.5)',\n\n // Status: Error/Danger\n '--vui-danger': '#ef4444',\n '--vui-danger-subtle': 'rgba(239, 68, 68, 0.1)',\n\n // Status: Success\n '--vui-success': '#22c55e',\n '--vui-success-subtle': 'rgba(34, 197, 94, 0.1)',\n\n // Status: Warning\n '--vui-warning': '#f59e0b',\n '--vui-warning-subtle': 'rgba(245, 158, 11, 0.1)',\n\n // Status: Info\n '--vui-info': '#3b82f6',\n '--vui-info-subtle': 'rgba(59, 130, 246, 0.1)',\n\n // Overlay\n '--vui-overlay-bg': 'rgba(0, 0, 0, 0.4)',\n '--vui-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)',\n '--vui-shadow-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)',\n },\n};\n","/**\n * Theme Dark module for proyecto-viviana-silapse\n *\n * Dark mode CSS custom properties. Apply the class to the root element\n * or use the Provider component with colorScheme=\"dark\".\n */\n\nimport type { Theme } from '../theme/types';\n\nexport const themeDarkClass = 'vui-theme-dark';\n\nexport const darkTheme: Theme = {\n className: themeDarkClass,\n properties: {\n // Backgrounds\n '--vui-bg-100': '#0a0a0a',\n '--vui-bg-200': '#141414',\n '--vui-bg-300': '#1e1e1e',\n '--vui-bg-400': '#282828',\n '--vui-bg-500': '#333333',\n\n // Text / Primary\n '--vui-text-primary': '#f5f5f5',\n '--vui-text-secondary': '#a3a3a3',\n '--vui-text-tertiary': '#737373',\n '--vui-text-disabled': '#525252',\n\n // Accent\n '--vui-accent': '#818cf8',\n '--vui-accent-hover': '#a5b4fc',\n '--vui-accent-active': '#6366f1',\n '--vui-accent-subtle': 'rgba(129, 140, 248, 0.15)',\n\n // Border\n '--vui-border': '#374151',\n '--vui-border-hover': '#4b5563',\n '--vui-border-focus': '#818cf8',\n\n // Focus\n '--vui-focus-ring': 'rgba(129, 140, 248, 0.5)',\n\n // Status: Error/Danger\n '--vui-danger': '#f87171',\n '--vui-danger-subtle': 'rgba(248, 113, 113, 0.15)',\n\n // Status: Success\n '--vui-success': '#4ade80',\n '--vui-success-subtle': 'rgba(74, 222, 128, 0.15)',\n\n // Status: Warning\n '--vui-warning': '#fbbf24',\n '--vui-warning-subtle': 'rgba(251, 191, 36, 0.15)',\n\n // Status: Info\n '--vui-info': '#60a5fa',\n '--vui-info-subtle': 'rgba(96, 165, 250, 0.15)',\n\n // Overlay\n '--vui-overlay-bg': 'rgba(0, 0, 0, 0.6)',\n '--vui-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.3)',\n '--vui-shadow-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3)',\n },\n};\n","/**\n * ToggleButton component for proyecto-viviana-silapse\n *\n * A styled toggle button wrapping headless ToggleButton.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ToggleButton as HeadlessToggleButton,\n type ToggleButtonProps as HeadlessToggleButtonProps,\n type ToggleButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ToggleButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ToggleButtonProps extends Omit<HeadlessToggleButtonProps, 'class' | 'style'> {\n /** The size of the button. @default 'md' */\n size?: ToggleButtonSize;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<ToggleButtonSize, string> = {\n sm: 'px-2 py-1 text-xs rounded',\n md: 'px-3 py-1.5 text-sm rounded-md',\n lg: 'px-4 py-2 text-base rounded-lg',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled toggle button that can be selected or deselected.\n */\nexport function ToggleButton(props: ToggleButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['size', 'class']);\n\n const getClassName = (renderProps: ToggleButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center font-medium transition-colors outline-none border';\n const sizeClass = sizeStyles[local.size ?? 'md'];\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-300 text-primary-500 border-primary-600 cursor-not-allowed';\n } else if (renderProps.isSelected) {\n stateClass = renderProps.isHovered\n ? 'bg-accent-400 text-bg-400 border-accent-400'\n : 'bg-accent text-bg-400 border-accent';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-200 text-primary-100 border-primary-500';\n } else {\n stateClass = 'bg-bg-400 text-primary-200 border-primary-600';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent ring-offset-2 ring-offset-bg-100' : '';\n\n return [base, sizeClass, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessToggleButton\n {...headlessProps}\n class={getClassName}\n />\n );\n}\n","/**\n * ActionButton component for proyecto-viviana-silapse\n *\n * A quiet/subtle button variant for toolbar and secondary actions.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Button as HeadlessButton,\n type ButtonProps as HeadlessButtonProps,\n type ButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ActionButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ActionButtonProps extends Omit<HeadlessButtonProps, 'class' | 'style'> {\n /** The size of the button. @default 'md' */\n size?: ActionButtonSize;\n /** Whether the button is quiet (no background until hover). @default true */\n isQuiet?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<ActionButtonSize, string> = {\n sm: 'px-2 py-1 text-xs rounded',\n md: 'px-3 py-1.5 text-sm rounded-md',\n lg: 'px-4 py-2 text-base rounded-lg',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A quiet/subtle button for toolbar and secondary actions.\n */\nexport function ActionButton(props: ActionButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['size', 'isQuiet', 'class']);\n const isQuiet = () => local.isQuiet ?? true;\n\n const getClassName = (renderProps: ButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center font-medium transition-colors outline-none';\n const sizeClass = sizeStyles[local.size ?? 'md'];\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-200 text-primary-100';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-100';\n } else if (isQuiet()) {\n stateClass = 'bg-transparent text-primary-200';\n } else {\n stateClass = 'bg-bg-400 text-primary-200 border border-primary-600';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent ring-offset-2 ring-offset-bg-100' : '';\n\n return [base, sizeClass, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessButton\n {...headlessProps}\n class={getClassName}\n />\n );\n}\n","/**\n * ClearButton component for proyecto-viviana-silapse\n *\n * An icon-only clear/dismiss button.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Button as HeadlessButton,\n type ButtonProps as HeadlessButtonProps,\n type ButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ClearButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ClearButtonProps extends Omit<HeadlessButtonProps, 'class' | 'style' | 'children'> {\n /** The size of the button. @default 'md' */\n size?: ClearButtonSize;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<ClearButtonSize, { button: string; icon: string }> = {\n sm: { button: 'w-5 h-5', icon: 'w-3 h-3' },\n md: { button: 'w-6 h-6', icon: 'w-4 h-4' },\n lg: { button: 'w-8 h-8', icon: 'w-5 h-5' },\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * An icon-only clear/dismiss button, typically used in search fields and tags.\n */\nexport function ClearButton(props: ClearButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['size', 'class']);\n const size = () => sizeStyles[local.size ?? 'md'];\n\n const getClassName = (renderProps: ButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center rounded-full transition-colors outline-none';\n const sizeClass = size().button;\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-200 text-primary-100';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-200';\n } else {\n stateClass = 'text-primary-400 hover:text-primary-200';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent' : '';\n\n return [base, sizeClass, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessButton\n {...headlessProps}\n aria-label={headlessProps['aria-label'] ?? 'Clear'}\n class={getClassName}\n >\n <svg class={size().icon} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </HeadlessButton>\n );\n}\n","/**\n * FieldButton component for proyecto-viviana-silapse\n *\n * A button embedded inside input fields (e.g., date picker trigger, combobox button).\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Button as HeadlessButton,\n type ButtonProps as HeadlessButtonProps,\n type ButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface FieldButtonProps extends Omit<HeadlessButtonProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A button designed to sit inside an input field.\n */\nexport function FieldButton(props: FieldButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['class']);\n\n const getClassName = (renderProps: ButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center px-2 rounded-r-md transition-colors outline-none border-l border-primary-600';\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-200 text-primary-100';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-200';\n } else {\n stateClass = 'bg-bg-400 text-primary-300';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-inset ring-accent' : '';\n\n return [base, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessButton\n {...headlessProps}\n class={getClassName}\n />\n );\n}\n","/**\n * LogicButton component for proyecto-viviana-silapse\n *\n * An AND/OR toggle button for logic-based UIs.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ToggleButton as HeadlessToggleButton,\n type ToggleButtonProps as HeadlessToggleButtonProps,\n type ToggleButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface LogicButtonProps extends Omit<HeadlessToggleButtonProps, 'class' | 'style' | 'children'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * An AND/OR logic toggle button. Displays \"AND\" when selected (default), \"OR\" when not.\n */\nexport function LogicButton(props: LogicButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['class']);\n\n const getClassName = (renderProps: ToggleButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center px-2 py-0.5 text-xs font-mono font-bold rounded transition-colors outline-none min-w-[3rem]';\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-300 text-primary-500 cursor-not-allowed';\n } else if (renderProps.isSelected) {\n stateClass = 'bg-accent text-bg-400';\n } else {\n stateClass = 'bg-bg-400 text-primary-300 border border-primary-600';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent ring-offset-1 ring-offset-bg-100' : '';\n\n return [base, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessToggleButton\n {...headlessProps}\n class={getClassName}\n >\n {(renderProps: ToggleButtonRenderProps) => (\n <span>{renderProps.isSelected ? 'AND' : 'OR'}</span>\n )}\n </HeadlessToggleButton>\n );\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\n\nexport type BadgeVariant = 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'danger'\nexport type BadgeSize = 'sm' | 'md' | 'lg'\n\nexport interface BadgeProps {\n children?: JSX.Element\n count?: number\n variant?: BadgeVariant\n size?: BadgeSize\n class?: string\n}\n\nconst variantStyles: Record<BadgeVariant, string> = {\n primary: 'bg-primary-500 text-white',\n secondary: 'bg-bg-300 text-primary-300',\n accent: 'bg-accent-300 text-black',\n success: 'bg-success-400 text-white',\n warning: 'bg-warning-400 text-black',\n danger: 'bg-danger-400 text-white',\n}\n\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: 'w-5 h-5 text-xs',\n md: 'w-7 h-7 text-xs',\n lg: 'w-9 h-9 text-sm',\n}\n\nexport function Badge(props: BadgeProps) {\n const variant = () => props.variant ?? 'accent'\n const size = () => props.size ?? 'md'\n\n return (\n <div\n class={`flex items-center justify-center rounded-full border-b border-white font-semibold ${variantStyles[variant()]} ${sizeStyles[size()]} ${props.class ?? ''}`}\n >\n <Show when={props.count !== undefined} fallback={props.children}>\n <span>{props.count}</span>\n </Show>\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\nimport {\n Alert as HeadlessAlert,\n AlertDismissButton,\n type AlertRenderProps,\n type AlertVariant,\n} from '@proyecto-viviana/solidaria-components'\n\nexport type { AlertVariant }\n\nexport interface AlertProps {\n children: JSX.Element\n variant?: AlertVariant\n title?: string\n dismissible?: boolean\n onDismiss?: () => void\n class?: string\n}\n\nconst variantStyles: Record<AlertVariant, string> = {\n info: 'bg-primary-700 text-primary-200 border border-primary-500',\n success: 'bg-success-600 text-white border border-success-400',\n warning: 'bg-warning-600 text-warning-100 border border-warning-400',\n error: 'bg-danger-600 text-white border border-danger-400',\n}\n\nexport function Alert(props: AlertProps) {\n const variant = () => props.variant ?? 'info'\n\n const getClassName = (_renderProps: AlertRenderProps): string => {\n return `flex items-center min-h-[50px] font-normal rounded-lg px-4 py-2 ${variantStyles[variant()]} ${props.class ?? ''}`\n }\n\n return (\n <HeadlessAlert\n variant={variant()}\n isDismissible={props.dismissible}\n onDismiss={props.onDismiss}\n class={getClassName}\n >\n <div class=\"flex items-center gap-3 flex-1\">\n <Show when={props.title}>\n <span class=\"font-semibold font-jost\">{props.title}</span>\n <span class=\"opacity-50\">|</span>\n </Show>\n <div class=\"flex-1\">{props.children}</div>\n <Show when={props.dismissible}>\n <AlertDismissButton\n class=\"hover:opacity-70 transition-opacity ml-2\"\n aria-label=\"Dismiss\"\n >\n ✕\n </AlertDismissButton>\n </Show>\n </div>\n </HeadlessAlert>\n )\n}\n","import { Show, type JSX } from 'solid-js'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n size?: AvatarSize\n fallback?: string\n online?: boolean\n class?: string\n}\n\nconst sizeStyles: Record<AvatarSize, { container: string; text: string; indicator: string }> = {\n xs: { container: 'w-6 h-6', text: 'text-xs', indicator: 'w-1.5 h-1.5' },\n sm: { container: 'w-8 h-8', text: 'text-sm', indicator: 'w-2 h-2' },\n md: { container: 'w-10 h-10', text: 'text-base', indicator: 'w-2.5 h-2.5' },\n lg: { container: 'w-14 h-14', text: 'text-lg', indicator: 'w-3 h-3' },\n xl: { container: 'w-20 h-20', text: 'text-xl', indicator: 'w-4 h-4' },\n}\n\nexport function Avatar(props: AvatarProps) {\n const size = () => props.size ?? 'md'\n const styles = () => sizeStyles[size()]\n\n const initials = () => {\n if (props.fallback) return props.fallback.slice(0, 2).toUpperCase()\n if (props.alt) return props.alt.slice(0, 2).toUpperCase()\n return '?'\n }\n\n return (\n <div class={`relative inline-block ${props.class ?? ''}`}>\n <div\n class={`${styles().container} rounded-full overflow-hidden bg-bg-200 flex items-center justify-center ring-2 ring-accent/50`}\n >\n <Show\n when={props.src}\n fallback={\n <span class={`${styles().text} font-medium text-primary-300`}>\n {initials()}\n </span>\n }\n >\n <img\n src={props.src}\n alt={props.alt ?? 'Avatar'}\n class=\"w-full h-full object-cover\"\n />\n </Show>\n </div>\n <Show when={props.online !== undefined}>\n <span\n class={`absolute bottom-0 right-0 ${styles().indicator} rounded-full ring-2 ring-bg-400 ${\n props.online ? 'bg-success-400' : 'bg-bg-light'\n }`}\n />\n </Show>\n </div>\n )\n}\n\nexport interface AvatarGroupProps {\n children: JSX.Element\n max?: number\n size?: AvatarSize\n}\n\nexport function AvatarGroup(props: AvatarGroupProps) {\n return (\n <div class=\"flex -space-x-2\">\n {props.children}\n </div>\n )\n}\n","/**\n * Switch components for proyecto-viviana-silapse\n *\n * This file exports:\n * - ToggleSwitch: The primary switch component built on solidaria-components\n * (named to avoid conflict with SolidJS's built-in Switch)\n * - TabSwitch: A styled two-option selector composed with headless toggle primitives\n */\n\nimport { type JSX, createMemo } from 'solid-js'\nimport type { Key } from '@proyecto-viviana/solid-stately'\nimport {\n ToggleButtonGroup as HeadlessToggleButtonGroup,\n ToggleButton as HeadlessToggleButton,\n} from '@proyecto-viviana/solidaria-components'\n\n// Re-export ToggleSwitch (the solidaria-components based switch)\nexport { ToggleSwitch, type ToggleSwitchProps, type SwitchSize } from './ToggleSwitch'\n\n// ============================================\n// TAB SWITCH (Two-option selector)\n// ============================================\n\ninterface SwitchOption {\n label: string\n value: string\n}\n\nexport interface TabSwitchProps {\n options: SwitchOption[]\n value?: string\n onChange?: (value: string) => void\n class?: string\n}\n\n/**\n * A tab-style switch that allows users to select between two options.\n * Behavior is delegated to headless ToggleButtonGroup/ToggleButton primitives.\n */\nexport function TabSwitch(props: TabSwitchProps): JSX.Element {\n const options = createMemo(() => props.options.slice(0, 2))\n const selectedValue = createMemo(() => {\n const match = options().find((option) => option.value === props.value)\n return match?.value ?? options()[0]?.value\n })\n const selectedIndex = createMemo(() => {\n const index = options().findIndex((option) => option.value === selectedValue())\n return index >= 0 ? index : 0\n })\n const selectedKeys = createMemo<Set<Key>>(() => {\n const value = selectedValue()\n return value ? new Set<Key>([value]) : new Set<Key>()\n })\n\n const textSelected = 'font-extrabold text-primary-100 tracking-wider'\n const textUnselected = 'font-medium text-primary-300 tracking-wider'\n const optionCount = createMemo(() => Math.max(options().length, 1))\n const indicatorStyle = createMemo(() => ({\n width: `calc(100% / ${optionCount()})`,\n transform: `translateX(${selectedIndex() * 100}%)`,\n }))\n const layoutStyle = createMemo(() => ({\n 'grid-template-columns': `repeat(${optionCount()}, minmax(0, 1fr))`,\n }))\n\n return (\n <div class={`relative bg-bg-400 rounded-full w-[250px] ${props.class ?? ''}`}>\n <div\n class=\"left-0 top-0 transition-all duration-300 ease-in-out z-0 absolute bg-primary-700 rounded-full h-8 border-l-2 border-r-2 border-accent-300\"\n style={indicatorStyle()}\n />\n <HeadlessToggleButtonGroup\n selectionMode=\"single\"\n selectedKeys={selectedKeys()}\n class=\"relative z-10 grid h-8\"\n style={layoutStyle()}\n aria-label=\"View mode\"\n >\n {options().map((option) => (\n <HeadlessToggleButton\n toggleKey={option.value}\n onClick={() => props.onChange?.(option.value)}\n class={() =>\n `transition-all ease-in-out duration-300 z-10 text-lg flex justify-center items-center rounded-full ${\n selectedValue() === option.value ? textSelected : textUnselected\n }`\n }\n >\n <span>{option.label}</span>\n </HeadlessToggleButton>\n ))}\n </HeadlessToggleButtonGroup>\n </div>\n )\n}\n","/**\n * ToggleSwitch component for proyecto-viviana-silapse\n *\n * A styled switch component built on top of solidaria-components.\n * This component only handles styling - all behavior and accessibility\n * is provided by the headless Switch from solidaria-components.\n *\n * Named \"ToggleSwitch\" to avoid conflict with SolidJS's built-in Switch component.\n */\n\nimport { type JSX, splitProps, mergeProps as solidMergeProps } from 'solid-js';\nimport { ToggleSwitch as HeadlessToggleSwitch, type ToggleSwitchProps as HeadlessToggleSwitchProps, type ToggleSwitchRenderProps } from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SwitchSize = 'sm' | 'md' | 'lg';\n\nexport interface ToggleSwitchProps extends Omit<HeadlessToggleSwitchProps, 'class' | 'children'> {\n /** The size of the switch. */\n size?: SwitchSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label text for the switch. */\n children?: JSX.Element;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n track: 'h-5 w-9',\n thumb: 'h-4 w-4',\n translate: 'translate-x-4',\n },\n md: {\n track: 'h-6 w-11',\n thumb: 'h-5 w-5',\n translate: 'translate-x-5',\n },\n lg: {\n track: 'h-7 w-14',\n thumb: 'h-6 w-6',\n translate: 'translate-x-7',\n },\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A switch allows users to toggle between two mutually exclusive states.\n *\n * Built on solidaria-components Switch for full accessibility support.\n * Named \"ToggleSwitch\" to avoid conflict with SolidJS's built-in Switch component.\n */\nexport function ToggleSwitch(props: ToggleSwitchProps): JSX.Element {\n const providerProps = useProviderProps(props);\n const defaultProps: Partial<ToggleSwitchProps> = {\n size: 'md',\n };\n\n const merged = solidMergeProps(defaultProps, providerProps);\n\n const [local, headlessProps] = splitProps(merged, [\n 'size',\n 'class',\n ]);\n\n const size = () => sizeStyles[local.size!];\n\n // Generate class based on render props\n const getClassName = (renderProps: ToggleSwitchRenderProps): string => {\n const base = 'inline-flex items-center gap-2 cursor-pointer';\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed opacity-50' : '';\n const custom = local.class || '';\n return [base, disabledClass, custom].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessToggleSwitch\n {...headlessProps}\n class={getClassName}\n >\n {(renderProps: ToggleSwitchRenderProps) => (\n <>\n <span\n class={[\n 'relative rounded-full transition-colors duration-200',\n 'focus-within:ring-2 focus-within:ring-accent-300 focus-within:ring-offset-2 focus-within:ring-offset-bg-400',\n size().track,\n renderProps.isSelected ? 'bg-accent' : 'bg-bg-300',\n renderProps.isDisabled ? 'cursor-not-allowed' : 'cursor-pointer',\n ].join(' ')}\n >\n <span\n class={[\n 'absolute top-0.5 left-0.5 rounded-full bg-white shadow transition-transform duration-200',\n size().thumb,\n renderProps.isSelected ? size().translate : 'translate-x-0',\n ].join(' ')}\n />\n </span>\n {props.children && <span class=\"text-primary-200\">{props.children}</span>}\n </>\n )}\n </HeadlessToggleSwitch>\n );\n}\n","/**\n * Checkbox component for proyecto-viviana-silapse\n *\n * A styled checkbox component built on top of solidaria-components.\n * This component only handles styling - all behavior and accessibility\n * is provided by the headless Checkbox from solidaria-components.\n */\n\nimport { type JSX, splitProps, mergeProps as solidMergeProps, Show } from 'solid-js'\nimport {\n Checkbox as HeadlessCheckbox,\n CheckboxGroup as HeadlessCheckboxGroup,\n type CheckboxProps as HeadlessCheckboxProps,\n type CheckboxGroupProps as HeadlessCheckboxGroupProps,\n type CheckboxRenderProps,\n type CheckboxGroupRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg'\n\nexport interface CheckboxProps extends Omit<HeadlessCheckboxProps, 'class' | 'children' | 'style'> {\n /** The size of the checkbox. */\n size?: CheckboxSize\n /** Additional CSS class name. */\n class?: string\n /** Label text for the checkbox. */\n children?: JSX.Element\n}\n\nexport interface CheckboxGroupProps extends Omit<HeadlessCheckboxGroupProps, 'class' | 'children' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Children checkboxes. */\n children?: JSX.Element\n /** Label for the group. */\n label?: string\n /** Description for the group. */\n description?: string\n /** Error message when invalid. */\n errorMessage?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n box: 'h-4 w-4',\n icon: 'h-3 w-3',\n label: 'text-sm',\n },\n md: {\n box: 'h-5 w-5',\n icon: 'h-3.5 w-3.5',\n label: 'text-base',\n },\n lg: {\n box: 'h-6 w-6',\n icon: 'h-4 w-4',\n label: 'text-lg',\n },\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction CheckIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 5L4.5 8.5L11 1\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction IndeterminateIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 12 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 1H11\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n )\n}\n\n// ============================================\n// CHECKBOX COMPONENT\n// ============================================\n\n/**\n * A checkbox allows users to select one or more items from a set.\n *\n * Built on solidaria-components Checkbox for full accessibility support.\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const providerProps = useProviderProps(props)\n const defaultProps: Partial<CheckboxProps> = {\n size: 'md',\n }\n\n const merged = solidMergeProps(defaultProps, providerProps)\n\n const [local, headlessProps] = splitProps(merged, [\n 'size',\n 'class',\n 'children',\n ])\n\n const size = () => sizeStyles[local.size!]\n\n // Generate class based on render props\n const getClassName = (renderProps: CheckboxRenderProps): string => {\n const base = 'inline-flex items-center gap-2 cursor-pointer'\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed opacity-50' : ''\n const custom = local.class || ''\n return [base, disabledClass, custom].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessCheckbox\n {...headlessProps}\n class={getClassName}\n >\n {(renderProps: CheckboxRenderProps) => {\n const boxClasses = () => {\n const base = 'relative flex items-center justify-center rounded border-2 transition-all duration-200'\n const sizeClass = size().box\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'border-bg-300 bg-bg-200'\n } else if (renderProps.isSelected || renderProps.isIndeterminate) {\n colorClass = 'border-accent bg-accent'\n } else {\n colorClass = 'border-primary-600 bg-transparent hover:border-accent-300'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n const cursorClass = renderProps.isDisabled ? 'cursor-not-allowed' : 'cursor-pointer'\n\n return [base, sizeClass, colorClass, focusClass, cursorClass].filter(Boolean).join(' ')\n }\n\n const iconClasses = () => {\n const base = 'text-white transition-opacity duration-200'\n const sizeClass = size().icon\n const visibilityClass = (renderProps.isSelected || renderProps.isIndeterminate)\n ? 'opacity-100'\n : 'opacity-0'\n\n return [base, sizeClass, visibilityClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'text-primary-200'\n const sizeClass = size().label\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n\n return [base, sizeClass, disabledClass].filter(Boolean).join(' ')\n }\n\n return (\n <>\n <span class={boxClasses()}>\n <Show\n when={!renderProps.isIndeterminate}\n fallback={<IndeterminateIcon class={iconClasses()} />}\n >\n <CheckIcon class={iconClasses()} />\n </Show>\n </span>\n <Show when={props.children}>\n <span class={labelClasses()}>{props.children}</span>\n </Show>\n </>\n )\n }}\n </HeadlessCheckbox>\n )\n}\n\n// ============================================\n// CHECKBOX GROUP COMPONENT\n// ============================================\n\n/**\n * A checkbox group allows users to select multiple items from a list.\n *\n * Built on solidaria-components CheckboxGroup for full accessibility support.\n */\nexport function CheckboxGroup(props: CheckboxGroupProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n ])\n\n // Generate class based on render props\n const getClassName = (renderProps: CheckboxGroupRenderProps): string => {\n const base = 'flex flex-col gap-2'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n const custom = local.class || ''\n return [base, disabledClass, custom].filter(Boolean).join(' ')\n }\n\n // Render children function for the headless component\n const renderChildren = (renderProps: CheckboxGroupRenderProps) => (\n <>\n <Show when={local.label}>\n <span class=\"text-sm font-medium text-primary-200\">{local.label}</span>\n </Show>\n <div class=\"flex flex-col gap-2\">\n {props.children}\n </div>\n <Show when={local.description && !renderProps.isInvalid}>\n <span class=\"text-sm text-primary-400\">{local.description}</span>\n </Show>\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <span class=\"text-sm text-danger-400\">{local.errorMessage}</span>\n </Show>\n </>\n )\n return (\n <HeadlessCheckboxGroup\n {...headlessProps}\n class={getClassName}\n children={renderChildren}\n />\n )\n}\n","/**\n * RadioGroup and Radio components for proyecto-viviana-silapse\n *\n * Styled radio components built on top of solidaria-components.\n */\n\nimport { type JSX, Show, createContext, useContext, splitProps, createUniqueId } from 'solid-js'\nimport {\n RadioGroup as HeadlessRadioGroup,\n Radio as HeadlessRadio,\n type RadioGroupProps as HeadlessRadioGroupProps,\n type RadioProps as HeadlessRadioProps,\n type RadioGroupRenderProps,\n type RadioRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type RadioGroupOrientation = 'horizontal' | 'vertical'\nexport type RadioGroupSize = 'sm' | 'md' | 'lg'\n\nconst RadioSizeContext = createContext<RadioGroupSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface RadioGroupProps extends Omit<HeadlessRadioGroupProps, 'class' | 'style'> {\n /** The size of the radio buttons. */\n size?: RadioGroupSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the group. */\n label?: string\n /** Description for the group. */\n description?: string\n /** Error message when invalid. */\n errorMessage?: string\n}\n\nexport interface RadioProps extends Omit<HeadlessRadioProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n circle: 'h-4 w-4',\n dot: 'h-2 w-2',\n label: 'text-sm',\n },\n md: {\n circle: 'h-5 w-5',\n dot: 'h-2.5 w-2.5',\n label: 'text-base',\n },\n lg: {\n circle: 'h-6 w-6',\n dot: 'h-3 w-3',\n label: 'text-lg',\n },\n}\n\n// ============================================\n// RADIO GROUP COMPONENT\n// ============================================\n\n/**\n * A radio group allows users to select a single option from a list of mutually exclusive options.\n *\n * Built on solidaria-components RadioGroup for full accessibility support.\n */\nexport function RadioGroup(props: RadioGroupProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n // Split out our custom styling props from the rest\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n ])\n\n const size = local.size ?? 'md'\n const customClass = local.class ?? ''\n const idBase = createUniqueId()\n const labelId = `${idBase}-label`\n const descriptionId = `${idBase}-description`\n const errorId = `${idBase}-error`\n\n // Generate class based on render props\n const getClassName = (renderProps: RadioGroupRenderProps): string => {\n const base = 'flex gap-2'\n const orientationClass = renderProps.orientation === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, orientationClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n const ariaDescribedBy = () => {\n const ids = [\n headlessProps['aria-describedby'],\n local.description ? descriptionId : undefined,\n local.errorMessage && headlessProps.isInvalid ? errorId : undefined,\n ].filter(Boolean)\n return ids.length > 0 ? ids.join(' ') : undefined\n }\n\n // Pass remaining props through to headless component\n // headlessProps maintains reactivity for controlled values like value/onChange\n return (\n <RadioSizeContext.Provider value={size}>\n <HeadlessRadioGroup\n {...headlessProps}\n aria-labelledby={headlessProps['aria-labelledby'] ?? (local.label ? labelId : undefined)}\n aria-describedby={ariaDescribedBy()}\n class={getClassName}\n data-size={size}\n >\n <Show when={local.label}>\n <span id={labelId} class=\"text-primary-200 font-medium mb-1\">{local.label}</span>\n </Show>\n {props.children as JSX.Element}\n <Show when={local.description}>\n <span id={descriptionId} class=\"text-primary-400 text-sm [&:has(~[data-invalid])]:hidden\">{local.description}</span>\n </Show>\n <Show when={local.errorMessage}>\n <span id={errorId} class=\"text-danger-400 text-sm hidden [[data-invalid]_&]:block\">{local.errorMessage}</span>\n </Show>\n </HeadlessRadioGroup>\n </RadioSizeContext.Provider>\n )\n}\n\n// ============================================\n// RADIO COMPONENT\n// ============================================\n\n/**\n * A radio button allows users to select a single option from a list.\n * Must be used within a RadioGroup.\n *\n * Built on solidaria-components Radio for full accessibility support.\n */\nexport function Radio(props: RadioProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const sizeFromContext = useContext(RadioSizeContext)\n const sizeStyle = sizeStyles[sizeFromContext]\n const customClass = local.class ?? ''\n\n // Generate class based on render props\n const getClassName = (renderProps: RadioRenderProps): string => {\n const base = 'inline-flex items-center gap-2'\n const cursorClass = renderProps.isDisabled ? 'cursor-not-allowed' : 'cursor-pointer'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, cursorClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n // Use data-selected attribute from headless Radio for conditional dot visibility via CSS\n const circleClass = `relative flex items-center justify-center rounded-full border-2 transition-all duration-200 ${sizeStyle.circle} border-primary-600 bg-transparent hover:border-accent-300 [[data-selected]_&]:border-accent`\n const dotClass = `rounded-full bg-accent transition-all duration-200 ${sizeStyle.dot} scale-0 [[data-selected]_&]:scale-100`\n const labelClass = `text-primary-200 ${sizeStyle.label}`\n\n return (\n <HeadlessRadio\n {...headlessProps}\n class={getClassName}\n >\n {(renderProps) => (\n <>\n <span class={circleClass}>\n <span class={dotClass} />\n </span>\n <Show when={props.children}>\n <span class={labelClass}>\n {typeof props.children === 'function'\n ? props.children(renderProps)\n : props.children}\n </span>\n </Show>\n </>\n )}\n </HeadlessRadio>\n )\n}\n","/**\n * Dialog component for proyecto-viviana-silapse\n *\n * Styled dialog component with overlay and backdrop.\n * Follows Spectrum 2 design patterns.\n */\n\nimport { type JSX, splitProps, Show, createContext, useContext } from 'solid-js'\nimport {\n Dialog as HeadlessDialog,\n DialogTrigger as HeadlessDialogTrigger,\n Heading as HeadlessDialogHeading,\n Modal as HeadlessModal,\n ModalOverlay as HeadlessModalOverlay,\n useDialogTrigger,\n type DialogProps as HeadlessDialogProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'fullscreen'\n\nexport interface DialogProps extends Omit<HeadlessDialogProps, 'class' | 'style' | 'children'> {\n /** The size of the dialog. */\n size?: DialogSize\n /** Whether the dialog can be dismissed by clicking the X button. */\n isDismissable?: boolean\n /** Additional CSS class name. */\n class?: string\n /** The title of the dialog. */\n title?: string\n /** The children content. */\n children: JSX.Element\n /** Callback when dialog should close */\n onClose?: () => void\n}\n\nexport interface DialogTriggerProps {\n /** Button to trigger the dialog. */\n trigger: JSX.Element\n /** The dialog content - receives close function. */\n content: (close: () => void) => JSX.Element\n /** Whether the dialog is controlled. */\n isOpen?: boolean\n /** Callback when open state changes. */\n onOpenChange?: (isOpen: boolean) => void\n /** Whether clicking outside the dialog closes it. Defaults to true. */\n isDismissable?: boolean\n /** Whether pressing Escape closes the dialog. Defaults to false. */\n isKeyboardDismissDisabled?: boolean\n}\n\n// ============================================\n// CONTEXT\n// ============================================\n\ninterface DialogContextValue {\n close: () => void\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nexport function useDialogContext(): DialogContextValue | null {\n return useContext(DialogContext)\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<DialogSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-2xl',\n fullscreen: 'max-w-full w-full h-full',\n}\n\n// ============================================\n// DIALOG COMPONENT\n// ============================================\n\n/**\n * A dialog is an overlay shown above other content in an application.\n */\nexport function Dialog(props: DialogProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'size',\n 'isDismissable',\n 'class',\n 'title',\n 'children',\n 'onClose',\n ])\n\n const size = () => local.size ?? 'md'\n\n const className = () => {\n const base = 'bg-bg-300 rounded-lg shadow-xl border border-primary-700 p-6'\n const sizeClass = sizeStyles[size()]\n const custom = local.class ?? ''\n return [base, sizeClass, custom].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessDialog\n {...rest}\n onClose={local.onClose}\n class={className()}\n children={({ close }) => (\n <DialogContext.Provider value={{ close }}>\n <Show when={local.title}>\n <div class=\"flex items-center justify-between mb-4\">\n <HeadlessDialogHeading level={2} class=\"text-xl font-semibold text-primary-100\">\n {local.title}\n </HeadlessDialogHeading>\n <Show when={local.isDismissable}>\n <button\n type=\"button\"\n onClick={close}\n class=\"text-primary-400 hover:text-primary-200 transition-colors\"\n aria-label=\"Close dialog\"\n >\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </Show>\n </div>\n </Show>\n <div class=\"text-primary-200\">{local.children}</div>\n </DialogContext.Provider>\n )}\n />\n )\n}\n\n// ============================================\n// DIALOG TRIGGER COMPONENT\n// ============================================\n\nfunction DialogTriggerContent(props: { content: (close: () => void) => JSX.Element }): JSX.Element {\n const triggerContext = useDialogTrigger()\n const close = () => triggerContext?.state.close()\n return props.content(close)\n}\n\n/**\n * DialogTrigger wraps a trigger button and dialog content.\n * Handles opening/closing the dialog with overlay and backdrop.\n */\nexport function DialogTrigger(props: DialogTriggerProps): JSX.Element {\n return (\n <HeadlessDialogTrigger\n isOpen={props.isOpen}\n onOpenChange={props.onOpenChange}\n >\n {props.trigger}\n <HeadlessModalOverlay\n isDismissable={props.isDismissable ?? true}\n isKeyboardDismissDisabled={props.isKeyboardDismissDisabled ?? false}\n class=\"fixed inset-0 z-40 bg-black/50 backdrop-blur-sm\"\n >\n <div class=\"fixed inset-0 z-50 flex items-center justify-center p-4 pointer-events-none\">\n <HeadlessModal class=\"pointer-events-auto\">\n <DialogTriggerContent content={props.content} />\n </HeadlessModal>\n </div>\n </HeadlessModalOverlay>\n </HeadlessDialogTrigger>\n )\n}\n\n// ============================================\n// DIALOG FOOTER COMPONENT\n// ============================================\n\nexport interface DialogFooterProps {\n /** Footer content, typically buttons. */\n children: JSX.Element\n /** Additional CSS class. */\n class?: string\n}\n\n/**\n * Footer section for dialog actions.\n */\nexport function DialogFooter(props: DialogFooterProps): JSX.Element {\n return (\n <div class={`flex gap-3 justify-end mt-6 pt-4 border-t border-primary-700 ${props.class ?? ''}`}>\n {props.children}\n </div>\n )\n}\n","/**\n * AlertDialog component for proyecto-viviana-silapse\n *\n * A dialog variant with role=\"alertdialog\" and confirm/cancel buttons.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\nimport {\n Dialog as HeadlessDialog,\n DialogTrigger as HeadlessDialogTrigger,\n Heading as HeadlessHeading,\n Modal as HeadlessModal,\n ModalOverlay as HeadlessModalOverlay,\n type DialogRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { Button } from '../button';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type AlertDialogVariant = 'confirmation' | 'information' | 'destructive' | 'error' | 'warning';\n\nexport interface AlertDialogProps {\n /** The title of the alert dialog. */\n title: string;\n /** The content/message of the alert dialog. */\n children: JSX.Element;\n /** The trigger element that opens the dialog. */\n trigger?: JSX.Element;\n /** The variant of the alert dialog. @default 'confirmation' */\n variant?: AlertDialogVariant;\n /** Label for the primary action button. @default 'Confirm' */\n primaryActionLabel?: string;\n /** Label for the secondary/cancel button. @default 'Cancel' */\n cancelLabel?: string;\n /** Handler called when the primary action is triggered. */\n onPrimaryAction?: () => void;\n /** Handler called when canceled. */\n onCancel?: () => void;\n /** Whether the dialog is open. */\n isOpen?: boolean;\n /** Handler called when open state changes. */\n onOpenChange?: (isOpen: boolean) => void;\n /** Whether the primary action button should auto-focus. @default true */\n autoFocusButton?: 'primary' | 'cancel';\n /** Additional CSS class name. */\n class?: string;\n /** Whether the dialog is dismissable by clicking outside. @default false */\n isDismissable?: boolean;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst variantStyles: Record<AlertDialogVariant, { icon: string; buttonVariant: string }> = {\n confirmation: { icon: 'text-accent', buttonVariant: '' },\n information: { icon: 'text-blue-400', buttonVariant: '' },\n destructive: { icon: 'text-red-400', buttonVariant: 'destructive' },\n error: { icon: 'text-red-400', buttonVariant: '' },\n warning: { icon: 'text-yellow-400', buttonVariant: '' },\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A dialog that requires user acknowledgement before proceeding.\n * Uses role=\"alertdialog\" for proper accessibility.\n */\nexport function AlertDialog(props: AlertDialogProps): JSX.Element {\n const [local] = splitProps(props, [\n 'title', 'children', 'trigger', 'variant', 'primaryActionLabel', 'cancelLabel',\n 'onPrimaryAction', 'onCancel', 'isOpen', 'onOpenChange', 'autoFocusButton',\n 'class', 'isDismissable',\n ]);\n\n const variant = () => local.variant ?? 'confirmation';\n const styles = () => variantStyles[variant()];\n\n return (\n <HeadlessDialogTrigger isOpen={local.isOpen} onOpenChange={local.onOpenChange}>\n {local.trigger}\n <HeadlessModalOverlay\n isDismissable={local.isDismissable ?? false}\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n >\n <HeadlessModal class=\"w-full max-w-md\">\n <HeadlessDialog\n role=\"alertdialog\"\n class={`bg-bg-300 rounded-lg shadow-xl border border-primary-700 p-6 ${local.class ?? ''}`}\n >\n {({ close }: DialogRenderProps) => (\n <>\n <HeadlessHeading\n slot=\"title\"\n class={`text-lg font-semibold text-primary-100 mb-3 ${styles().icon}`}\n >\n {local.title}\n </HeadlessHeading>\n\n <div class=\"text-primary-300 text-sm mb-6\">\n {local.children}\n </div>\n\n <div class=\"flex justify-end gap-3\">\n <Show when={local.cancelLabel !== undefined || local.onCancel}>\n <Button\n variant=\"secondary\"\n onPress={() => {\n local.onCancel?.();\n close();\n }}\n autoFocus={local.autoFocusButton === 'cancel'}\n >\n {local.cancelLabel ?? 'Cancel'}\n </Button>\n </Show>\n\n <Button\n variant={variant() === 'destructive' ? 'negative' : 'accent'}\n onPress={() => {\n local.onPrimaryAction?.();\n close();\n }}\n autoFocus={local.autoFocusButton !== 'cancel'}\n >\n {local.primaryActionLabel ?? 'Confirm'}\n </Button>\n </div>\n </>\n )}\n </HeadlessDialog>\n </HeadlessModal>\n </HeadlessModalOverlay>\n </HeadlessDialogTrigger>\n );\n}\n","import type { Component, JSX } from 'solid-js'\nimport { Icon as HeadlessIcon, type IconRenderProps } from '@proyecto-viviana/solidaria-components'\nimport type { PressEvent } from '@proyecto-viviana/solidaria'\n\nexport interface IconProps {\n /** The icon component to render (should accept size and color props) */\n icon: Component<{ size?: string | number; color?: string }>\n /** Size of the icon (e.g., '24px' or 24) */\n size?: string | number\n /** Color of the icon */\n color?: string\n /** Whether to show the accent shadow effect (4px offset to bottom) */\n withShadow?: boolean\n /** Additional CSS class */\n class?: string\n /** Press handler for interactive icons. */\n onPress?: (e: PressEvent) => void\n /** Accessible label for interactive icons. */\n 'aria-label'?: string\n /** ID of an element that labels this icon. */\n 'aria-labelledby'?: string\n}\n\n/**\n * Icon wrapper component with optional accent shadow effect.\n *\n * The shadow effect creates a 4px offset accent-colored duplicate\n * of the icon behind it for a stylized look.\n *\n * Behavior (element type, ARIA attributes) is owned by the headless Icon.\n * This component only handles styling and visual composition.\n */\nexport function Icon(props: IconProps): JSX.Element {\n const size = () => props.size ?? 24\n const color = () => props.color ?? 'var(--color-primary-500)'\n const IconComponent = props.icon\n\n const getClassName = (_renderProps: IconRenderProps): string => {\n const classList = [\n 'vui-icon',\n ]\n if (props.withShadow) {\n classList.push('vui-icon--with-shadow')\n }\n if (props.onPress) {\n classList.push('vui-icon--button')\n }\n if (props.class) {\n classList.push(props.class)\n }\n return classList.join(' ')\n }\n\n return (\n <HeadlessIcon\n onPress={props.onPress}\n aria-label={props['aria-label']}\n aria-labelledby={props['aria-labelledby']}\n class={getClassName}\n >\n {props.withShadow && (\n <div class=\"vui-icon__shadow\" aria-hidden=\"true\">\n <IconComponent size={size()} color=\"var(--color-accent)\" />\n </div>\n )}\n <div class=\"vui-icon__main\">\n <IconComponent size={size()} color={color()} />\n </div>\n </HeadlessIcon>\n )\n}\n\n// Re-export common icons\nexport { GitHubIcon } from './icons/GitHubIcon'\nexport type { GitHubIconProps } from './icons/GitHubIcon'\n\n// Sub-component re-exports\nexport { Illustration } from './Illustration';\nexport type { IllustrationProps, IllustrationSize } from './Illustration';\nexport { UIIcon } from './UIIcon';\nexport type { UIIconProps, UIIconSize } from './UIIcon';\n","import type { JSX } from 'solid-js';\n\nexport interface GitHubIconProps {\n size?: number;\n color?: string;\n class?: string;\n}\n\nexport function GitHubIcon(props: GitHubIconProps): JSX.Element {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 24 24\"\n width={props.size}\n height={props.size}\n fill={props.color ?? 'currentColor'}\n aria-hidden=\"true\"\n >\n <path d=\"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z\" />\n </svg>\n );\n}\n","/**\n * Illustration component for proyecto-viviana-silapse\n *\n * A styled illustration container for decorative or explanatory images.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type IllustrationSize = 'sm' | 'md' | 'lg';\n\nexport interface IllustrationProps {\n /** The size of the illustration. @default 'md' */\n size?: IllustrationSize;\n /** Additional CSS class name. */\n class?: string;\n /** The illustration content (SVG or image). */\n children?: JSX.Element;\n /** Accessibility label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<IllustrationSize, string> = {\n sm: 'w-16 h-16',\n md: 'w-24 h-24',\n lg: 'w-32 h-32',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled container for decorative illustrations.\n */\nexport function Illustration(props: IllustrationProps): JSX.Element {\n const [local, rest] = splitProps(props, ['size', 'class', 'children']);\n\n return (\n <div\n {...rest}\n role={rest['aria-label'] ? 'img' : 'presentation'}\n class={`inline-flex items-center justify-center text-primary-300 ${sizeStyles[local.size ?? 'md']} ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n","/**\n * UIIcon component for proyecto-viviana-silapse\n *\n * A utility icon component for internal UI icons (chevrons, close, etc).\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type UIIconSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport interface UIIconProps {\n /** The size of the icon. @default 'md' */\n size?: UIIconSize;\n /** Additional CSS class name. */\n class?: string;\n /** The SVG content or icon element. */\n children?: JSX.Element;\n /** Accessibility label. */\n 'aria-label'?: string;\n /** Whether the icon is hidden from screen readers. @default true */\n 'aria-hidden'?: boolean;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<UIIconSize, string> = {\n xs: 'w-3 h-3',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A utility icon wrapper for internal UI icons.\n */\nexport function UIIcon(props: UIIconProps): JSX.Element {\n const [local, rest] = splitProps(props, ['size', 'class', 'children']);\n\n return (\n <span\n {...rest}\n role={rest['aria-label'] ? 'img' : undefined}\n aria-hidden={rest['aria-hidden'] ?? !rest['aria-label']}\n class={`inline-flex items-center justify-center shrink-0 ${sizeStyles[local.size ?? 'md']} ${local.class ?? ''}`}\n >\n {local.children}\n </span>\n );\n}\n","/**\n * Tooltip component for proyecto-viviana-silapse\n *\n * A tooltip displays a description of an element on hover or focus.\n * Built on top of solidaria-components for accessibility.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js'\nimport {\n Tooltip as HeadlessTooltip,\n TooltipTrigger as HeadlessTooltipTrigger,\n type TooltipProps as HeadlessTooltipProps,\n type TooltipTriggerComponentProps as HeadlessTooltipTriggerProps,\n type TooltipRenderProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'\nexport type TooltipVariant = 'default' | 'neutral' | 'info'\n\nexport interface TooltipTriggerProps extends HeadlessTooltipTriggerProps {\n /** The children of the tooltip trigger (trigger element and tooltip). */\n children: JSX.Element\n}\n\nexport interface TooltipProps extends Omit<HeadlessTooltipProps, 'class' | 'style' | 'children'> {\n /** The content of the tooltip. */\n children: JSX.Element\n /** The position of the tooltip relative to the trigger. */\n placement?: TooltipPlacement\n /** Visual variant of the tooltip. */\n variant?: TooltipVariant\n /** Additional CSS class name. */\n class?: string\n /** Whether to show an arrow pointing to the trigger. */\n showArrow?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\n// Note: Position is now calculated by the headless layer (solidaria-components)\n// so we don't need CSS positioning classes here\nconst baseStyles = [\n 'px-3 py-2 rounded-lg',\n 'text-sm font-medium',\n 'shadow-lg',\n 'pointer-events-auto',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[exiting]:animate-out data-[exiting]:fade-out-0 data-[exiting]:zoom-out-95',\n].join(' ')\n\nconst variantStyles: Record<TooltipVariant, string> = {\n default: 'bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900',\n neutral: 'bg-neutral-800 text-neutral-100 dark:bg-neutral-200 dark:text-neutral-900',\n info: 'bg-blue-600 text-white dark:bg-blue-500',\n}\n\nconst arrowStyles: Record<TooltipPlacement, string> = {\n top: 'bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-l-transparent border-r-transparent border-b-transparent',\n bottom: 'top-0 left-1/2 -translate-x-1/2 -translate-y-full border-l-transparent border-r-transparent border-t-transparent',\n left: 'right-0 top-1/2 -translate-y-1/2 translate-x-full border-t-transparent border-b-transparent border-r-transparent',\n right: 'left-0 top-1/2 -translate-y-1/2 -translate-x-full border-t-transparent border-b-transparent border-l-transparent',\n}\n\nconst getArrowBorderColor = (variant: TooltipVariant): string => {\n const colors: Record<TooltipVariant, string> = {\n default: 'border-neutral-900 dark:border-neutral-100',\n neutral: 'border-neutral-800 dark:border-neutral-200',\n info: 'border-blue-600 dark:border-blue-500',\n }\n return colors[variant]\n}\n\n// ============================================\n// COMPONENTS\n// ============================================\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip.\n * It handles opening and closing the Tooltip when the user hovers\n * over or focuses the trigger.\n *\n * @example\n * ```tsx\n * <TooltipTrigger>\n * <Button>Hover me</Button>\n * <Tooltip>This is helpful information</Tooltip>\n * </TooltipTrigger>\n * ```\n */\nexport function TooltipTrigger(props: TooltipTriggerProps): JSX.Element {\n return <HeadlessTooltipTrigger {...props} />\n}\n\n/**\n * Styled tooltip component that displays a description on hover or focus.\n *\n * @example\n * ```tsx\n * <TooltipTrigger>\n * <Button>Save</Button>\n * <Tooltip placement=\"top\">Save your changes</Tooltip>\n * </TooltipTrigger>\n * ```\n */\nexport function Tooltip(props: TooltipProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'placement',\n 'variant',\n 'class',\n 'showArrow',\n ])\n\n const placement = () => local.placement ?? 'top'\n const variant = () => local.variant ?? 'default'\n\n return (\n <HeadlessTooltip\n {...rest}\n placement={placement()}\n class={(_renderProps: TooltipRenderProps) => {\n const classes = [\n baseStyles,\n variantStyles[variant()],\n local.class ?? '',\n ].filter(Boolean).join(' ')\n return classes\n }}\n >\n {(renderProps: TooltipRenderProps) => (\n <>\n {props.children}\n <Show when={local.showArrow}>\n <div\n class={[\n 'absolute w-0 h-0 border-4',\n arrowStyles[renderProps.placement ?? placement()],\n getArrowBorderColor(variant()),\n ].join(' ')}\n />\n </Show>\n </>\n )}\n </HeadlessTooltip>\n )\n}\n\n// ============================================\n// SIMPLE CSS-ONLY TOOLTIP (Legacy)\n// ============================================\n\nexport interface SimpleTooltipProps {\n /** The content to show in the tooltip */\n label: string\n /** The trigger element */\n children: JSX.Element\n /** Position of the tooltip */\n position?: 'top' | 'bottom'\n /** Additional CSS class */\n class?: string\n}\n\n/**\n * Simple CSS-only tooltip component.\n * Uses CSS hover effect for performance. No JS state management.\n *\n * @deprecated Use the accessible Tooltip + TooltipTrigger components instead.\n *\n * @example\n * ```tsx\n * <SimpleTooltip label=\"Save your changes\">\n * <button>Save</button>\n * </SimpleTooltip>\n * ```\n */\nexport function SimpleTooltip(props: SimpleTooltipProps): JSX.Element {\n const position = () => props.position ?? 'bottom'\n\n return (\n <div class={`vui-tooltip ${props.class ?? ''}`}>\n <div class=\"vui-tooltip__trigger\">\n {props.children}\n </div>\n <div class={`vui-tooltip__content vui-tooltip__content--${position()}`}>\n <span>{props.label}</span>\n </div>\n </div>\n )\n}\n\n// Re-export types\nexport type { TooltipRenderProps }\n","/**\n * Popover component for proyecto-viviana-silapse\n *\n * A popover displays content in an overlay positioned relative to a trigger.\n * Built on top of solidaria-components for accessibility.\n * Follows Spectrum 2 design patterns.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js'\nimport {\n Popover as HeadlessPopover,\n PopoverTrigger as HeadlessPopoverTrigger,\n OverlayArrow as HeadlessOverlayArrow,\n type PopoverProps as HeadlessPopoverProps,\n type PopoverTriggerProps as HeadlessPopoverTriggerProps,\n type PopoverRenderProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type PopoverPlacement = NonNullable<HeadlessPopoverProps['placement']>\nexport type Placement = PopoverPlacement\nexport type PlacementAxis = NonNullable<PopoverRenderProps['placement']>\nexport type PopoverSize = 'sm' | 'md' | 'lg'\n\nexport interface PopoverTriggerProps extends HeadlessPopoverTriggerProps {\n /** The children of the popover trigger (trigger element and popover). */\n children: JSX.Element\n}\n\nexport interface PopoverProps extends Omit<HeadlessPopoverProps, 'class' | 'style' | 'children'> {\n /** The content of the popover. */\n children: JSX.Element\n /** The position of the popover relative to the trigger. */\n placement?: PopoverPlacement\n /** Size variant of the popover. */\n size?: PopoverSize\n /** Additional CSS class name. */\n class?: string\n /** Whether to show an arrow pointing to the trigger. */\n showArrow?: boolean\n /** Custom padding inside the popover. */\n padding?: 'none' | 'sm' | 'md' | 'lg'\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst baseStyles = [\n 'bg-bg-300',\n 'rounded-lg',\n 'shadow-xl',\n 'border border-primary-700',\n 'text-primary-200',\n 'outline-none',\n // Animation\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[placement=top]:slide-in-from-bottom-2',\n 'data-[placement=bottom]:slide-in-from-top-2',\n 'data-[placement=left]:slide-in-from-right-2',\n 'data-[placement=right]:slide-in-from-left-2',\n 'data-[exiting]:animate-out data-[exiting]:fade-out-0 data-[exiting]:zoom-out-95',\n].join(' ')\n\nconst sizeStyles: Record<PopoverSize, string> = {\n sm: 'max-w-xs',\n md: 'max-w-sm',\n lg: 'max-w-lg',\n}\n\nconst paddingStyles: Record<string, string> = {\n none: '',\n sm: 'p-2',\n md: 'p-4',\n lg: 'p-6',\n}\n\n// Arrow styles based on placement\nconst arrowBaseStyles = [\n 'fill-bg-300',\n 'stroke-primary-700',\n 'stroke-1',\n].join(' ')\n\n// Arrow positioning for each placement axis\nconst getArrowRotation = (placement: PlacementAxis | null): string => {\n switch (placement) {\n case 'top':\n return 'rotate-180'\n case 'bottom':\n return ''\n case 'left':\n return 'rotate-90'\n case 'right':\n return '-rotate-90'\n default:\n return ''\n }\n}\n\n// ============================================\n// COMPONENTS\n// ============================================\n\n/**\n * PopoverTrigger wraps around a trigger element and a Popover.\n * It handles opening and closing the Popover when the user interacts\n * with the trigger.\n *\n * @example\n * ```tsx\n * <PopoverTrigger>\n * <Button>Open Popover</Button>\n * <Popover>\n * <p>Popover content here!</p>\n * </Popover>\n * </PopoverTrigger>\n * ```\n */\nexport function PopoverTrigger(props: PopoverTriggerProps): JSX.Element {\n return <HeadlessPopoverTrigger {...props} />\n}\n\n/**\n * Styled popover component that displays content in an overlay.\n *\n * @example\n * ```tsx\n * <PopoverTrigger>\n * <Button>Settings</Button>\n * <Popover placement=\"bottom\" size=\"md\">\n * <h3>Settings</h3>\n * <p>Configure your preferences here.</p>\n * </Popover>\n * </PopoverTrigger>\n * ```\n */\nexport function Popover(props: PopoverProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'placement',\n 'size',\n 'class',\n 'showArrow',\n 'padding',\n ])\n\n const placement = () => local.placement ?? 'bottom'\n const size = () => local.size ?? 'md'\n const padding = () => local.padding ?? 'md'\n\n return (\n <HeadlessPopover\n {...rest}\n placement={placement()}\n class={(_renderProps: PopoverRenderProps) => {\n const classes = [\n baseStyles,\n sizeStyles[size()],\n paddingStyles[padding()],\n local.class ?? '',\n ].filter(Boolean).join(' ')\n return classes\n }}\n >\n {(renderProps: PopoverRenderProps) => (\n <>\n <Show when={local.showArrow}>\n <PopoverArrow placement={renderProps.placement} />\n </Show>\n {props.children}\n </>\n )}\n </HeadlessPopover>\n )\n}\n\n/**\n * Arrow component for the popover.\n * Automatically positions itself based on the popover placement.\n */\ninterface PopoverArrowProps {\n /** The current placement axis. */\n placement: PlacementAxis | null\n /** Additional CSS class. */\n class?: string\n}\n\nfunction PopoverArrow(props: PopoverArrowProps): JSX.Element {\n return (\n <HeadlessOverlayArrow\n class=\"absolute block\"\n style={{\n // Position based on placement\n ...(props.placement === 'top' && { bottom: '100%', left: '50%', transform: 'translateX(-50%)' }),\n ...(props.placement === 'bottom' && { top: '-8px', left: '50%', transform: 'translateX(-50%)' }),\n ...(props.placement === 'left' && { right: '100%', top: '50%', transform: 'translateY(-50%)' }),\n ...(props.placement === 'right' && { left: '-8px', top: '50%', transform: 'translateY(-50%)' }),\n }}\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n class={`${arrowBaseStyles} ${getArrowRotation(props.placement)} ${props.class ?? ''}`}\n >\n <path d=\"M0 0 L6 6 L12 0\" />\n </svg>\n </HeadlessOverlayArrow>\n )\n}\n\n// ============================================\n// POPOVER CONTENT SECTIONS\n// ============================================\n\nexport interface PopoverHeaderProps {\n /** The title of the popover. */\n title: string\n /** Optional description text. */\n description?: string\n /** Additional CSS class. */\n class?: string\n}\n\n/**\n * Header section for popover with title and optional description.\n */\nexport function PopoverHeader(props: PopoverHeaderProps): JSX.Element {\n return (\n <div class={`mb-3 ${props.class ?? ''}`}>\n <h3 class=\"text-lg font-semibold text-primary-100\">{props.title}</h3>\n <Show when={props.description}>\n <p class=\"text-sm text-primary-400 mt-1\">{props.description}</p>\n </Show>\n </div>\n )\n}\n\nexport interface PopoverFooterProps {\n /** Footer content, typically buttons. */\n children: JSX.Element\n /** Additional CSS class. */\n class?: string\n}\n\n/**\n * Footer section for popover actions.\n */\nexport function PopoverFooter(props: PopoverFooterProps): JSX.Element {\n return (\n <div class={`flex gap-2 justify-end mt-4 pt-3 border-t border-primary-700 ${props.class ?? ''}`}>\n {props.children}\n </div>\n )\n}\n\n// Re-export types\nexport type { PopoverRenderProps }\n","/**\n * Modal component for proyecto-viviana-silapse\n *\n * A styled ModalOverlay + Modal combination.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Modal as HeadlessModal,\n ModalOverlay as HeadlessModalOverlay,\n type ModalProps as HeadlessModalProps,\n type ModalOverlayProps as HeadlessModalOverlayProps,\n type ModalRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'fullscreen';\n\nexport interface StyledModalProps extends Omit<HeadlessModalOverlayProps, 'class'> {\n /** The size of the modal. @default 'md' */\n size?: ModalSize;\n /** Additional CSS class name. */\n class?: string;\n /** The content of the modal. */\n children?: JSX.Element;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<ModalSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-lg',\n lg: 'max-w-3xl',\n fullscreen: 'max-w-full h-full',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled modal overlay with sizing options.\n */\nexport function StyledModal(props: StyledModalProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class', 'children']);\n\n return (\n <HeadlessModalOverlay\n {...headlessProps}\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm\"\n >\n <HeadlessModal\n class={`w-full ${sizeStyles[local.size ?? 'md']} bg-bg-300 rounded-lg shadow-xl border border-primary-700 ${local.class ?? ''}`}\n >\n {local.children}\n </HeadlessModal>\n </HeadlessModalOverlay>\n );\n}\n","/**\n * Overlay component for proyecto-viviana-silapse\n *\n * A generic overlay container for positioning content above the page.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { useUNSAFE_PortalContext } from '@proyecto-viviana/solidaria';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface OverlayProps {\n /** Whether the overlay is currently open. */\n isOpen?: boolean;\n /** The content of the overlay. */\n children?: JSX.Element;\n /** Additional CSS class name. */\n class?: string;\n /** The container element to render the overlay into. */\n container?: HTMLElement;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A generic overlay container that renders content above the page via a portal.\n */\nexport function Overlay(props: OverlayProps): JSX.Element {\n const [local] = splitProps(props, ['isOpen', 'children', 'class', 'container']);\n const portalContext = useUNSAFE_PortalContext();\n const portalContainer = () => local.container ?? (portalContext.getContainer?.() as HTMLElement | null | undefined) ?? undefined;\n\n return (\n <Show when={local.isOpen}>\n <Portal mount={portalContainer()}>\n <div class={`fixed z-50 ${local.class ?? ''}`}>\n {local.children}\n </div>\n </Portal>\n </Show>\n );\n}\n","/**\n * Tray component for proyecto-viviana-silapse\n *\n * A bottom-sheet mobile overlay.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ModalOverlay as HeadlessModalOverlay,\n Modal as HeadlessModal,\n type ModalOverlayProps as HeadlessModalOverlayProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface TrayProps extends Omit<HeadlessModalOverlayProps, 'class'> {\n /** Additional CSS class name. */\n class?: string;\n /** The content of the tray. */\n children?: JSX.Element;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A bottom-sheet overlay for mobile contexts.\n */\nexport function Tray(props: TrayProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'children']);\n\n return (\n <HeadlessModalOverlay\n {...headlessProps}\n class=\"fixed inset-0 z-50 flex items-end justify-center bg-black/50\"\n >\n <HeadlessModal\n class={`w-full max-h-[90vh] bg-bg-300 rounded-t-2xl shadow-xl border-t border-primary-700 overflow-auto ${local.class ?? ''}`}\n >\n <div class=\"w-12 h-1 rounded-full bg-primary-500 mx-auto mt-2 mb-4\" />\n {local.children}\n </HeadlessModal>\n </HeadlessModalOverlay>\n );\n}\n","/**\n * OpenTransition utility for proyecto-viviana-silapse\n *\n * CSS transition component for overlay enter/exit animations.\n * SolidJS-idiomatic: uses createEffect + classList for class toggling.\n */\n\nimport { type JSX, createSignal, createEffect, on, onCleanup, Show, children as resolveChildren } from 'solid-js'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface OpenTransitionProps {\n /** Whether the content is open/visible. */\n open: boolean\n /** The content to apply transitions to. */\n children: JSX.Element\n /** CSS classes for the start of the enter transition. */\n enterFrom?: string\n /** CSS classes for the end of the enter transition. */\n enterTo?: string\n /** CSS classes for the start of the exit transition. */\n exitFrom?: string\n /** CSS classes for the end of the exit transition. */\n exitTo?: string\n /** Transition duration in ms. @default 200 */\n duration?: number\n /** Callback when exit transition completes (useful for overlay unmounting). */\n onExited?: () => void\n /** Additional CSS class always applied. */\n class?: string\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A transition utility that applies CSS classes for enter/exit animations.\n *\n * @example\n * ```tsx\n * <OpenTransition\n * open={isOpen()}\n * enterFrom=\"opacity-0 scale-95\"\n * enterTo=\"opacity-100 scale-100\"\n * exitFrom=\"opacity-100 scale-100\"\n * exitTo=\"opacity-0 scale-95\"\n * duration={200}\n * >\n * <div class=\"transition-all\">Content</div>\n * </OpenTransition>\n * ```\n */\nexport function OpenTransition(props: OpenTransitionProps): JSX.Element {\n const duration = () => props.duration ?? 200\n const [mounted, setMounted] = createSignal(props.open)\n const [transitionClasses, setTransitionClasses] = createSignal('')\n\n createEffect(on(\n () => props.open,\n (isOpen) => {\n if (isOpen) {\n // Enter: mount immediately, apply enterFrom, then enterTo\n setMounted(true)\n\n // Apply enterFrom classes first\n setTransitionClasses(props.enterFrom ?? '')\n\n // On next frame, apply enterTo classes\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setTransitionClasses(props.enterTo ?? '')\n })\n })\n } else {\n // Exit: apply exitFrom, then exitTo, then unmount after duration\n setTransitionClasses(props.exitFrom ?? '')\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setTransitionClasses(props.exitTo ?? '')\n })\n })\n\n const timer = setTimeout(() => {\n setMounted(false)\n props.onExited?.()\n }, duration())\n\n onCleanup(() => clearTimeout(timer))\n }\n }\n ))\n\n const resolved = resolveChildren(() => props.children)\n\n return (\n <Show when={mounted()}>\n <div\n class={`${props.class ?? ''} ${transitionClasses()}`}\n style={{ 'transition-duration': `${duration()}ms` }}\n data-open={props.open || undefined}\n >\n {resolved()}\n </div>\n </Show>\n )\n}\n","/**\n * TextField component for proyecto-viviana-silapse\n *\n * Styled text field built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, useContext } from 'solid-js'\nimport {\n TextField as HeadlessTextField,\n Label as HeadlessLabel,\n Input as HeadlessInput,\n TextFieldContext,\n type TextFieldProps as HeadlessTextFieldProps,\n type TextFieldRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TextFieldSize = 'sm' | 'md' | 'lg'\nexport type TextFieldVariant = 'outline' | 'filled'\n\nexport interface TextFieldProps extends Omit<HeadlessTextFieldProps, 'class' | 'style' | 'children'> {\n /** The size of the text field. */\n size?: TextFieldSize\n /** The visual variant of the text field. */\n variant?: TextFieldVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the input. */\n label?: string\n /** Description text shown below the input. */\n description?: string\n /** Error message shown when invalid. */\n errorMessage?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n input: 'h-8 px-2 text-sm',\n label: 'text-sm',\n description: 'text-xs',\n },\n md: {\n input: 'h-10 px-3 text-base',\n label: 'text-sm',\n description: 'text-sm',\n },\n lg: {\n input: 'h-12 px-4 text-lg',\n label: 'text-base',\n description: 'text-sm',\n },\n}\n\nfunction TextFieldDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(TextFieldContext)\n if (!context) return null\n const descriptionProps = () => {\n const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>\n return rest\n }\n return (\n <p {...descriptionProps()} class={props.class}>\n {props.children}\n </p>\n )\n}\n\nfunction TextFieldError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(TextFieldContext)\n if (!context) return null\n const errorMessageProps = () => {\n const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>\n return rest\n }\n return (\n <p {...errorMessageProps()} class={props.class}>\n {props.children}\n </p>\n )\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\nexport { TextArea } from './TextArea';\nexport type { TextAreaProps, TextAreaSize, TextAreaVariant } from './TextArea';\n\nexport function TextField(props: TextFieldProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n\n const containerClasses = () => {\n const base = 'flex flex-col'\n const custom = local.class ?? ''\n return [base, custom].filter(Boolean).join(' ')\n }\n\n const inputClasses = (renderProps: TextFieldRenderProps) => {\n const base = 'w-full rounded-md transition-all duration-200 outline-none'\n const sizeClass = size().input\n\n const variantClass = local.variant === 'filled'\n ? 'bg-bg-200 border border-transparent'\n : 'bg-transparent border border-bg-400'\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isInvalid) {\n stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'\n } else {\n stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'\n }\n\n const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'\n\n return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'block font-medium text-primary-200 mb-1'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const descriptionClasses = () => {\n const base = 'mt-1 text-primary-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const errorClasses = () => {\n const base = 'mt-1 text-danger-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTextField\n {...headlessProps}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n class={containerClasses()}\n children={(renderProps) => (\n <>\n <Show when={local.label}>\n <HeadlessLabel class={labelClasses()}>\n {local.label}\n <Show when={renderProps.isRequired}>\n <span class=\"text-danger-400 ml-0.5\">*</span>\n </Show>\n </HeadlessLabel>\n </Show>\n\n <HeadlessInput class={inputClasses(renderProps)} />\n\n <Show when={local.description && !renderProps.isInvalid}>\n <TextFieldDescription class={descriptionClasses()}>\n {local.description}\n </TextFieldDescription>\n </Show>\n\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <TextFieldError class={errorClasses()}>\n {local.errorMessage}\n </TextFieldError>\n </Show>\n </>\n )}\n />\n )\n}\n","/**\n * TextArea component for proyecto-viviana-silapse\n *\n * Styled multiline text field with auto-resize support.\n * Built on top of solidaria-components TextField + TextArea.\n */\n\nimport { type JSX, splitProps, Show, useContext } from 'solid-js'\nimport {\n TextField as HeadlessTextField,\n Label as HeadlessLabel,\n TextArea as HeadlessTextArea,\n TextFieldContext,\n type TextFieldProps as HeadlessTextFieldProps,\n type TextFieldRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TextAreaSize = 'sm' | 'md' | 'lg'\nexport type TextAreaVariant = 'outline' | 'filled'\n\nexport interface TextAreaProps extends Omit<HeadlessTextFieldProps, 'class' | 'style' | 'children'> {\n /** The size of the text area. */\n size?: TextAreaSize\n /** The visual variant of the text area. */\n variant?: TextAreaVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the textarea. */\n label?: string\n /** Description text shown below the textarea. */\n description?: string\n /** Error message shown when invalid. */\n errorMessage?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n textarea: 'min-h-[60px] px-2 py-1.5 text-sm',\n label: 'text-sm',\n description: 'text-xs',\n },\n md: {\n textarea: 'min-h-[80px] px-3 py-2 text-base',\n label: 'text-sm',\n description: 'text-sm',\n },\n lg: {\n textarea: 'min-h-[100px] px-4 py-3 text-lg',\n label: 'text-base',\n description: 'text-sm',\n },\n}\n\nfunction TextAreaDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(TextFieldContext)\n if (!context) return null\n const descriptionProps = () => {\n const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>\n return rest\n }\n return (\n <p {...descriptionProps()} class={props.class}>\n {props.children}\n </p>\n )\n}\n\nfunction TextAreaError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(TextFieldContext)\n if (!context) return null\n const errorMessageProps = () => {\n const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>\n return rest\n }\n return (\n <p {...errorMessageProps()} class={props.class}>\n {props.children}\n </p>\n )\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * TextAreas are multiline text inputs, useful for cases where users have\n * a sizable amount of text to enter.\n */\nexport function TextArea(props: TextAreaProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n\n const containerClasses = () => {\n const base = 'flex flex-col'\n const custom = local.class ?? ''\n return [base, custom].filter(Boolean).join(' ')\n }\n\n const textareaClasses = (renderProps: TextFieldRenderProps) => {\n const base = 'w-full rounded-md transition-all duration-200 outline-none resize-none overflow-hidden'\n const sizeClass = size().textarea\n\n const variantClass = local.variant === 'filled'\n ? 'bg-bg-200 border border-transparent'\n : 'bg-transparent border border-bg-400'\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isInvalid) {\n stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'\n } else {\n stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'\n }\n\n const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'\n\n return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'block font-medium text-primary-200 mb-1'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const descriptionClasses = () => {\n const base = 'mt-1 text-primary-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const errorClasses = () => {\n const base = 'mt-1 text-danger-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTextField\n {...headlessProps}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n class={containerClasses()}\n children={(renderProps) => (\n <>\n <Show when={local.label}>\n <HeadlessLabel class={labelClasses()}>\n {local.label}\n <Show when={renderProps.isRequired}>\n <span class=\"text-danger-400 ml-0.5\">*</span>\n </Show>\n </HeadlessLabel>\n </Show>\n\n <HeadlessTextArea class={textareaClasses(renderProps)} />\n\n <Show when={local.description && !renderProps.isInvalid}>\n <TextAreaDescription class={descriptionClasses()}>\n {local.description}\n </TextAreaDescription>\n </Show>\n\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <TextAreaError class={errorClasses()}>\n {local.errorMessage}\n </TextAreaError>\n </Show>\n </>\n )}\n />\n )\n}\n","/**\n * Link component for proyecto-viviana-silapse\n *\n * Styled link component built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Link as HeadlessLink,\n type LinkProps as HeadlessLinkProps,\n type LinkRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type LinkVariant = 'primary' | 'secondary' | 'subtle';\n\nexport interface LinkProps extends Omit<HeadlessLinkProps, 'class' | 'style' | 'children'> {\n /** The visual style of the link. @default 'primary' */\n variant?: LinkVariant;\n /** Whether the link is on its own vs inside a longer string of text. */\n isStandalone?: boolean;\n /** Whether the link should be displayed with a quiet style (no underline by default). */\n isQuiet?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** The content of the link. */\n children?: JSX.Element;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst variantStyles = {\n primary: 'text-accent hover:text-accent-300',\n secondary: 'text-primary-300 hover:text-primary-200',\n subtle: 'text-primary-400 hover:text-primary-300',\n};\n\n// ============================================\n// LINK COMPONENT\n// ============================================\n\n/**\n * Links allow users to navigate to a different location.\n * They can be presented inline inside a paragraph or as standalone text.\n *\n * Built on solidaria-components Link for full accessibility support.\n *\n * @example\n * ```tsx\n * <Link href=\"/about\">About Us</Link>\n *\n * // Secondary variant\n * <Link href=\"/help\" variant=\"secondary\">Help</Link>\n *\n * // Standalone (bold, no underline until hover)\n * <Link href=\"/home\" isStandalone isQuiet>Home</Link>\n * ```\n */\nexport function Link(props: LinkProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, [\n 'variant',\n 'isStandalone',\n 'isQuiet',\n 'class',\n ]);\n\n const variant = local.variant ?? 'primary';\n const customClass = local.class ?? '';\n\n // Generate class based on render props\n const getClassName = (renderProps: LinkRenderProps): string => {\n const base = 'transition-colors duration-200 cursor-pointer rounded-sm outline-none';\n\n // Variant colors\n const variantClass = variantStyles[variant];\n\n // Underline behavior\n let underlineClass: string;\n if (local.isStandalone && local.isQuiet) {\n // Quiet standalone: no underline by default, underline on hover/focus\n underlineClass = renderProps.isHovered || renderProps.isFocusVisible\n ? 'underline'\n : 'no-underline';\n } else {\n // Inline links always have underline for accessibility\n underlineClass = 'underline';\n }\n\n // Font weight for standalone\n const weightClass = local.isStandalone ? 'font-medium' : '';\n\n // Focus ring\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : '';\n\n // Disabled state\n const disabledClass = renderProps.isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : '';\n\n // Pressed state\n const pressedClass = renderProps.isPressed ? 'opacity-80' : '';\n\n return [\n base,\n variantClass,\n underlineClass,\n weightClass,\n focusClass,\n disabledClass,\n pressedClass,\n customClass,\n ].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessLink\n {...headlessProps}\n class={getClassName}\n >\n {props.children}\n </HeadlessLink>\n );\n}\n","/**\n * ProgressBar component for proyecto-viviana-silapse\n *\n * Styled progress bar component built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, createUniqueId } from 'solid-js';\nimport {\n ProgressBar as HeadlessProgressBar,\n type ProgressBarRenderProps as HeadlessProgressBarRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ProgressBarSize = 'sm' | 'md' | 'lg';\nexport type ProgressBarVariant = 'primary' | 'accent' | 'success' | 'warning' | 'danger';\n\nexport interface ProgressBarProps {\n /** The current value (controlled). @default 0 */\n value?: number;\n /** The smallest value allowed. @default 0 */\n minValue?: number;\n /** The largest value allowed. @default 100 */\n maxValue?: number;\n /** The content to display as the value's label (e.g. \"1 of 4\"). */\n valueLabel?: string;\n /** Whether presentation is indeterminate when progress isn't known. */\n isIndeterminate?: boolean;\n /** The size of the progress bar. @default 'md' */\n size?: ProgressBarSize;\n /** The visual style variant. @default 'primary' */\n variant?: ProgressBarVariant;\n /** The label to display above the progress bar. */\n label?: string;\n /** Whether to show the value text. @default true for determinate progress */\n showValueLabel?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** An accessibility label. */\n 'aria-label'?: string;\n /** Reference to external label element. */\n 'aria-labelledby'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n track: 'h-1',\n text: 'text-xs',\n },\n md: {\n track: 'h-2',\n text: 'text-sm',\n },\n lg: {\n track: 'h-3',\n text: 'text-base',\n },\n};\n\nconst variantStyles = {\n primary: 'bg-primary-500',\n accent: 'bg-accent',\n success: 'bg-green-500',\n warning: 'bg-yellow-500',\n danger: 'bg-red-500',\n};\n\n// ============================================\n// PROGRESSBAR COMPONENT\n// ============================================\n\n/**\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n *\n * @example\n * ```tsx\n * <ProgressBar value={50} label=\"Loading...\" />\n *\n * // Indeterminate\n * <ProgressBar isIndeterminate label=\"Processing...\" />\n *\n * // Different variants\n * <ProgressBar value={75} variant=\"success\" />\n * ```\n */\nexport function ProgressBar(props: ProgressBarProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'variant',\n 'label',\n 'showValueLabel',\n 'class',\n ]);\n\n const size = () => local.size ?? 'md';\n const variant = () => local.variant ?? 'primary';\n const sizeConfig = () => sizeStyles[size()];\n const labelId = createUniqueId();\n const renderChildren = ({ valueText, percentage, isIndeterminate }: HeadlessProgressBarRenderProps) => {\n const showValueLabel = local.showValueLabel ?? !isIndeterminate;\n const fillWidth = isIndeterminate ? '30%' : `${percentage ?? 0}%`;\n\n return (\n <>\n <Show when={local.label || showValueLabel}>\n <div class={`flex justify-between items-center mb-1 ${sizeConfig().text}`}>\n <Show when={local.label}>\n <span id={labelId} class=\"text-primary-200 font-medium\">{local.label}</span>\n </Show>\n <Show when={showValueLabel && !isIndeterminate}>\n <span class=\"text-primary-300\">{valueText}</span>\n </Show>\n </div>\n </Show>\n\n <div class={`w-full ${sizeConfig().track} bg-bg-300 rounded-full overflow-hidden`}>\n <div\n class={`h-full rounded-full transition-all duration-300 ${variantStyles[variant()]} ${\n isIndeterminate ? 'animate-progress-indeterminate' : ''\n }`}\n style={{ width: fillWidth }}\n />\n </div>\n </>\n );\n };\n\n return (\n <HeadlessProgressBar\n {...headlessProps}\n aria-labelledby={headlessProps['aria-labelledby'] ?? (!headlessProps['aria-label'] && local.label ? labelId : undefined)}\n aria-label={headlessProps['aria-label']}\n class={`w-full ${local.class ?? ''}`}\n children={renderChildren}\n />\n );\n}\n","/**\n * ProgressCircle component for proyecto-viviana-silapse\n *\n * A circular SVG progress indicator.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\nimport {\n ProgressBar as HeadlessProgressBar,\n type ProgressBarRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ProgressCircleSize = 'sm' | 'md' | 'lg';\nexport type ProgressCircleVariant = 'primary' | 'accent';\n\nexport interface ProgressCircleProps {\n /** The current value. @default 0 */\n value?: number;\n /** The smallest value allowed. @default 0 */\n minValue?: number;\n /** The largest value allowed. @default 100 */\n maxValue?: number;\n /** Whether presentation is indeterminate. */\n isIndeterminate?: boolean;\n /** The size of the progress circle. @default 'md' */\n size?: ProgressCircleSize;\n /** The visual variant. @default 'primary' */\n variant?: ProgressCircleVariant;\n /** Additional CSS class name. */\n class?: string;\n /** An accessibility label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeConfig: Record<ProgressCircleSize, { size: number; stroke: number }> = {\n sm: { size: 24, stroke: 3 },\n md: { size: 36, stroke: 3 },\n lg: { size: 48, stroke: 4 },\n};\n\nconst variantColors: Record<ProgressCircleVariant, string> = {\n primary: 'stroke-primary-400',\n accent: 'stroke-accent',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A circular progress indicator using SVG.\n */\nexport function ProgressCircle(props: ProgressCircleProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'variant', 'class']);\n\n const size = () => local.size ?? 'md';\n const config = () => sizeConfig[size()];\n const variant = () => local.variant ?? 'primary';\n\n const radius = () => (config().size - config().stroke) / 2;\n const circumference = () => 2 * Math.PI * radius();\n const center = () => config().size / 2;\n\n return (\n <HeadlessProgressBar\n {...headlessProps}\n class={`inline-flex ${local.class ?? ''}`}\n >\n {(renderProps: ProgressBarRenderProps) => {\n const offset = () => renderProps.isIndeterminate\n ? circumference() * 0.75\n : circumference() - ((renderProps.percentage ?? 0) / 100) * circumference();\n\n return (\n <svg\n width={config().size}\n height={config().size}\n viewBox={`0 0 ${config().size} ${config().size}`}\n class={renderProps.isIndeterminate ? 'animate-spin' : ''}\n >\n <circle\n cx={center()}\n cy={center()}\n r={radius()}\n fill=\"none\"\n stroke-width={String(config().stroke)}\n class=\"stroke-bg-300\"\n />\n <circle\n cx={center()}\n cy={center()}\n r={radius()}\n fill=\"none\"\n stroke-width={String(config().stroke)}\n stroke-dasharray={String(circumference())}\n stroke-dashoffset={String(offset())}\n stroke-linecap=\"round\"\n class={`transition-all duration-300 ${variantColors[variant()]}`}\n transform={`rotate(-90 ${center()} ${center()})`}\n />\n </svg>\n );\n }}\n </HeadlessProgressBar>\n );\n}\n","/**\n * Separator component for proyecto-viviana-silapse\n *\n * Styled separator component built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, createMemo } from 'solid-js';\nimport {\n Separator as HeadlessSeparator,\n type SeparatorProps as HeadlessSeparatorProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SeparatorVariant = 'default' | 'subtle' | 'strong';\nexport type SeparatorSize = 'sm' | 'md' | 'lg';\n\nexport interface SeparatorProps\n extends Omit<HeadlessSeparatorProps, 'class' | 'style'> {\n /** The visual style variant. @default 'default' */\n variant?: SeparatorVariant;\n /** The size/thickness of the separator. @default 'md' */\n size?: SeparatorSize;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst variantStyles = {\n default: 'bg-bg-100',\n subtle: 'bg-bg-200',\n strong: 'bg-primary-600',\n};\n\nconst horizontalSizeStyles = {\n sm: 'h-px',\n md: 'h-0.5',\n lg: 'h-1',\n};\n\nconst verticalSizeStyles = {\n sm: 'w-px',\n md: 'w-0.5',\n lg: 'w-1',\n};\n\n// ============================================\n// SEPARATOR COMPONENT\n// ============================================\n\n/**\n * A separator is a visual divider between two groups of content,\n * e.g. groups of menu items or sections of a page.\n *\n * @example\n * ```tsx\n * <Separator />\n *\n * // Vertical separator\n * <div class=\"flex items-center gap-4\">\n * <span>Item 1</span>\n * <Separator orientation=\"vertical\" />\n * <span>Item 2</span>\n * </div>\n *\n * // Different variants\n * <Separator variant=\"strong\" />\n * ```\n */\nexport function Separator(props: SeparatorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'orientation',\n 'variant',\n 'size',\n 'class',\n ]);\n\n const orientation = () => local.orientation ?? 'horizontal';\n const variant = () => local.variant ?? 'default';\n const size = () => local.size ?? 'md';\n\n // Build class string\n const className = createMemo(() => {\n const isVertical = orientation() === 'vertical';\n const sizeStyles = isVertical ? verticalSizeStyles : horizontalSizeStyles;\n\n const base = [\n variantStyles[variant()],\n sizeStyles[size()],\n isVertical ? 'h-full self-stretch' : 'w-full',\n 'border-0', // Reset hr default border\n local.class ?? '',\n ];\n\n return base.filter(Boolean).join(' ');\n });\n\n return (\n <HeadlessSeparator\n {...headlessProps}\n orientation={orientation()}\n class={className()}\n />\n );\n}\n","/**\n * Text component for proyecto-viviana-silapse\n *\n * Styling-only wrapper around solidaria-components Text.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Text as HeadlessText,\n type TextProps as HeadlessTextProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport type TextVariant = 'default' | 'muted' | 'success' | 'danger';\nexport type TextSize = 'sm' | 'md' | 'lg';\n\nexport interface TextProps extends Omit<HeadlessTextProps, 'class'> {\n variant?: TextVariant;\n size?: TextSize;\n class?: string;\n}\n\nconst variantStyles: Record<TextVariant, string> = {\n default: 'text-primary-100',\n muted: 'text-primary-400',\n success: 'text-green-500',\n danger: 'text-danger-400',\n};\n\nconst sizeStyles: Record<TextSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n};\n\nexport function Text(props: TextProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['variant', 'size', 'class']);\n const variant = () => local.variant ?? 'default';\n const size = () => local.size ?? 'md';\n return (\n <HeadlessText\n {...headlessProps}\n class={`${variantStyles[variant()]} ${sizeStyles[size()]} ${local.class ?? ''}`}\n />\n );\n}\n\n// Sub-component re-exports\nexport { Heading } from './Heading';\nexport type { HeadingProps, HeadingLevel } from './Heading';\nexport { StyledKeyboard } from './Keyboard';\nexport type { KeyboardProps as StyledKeyboardProps } from './Keyboard';\n\n","/**\n * Heading component for proyecto-viviana-silapse\n *\n * Styled heading (h1-h6) with configurable level and size.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport { Dynamic } from 'solid-js/web';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps {\n /** The heading level (1-6). @default 3 */\n level?: HeadingLevel;\n /** Additional CSS class name. */\n class?: string;\n /** An accessibility id. */\n id?: string;\n /** The content of the heading. */\n children?: JSX.Element;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst levelStyles: Record<HeadingLevel, string> = {\n 1: 'text-4xl font-bold',\n 2: 'text-3xl font-bold',\n 3: 'text-2xl font-semibold',\n 4: 'text-xl font-semibold',\n 5: 'text-lg font-medium',\n 6: 'text-base font-medium',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled heading component with configurable level.\n */\nexport function Heading(props: HeadingProps): JSX.Element {\n const [local, rest] = splitProps(props, ['level', 'class', 'children']);\n const level = () => local.level ?? 3;\n const tag = () => `h${level()}` as keyof JSX.IntrinsicElements;\n\n return (\n <Dynamic\n component={tag()}\n {...rest}\n class={`text-primary-100 ${levelStyles[level()]} ${local.class ?? ''}`}\n >\n {local.children}\n </Dynamic>\n );\n}\n","/**\n * Keyboard component for proyecto-viviana-silapse\n *\n * Styled <kbd> element wrapping the headless Keyboard component.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Keyboard as HeadlessKeyboard,\n type KeyboardProps as HeadlessKeyboardProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface KeyboardProps extends Omit<HeadlessKeyboardProps, 'class'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * Displays a keyboard shortcut or key combination in a styled <kbd> tag.\n */\nexport function StyledKeyboard(props: KeyboardProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class']);\n\n return (\n <HeadlessKeyboard\n {...rest}\n class={`inline-block px-1.5 py-0.5 text-xs font-mono rounded border border-primary-600 bg-bg-300 text-primary-200 ${local.class ?? ''}`}\n />\n );\n}\n","/**\n * Label component for proyecto-viviana-silapse\n *\n * Styling-only wrapper around solidaria-components Label.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Label as HeadlessLabel,\n type LabelProps as HeadlessLabelProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport type LabelSize = 'sm' | 'md' | 'lg';\n\nexport interface LabelProps extends Omit<HeadlessLabelProps, 'class'> {\n size?: LabelSize;\n class?: string;\n}\n\nconst sizeStyles: Record<LabelSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n};\n\nexport function Label(props: LabelProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class']);\n const size = () => local.size ?? 'md';\n return (\n <HeadlessLabel\n {...headlessProps}\n class={`font-medium text-primary-200 ${sizeStyles[size()]} ${local.class ?? ''}`}\n />\n );\n}\n\n","/**\n * Form components for proyecto-viviana-silapse\n *\n * Styling-only wrappers around solidaria-components form primitives.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Form as HeadlessForm,\n FieldError as HeadlessFieldError,\n type FormProps as HeadlessFormProps,\n type FieldErrorProps as HeadlessFieldErrorProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport interface FormProps extends Omit<HeadlessFormProps, 'class'> {\n class?: string;\n}\n\nexport interface FieldErrorProps extends Omit<HeadlessFieldErrorProps, 'class'> {\n class?: string;\n}\n\nexport function Form(props: FormProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class']);\n return (\n <HeadlessForm\n {...headlessProps}\n class={`flex flex-col gap-4 ${local.class ?? ''}`}\n />\n );\n}\n\nexport function FieldError(props: FieldErrorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class']);\n return (\n <HeadlessFieldError\n {...headlessProps}\n class={`text-sm text-danger-400 ${local.class ?? ''}`}\n />\n );\n}\n\n// Sub-component re-exports\nexport { Field } from './Field';\nexport type { FieldProps, FieldSize } from './Field';\nexport { HelpText } from './HelpText';\nexport type { HelpTextProps } from './HelpText';\n\n","/**\n * Field component for proyecto-viviana-silapse\n *\n * A compound field layout with label, input slot, help text, and error message.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type FieldSize = 'sm' | 'md' | 'lg';\n\nexport interface FieldProps {\n /** The label for the field. */\n label?: string;\n /** A description or help text for the field. */\n description?: string;\n /** An error message for the field. */\n errorMessage?: string;\n /** Whether the field is required. */\n isRequired?: boolean;\n /** Whether the field is disabled. */\n isDisabled?: boolean;\n /** Whether the field is invalid. */\n isInvalid?: boolean;\n /** The size of the field. @default 'md' */\n size?: FieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** The field content (input element). */\n children?: JSX.Element;\n /** ID for the label's htmlFor attribute. */\n htmlFor?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<FieldSize, { label: string; text: string; gap: string }> = {\n sm: { label: 'text-xs', text: 'text-xs', gap: 'gap-1' },\n md: { label: 'text-sm', text: 'text-sm', gap: 'gap-1.5' },\n lg: { label: 'text-base', text: 'text-sm', gap: 'gap-2' },\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A field layout component that provides label, help text, and error message\n * around a form input.\n */\nexport function Field(props: FieldProps): JSX.Element {\n const [local] = splitProps(props, [\n 'label', 'description', 'errorMessage', 'isRequired', 'isDisabled',\n 'isInvalid', 'size', 'class', 'children', 'htmlFor',\n ]);\n\n const size = () => sizeStyles[local.size ?? 'md'];\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={`flex flex-col ${size().gap} ${local.isDisabled ? 'opacity-60' : ''} ${local.class ?? ''}`}>\n <Show when={local.label}>\n <label\n for={local.htmlFor}\n class={`font-medium text-primary-200 ${size().label}`}\n >\n {local.label}\n <Show when={local.isRequired}>\n <span class=\"text-red-400 ml-0.5\">*</span>\n </Show>\n </label>\n </Show>\n\n {local.children}\n\n <Show when={showError()}>\n <p class={`text-red-400 ${size().text}`} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n\n <Show when={!showError() && local.description}>\n <p class={`text-primary-400 ${size().text}`}>\n {local.description}\n </p>\n </Show>\n </div>\n );\n}\n","/**\n * HelpText component for proyecto-viviana-silapse\n *\n * Displays description or error text below a form field.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface HelpTextProps {\n /** The description text. */\n description?: string;\n /** The error message text. */\n errorMessage?: string;\n /** Whether the field is in an error state. */\n isInvalid?: boolean;\n /** Whether the help text is disabled (dimmed). */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * Displays description or error text below a form field.\n */\nexport function HelpText(props: HelpTextProps): JSX.Element {\n const [local] = splitProps(props, ['description', 'errorMessage', 'isInvalid', 'isDisabled', 'class']);\n\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={`text-sm ${local.isDisabled ? 'opacity-60' : ''} ${local.class ?? ''}`}>\n <Show when={showError()}>\n <p class=\"text-red-400\" role=\"alert\">{local.errorMessage}</p>\n </Show>\n <Show when={!showError() && local.description}>\n <p class=\"text-primary-400\">{local.description}</p>\n </Show>\n </div>\n );\n}\n","/**\n * Toolbar component for proyecto-viviana-silapse\n *\n * Styled toolbar component built on top of solidaria-components Toolbar.\n */\n\nimport { type JSX, splitProps } from 'solid-js'\nimport {\n Toolbar as HeadlessToolbar,\n type ToolbarProps as HeadlessToolbarProps,\n type ToolbarRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ToolbarSize = 'sm' | 'md' | 'lg'\nexport type ToolbarVariant = 'default' | 'bordered' | 'ghost'\n\nexport interface ToolbarProps extends Omit<HeadlessToolbarProps, 'class' | 'style'> {\n /** The visual variant of the toolbar. @default 'default' */\n variant?: ToolbarVariant\n /** The size of the toolbar. @default 'md' */\n size?: ToolbarSize\n /** Additional CSS class name. */\n class?: string\n /** Inline styles. */\n style?: JSX.CSSProperties\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst baseStyles = 'vui-toolbar inline-flex items-center'\n\nconst variantStyles: Record<ToolbarVariant, string> = {\n default: 'bg-bg-50 rounded-md',\n bordered: 'border border-bg-200 rounded-md',\n ghost: '',\n}\n\nconst sizeStyles: Record<ToolbarSize, string> = {\n sm: 'gap-1 p-1',\n md: 'gap-2 p-2',\n lg: 'gap-3 p-3',\n}\n\nconst orientationStyles = {\n horizontal: 'flex-row',\n vertical: 'flex-col',\n}\n\n// ============================================\n// TOOLBAR COMPONENT\n// ============================================\n\n/**\n * A styled toolbar for grouping interactive controls with keyboard navigation.\n *\n * @example\n * ```tsx\n * <Toolbar aria-label=\"Text formatting\">\n * <Button>Bold</Button>\n * <Button>Italic</Button>\n * <Separator orientation=\"vertical\" />\n * <Button>Align Left</Button>\n * <Button>Align Center</Button>\n * </Toolbar>\n *\n * // Vertical toolbar\n * <Toolbar orientation=\"vertical\" variant=\"bordered\">\n * <Button>Cut</Button>\n * <Button>Copy</Button>\n * <Button>Paste</Button>\n * </Toolbar>\n * ```\n */\nexport function Toolbar(props: ToolbarProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'variant',\n 'size',\n 'class',\n 'style',\n ])\n\n const variant = () => local.variant ?? 'default'\n const size = () => local.size ?? 'md'\n\n const getClassName = (renderProps: ToolbarRenderProps): string => {\n return [\n baseStyles,\n variantStyles[variant()],\n sizeStyles[size()],\n orientationStyles[renderProps.orientation],\n local.class ?? '',\n ].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessToolbar\n {...headlessProps}\n class={getClassName}\n style={local.style}\n />\n )\n}\n","/**\n * ActionBar components for proyecto-viviana-silapse.\n *\n * Styled wrappers around the headless ActionBar component.\n * Shows a selection count, clear button, and action buttons\n * when items are selected in a collection.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ActionBar as HeadlessActionBar,\n ActionBarContainer as HeadlessActionBarContainer,\n ActionBarSelectionCount as HeadlessSelectionCount,\n ActionBarClearButton as HeadlessClearButton,\n type ActionBarRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport type { Key } from '@proyecto-viviana/solid-stately';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ActionBarProps {\n /** The number of selected items. ActionBar is hidden when 0. */\n selectedItemCount: number | 'all';\n /** Callback when the clear button is pressed. */\n onClearSelection: () => void;\n /** Callback when an action is triggered. */\n onAction?: (key: Key) => void;\n /** The action buttons to display. */\n children?: JSX.Element;\n /** Additional CSS class name. */\n class?: string;\n /** Accessible label for the action bar. @default 'Actions' */\n 'aria-label'?: string;\n /** Identifies the element (or elements) that labels the action bar. */\n 'aria-labelledby'?: string;\n /** Optional keydown handler for the action bar root. */\n onKeyDown?: JSX.EventHandlerUnion<HTMLDivElement, KeyboardEvent>;\n}\n\nexport interface ActionBarContainerProps {\n children?: JSX.Element;\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nfunction getBarClassName(renderProps: ActionBarRenderProps, extraClass?: string): string {\n return [\n 'vui-action-bar flex items-center gap-2 rounded-lg border border-primary-600 bg-bg-300 p-2',\n extraClass ?? '',\n ].filter(Boolean).join(' ');\n}\n\n// ============================================\n// COMPONENTS\n// ============================================\n\nexport function ActionBar(props: ActionBarProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'children']);\n\n return (\n <HeadlessActionBar\n {...headlessProps}\n class={(rp: ActionBarRenderProps) => getBarClassName(rp, local.class)}\n >\n <HeadlessClearButton\n class=\"inline-flex items-center justify-center rounded p-1 text-primary-200 hover:bg-bg-400 transition-colors\"\n />\n <HeadlessSelectionCount\n class=\"text-sm text-primary-200 whitespace-nowrap\"\n />\n <div class=\"flex-1\" />\n <div class=\"flex items-center gap-1\">\n {local.children}\n </div>\n </HeadlessActionBar>\n );\n}\n\nexport function ActionBarContainer(props: ActionBarContainerProps): JSX.Element {\n return (\n <HeadlessActionBarContainer\n class={['vui-action-bar-container', props.class].filter(Boolean).join(' ')}\n >\n {props.children}\n </HeadlessActionBarContainer>\n );\n}\n","/**\n * ActionGroup components for proyecto-viviana-silapse.\n *\n * Styling wrappers around the headless ActionGroup component.\n * Uses createActionGroup under the hood for proper dynamic roles\n * (toolbar/radiogroup), keyboard navigation, and ARIA semantics.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ActionGroup as HeadlessActionGroup,\n type ActionGroupProps as HeadlessActionGroupProps,\n type ActionGroupRenderProps,\n type ActionGroupItemRenderProps,\n type ActionGroupItem,\n} from '@proyecto-viviana/solidaria-components';\nimport type { Key, SelectionMode } from '@proyecto-viviana/solid-stately';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ActionGroupProps<T extends ActionGroupItem = ActionGroupItem> {\n /** The items in the action group. */\n items: T[];\n /** The selection mode. @default 'none' */\n selectionMode?: SelectionMode;\n /** Orientation of the group. @default 'horizontal' */\n orientation?: 'horizontal' | 'vertical';\n /** Whether the entire group is disabled. */\n isDisabled?: boolean;\n /** Accessible label. */\n 'aria-label'?: string;\n /** Labelled-by id. */\n 'aria-labelledby'?: string;\n /** Currently selected keys (controlled). */\n selectedKeys?: Iterable<Key>;\n /** Default selected keys (uncontrolled). */\n defaultSelectedKeys?: Iterable<Key>;\n /** Handler called when selection changes. */\n onSelectionChange?: (keys: 'all' | Set<Key>) => void;\n /** Handler called when an item action is triggered. */\n onAction?: (key: Key) => void;\n /** Keys of disabled items. */\n disabledKeys?: Iterable<Key>;\n /** Optional render function for action items. */\n children?: (item: T, renderProps: ActionGroupItemRenderProps) => JSX.Element;\n /** Custom render function for items. If not provided, uses item.label. */\n renderItem?: (item: T, renderProps: ActionGroupItemRenderProps) => JSX.Element;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nfunction getContainerClassName(renderProps: ActionGroupRenderProps, extraClass?: string): string {\n const orientationClass = renderProps.orientation === 'vertical'\n ? 'flex-col'\n : 'flex-row';\n return [\n 'vui-action-group inline-flex items-center gap-1 rounded-lg border border-primary-600 bg-bg-300 p-1',\n orientationClass,\n extraClass ?? '',\n ].filter(Boolean).join(' ');\n}\n\nfunction getItemClassName(renderProps: ActionGroupItemRenderProps): string {\n const stateClass = renderProps.isSelected\n ? 'bg-accent text-bg-400'\n : 'bg-transparent text-primary-200 hover:bg-bg-400';\n const disabledClass = renderProps.isDisabled\n ? 'cursor-not-allowed opacity-50'\n : 'cursor-pointer';\n return [\n 'inline-flex items-center rounded-md px-3 py-1.5 text-sm transition-colors duration-150',\n stateClass,\n disabledClass,\n ].join(' ');\n}\n\n// ============================================\n// ACTIONGROUP COMPONENT\n// ============================================\n\nexport function ActionGroup<T extends ActionGroupItem = ActionGroupItem>(\n props: ActionGroupProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['class', 'renderItem', 'children']);\n\n return (\n <HeadlessActionGroup<T>\n {...headlessProps as HeadlessActionGroupProps<T>}\n class={(rp: ActionGroupRenderProps) => getContainerClassName(rp, local.class)}\n >\n {(item: T, renderProps: ActionGroupItemRenderProps) => (\n <span class={getItemClassName(renderProps)}>\n {local.renderItem\n ? local.renderItem(item, renderProps)\n : local.children\n ? local.children(item, renderProps)\n : item.label}\n </span>\n )}\n </HeadlessActionGroup>\n );\n}\n","/**\n * ButtonGroup component for proyecto-viviana-silapse.\n *\n * Styling-only button grouping primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface ButtonGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n class?: string;\n}\n\nexport function ButtonGroup(props: ButtonGroupProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <div\n {...domProps}\n role={domProps.role ?? 'group'}\n class={`inline-flex items-center gap-2 ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n\n","/**\n * SearchAutocomplete component for proyecto-viviana-silapse\n *\n * Styled autocomplete built on top of headless-backed ComboBox.\n * UI layer owns styling only; behavior lives in solidaria layers.\n */\n\nimport { type JSX, splitProps } from 'solid-js'\nimport {\n ComboBox,\n ComboBoxInput,\n ComboBoxButton,\n ComboBoxListBox,\n ComboBoxOption,\n type FilterFn,\n type Key,\n} from '../combobox'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SearchAutocompleteSize = 'sm' | 'md' | 'lg'\n\nexport interface SearchAutocompleteItem {\n id: string\n name: string\n [key: string]: unknown\n}\n\nexport interface SearchAutocompleteProps<T extends SearchAutocompleteItem = SearchAutocompleteItem> {\n /** The items to display in the dropdown. */\n items: T[]\n /** The size of the autocomplete. @default 'md' */\n size?: SearchAutocompleteSize\n /** Placeholder text for the input. */\n placeholder?: string\n /** Accessible label for the input. */\n 'aria-label'?: string\n /** Label text shown above the input. */\n label?: string\n /** Description text shown below the input. */\n description?: string\n /** The current input value (controlled). */\n inputValue?: string\n /** The default input value (uncontrolled). */\n defaultInputValue?: string\n /** Handler called when the input value changes. */\n onInputChange?: (value: string) => void\n /** Handler called when an item is selected. */\n onSelect?: (item: T) => void\n /** Additional CSS class name. */\n class?: string\n /** Whether the input is disabled. */\n isDisabled?: boolean\n /** Custom filter function. */\n filter?: FilterFn\n /** Custom render function for items. */\n renderItem?: (item: T) => JSX.Element\n /** Key to use for the display text. @default 'name' */\n textKey?: keyof T\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n },\n md: {\n container: 'text-base',\n },\n lg: {\n container: 'text-lg',\n },\n}\n\n// ============================================\n// SEARCH AUTOCOMPLETE COMPONENT\n// ============================================\n\n/**\n * A styled autocomplete component for searching and selecting from a list.\n */\nexport function SearchAutocomplete<T extends SearchAutocompleteItem = SearchAutocompleteItem>(\n props: SearchAutocompleteProps<T>\n): JSX.Element {\n const [local, comboBoxProps] = splitProps(props, [\n 'items',\n 'size',\n 'placeholder',\n 'aria-label',\n 'label',\n 'description',\n 'onSelect',\n 'class',\n 'isDisabled',\n 'renderItem',\n 'textKey',\n ])\n\n const size = () => local.size ?? 'md'\n const textKey = () => (local.textKey ?? 'name') as keyof T\n const styles = () => sizeStyles[size()]\n\n const getTextValue = (item: T): string => {\n const text = item[textKey()] ?? item.name\n return String(text ?? '')\n }\n\n const handleSelectionChange = (key: Key | null) => {\n if (key == null) return\n const selected = local.items.find((item) => String(item.id) === String(key))\n if (selected) {\n local.onSelect?.(selected)\n }\n }\n\n return (\n <div class={['vui-search-autocomplete relative', styles().container, local.class].filter(Boolean).join(' ')}>\n <ComboBox<T>\n {...comboBoxProps}\n items={local.items}\n size={size()}\n label={local.label}\n description={local.description}\n aria-label={local['aria-label']}\n placeholder={local.placeholder}\n isDisabled={local.isDisabled}\n defaultFilter={comboBoxProps.filter}\n getKey={(item) => item.id}\n getTextValue={getTextValue}\n onSelectionChange={handleSelectionChange}\n >\n <ComboBox.InputGroup>\n <ComboBoxInput />\n <ComboBoxButton />\n </ComboBox.InputGroup>\n <ComboBoxListBox>\n {(item: T) => (\n <ComboBoxOption id={item.id}>\n {local.renderItem ? local.renderItem(item) : getTextValue(item)}\n </ComboBoxOption>\n )}\n </ComboBoxListBox>\n </ComboBox>\n </div>\n )\n}\n","/**\n * ComboBox component for proyecto-viviana-silapse\n *\n * Styled combobox component built on top of solidaria-components.\n * Inspired by Spectrum 2's ComboBox component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext, Show } from 'solid-js'\nimport {\n ComboBox as HeadlessComboBox,\n ComboBoxInput as HeadlessComboBoxInput,\n ComboBoxLabel as HeadlessComboBoxLabel,\n ComboBoxDescription as HeadlessComboBoxDescription,\n ComboBoxErrorMessage as HeadlessComboBoxErrorMessage,\n ComboBoxButton as HeadlessComboBoxButton,\n ComboBoxListBox as HeadlessComboBoxListBox,\n ComboBoxOption as HeadlessComboBoxOption,\n defaultContainsFilter,\n type ComboBoxProps as HeadlessComboBoxProps,\n type ComboBoxInputProps as HeadlessComboBoxInputProps,\n type ComboBoxButtonProps as HeadlessComboBoxButtonProps,\n type ComboBoxListBoxProps as HeadlessComboBoxListBoxProps,\n type ComboBoxOptionProps as HeadlessComboBoxOptionProps,\n type ComboBoxRenderProps,\n type ComboBoxInputRenderProps,\n type ComboBoxButtonRenderProps,\n type ComboBoxListBoxRenderProps,\n type ComboBoxOptionRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key, FilterFn, MenuTriggerAction } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type ComboBoxSize = 'sm' | 'md' | 'lg'\n\nconst ComboBoxSizeContext = createContext<ComboBoxSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ComboBoxProps<T> extends Omit<HeadlessComboBoxProps<T>, 'class' | 'style'> {\n /** The size of the combobox. */\n size?: ComboBoxSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the combobox. */\n label?: string\n /** Description for the combobox. */\n description?: string\n /** Error message when invalid. */\n errorMessage?: string\n /** Whether the combobox is invalid. */\n isInvalid?: boolean\n}\n\nexport interface ComboBoxInputProps extends Omit<HeadlessComboBoxInputProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface ComboBoxButtonProps extends Omit<HeadlessComboBoxButtonProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface ComboBoxListBoxProps<T> extends Omit<HeadlessComboBoxListBoxProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface ComboBoxOptionProps<T> extends Omit<HeadlessComboBoxOptionProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n wrapper: 'h-8',\n input: 'h-8 text-sm pl-3 pr-8',\n button: 'h-8 w-8',\n label: 'text-sm',\n option: 'text-sm py-1.5 px-3',\n icon: 'h-4 w-4',\n },\n md: {\n wrapper: 'h-10',\n input: 'h-10 text-base pl-4 pr-10',\n button: 'h-10 w-10',\n label: 'text-base',\n option: 'text-base py-2 px-4',\n icon: 'h-5 w-5',\n },\n lg: {\n wrapper: 'h-12',\n input: 'h-12 text-lg pl-5 pr-12',\n button: 'h-12 w-12',\n label: 'text-lg',\n option: 'text-lg py-2.5 px-5',\n icon: 'h-6 w-6',\n },\n}\n\n// ============================================\n// COMBOBOX COMPONENT\n// ============================================\n\n/**\n * A combobox combines a text input with a listbox, allowing users to filter a list of options.\n *\n * Built on solidaria-components ComboBox for full accessibility support.\n */\nexport function ComboBox<T>(props: ComboBoxProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ])\n\n const size = local.size ?? 'md'\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ComboBoxRenderProps): string => {\n const base = 'relative inline-flex flex-col gap-1.5'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <ComboBoxSizeContext.Provider value={size}>\n <HeadlessComboBox\n {...headlessProps}\n label={local.label}\n description={local.isInvalid ? undefined : local.description}\n errorMessage={local.isInvalid ? local.errorMessage : undefined}\n isInvalid={local.isInvalid}\n class={getClassName}\n >\n <Show when={local.label}>\n <HeadlessComboBoxLabel class={`text-primary-200 font-medium ${sizeStyles[size].label}`}>\n {local.label}\n </HeadlessComboBoxLabel>\n </Show>\n {props.children}\n <Show when={local.description && !local.isInvalid}>\n <HeadlessComboBoxDescription class=\"text-primary-400 text-sm\">\n {local.description}\n </HeadlessComboBoxDescription>\n </Show>\n <Show when={local.errorMessage && local.isInvalid}>\n <HeadlessComboBoxErrorMessage class=\"text-danger-400 text-sm\">\n {local.errorMessage}\n </HeadlessComboBoxErrorMessage>\n </Show>\n </HeadlessComboBox>\n </ComboBoxSizeContext.Provider>\n )\n}\n\n// ============================================\n// COMBOBOX INPUT GROUP COMPONENT\n// ============================================\n\n/**\n * A wrapper for the input and button that provides proper styling.\n */\nexport function ComboBoxInputGroup(props: { children: JSX.Element; class?: string }): JSX.Element {\n const size = useContext(ComboBoxSizeContext)\n const styles = () => sizeStyles[size]\n\n return (\n <div class={`relative flex items-center ${styles().wrapper} ${props.class ?? ''}`}>\n {props.children}\n </div>\n )\n}\n\n// ============================================\n// COMBOBOX INPUT COMPONENT\n// ============================================\n\n/**\n * The text input for a combobox.\n */\nexport function ComboBoxInput(props: ComboBoxInputProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const size = useContext(ComboBoxSizeContext)\n const styles = () => sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ComboBoxInputRenderProps): string => {\n const base = 'w-full rounded-lg border-2 transition-all duration-200 outline-none'\n const sizeClass = styles().input\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'border-bg-300 bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isOpen) {\n colorClass = 'border-accent bg-bg-300 text-primary-100'\n } else if (renderProps.isHovered) {\n colorClass = 'border-accent-300 bg-bg-300 text-primary-100'\n } else {\n colorClass = 'border-primary-600 bg-bg-400 text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessComboBoxInput\n {...headlessProps}\n class={getClassName}\n />\n )\n}\n\n// ============================================\n// COMBOBOX BUTTON COMPONENT\n// ============================================\n\n/**\n * The trigger button for a combobox.\n * SSR-compatible - renders children or chevron icon directly without render props.\n */\nexport function ComboBoxButton(props: ComboBoxButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const size = useContext(ComboBoxSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ComboBoxButtonRenderProps): string => {\n const base = 'absolute right-0 top-0 flex items-center justify-center transition-all duration-200 rounded-r-lg'\n const sizeClass = sizeStyle.button\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (renderProps.isOpen) {\n colorClass = 'text-accent'\n } else if (renderProps.isHovered) {\n colorClass = 'text-accent-300 cursor-pointer'\n } else {\n colorClass = 'text-primary-400 cursor-pointer hover:text-primary-200'\n }\n\n return [base, sizeClass, colorClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessComboBoxButton\n {...headlessProps}\n class={getClassName}\n >\n {props.children || <ChevronIcon class={`${sizeStyle.icon} transition-transform duration-200 data-open:rotate-180`} />}\n </HeadlessComboBoxButton>\n )\n}\n\n// ============================================\n// COMBOBOX LISTBOX COMPONENT\n// ============================================\n\n/**\n * The listbox popup for a combobox.\n */\nexport function ComboBoxListBox<T>(props: ComboBoxListBoxProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const customClass = local.class ?? ''\n\n const getClassName = (_renderProps: ComboBoxListBoxRenderProps): string => {\n const base = 'absolute z-50 mt-1 w-full rounded-lg border-2 border-primary-600 bg-bg-400 py-1 shadow-lg max-h-60 overflow-auto'\n return [base, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessComboBoxListBox\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// COMBOBOX OPTION COMPONENT\n// ============================================\n\n/**\n * An option in a combobox listbox.\n * SSR-compatible - renders check icon and content directly without render props.\n */\nexport function ComboBoxOption<T>(props: ComboBoxOptionProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const size = useContext(ComboBoxSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ComboBoxOptionRenderProps): string => {\n const base = 'flex items-center gap-2 cursor-pointer transition-colors duration-150'\n const sizeClass = sizeStyle.option\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n colorClass = 'bg-accent/20 text-accent'\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100'\n } else {\n colorClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n // Compute padding for non-selected items to align with check icon\n const iconPadding: Record<ComboBoxSize, string> = {\n sm: 'pl-6', // h-4 icon + gap\n md: 'pl-7', // h-5 icon + gap\n lg: 'pl-8', // h-6 icon + gap\n }\n\n return (\n <HeadlessComboBoxOption\n {...headlessProps}\n class={getClassName}\n >\n <CheckIcon class={`${sizeStyle.icon} text-accent shrink-0 hidden data-selected:block`} />\n <span class={`flex-1 data-selected:pl-0 ${iconPadding[size]}`}>\n {props.children as JSX.Element}\n </span>\n </HeadlessComboBoxOption>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n )\n}\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nComboBox.InputGroup = ComboBoxInputGroup\nComboBox.Input = ComboBoxInput\nComboBox.Button = ComboBoxButton\nComboBox.ListBox = ComboBoxListBox\nComboBox.Option = ComboBoxOption\n\n// Re-export types and utilities for convenience\nexport type { Key, FilterFn, MenuTriggerAction }\nexport { defaultContainsFilter }\n","/**\n * Select component for proyecto-viviana-silapse\n *\n * Styled select component built on top of solidaria-components.\n * Inspired by Spectrum 2's Picker component patterns.\n */\n\nimport { type JSX, Show, splitProps, createContext, useContext, createUniqueId } from 'solid-js'\nimport {\n Select as HeadlessSelect,\n SelectTrigger as HeadlessSelectTrigger,\n SelectValue as HeadlessSelectValue,\n SelectListBox as HeadlessSelectListBox,\n SelectOption as HeadlessSelectOption,\n type SelectProps as HeadlessSelectProps,\n type SelectTriggerProps as HeadlessSelectTriggerProps,\n type SelectValueProps as HeadlessSelectValueProps,\n type SelectListBoxProps as HeadlessSelectListBoxProps,\n type SelectOptionProps as HeadlessSelectOptionProps,\n type SelectRenderProps,\n type SelectTriggerRenderProps,\n type SelectValueRenderProps,\n type SelectListBoxRenderProps,\n type SelectOptionRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type SelectSize = 'sm' | 'md' | 'lg'\n\nconst SelectSizeContext = createContext<SelectSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface SelectProps<T> extends Omit<HeadlessSelectProps<T>, 'class' | 'style'> {\n /** The size of the select. */\n size?: SelectSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the select. */\n label?: string\n /** Description for the select. */\n description?: string\n /** Error message when invalid. */\n errorMessage?: string\n /** Whether the select is invalid. */\n isInvalid?: boolean\n}\n\nexport interface SelectTriggerProps extends Omit<HeadlessSelectTriggerProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface SelectValueProps<T> extends Omit<HeadlessSelectValueProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface SelectListBoxProps<T> extends Omit<HeadlessSelectListBoxProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface SelectOptionProps<T> extends Omit<HeadlessSelectOptionProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n trigger: 'h-8 text-sm px-3 gap-2',\n label: 'text-sm',\n option: 'text-sm py-1.5 px-3',\n icon: 'h-4 w-4',\n },\n md: {\n trigger: 'h-10 text-base px-4 gap-2',\n label: 'text-base',\n option: 'text-base py-2 px-4',\n icon: 'h-5 w-5',\n },\n lg: {\n trigger: 'h-12 text-lg px-5 gap-3',\n label: 'text-lg',\n option: 'text-lg py-2.5 px-5',\n icon: 'h-6 w-6',\n },\n}\n\n// ============================================\n// SELECT COMPONENT\n// ============================================\n\n/**\n * A select displays a collapsible list of options and allows a user to select one of them.\n *\n * Built on solidaria-components Select for full accessibility support.\n */\nexport function Select<T>(props: SelectProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const descriptionId = createUniqueId()\n const errorId = createUniqueId()\n\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ])\n\n const size = local.size ?? 'md'\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: SelectRenderProps): string => {\n const base = 'relative inline-flex flex-col gap-1.5'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n const mergedAriaLabel =\n (headlessProps as { 'aria-label'?: string })['aria-label']\n\n const styledLabel = () => local.label\n ? <span class={`text-primary-200 font-medium ${sizeStyles[size].label}`}>{local.label}</span>\n : undefined\n\n const describedByIds = [\n (headlessProps as { 'aria-describedby'?: string })['aria-describedby'],\n local.description && !local.isInvalid ? descriptionId : undefined,\n local.errorMessage && local.isInvalid ? errorId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n return (\n <SelectSizeContext.Provider value={size}>\n <HeadlessSelect\n {...headlessProps}\n label={styledLabel()}\n aria-label={mergedAriaLabel}\n aria-describedby={describedByIds}\n class={getClassName}\n >\n {props.children}\n <Show when={local.description && !local.isInvalid}>\n <span id={descriptionId} class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n <Show when={local.errorMessage && local.isInvalid}>\n <span id={errorId} class=\"text-danger-400 text-sm\">{local.errorMessage}</span>\n </Show>\n </HeadlessSelect>\n </SelectSizeContext.Provider>\n )\n}\n\n// ============================================\n// SELECT TRIGGER COMPONENT\n// ============================================\n\n/**\n * The trigger button for a select.\n * SSR-compatible - renders children and chevron icon directly without render props.\n */\nexport function SelectTrigger(props: SelectTriggerProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const size = useContext(SelectSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: SelectTriggerRenderProps): string => {\n const base = 'inline-flex items-center justify-between rounded-lg border-2 transition-all duration-200 w-full'\n const sizeClass = sizeStyle.trigger\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'border-bg-300 bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isOpen) {\n colorClass = 'border-accent bg-bg-300 text-primary-100'\n } else if (renderProps.isHovered) {\n colorClass = 'border-accent-300 bg-bg-300 text-primary-100 cursor-pointer'\n } else {\n colorClass = 'border-primary-600 bg-bg-400 text-primary-200 cursor-pointer'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessSelectTrigger\n {...headlessProps}\n class={getClassName}\n >\n {props.children as JSX.Element}\n {/* Chevron rotates via CSS based on data-open attribute from headless component */}\n <ChevronIcon class={`${sizeStyle.icon} transition-transform duration-200 data-open:rotate-180`} />\n </HeadlessSelectTrigger>\n )\n}\n\n// ============================================\n// SELECT VALUE COMPONENT\n// ============================================\n\n/**\n * Displays the selected value in a select.\n */\nexport function SelectValue<T>(props: SelectValueProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: SelectValueRenderProps<T>): string => {\n const base = 'truncate flex-1 text-left'\n const placeholderClass = !renderProps.isSelected ? 'text-primary-500' : ''\n return [base, placeholderClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessSelectValue\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// SELECT LISTBOX COMPONENT\n// ============================================\n\n/**\n * The listbox popup for a select.\n */\nexport function SelectListBox<T>(props: SelectListBoxProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const customClass = local.class ?? ''\n\n const getClassName = (_renderProps: SelectListBoxRenderProps): string => {\n const base = 'absolute z-50 mt-1 w-full rounded-lg border-2 border-primary-600 bg-bg-400 py-1 shadow-lg max-h-60 overflow-auto'\n return [base, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessSelectListBox\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// SELECT OPTION COMPONENT\n// ============================================\n\n// Padding classes for when no check icon is shown (to maintain alignment)\nconst paddingStyles = {\n sm: 'pl-6', // h-4 (1rem) + gap-2 (0.5rem) = 1.5rem = pl-6\n md: 'pl-7', // h-5 (1.25rem) + gap-2 (0.5rem) = 1.75rem ≈ pl-7\n lg: 'pl-9', // h-6 (1.5rem) + gap-3 (0.75rem) = 2.25rem = pl-9\n}\n\n/**\n * An option in a select listbox.\n * SSR-compatible - renders check icon and content directly without render props.\n */\nexport function SelectOption<T>(props: SelectOptionProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const size = useContext(SelectSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: SelectOptionRenderProps): string => {\n const base = 'flex items-center gap-2 cursor-pointer transition-colors duration-150'\n const sizeClass = sizeStyle.option\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n colorClass = 'bg-accent/20 text-accent'\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100'\n } else {\n colorClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const iconClass = `${sizeStyle.icon} text-accent shrink-0 hidden data-selected:block`\n const paddingClass = paddingStyles[size]\n\n return (\n <HeadlessSelectOption\n {...headlessProps}\n class={getClassName}\n >\n {/* Check icon shows only when selected via data-selected attribute */}\n <CheckIcon class={iconClass} />\n <span class={`flex-1 data-selected:pl-0 ${paddingClass}`}>\n {props.children as JSX.Element}\n </span>\n </HeadlessSelectOption>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n )\n}\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nSelect.Trigger = SelectTrigger\nSelect.Value = SelectValue\nSelect.ListBox = SelectListBox\nSelect.Option = SelectOption\n\n// Re-export Key type for convenience\nexport type { Key }\n","/**\n * Menu component for proyecto-viviana-silapse\n *\n * Styled menu component built on top of solidaria-components.\n * Inspired by Spectrum 2's Menu component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext } from 'solid-js'\nimport {\n Menu as HeadlessMenu,\n MenuItem as HeadlessMenuItem,\n MenuTrigger as HeadlessMenuTrigger,\n MenuButton as HeadlessMenuButton,\n type MenuProps as HeadlessMenuProps,\n type MenuItemProps as HeadlessMenuItemProps,\n type MenuTriggerProps as HeadlessMenuTriggerProps,\n type MenuButtonProps as HeadlessMenuButtonProps,\n type MenuRenderProps,\n type MenuItemRenderProps,\n type MenuTriggerRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type MenuSize = 'sm' | 'md' | 'lg'\n\nconst MenuSizeContext = createContext<MenuSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface MenuTriggerProps extends Omit<HeadlessMenuTriggerProps, 'class' | 'style'> {\n /** The size of the menu. */\n size?: MenuSize\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface MenuButtonProps extends Omit<HeadlessMenuButtonProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Visual variant of the button. */\n variant?: 'primary' | 'secondary' | 'quiet'\n}\n\nexport interface MenuProps<T> extends Omit<HeadlessMenuProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface MenuItemProps<T> extends Omit<HeadlessMenuItemProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /**\n * Optional icon to display before the label.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n */\n icon?: () => JSX.Element\n /** Optional keyboard shortcut to display. */\n shortcut?: string\n /** Whether this is a destructive action. */\n isDestructive?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n button: 'h-8 text-sm px-3 gap-2',\n menu: 'py-1',\n item: 'text-sm py-1.5 px-3 gap-2',\n icon: 'h-4 w-4',\n },\n md: {\n button: 'h-10 text-base px-4 gap-2',\n menu: 'py-1.5',\n item: 'text-base py-2 px-4 gap-3',\n icon: 'h-5 w-5',\n },\n lg: {\n button: 'h-12 text-lg px-5 gap-3',\n menu: 'py-2',\n item: 'text-lg py-2.5 px-5 gap-3',\n icon: 'h-6 w-6',\n },\n}\n\nconst buttonVariants = {\n primary: 'bg-accent text-bg-400 border-accent hover:bg-accent-300 hover:border-accent-300',\n secondary: 'bg-bg-400 text-primary-200 border-primary-600 hover:bg-bg-300 hover:border-accent-300',\n quiet: 'bg-transparent text-primary-200 border-transparent hover:bg-bg-300',\n}\n\n// ============================================\n// MENU TRIGGER COMPONENT\n// ============================================\n\n/**\n * A menu trigger wraps a button and menu, handling the open/close state.\n */\nexport function MenuTrigger(props: MenuTriggerProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['size', 'class'])\n const size = local.size ?? 'md'\n\n return (\n <MenuSizeContext.Provider value={size}>\n <div class={`relative inline-block ${local.class ?? ''}`}>\n <HeadlessMenuTrigger {...headlessProps}>\n {props.children}\n </HeadlessMenuTrigger>\n </div>\n </MenuSizeContext.Provider>\n )\n}\n\n// ============================================\n// MENU BUTTON COMPONENT\n// ============================================\n\n/**\n * A button that opens a menu.\n * SSR-compatible - renders children and chevron icon directly without render props.\n */\nexport function MenuButton(props: MenuButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class', 'variant'])\n const size = useContext(MenuSizeContext)\n const sizeStyle = sizeStyles[size]\n const variant = local.variant ?? 'secondary'\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: MenuTriggerRenderProps): string => {\n const base = 'inline-flex items-center justify-center rounded-lg border-2 font-medium transition-all duration-200'\n const sizeClass = sizeStyle.button\n const variantClass = buttonVariants[variant]\n\n let stateClass: string\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n } else if (renderProps.isPressed) {\n stateClass = 'scale-95'\n } else {\n stateClass = 'cursor-pointer'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, variantClass, stateClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessMenuButton\n {...headlessProps}\n class={getClassName}\n >\n {props.children as JSX.Element}\n {/* Chevron rotates via CSS based on data-open attribute */}\n <ChevronIcon class={`${sizeStyle.icon} transition-transform duration-200 data-open:rotate-180`} />\n </HeadlessMenuButton>\n )\n}\n\n// ============================================\n// MENU COMPONENT\n// ============================================\n\n/**\n * A menu displays a list of actions or options for the user to choose from.\n */\nexport function Menu<T>(props: MenuProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const size = useContext(MenuSizeContext)\n const styles = () => sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (_renderProps: MenuRenderProps): string => {\n const base = 'absolute z-50 mt-1 min-w-[12rem] rounded-lg border-2 border-primary-600 bg-bg-400 shadow-lg overflow-hidden'\n const sizeClass = styles().menu\n return [base, sizeClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessMenu\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// MENU ITEM COMPONENT\n// ============================================\n\n/**\n * An item in a menu.\n * SSR-compatible - renders icon, content, and shortcut directly without render props.\n */\nexport function MenuItem<T>(props: MenuItemProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'icon', 'shortcut', 'isDestructive'])\n const size = useContext(MenuSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: MenuItemRenderProps): string => {\n const base = 'flex items-center cursor-pointer transition-colors duration-150 outline-none'\n const sizeClass = sizeStyle.item\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (local.isDestructive) {\n if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-danger-400/20 text-danger-400'\n } else {\n colorClass = 'text-danger-400'\n }\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100'\n } else {\n colorClass = 'text-primary-200'\n }\n\n const pressedClass = renderProps.isPressed ? 'bg-bg-200' : ''\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, colorClass, pressedClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessMenuItem\n {...headlessProps}\n class={getClassName}\n >\n {local.icon && <span class={`shrink-0 ${sizeStyle.icon}`}>{local.icon()}</span>}\n <span class=\"flex-1\">{props.children as JSX.Element}</span>\n {local.shortcut && <span class=\"text-primary-500 text-sm ml-auto\">{local.shortcut}</span>}\n </HeadlessMenuItem>\n )\n}\n\n// ============================================\n// MENU SEPARATOR COMPONENT\n// ============================================\n\nexport interface MenuSeparatorProps {\n /** Additional CSS class name. */\n class?: string\n}\n\n/**\n * A visual separator between menu items.\n */\nexport function MenuSeparator(props: MenuSeparatorProps): JSX.Element {\n return (\n <li\n role=\"separator\"\n class={`my-1 border-t border-primary-600 ${props.class ?? ''}`}\n />\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nMenu.Item = MenuItem\nMenu.Separator = MenuSeparator\nMenuTrigger.Button = MenuButton\n\n// Re-export Key type for convenience\nexport type { Key }\n\n// Sub-component re-exports\nexport { ActionMenu } from './ActionMenu';\nexport type { ActionMenuProps } from './ActionMenu';\nexport { SubmenuTrigger } from './SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './SubmenuTrigger';\nexport { ContextualHelpTrigger } from './ContextualHelpTrigger';\nexport type { ContextualHelpTriggerProps } from './ContextualHelpTrigger';\n","/**\n * ActionMenu component for proyecto-viviana-silapse\n *\n * A menu triggered by an action button (three-dot or icon button).\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n MenuTrigger as HeadlessMenuTrigger,\n MenuButton as HeadlessMenuButton,\n Menu as HeadlessMenu,\n MenuItem as HeadlessMenuItem,\n type MenuProps as HeadlessMenuProps,\n type MenuTriggerRenderProps,\n type MenuItemRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ActionMenuProps<T> extends Omit<HeadlessMenuProps<T>, 'class'> {\n /** Additional CSS class name for the menu. */\n class?: string;\n /** Label for the trigger button. @default 'Actions' */\n label?: string;\n /** Whether the button is quiet (no visible background). @default true */\n isQuiet?: boolean;\n /** Whether the trigger is disabled. */\n isDisabled?: boolean;\n /** The alignment of the menu relative to the trigger. */\n align?: 'start' | 'end';\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A menu triggered by an action button, typically used for \"more actions\" menus.\n */\nexport function ActionMenu<T>(props: ActionMenuProps<T>): JSX.Element {\n const [local, menuProps] = splitProps(props, ['label', 'isQuiet', 'isDisabled', 'align', 'class']);\n\n return (\n <HeadlessMenuTrigger>\n <HeadlessMenuButton\n isDisabled={local.isDisabled}\n aria-label={local.label ?? 'Actions'}\n class={(renderProps: MenuTriggerRenderProps) => {\n const base = 'inline-flex items-center justify-center rounded-md transition-colors outline-none p-1.5';\n const quietClass = (local.isQuiet ?? true)\n ? 'bg-transparent'\n : 'bg-bg-400 border border-primary-600';\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-200 text-primary-100';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-200';\n } else {\n stateClass = 'text-primary-300';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent' : '';\n return [base, quietClass, stateClass, focusClass].filter(Boolean).join(' ');\n }}\n >\n <MoreIcon />\n </HeadlessMenuButton>\n <HeadlessMenu\n {...menuProps}\n aria-label={local.label ?? 'Actions'}\n class={`absolute z-50 mt-1 min-w-[12rem] rounded-lg border-2 border-primary-600 bg-bg-400 shadow-lg overflow-hidden py-1 ${local.class ?? ''}`}\n >\n {(item: T) => {\n const menuItem = item as { id?: string | number; label?: string; textValue?: string };\n const label = menuItem.label ?? menuItem.textValue ?? String(menuItem.id ?? '');\n return (\n <HeadlessMenuItem\n id={menuItem.id ?? label}\n textValue={label}\n class={(renderProps: MenuItemRenderProps) => {\n const base = 'flex items-center cursor-pointer transition-colors duration-150 outline-none text-base py-2 px-4';\n let colorClass: string;\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100';\n } else {\n colorClass = 'text-primary-200';\n }\n const pressedClass = renderProps.isPressed ? 'bg-bg-200' : '';\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-inset ring-accent-300' : '';\n return [base, colorClass, pressedClass, focusClass].filter(Boolean).join(' ');\n }}\n >\n {label}\n </HeadlessMenuItem>\n );\n }}\n </HeadlessMenu>\n </HeadlessMenuTrigger>\n );\n}\n\nfunction MoreIcon(): JSX.Element {\n return (\n <svg class=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"12\" cy=\"19\" r=\"1.5\" />\n </svg>\n );\n}\n","/**\n * SubmenuTrigger component for proyecto-viviana-silapse\n *\n * Styled wrapper of headless SubmenuTrigger.\n */\n\nimport { type JSX } from 'solid-js';\nimport {\n SubmenuTrigger as HeadlessSubmenuTrigger,\n type SubmenuTriggerProps as HeadlessSubmenuTriggerProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface SubmenuTriggerProps extends HeadlessSubmenuTriggerProps {}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled submenu trigger that opens a nested menu.\n */\nexport function SubmenuTrigger(props: SubmenuTriggerProps): JSX.Element {\n return <HeadlessSubmenuTrigger {...props} />;\n}\n","/**\n * ContextualHelpTrigger UI wrapper for proyecto-viviana-silapse\n *\n * A styled button that opens contextual help in a popover.\n * Accepts either `title`/`content` convenience props or raw children tuple.\n */\n\nimport { type JSX, splitProps } from 'solid-js'\nimport {\n ContextualHelpTrigger as HeadlessContextualHelpTrigger,\n type ContextualHelpTriggerProps as HeadlessContextualHelpTriggerProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ContextualHelpTriggerProps extends Omit<HeadlessContextualHelpTriggerProps, 'class' | 'children'> {\n /** Additional CSS class name. */\n class?: string\n /** Convenience: title rendered as the trigger button label. */\n title?: string\n /** Convenience: text content shown inside the popover. */\n content?: string\n /** Visual variant for the trigger icon. */\n variant?: 'help' | 'info'\n /** Raw children tuple [trigger, content] — overrides title/content props. */\n children?: [JSX.Element, JSX.Element]\n}\n\n// ============================================\n// HELPERS\n// ============================================\n\nconst helpIcon = (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <text x=\"8\" y=\"12\" text-anchor=\"middle\" fill=\"currentColor\" font-size=\"10\" font-weight=\"bold\">?</text>\n </svg>\n)\n\nconst infoIcon = (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <text x=\"8\" y=\"12\" text-anchor=\"middle\" fill=\"currentColor\" font-size=\"10\" font-weight=\"bold\">i</text>\n </svg>\n)\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A button that opens contextual help in a popover.\n *\n * @example\n * ```tsx\n * // Convenience API\n * <ContextualHelpTrigger title=\"What is this?\" content=\"Help text here\" />\n *\n * // Children API\n * <ContextualHelpTrigger>\n * {[<span>Trigger</span>, <div>Content</div>]}\n * </ContextualHelpTrigger>\n * ```\n */\nexport function ContextualHelpTrigger(props: ContextualHelpTriggerProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'title', 'content', 'variant', 'children', 'aria-label'])\n\n const children = (): [JSX.Element, JSX.Element] => {\n if (local.children) return local.children\n const icon = local.variant === 'info' ? infoIcon : helpIcon\n const trigger = (\n <span style={{ display: 'inline-flex', 'align-items': 'center', gap: '4px' }}>\n {icon}\n {local.title && <span>{local.title}</span>}\n </span>\n )\n const content = (\n <div>\n {local.title && <div style={{ 'font-weight': '600', 'margin-bottom': '4px' }}>{local.title}</div>}\n {local.content && <p style={{ margin: '0' }}>{local.content}</p>}\n </div>\n )\n return [trigger, content]\n }\n\n return (\n <HeadlessContextualHelpTrigger\n {...headlessProps}\n aria-label={local['aria-label'] ?? local.title ?? 'Contextual help'}\n class={[\n // Trigger styling\n '[&_.solidaria-ContextualHelpTrigger-trigger]:flex [&_.solidaria-ContextualHelpTrigger-trigger]:items-center',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:py-2 [&_.solidaria-ContextualHelpTrigger-trigger]:px-4',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:cursor-pointer',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:bg-transparent [&_.solidaria-ContextualHelpTrigger-trigger]:border-0',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:text-primary-200',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:outline-none',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:hover:bg-bg-300',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:focus-visible:ring-2',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:focus-visible:ring-inset',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:focus-visible:ring-accent-300',\n // Unavailable state\n '[&_.solidaria-ContextualHelpTrigger-trigger[data-unavailable]]:text-primary-500',\n // Disabled state\n '[&_.solidaria-ContextualHelpTrigger-trigger[data-disabled]]:opacity-50',\n '[&_.solidaria-ContextualHelpTrigger-trigger[data-disabled]]:cursor-not-allowed',\n // Content popover styling\n '[&_.solidaria-ContextualHelpTrigger-content]:bg-bg-400',\n '[&_.solidaria-ContextualHelpTrigger-content]:border [&_.solidaria-ContextualHelpTrigger-content]:border-primary-600',\n '[&_.solidaria-ContextualHelpTrigger-content]:rounded-lg [&_.solidaria-ContextualHelpTrigger-content]:shadow-lg',\n '[&_.solidaria-ContextualHelpTrigger-content]:p-4 [&_.solidaria-ContextualHelpTrigger-content]:min-w-[200px]',\n '[&_.solidaria-ContextualHelpTrigger-content]:outline-none',\n '[&_.solidaria-ContextualHelpTrigger-content]:mt-1',\n local.class ?? '',\n ].join(' ')}\n >\n {children()}\n </HeadlessContextualHelpTrigger>\n )\n}\n","/**\n * ListBox component for proyecto-viviana-silapse\n *\n * Styled listbox component built on top of solidaria-components.\n * Inspired by Spectrum 2's ListBox component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext, Show, createUniqueId } from 'solid-js'\nimport {\n ListBox as HeadlessListBox,\n ListBoxOption as HeadlessListBoxOption,\n type ListBoxProps as HeadlessListBoxProps,\n type ListBoxOptionProps as HeadlessListBoxOptionProps,\n type ListBoxRenderProps,\n type ListBoxOptionRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type ListBoxSize = 'sm' | 'md' | 'lg'\n\nconst ListBoxSizeContext = createContext<ListBoxSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ListBoxProps<T> extends Omit<HeadlessListBoxProps<T>, 'class' | 'style'> {\n /** The size of the listbox. */\n size?: ListBoxSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the listbox. */\n label?: string\n /** Description for the listbox. */\n description?: string\n}\n\nexport interface ListBoxOptionProps<T> extends Omit<HeadlessListBoxOptionProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Optional description text. */\n description?: string\n /**\n * Optional icon to display before the label.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n */\n icon?: () => JSX.Element\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n list: 'py-1',\n option: 'text-sm py-1.5 px-3 gap-2',\n icon: 'h-4 w-4',\n label: 'text-sm',\n description: 'text-xs',\n },\n md: {\n list: 'py-1.5',\n option: 'text-base py-2 px-4 gap-3',\n icon: 'h-5 w-5',\n label: 'text-base',\n description: 'text-sm',\n },\n lg: {\n list: 'py-2',\n option: 'text-lg py-2.5 px-5 gap-3',\n icon: 'h-6 w-6',\n label: 'text-lg',\n description: 'text-base',\n },\n}\n\n// ============================================\n// LISTBOX COMPONENT\n// ============================================\n\n/**\n * A listbox displays a list of options and allows a user to select one or more of them.\n *\n * Built on solidaria-components ListBox for full accessibility support.\n */\nexport function ListBox<T>(props: ListBoxProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const labelId = createUniqueId()\n const descriptionId = createUniqueId()\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'renderEmptyState',\n ])\n\n const size = local.size ?? 'md'\n const styles = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ListBoxRenderProps): string => {\n const base = 'rounded-lg border-2 border-primary-600 bg-bg-400 overflow-auto focus:outline-none'\n const sizeClass = styles.list\n\n let stateClass: string\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n } else {\n stateClass = ''\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, stateClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const defaultEmptyState = () => (\n <li class=\"py-4 px-4 text-center text-primary-500\">\n No items\n </li>\n )\n\n const mergedAriaLabel =\n (headlessProps as { 'aria-label'?: string })['aria-label']\n\n const labelledByIds = [\n (headlessProps as { 'aria-labelledby'?: string })['aria-labelledby'],\n !mergedAriaLabel && local.label ? labelId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n const describedByIds = [\n (headlessProps as { 'aria-describedby'?: string })['aria-describedby'],\n local.description ? descriptionId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n return (\n <ListBoxSizeContext.Provider value={size}>\n <div class=\"flex flex-col gap-1.5\">\n <Show when={local.label}>\n <span id={labelId} class={`text-primary-200 font-medium ${styles.label}`}>\n {local.label}\n </span>\n </Show>\n <HeadlessListBox\n {...headlessProps}\n aria-label={mergedAriaLabel}\n aria-labelledby={labelledByIds}\n aria-describedby={describedByIds}\n class={getClassName}\n renderEmptyState={local.renderEmptyState ?? defaultEmptyState}\n children={props.children}\n />\n <Show when={local.description}>\n <span id={descriptionId} class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n </div>\n </ListBoxSizeContext.Provider>\n )\n}\n\n// ============================================\n// LISTBOX OPTION COMPONENT\n// ============================================\n\n/**\n * An option in a listbox.\n * SSR-compatible - renders icon, check, content, and description directly without render props.\n */\nexport function ListBoxOption<T>(props: ListBoxOptionProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'description', 'icon'])\n const size = useContext(ListBoxSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ListBoxOptionRenderProps): string => {\n const base = 'flex items-center cursor-pointer transition-colors duration-150 outline-none'\n const sizeClass = sizeStyle.option\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-accent/30 text-accent'\n } else {\n colorClass = 'bg-accent/20 text-accent'\n }\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100'\n } else {\n colorClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessListBoxOption\n {...headlessProps}\n class={getClassName}\n >\n {local.icon && <span class={`shrink-0 ${sizeStyle.icon}`}>{local.icon()}</span>}\n <CheckIcon class={`shrink-0 ${sizeStyle.icon} text-accent hidden data-selected:block`} />\n <div class=\"flex flex-col flex-1 min-w-0\">\n <span class=\"truncate\">{props.children as JSX.Element}</span>\n {local.description && (\n <span class={`text-primary-400 truncate ${sizeStyle.description}`}>\n {local.description}\n </span>\n )}\n </div>\n </HeadlessListBoxOption>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nListBox.Option = ListBoxOption\n\n// Re-export Key type for convenience\nexport type { Key }\n","/**\n * GridList component for proyecto-viviana-silapse\n *\n * Styled grid list component built on top of solidaria-components.\n * Inspired by Spectrum 2's GridList component patterns.\n *\n * GridList is similar to ListBox but supports interactive elements within items\n * and uses grid keyboard navigation.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext, Show } from 'solid-js'\nimport {\n GridList as HeadlessGridList,\n GridListItem as HeadlessGridListItem,\n GridListSelectionCheckbox as HeadlessGridListSelectionCheckbox,\n type GridListProps as HeadlessGridListProps,\n type GridListItemProps as HeadlessGridListItemProps,\n type GridListRenderProps,\n type GridListItemRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key } from '@proyecto-viviana/solid-stately'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type GridListSize = 'sm' | 'md' | 'lg'\nexport type GridListVariant = 'default' | 'cards' | 'bordered'\nexport type GridListLayout = 'list' | 'grid'\n\ninterface GridListContextValue {\n size: GridListSize\n variant: GridListVariant\n layout: GridListLayout\n}\n\nconst GridListSizeContext = createContext<GridListContextValue>({\n size: 'md',\n variant: 'default',\n layout: 'list',\n})\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface GridListProps<T extends object>\n extends Omit<HeadlessGridListProps<T>, 'class' | 'style'> {\n /** The size of the grid list. */\n size?: GridListSize\n /** The visual variant of the grid list. */\n variant?: GridListVariant\n /** The layout of the grid list. */\n layout?: GridListLayout\n /** Number of columns for grid layout (default: auto-fit). */\n columns?: number | 'auto'\n /** Additional CSS class name. */\n class?: string\n /** Label for the grid list. */\n label?: string\n /** Description for the grid list. */\n description?: string\n}\n\nexport interface GridListItemProps<T extends object>\n extends Omit<HeadlessGridListItemProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Optional description text. */\n description?: string\n /**\n * Optional icon to display before the content.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n */\n icon?: () => JSX.Element\n /**\n * Optional image to display in the item.\n */\n image?: string\n /** Alt text for the image. */\n imageAlt?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n list: 'gap-1 p-1',\n item: 'text-sm py-2 px-3 gap-2',\n icon: 'h-4 w-4',\n image: 'h-10 w-10',\n label: 'text-sm',\n description: 'text-xs',\n checkbox: 'w-4 h-4',\n },\n md: {\n list: 'gap-2 p-2',\n item: 'text-base py-3 px-4 gap-3',\n icon: 'h-5 w-5',\n image: 'h-12 w-12',\n label: 'text-base',\n description: 'text-sm',\n checkbox: 'w-5 h-5',\n },\n lg: {\n list: 'gap-3 p-3',\n item: 'text-lg py-4 px-5 gap-4',\n icon: 'h-6 w-6',\n image: 'h-16 w-16',\n label: 'text-lg',\n description: 'text-base',\n checkbox: 'w-6 h-6',\n },\n}\n\nconst variantStyles = {\n default: {\n list: 'bg-bg-400 rounded-lg border border-bg-300',\n item: 'rounded-md',\n itemHover: 'hover:bg-bg-200/50',\n itemSelected: 'bg-accent/10 text-accent',\n },\n cards: {\n list: 'bg-transparent',\n item: 'bg-bg-400 rounded-lg border border-bg-300 shadow-sm',\n itemHover: 'hover:shadow-md hover:border-bg-200',\n itemSelected: 'border-accent bg-accent/5 shadow-accent/20',\n },\n bordered: {\n list: 'bg-bg-400 rounded-lg border-2 border-bg-400',\n item: 'border-b border-bg-300 last:border-b-0 rounded-none',\n itemHover: 'hover:bg-bg-200/50',\n itemSelected: 'bg-accent/10',\n },\n}\n\n// ============================================\n// GRID LIST COMPONENT\n// ============================================\n\n/**\n * A grid list displays a list of interactive items, with support for\n * keyboard navigation, single or multiple selection, and row actions.\n *\n * Built on solidaria-components GridList for full accessibility support.\n *\n * @example\n * ```tsx\n * const items = [\n * { id: '1', name: 'Item 1', description: 'Description 1' },\n * { id: '2', name: 'Item 2', description: 'Description 2' },\n * ]\n *\n * <GridList\n * items={items}\n * getKey={(item) => item.id}\n * selectionMode=\"multiple\"\n * >\n * {(item) => (\n * <GridListItem id={item.id} description={item.description}>\n * {item.name}\n * </GridListItem>\n * )}\n * </GridList>\n * ```\n */\nexport function GridList<T extends object>(props: GridListProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'variant',\n 'layout',\n 'columns',\n 'class',\n 'label',\n 'description',\n ])\n\n const size = () => local.size ?? 'md'\n const variant = () => local.variant ?? 'default'\n const layout = () => local.layout ?? 'list'\n const styles = () => sizeStyles[size()]\n const variantStyle = () => variantStyles[variant()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: GridListRenderProps): string => {\n const base = 'overflow-auto focus:outline-none'\n const sizeClass = styles().list\n const variantClass = variantStyle().list\n\n // Layout classes\n let layoutClass = ''\n if (layout() === 'grid') {\n if (local.columns === 'auto' || local.columns === undefined) {\n layoutClass = 'grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))]'\n } else {\n layoutClass = `grid grid-cols-${local.columns}`\n }\n } else {\n layoutClass = 'flex flex-col'\n }\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, variantClass, layoutClass, stateClass, focusClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n const defaultEmptyState = () => (\n <div class=\"py-8 text-center text-primary-400\">\n <div class=\"flex flex-col items-center gap-2\">\n <EmptyIcon class=\"w-12 h-12 text-primary-500\" />\n <span>No items</span>\n </div>\n </div>\n )\n\n const contextValue = createMemo(() => ({ size: size(), variant: variant(), layout: layout() }))\n\n return (\n <GridListSizeContext.Provider value={contextValue()}>\n <div class=\"flex flex-col gap-2\">\n <Show when={local.label}>\n <label class={`text-primary-200 font-medium ${styles().label}`}>\n {local.label}\n </label>\n </Show>\n <HeadlessGridList\n {...headlessProps}\n class={getClassName}\n renderEmptyState={headlessProps.renderEmptyState ?? defaultEmptyState}\n />\n <Show when={local.description}>\n <span class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n </div>\n </GridListSizeContext.Provider>\n )\n}\n\n// ============================================\n// GRID LIST ITEM COMPONENT\n// ============================================\n\n/**\n * An item in a grid list.\n */\nexport function GridListItem<T extends object>(props: GridListItemProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'class',\n 'description',\n 'icon',\n 'image',\n 'imageAlt',\n ])\n\n const context = useContext(GridListSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const variantStyle = variantStyles[context.variant]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: GridListItemRenderProps): string => {\n const base = 'flex items-center cursor-pointer transition-all duration-150 outline-none'\n const sizeClass = sizeStyle.item\n const variantClass = variantStyle.item\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n stateClass = variantStyle.itemSelected\n } else if (renderProps.isHovered) {\n stateClass = variantStyle.itemHover\n }\n\n let textClass = ''\n if (!renderProps.isDisabled && !renderProps.isSelected) {\n textClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n const pressedClass = renderProps.isPressed ? 'scale-[0.98]' : ''\n\n return [base, sizeClass, variantClass, stateClass, textClass, focusClass, pressedClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n return (\n <HeadlessGridListItem {...headlessProps} class={getClassName}>\n {(renderProps: GridListItemRenderProps) => (\n <>\n {/* Image */}\n <Show when={local.image}>\n <img\n src={local.image}\n alt={local.imageAlt ?? ''}\n class={`${sizeStyle.image} rounded object-cover shrink-0`}\n />\n </Show>\n\n {/* Icon */}\n <Show when={local.icon}>\n <span class={`shrink-0 ${sizeStyle.icon}`}>{local.icon!()}</span>\n </Show>\n\n {/* Selection indicator */}\n <Show when={renderProps.isSelected}>\n <CheckIcon class={`shrink-0 ${sizeStyle.icon} text-accent`} />\n </Show>\n\n {/* Content */}\n <div class=\"flex flex-col flex-1 min-w-0\">\n <span class=\"truncate\">\n {typeof props.children === 'function'\n ? props.children(renderProps)\n : props.children}\n </span>\n <Show when={local.description}>\n <span class={`text-primary-400 truncate ${sizeStyle.description}`}>\n {local.description}\n </span>\n </Show>\n </div>\n </>\n )}\n </HeadlessGridListItem>\n )\n}\n\n// ============================================\n// GRID LIST SELECTION CHECKBOX COMPONENT\n// ============================================\n\n/**\n * A styled checkbox for item selection in a grid list.\n */\nexport function GridListSelectionCheckbox(props: { itemKey: Key; class?: string }): JSX.Element {\n const context = useContext(GridListSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const className = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400 ${props.class ?? ''}`\n\n return (\n <span class={className}>\n <HeadlessGridListSelectionCheckbox itemKey={props.itemKey} />\n </span>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\nfunction EmptyIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4\"\n />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nGridList.Item = GridListItem\nGridList.SelectionCheckbox = GridListSelectionCheckbox\n\n// Re-export Key type for convenience\nexport type { Key }\n","/**\n * Tabs component for proyecto-viviana-silapse\n *\n * Styled tabs component built on top of solidaria-components.\n * Inspired by Spectrum 2's Tabs component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext } from 'solid-js'\nimport {\n Tabs as HeadlessTabs,\n TabList as HeadlessTabList,\n Tab as HeadlessTab,\n TabPanel as HeadlessTabPanel,\n type TabsProps as HeadlessTabsProps,\n type TabListProps as HeadlessTabListProps,\n type TabProps as HeadlessTabProps,\n type TabPanelProps as HeadlessTabPanelProps,\n type TabsRenderProps,\n type TabListRenderProps,\n type TabRenderProps,\n type TabPanelRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key, TabOrientation } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type TabsSize = 'sm' | 'md' | 'lg'\nexport type TabsVariant = 'underline' | 'pill' | 'boxed'\n\ninterface TabsContextValue {\n size: TabsSize\n variant: TabsVariant\n}\n\nconst TabsSizeContext = createContext<TabsContextValue>({ size: 'md', variant: 'underline' })\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface TabsProps<T> extends Omit<HeadlessTabsProps<T>, 'class' | 'style'> {\n /** The size of the tabs. */\n size?: TabsSize\n /** The visual variant of the tabs. */\n variant?: TabsVariant\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TabListProps<T> extends Omit<HeadlessTabListProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TabProps extends Omit<HeadlessTabProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TabPanelProps extends Omit<HeadlessTabPanelProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n tab: 'text-sm px-3 py-1.5',\n tabList: 'gap-1',\n panel: 'text-sm p-3',\n },\n md: {\n tab: 'text-base px-4 py-2',\n tabList: 'gap-2',\n panel: 'text-base p-4',\n },\n lg: {\n tab: 'text-lg px-5 py-2.5',\n tabList: 'gap-3',\n panel: 'text-lg p-5',\n },\n}\n\nconst variantStyles = {\n underline: {\n tabList: 'border-b-2 border-primary-600',\n tab: {\n base: 'relative border-b-2 -mb-0.5 transition-colors duration-200',\n default: 'border-transparent text-primary-400 hover:text-primary-200 hover:border-primary-400',\n selected: 'border-accent text-accent',\n disabled: 'border-transparent text-primary-600 cursor-not-allowed',\n },\n },\n pill: {\n tabList: 'bg-bg-300 rounded-lg p-1',\n tab: {\n base: 'rounded-md transition-all duration-200',\n default: 'text-primary-400 hover:text-primary-200 hover:bg-bg-400',\n selected: 'bg-accent text-bg-400 shadow-sm',\n disabled: 'text-primary-600 cursor-not-allowed',\n },\n },\n boxed: {\n tabList: 'border-2 border-primary-600 rounded-lg overflow-hidden',\n tab: {\n base: 'border-r-2 border-primary-600 last:border-r-0 transition-colors duration-200',\n default: 'text-primary-400 bg-bg-400 hover:text-primary-200 hover:bg-bg-300',\n selected: 'bg-accent/20 text-accent',\n disabled: 'text-primary-600 bg-bg-300 cursor-not-allowed',\n },\n },\n}\n\n// ============================================\n// TABS COMPONENT\n// ============================================\n\n/**\n * Tabs organize content into multiple sections and allow users to navigate between them.\n *\n * Built on solidaria-components Tabs for full accessibility support.\n */\nexport function Tabs<T>(props: TabsProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n ])\n\n const size = local.size ?? 'md'\n const variant = local.variant ?? 'underline'\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TabsRenderProps): string => {\n const base = 'flex flex-col'\n const orientationClass = renderProps.orientation === 'vertical' ? 'flex-row' : 'flex-col'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, orientationClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <TabsSizeContext.Provider value={{ size, variant }}>\n <HeadlessTabs\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n </TabsSizeContext.Provider>\n )\n}\n\n// ============================================\n// TAB LIST COMPONENT\n// ============================================\n\n/**\n * A TabList contains Tab elements that represent the available tabs.\n */\nexport function TabList<T>(props: TabListProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const ctx = useContext(TabsSizeContext)\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TabListRenderProps): string => {\n const base = 'flex'\n const orientationClass = renderProps.orientation === 'vertical' ? 'flex-col' : 'flex-row'\n const sizeClass = sizeStyles[ctx.size].tabList\n const variantClass = variantStyles[ctx.variant].tabList\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, orientationClass, sizeClass, variantClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTabList\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// TAB COMPONENT\n// ============================================\n\n/**\n * A Tab represents an individual tab in a TabList.\n */\nexport function Tab(props: TabProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const ctx = useContext(TabsSizeContext)\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TabRenderProps): string => {\n const sizeClass = sizeStyles[ctx.size].tab\n const variantBase = variantStyles[ctx.variant].tab.base\n\n let stateClass: string\n if (renderProps.isDisabled) {\n stateClass = variantStyles[ctx.variant].tab.disabled\n } else if (renderProps.isSelected) {\n stateClass = variantStyles[ctx.variant].tab.selected\n } else {\n stateClass = variantStyles[ctx.variant].tab.default\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-1 ring-offset-bg-400 outline-none'\n : ''\n\n const pressedClass = renderProps.isPressed ? 'scale-95' : ''\n const cursorClass = renderProps.isDisabled ? '' : 'cursor-pointer'\n\n return [variantBase, sizeClass, stateClass, focusClass, pressedClass, cursorClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTab\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// TAB PANEL COMPONENT\n// ============================================\n\n/**\n * A TabPanel displays the content for a selected Tab.\n */\nexport function TabPanel(props: TabPanelProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const ctx = useContext(TabsSizeContext)\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TabPanelRenderProps): string => {\n const base = 'outline-none'\n const sizeClass = sizeStyles[ctx.size].panel\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTabPanel\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// Attach sub-components for convenience\nTabs.List = TabList\nTabs.Tab = Tab\nTabs.Panel = TabPanel\n\n// Re-export types for convenience\nexport type { Key, TabOrientation }\n","/**\n * Breadcrumbs component for proyecto-viviana-silapse\n *\n * Styled breadcrumbs component built on top of solidaria-components.\n * Inspired by Spectrum 2's Breadcrumbs component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext } from 'solid-js'\nimport {\n Breadcrumbs as HeadlessBreadcrumbs,\n BreadcrumbItem as HeadlessBreadcrumbItem,\n type BreadcrumbsProps as HeadlessBreadcrumbsProps,\n type BreadcrumbItemProps as HeadlessBreadcrumbItemProps,\n type BreadcrumbsRenderProps,\n type BreadcrumbItemRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type BreadcrumbsSize = 'sm' | 'md' | 'lg'\nexport type BreadcrumbsVariant = 'default' | 'subtle'\n\ninterface BreadcrumbsContextValue {\n size: BreadcrumbsSize\n variant: BreadcrumbsVariant\n showSeparator: boolean\n}\n\nconst BreadcrumbsSizeContext = createContext<BreadcrumbsContextValue>({\n size: 'md',\n variant: 'default',\n showSeparator: true,\n})\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface BreadcrumbsProps<T> extends Omit<HeadlessBreadcrumbsProps<T>, 'class' | 'style'> {\n /** The size of the breadcrumbs. */\n size?: BreadcrumbsSize\n /** The visual variant. */\n variant?: BreadcrumbsVariant\n /** Whether to show separators between items. */\n showSeparator?: boolean\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface BreadcrumbItemProps extends Omit<HeadlessBreadcrumbItemProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n text: 'text-sm',\n icon: 'h-3 w-3',\n gap: 'gap-1',\n },\n md: {\n text: 'text-base',\n icon: 'h-4 w-4',\n gap: 'gap-1.5',\n },\n lg: {\n text: 'text-lg',\n icon: 'h-5 w-5',\n gap: 'gap-2',\n },\n}\n\nconst variantStyles = {\n default: {\n item: 'text-primary-400 hover:text-primary-200',\n current: 'text-primary-100 font-medium',\n separator: 'text-primary-500',\n },\n subtle: {\n item: 'text-primary-500 hover:text-primary-300',\n current: 'text-primary-200',\n separator: 'text-primary-600',\n },\n}\n\n// ============================================\n// BREADCRUMBS COMPONENT\n// ============================================\n\n/**\n * Breadcrumbs show hierarchy and navigational context for a user's location within an application.\n *\n * Built on solidaria-components Breadcrumbs for full accessibility support.\n */\nexport function Breadcrumbs<T>(props: BreadcrumbsProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'showSeparator',\n 'class',\n ])\n\n const size = local.size ?? 'md'\n const variant = local.variant ?? 'default'\n const showSeparator = local.showSeparator ?? true\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: BreadcrumbsRenderProps): string => {\n const base = 'flex items-center'\n const sizeClass = sizeStyles[size].gap\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, sizeClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <BreadcrumbsSizeContext.Provider value={{ size, variant, showSeparator }}>\n <HeadlessBreadcrumbs\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n </BreadcrumbsSizeContext.Provider>\n )\n}\n\n// ============================================\n// BREADCRUMB ITEM COMPONENT\n// ============================================\n\n/**\n * A BreadcrumbItem represents an individual breadcrumb in the navigation trail.\n */\nexport function BreadcrumbItem(props: BreadcrumbItemProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'children'])\n const ctx = useContext(BreadcrumbsSizeContext)\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: BreadcrumbItemRenderProps): string => {\n const sizeClass = sizeStyles[ctx.size].text\n const vStyles = variantStyles[ctx.variant]\n\n let stateClass: string\n if (renderProps.isCurrent) {\n stateClass = vStyles.current\n } else if (renderProps.isDisabled) {\n stateClass = 'text-primary-600 cursor-not-allowed'\n } else {\n stateClass = vStyles.item\n }\n\n const cursorClass = renderProps.isCurrent || renderProps.isDisabled ? '' : 'cursor-pointer'\n const transitionClass = 'transition-colors duration-150'\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-1 ring-offset-bg-400 outline-none rounded'\n : ''\n\n return [sizeClass, stateClass, cursorClass, transitionClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const vStyles = variantStyles[ctx.variant]\n // Hide separator on the first breadcrumb item.\n const separatorClass = `${sizeStyles[ctx.size].icon} ${vStyles.separator} mx-1 shrink-0 [li:first-child_&]:hidden`\n\n const renderChildren = (renderProps: BreadcrumbItemRenderProps) => {\n const children = local.children\n return (\n <>\n {/* Separator shows before items except first and current. */}\n {ctx.showSeparator && !renderProps.isCurrent && <ChevronIcon class={separatorClass} />}\n {typeof children === 'function' ? children(renderProps) : children}\n </>\n )\n }\n\n return (\n <HeadlessBreadcrumbItem\n {...headlessProps}\n class={getClassName}\n children={renderChildren}\n />\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n aria-hidden=\"true\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nBreadcrumbs.Item = BreadcrumbItem\n","/**\n * NumberField component for proyecto-viviana-silapse\n *\n * A styled number field component with increment/decrement buttons.\n * Built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, useContext } from 'solid-js'\nimport {\n NumberField as HeadlessNumberField,\n NumberFieldLabel as HeadlessNumberFieldLabel,\n NumberFieldGroup as HeadlessNumberFieldGroup,\n NumberFieldInput as HeadlessNumberFieldInput,\n NumberFieldIncrementButton as HeadlessNumberFieldIncrementButton,\n NumberFieldDecrementButton as HeadlessNumberFieldDecrementButton,\n NumberFieldContext,\n type NumberFieldProps as HeadlessNumberFieldProps,\n type NumberFieldRenderProps,\n type NumberFieldInputRenderProps,\n type NumberFieldButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type NumberFieldSize = 'sm' | 'md' | 'lg'\nexport type NumberFieldVariant = 'outline' | 'filled'\n\nexport interface NumberFieldProps extends Omit<HeadlessNumberFieldProps, 'class' | 'style' | 'children' | 'label'> {\n /** The size of the number field. */\n size?: NumberFieldSize\n /** The visual variant of the number field. */\n variant?: NumberFieldVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the input. */\n label?: string\n /** Description text shown below the input. */\n description?: string\n /** Error message shown when invalid. */\n errorMessage?: string\n /** Whether to hide the stepper buttons. */\n hideStepper?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n input: 'h-8 px-2 text-sm',\n label: 'text-sm',\n description: 'text-xs',\n button: 'w-6 h-6 text-sm',\n buttonGap: 'gap-0.5',\n },\n md: {\n input: 'h-10 px-3 text-base',\n label: 'text-sm',\n description: 'text-sm',\n button: 'w-8 h-8 text-base',\n buttonGap: 'gap-1',\n },\n lg: {\n input: 'h-12 px-4 text-lg',\n label: 'text-base',\n description: 'text-sm',\n button: 'w-10 h-10 text-lg',\n buttonGap: 'gap-1',\n },\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction PlusIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M8 3v10M3 8h10\" />\n </svg>\n )\n}\n\nfunction MinusIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M3 8h10\" />\n </svg>\n )\n}\n\nfunction NumberFieldDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(NumberFieldContext)\n if (!context) return null\n const descriptionProps = () => {\n const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>\n return rest\n }\n\n return (\n <span {...descriptionProps()} class={props.class}>\n {props.children}\n </span>\n )\n}\n\nfunction NumberFieldError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(NumberFieldContext)\n if (!context) return null\n const errorMessageProps = () => {\n const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>\n return rest\n }\n\n return (\n <span {...errorMessageProps()} class={props.class}>\n {props.children}\n </span>\n )\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A number field allows users to enter a numeric value with increment/decrement controls.\n */\nexport function NumberField(props: NumberFieldProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'hideStepper',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n\n const containerClasses = () => {\n const base = 'flex flex-col'\n const disabledClass = headlessProps.isDisabled ? 'opacity-60' : ''\n const custom = local.class || ''\n return [base, disabledClass, custom].filter(Boolean).join(' ')\n }\n\n const groupClasses = () => {\n const base = 'flex items-center'\n const gapClass = size().buttonGap\n return [base, gapClass].filter(Boolean).join(' ')\n }\n\n const inputClasses = (renderProps: NumberFieldInputRenderProps) => {\n const base = 'flex-1 rounded-md transition-all duration-200 outline-none text-center'\n const sizeClass = size().input\n\n const variantClass = local.variant === 'filled'\n ? 'bg-bg-200 border border-transparent'\n : 'bg-transparent border border-bg-400'\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isInvalid) {\n stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'\n } else {\n stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'\n }\n\n const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'\n\n return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')\n }\n\n const buttonClasses = (renderProps: NumberFieldButtonRenderProps) => {\n const base = 'flex items-center justify-center rounded-md transition-all duration-150 select-none'\n const sizeClass = size().button\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-300 text-primary-600 cursor-not-allowed'\n } else if (renderProps.isPressed) {\n stateClass = 'bg-accent-600 text-white scale-95'\n } else if (renderProps.isHovered) {\n stateClass = 'bg-accent-500 text-white'\n } else {\n stateClass = 'bg-bg-300 text-primary-200 hover:bg-accent-500 hover:text-white'\n }\n\n return [base, sizeClass, stateClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'block font-medium text-primary-200 mb-1'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const descriptionClasses = () => {\n const base = 'mt-1 text-primary-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const errorClasses = () => {\n const base = 'mt-1 text-danger-500'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessNumberField\n {...headlessProps}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n class={containerClasses()}\n children={(renderProps: NumberFieldRenderProps) => (\n <>\n <Show when={local.label}>\n <HeadlessNumberFieldLabel class={labelClasses()}>\n {local.label}\n <Show when={renderProps.isRequired}>\n <span class=\"text-danger-500 ml-1\">*</span>\n </Show>\n </HeadlessNumberFieldLabel>\n </Show>\n\n <HeadlessNumberFieldGroup class={groupClasses()}>\n <Show when={!local.hideStepper}>\n <HeadlessNumberFieldDecrementButton class={buttonClasses}>\n <MinusIcon class=\"w-4 h-4\" />\n </HeadlessNumberFieldDecrementButton>\n </Show>\n\n <HeadlessNumberFieldInput class={inputClasses} />\n\n <Show when={!local.hideStepper}>\n <HeadlessNumberFieldIncrementButton class={buttonClasses}>\n <PlusIcon class=\"w-4 h-4\" />\n </HeadlessNumberFieldIncrementButton>\n </Show>\n </HeadlessNumberFieldGroup>\n\n <Show when={local.description && !renderProps.isInvalid}>\n <NumberFieldDescription class={descriptionClasses()}>\n {local.description}\n </NumberFieldDescription>\n </Show>\n\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <NumberFieldError class={errorClasses()}>\n {local.errorMessage}\n </NumberFieldError>\n </Show>\n </>\n )}\n />\n )\n}\n\n// Re-export types\nexport type { NumberFieldState } from '@proyecto-viviana/solid-stately'\n","/**\n * DropZone component for proyecto-viviana-silapse.\n *\n * Styling-only wrapper around solidaria-components DropZone primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n DropZone as HeadlessDropZone,\n type DropZoneProps as HeadlessDropZoneProps,\n type DropZoneRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport interface DropZoneProps extends Omit<HeadlessDropZoneProps, 'class'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\nexport function DropZone(props: DropZoneProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class']);\n\n const getClassName = (renderProps: DropZoneRenderProps): string => {\n const base = [\n 'rounded-lg border-2 border-dashed p-4 transition-colors duration-150 outline-none',\n ].join(' ');\n\n const stateClass = renderProps.isDisabled\n ? 'cursor-not-allowed border-primary-600 bg-bg-300/50 opacity-60'\n : renderProps.isDropTarget\n ? 'border-accent bg-accent/10'\n : renderProps.isHovered || renderProps.isFocused\n ? 'border-accent-300 bg-bg-300'\n : 'border-primary-600 bg-bg-400';\n\n const focusRingClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : '';\n\n return [base, stateClass, focusRingClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessDropZone\n {...headlessProps}\n class={getClassName}\n />\n );\n}\n","/**\n * FileTrigger component for proyecto-viviana-silapse.\n *\n * Styling-only wrapper around solidaria-components FileTrigger primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n FileTrigger as HeadlessFileTrigger,\n type FileTriggerProps as HeadlessFileTriggerProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport interface FileTriggerProps extends HeadlessFileTriggerProps {\n /** Additional CSS class for the trigger wrapper. */\n class?: string;\n}\n\nexport function FileTrigger(props: FileTriggerProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'children']);\n const hasClass = () => !!local.class && local.class.trim().length > 0;\n\n return (\n <HeadlessFileTrigger {...headlessProps}>\n {hasClass() ? <span class={local.class}>{local.children}</span> : local.children}\n </HeadlessFileTrigger>\n );\n}\n\n","/**\n * SearchField component for proyecto-viviana-silapse\n *\n * Styled search field component with clear button and search icon.\n * Built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, useContext } from 'solid-js'\nimport {\n SearchField as HeadlessSearchField,\n SearchFieldLabel as HeadlessSearchFieldLabel,\n SearchFieldInput as HeadlessSearchFieldInput,\n SearchFieldClearButton as HeadlessSearchFieldClearButton,\n SearchFieldContext,\n type SearchFieldProps as HeadlessSearchFieldProps,\n type SearchFieldRenderProps,\n type SearchFieldInputRenderProps,\n type SearchFieldClearButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SearchFieldSize = 'sm' | 'md' | 'lg'\nexport type SearchFieldVariant = 'outline' | 'filled'\n\nexport interface SearchFieldProps extends Omit<HeadlessSearchFieldProps, 'class' | 'style' | 'children' | 'label'> {\n /** The size of the search field. */\n size?: SearchFieldSize\n /** The visual variant of the search field. */\n variant?: SearchFieldVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the input. */\n label?: string\n /** Description text shown below the input. */\n description?: string\n /** Error message shown when invalid. */\n errorMessage?: string\n /** Whether to hide the search icon. */\n hideSearchIcon?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'h-8',\n input: 'text-sm pl-8 pr-8',\n label: 'text-sm',\n description: 'text-xs',\n icon: 'w-4 h-4 left-2',\n clearButton: 'w-5 h-5 right-1.5',\n },\n md: {\n container: 'h-10',\n input: 'text-base pl-10 pr-10',\n label: 'text-sm',\n description: 'text-sm',\n icon: 'w-5 h-5 left-2.5',\n clearButton: 'w-6 h-6 right-2',\n },\n lg: {\n container: 'h-12',\n input: 'text-lg pl-12 pr-12',\n label: 'text-base',\n description: 'text-sm',\n icon: 'w-6 h-6 left-3',\n clearButton: 'w-7 h-7 right-2.5',\n },\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction SearchIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"5\" />\n <path d=\"M12 12L17 17\" stroke-linecap=\"round\" />\n </svg>\n )\n}\n\nfunction ClearIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M4 4L12 12M12 4L4 12\" stroke-linecap=\"round\" />\n </svg>\n )\n}\n\nfunction SearchFieldDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(SearchFieldContext)\n if (!context) return null\n return (\n <span {...context.descriptionProps} class={props.class}>\n {props.children}\n </span>\n )\n}\n\nfunction SearchFieldError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(SearchFieldContext)\n if (!context) return null\n return (\n <span {...context.errorMessageProps} class={props.class}>\n {props.children}\n </span>\n )\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\nexport function SearchField(props: SearchFieldProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'hideSearchIcon',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n\n const containerClasses = () => {\n const base = 'flex flex-col'\n const disabledClass = headlessProps.isDisabled ? 'opacity-60' : ''\n const custom = local.class ?? ''\n return [base, disabledClass, custom].filter(Boolean).join(' ')\n }\n\n const inputWrapperClasses = () => {\n const base = 'relative flex items-center'\n const sizeClass = size().container\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const inputClasses = (renderProps: SearchFieldInputRenderProps) => {\n const base = 'w-full h-full rounded-md transition-all duration-200 outline-none'\n const sizeClass = size().input\n const paddingClass = local.hideSearchIcon ? 'pl-3' : ''\n\n const variantClass = local.variant === 'filled'\n ? 'bg-bg-200 border border-transparent'\n : 'bg-transparent border border-bg-400'\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isInvalid) {\n stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'\n } else {\n stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'\n }\n\n const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'\n\n return [base, sizeClass, paddingClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')\n }\n\n const searchIconClasses = () => {\n const base = 'absolute pointer-events-none text-primary-400'\n const sizeClass = size().icon\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const clearButtonClasses = (renderProps: SearchFieldClearButtonRenderProps) => {\n const base = 'absolute flex items-center justify-center rounded-md transition-all duration-150 select-none'\n const sizeClass = size().clearButton\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-600 cursor-not-allowed'\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-400 text-primary-100 scale-90'\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-100'\n } else {\n stateClass = 'text-primary-400 hover:bg-bg-300 hover:text-primary-100'\n }\n\n return [base, sizeClass, stateClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'block font-medium text-primary-200 mb-1'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const descriptionClasses = () => {\n const base = 'mt-1 text-primary-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const errorClasses = () => {\n const base = 'mt-1 text-danger-500'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessSearchField\n {...headlessProps}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n class={containerClasses()}\n children={(renderProps: SearchFieldRenderProps) => (\n <>\n <Show when={local.label}>\n <HeadlessSearchFieldLabel class={labelClasses()}>\n {local.label}\n <Show when={renderProps.isRequired}>\n <span class=\"text-danger-500 ml-1\">*</span>\n </Show>\n </HeadlessSearchFieldLabel>\n </Show>\n\n <div class={inputWrapperClasses()}>\n <Show when={!local.hideSearchIcon}>\n <SearchIcon class={searchIconClasses()} />\n </Show>\n\n <HeadlessSearchFieldInput class={inputClasses} />\n\n <HeadlessSearchFieldClearButton class={clearButtonClasses}>\n <ClearIcon class=\"w-3 h-3\" />\n </HeadlessSearchFieldClearButton>\n </div>\n\n <Show when={local.description && !renderProps.isInvalid}>\n <SearchFieldDescription class={descriptionClasses()}>\n {local.description}\n </SearchFieldDescription>\n </Show>\n\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <SearchFieldError class={errorClasses()}>\n {local.errorMessage}\n </SearchFieldError>\n </Show>\n </>\n )}\n />\n )\n}\n\n// Re-export types\nexport type { SearchFieldState } from '@proyecto-viviana/solid-stately'\n","/**\n * ContextualHelp component for proyecto-viviana-silapse.\n *\n * Styling-only composition around tooltip primitives.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js';\nimport { TooltipTrigger, Tooltip } from '../tooltip';\n\nexport interface ContextualHelpProps {\n /** Help trigger content. */\n children?: JSX.Element;\n /** Help text/content rendered in overlay. */\n content: JSX.Element;\n /** Accessible label for the default trigger button. */\n triggerLabel?: string;\n /** Additional CSS class for trigger wrapper. */\n class?: string;\n}\n\nexport function ContextualHelp(props: ContextualHelpProps): JSX.Element {\n const [local] = splitProps(props, ['children', 'content', 'triggerLabel', 'class']);\n return (\n <TooltipTrigger>\n <Show\n when={local.children}\n fallback={(\n <button\n type=\"button\"\n aria-label={local.triggerLabel ?? 'More information'}\n class={`inline-flex h-5 w-5 items-center justify-center rounded-full border border-primary-500 text-xs text-primary-200 hover:bg-bg-300 ${local.class ?? ''}`}\n >\n ?\n </button>\n )}\n >\n {local.children}\n </Show>\n <Tooltip>{local.content}</Tooltip>\n </TooltipTrigger>\n );\n}\n","/**\n * Slider component for proyecto-viviana-silapse\n *\n * A styled slider component with track, thumb, and value display.\n * Built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, createUniqueId } from 'solid-js'\nimport {\n Slider as HeadlessSlider,\n SliderTrack as HeadlessSliderTrack,\n SliderThumb as HeadlessSliderThumb,\n SliderOutput as HeadlessSliderOutput,\n type SliderProps as HeadlessSliderProps,\n type SliderRenderProps,\n type SliderTrackRenderProps,\n type SliderThumbRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { type SliderOrientation } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SliderSize = 'sm' | 'md' | 'lg'\nexport type SliderVariant = 'default' | 'accent'\n\nexport interface SliderProps extends Omit<HeadlessSliderProps, 'class' | 'style' | 'children' | 'label'> {\n /** The size of the slider. */\n size?: SliderSize\n /** The visual variant of the slider. */\n variant?: SliderVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the slider. */\n label?: string\n /** Whether to show the value output. */\n showOutput?: boolean\n /** Whether to show min/max labels. */\n showMinMax?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n trackHorizontal: 'h-1',\n trackVertical: 'w-1',\n thumb: 'w-3 h-3',\n label: 'text-sm',\n output: 'text-xs',\n },\n md: {\n trackHorizontal: 'h-2',\n trackVertical: 'w-2',\n thumb: 'w-4 h-4',\n label: 'text-sm',\n output: 'text-sm',\n },\n lg: {\n trackHorizontal: 'h-3',\n trackVertical: 'w-3',\n thumb: 'w-5 h-5',\n label: 'text-base',\n output: 'text-base',\n },\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A slider allows users to select a value from a range.\n */\nexport function Slider(props: SliderProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'showOutput',\n 'showMinMax',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n const orientation = (): SliderOrientation => headlessProps.orientation ?? 'horizontal'\n const labelId = createUniqueId()\n\n const containerClasses = () => {\n const base = orientation() === 'vertical' ? 'flex flex-col w-fit' : 'flex flex-col w-full'\n const custom = local.class || ''\n return [base, custom].filter(Boolean).join(' ')\n }\n\n const labelRowClasses = () => {\n const rowLayout = orientation() === 'vertical' ? 'flex-col items-start gap-1' : 'flex-row justify-between items-center'\n return ['flex mb-2', rowLayout].join(' ')\n }\n\n const trackContainerClasses = () => {\n const base = orientation() === 'vertical' ? 'relative h-40 mx-auto' : 'relative w-full'\n const disabledClass = headlessProps.isDisabled ? 'cursor-not-allowed' : ''\n return [base, disabledClass].filter(Boolean).join(' ')\n }\n\n const trackClasses = (_renderProps: SliderTrackRenderProps) => {\n const base = 'relative rounded-full bg-bg-300'\n const axisClass = orientation() === 'vertical'\n ? [size().trackVertical, 'h-full'].join(' ')\n : [size().trackHorizontal, 'w-full'].join(' ')\n const interactiveClass = headlessProps.isDisabled ? '' : 'cursor-pointer'\n return [base, axisClass, interactiveClass].filter(Boolean).join(' ')\n }\n\n const fillClasses = () => {\n const base = 'absolute rounded-full transition-all'\n const variantClass = local.variant === 'accent' ? 'bg-accent' : 'bg-primary-400'\n return [base, variantClass].filter(Boolean).join(' ')\n }\n\n const fillStyle = (renderProps: SliderTrackRenderProps): JSX.CSSProperties => {\n if (renderProps.orientation === 'vertical') {\n return {\n left: '0',\n bottom: '0',\n width: '100%',\n height: `${renderProps.valuePercent * 100}%`,\n }\n }\n\n return {\n left: '0',\n top: '0',\n height: '100%',\n width: `${renderProps.valuePercent * 100}%`,\n }\n }\n\n const thumbClasses = (renderProps: SliderThumbRenderProps) => {\n const base = 'absolute rounded-full shadow-md transition-all'\n const sizeClass = size().thumb\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-primary-400 cursor-not-allowed'\n } else if (renderProps.isDragging) {\n stateClass = local.variant === 'accent' ? 'bg-accent-400 scale-110 cursor-grabbing' : 'bg-primary-200 scale-110 cursor-grabbing'\n } else if (renderProps.isHovered) {\n stateClass = local.variant === 'accent' ? 'bg-accent-400 scale-105 cursor-grab' : 'bg-primary-200 scale-105 cursor-grab'\n } else {\n stateClass = local.variant === 'accent' ? 'bg-accent cursor-grab' : 'bg-primary-100 cursor-grab'\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent ring-offset-2 ring-offset-bg-100' : ''\n\n return [base, sizeClass, stateClass, focusClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'font-medium text-primary-200'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const outputClasses = () => {\n const base = 'font-medium text-primary-100'\n const sizeClass = size().output\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const minMaxClasses = () => 'text-xs text-primary-400'\n\n const showOutput = () => local.showOutput ?? true\n const minValue = () => headlessProps.minValue ?? 0\n const maxValue = () => headlessProps.maxValue ?? 100\n\n return (\n <HeadlessSlider\n {...headlessProps}\n aria-labelledby={headlessProps['aria-labelledby'] ?? (!headlessProps['aria-label'] && local.label ? labelId : undefined)}\n aria-label={headlessProps['aria-label']}\n class={containerClasses()}\n children={(_renderProps: SliderRenderProps) => (\n <>\n <Show when={local.label || showOutput()}>\n <div class={labelRowClasses()}>\n <Show when={local.label}>\n <span id={labelId} class={labelClasses()}>{local.label}</span>\n </Show>\n <Show when={showOutput()}>\n <HeadlessSliderOutput class={outputClasses()} />\n </Show>\n </div>\n </Show>\n\n <div class={trackContainerClasses()}>\n <HeadlessSliderTrack class={trackClasses}>\n {(trackRenderProps) => (\n <>\n <div\n class={fillClasses()}\n style={fillStyle(trackRenderProps)}\n />\n <HeadlessSliderThumb class={thumbClasses} />\n </>\n )}\n </HeadlessSliderTrack>\n </div>\n\n <Show when={local.showMinMax}>\n <div class=\"flex justify-between mt-1\">\n <span class={minMaxClasses()}>{minValue()}</span>\n <span class={minMaxClasses()}>{maxValue()}</span>\n </div>\n </Show>\n </>\n )}\n />\n )\n}\n\n// Re-export types\nexport type { SliderState, SliderOrientation } from '@proyecto-viviana/solid-stately'\n\n// Sub-component\nexport { RangeSlider } from './RangeSlider';\nexport type { RangeSliderProps, RangeSliderSize } from './RangeSlider';\n","/**\n * RangeSlider component for proyecto-viviana-silapse\n *\n * A dual-thumb range slider for selecting value ranges.\n * Self-contained component that manages its own dual-value state,\n * since the headless Slider only supports single-value.\n */\n\nimport { type JSX, createSignal, createMemo, Show, onCleanup } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type RangeSliderSize = 'sm' | 'md' | 'lg';\n\nexport interface RangeValue {\n start: number;\n end: number;\n}\n\nexport interface RangeSliderProps {\n /** The current value (controlled). */\n value?: RangeValue;\n /** The default value (uncontrolled). */\n defaultValue?: RangeValue;\n /** Handler called when the value changes. */\n onChange?: (value: RangeValue) => void;\n /** Handler called when the user stops dragging. */\n onChangeEnd?: (value: RangeValue) => void;\n /** The minimum value. @default 0 */\n minValue?: number;\n /** The maximum value. @default 100 */\n maxValue?: number;\n /** The step value. @default 1 */\n step?: number;\n /** The size of the slider. @default 'md' */\n size?: RangeSliderSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label text for the slider. */\n label?: string;\n /** Whether to show the value output. @default true */\n showOutput?: boolean;\n /** Whether the slider is disabled. */\n isDisabled?: boolean;\n /** Number format options for the output. */\n formatOptions?: Intl.NumberFormatOptions;\n /** Accessible label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<RangeSliderSize, { track: string; thumb: string; label: string }> = {\n sm: { track: 'h-1', thumb: 'w-3 h-3', label: 'text-sm' },\n md: { track: 'h-2', thumb: 'w-4 h-4', label: 'text-sm' },\n lg: { track: 'h-3', thumb: 'w-5 h-5', label: 'text-base' },\n};\n\n// ============================================\n// HELPERS\n// ============================================\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction snapToStep(value: number, min: number, max: number, step: number): number {\n const snapped = Math.round((value - min) / step) * step + min;\n const decimalPlaces = (step.toString().split('.')[1] || '').length;\n const rounded = parseFloat(snapped.toFixed(decimalPlaces));\n return clamp(rounded, min, max);\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A dual-thumb slider for selecting a range of values.\n */\nexport function RangeSlider(props: RangeSliderProps): JSX.Element {\n const minValue = () => props.minValue ?? 0;\n const maxValue = () => props.maxValue ?? 100;\n const step = () => props.step ?? 1;\n const size = () => sizeStyles[props.size ?? 'md'];\n const isDisabled = () => props.isDisabled ?? false;\n\n // Internal state for uncontrolled mode\n const defaultStart = () => props.defaultValue?.start ?? minValue();\n const defaultEnd = () => props.defaultValue?.end ?? maxValue();\n const [internalStart, setInternalStart] = createSignal(\n snapToStep(defaultStart(), minValue(), maxValue(), step())\n );\n const [internalEnd, setInternalEnd] = createSignal(\n snapToStep(defaultEnd(), minValue(), maxValue(), step())\n );\n\n // Controlled vs uncontrolled\n const startValue = createMemo(() => {\n if (props.value !== undefined) {\n return snapToStep(props.value.start, minValue(), maxValue(), step());\n }\n return internalStart();\n });\n\n const endValue = createMemo(() => {\n if (props.value !== undefined) {\n return snapToStep(props.value.end, minValue(), maxValue(), step());\n }\n return internalEnd();\n });\n\n // Percentages for positioning\n const startPercent = createMemo(() =>\n (startValue() - minValue()) / (maxValue() - minValue())\n );\n const endPercent = createMemo(() =>\n (endValue() - minValue()) / (maxValue() - minValue())\n );\n\n // Formatted values\n const formatter = createMemo(() => new Intl.NumberFormat(undefined, props.formatOptions));\n const formattedOutput = createMemo(() => {\n return `${formatter().format(startValue())} – ${formatter().format(endValue())}`;\n });\n\n // Set range value\n const setRange = (start: number, end: number) => {\n if (isDisabled()) return;\n const s = snapToStep(start, minValue(), maxValue(), step());\n const e = snapToStep(end, minValue(), maxValue(), step());\n // Ensure start <= end\n const newStart = Math.min(s, e);\n const newEnd = Math.max(s, e);\n\n if (props.value === undefined) {\n setInternalStart(newStart);\n setInternalEnd(newEnd);\n }\n props.onChange?.({ start: newStart, end: newEnd });\n };\n\n // Dragging state\n const [draggingThumb, setDraggingThumb] = createSignal<'start' | 'end' | null>(null);\n const [focusedThumb, setFocusedThumb] = createSignal<'start' | 'end' | null>(null);\n\n let trackRef: HTMLDivElement | undefined;\n\n // Get value from pointer position\n const getValueFromPointer = (clientX: number): number => {\n if (!trackRef) return minValue();\n const rect = trackRef.getBoundingClientRect();\n const percent = clamp((clientX - rect.left) / rect.width, 0, 1);\n return snapToStep(\n percent * (maxValue() - minValue()) + minValue(),\n minValue(),\n maxValue(),\n step()\n );\n };\n\n // Determine which thumb is closer to a value\n const closerThumb = (value: number): 'start' | 'end' => {\n const distToStart = Math.abs(value - startValue());\n const distToEnd = Math.abs(value - endValue());\n if (distToStart < distToEnd) return 'start';\n if (distToEnd < distToStart) return 'end';\n // Equal distance: prefer the one in the direction of the value\n return value < startValue() ? 'start' : 'end';\n };\n\n // Pointer handlers\n const onPointerDown = (e: PointerEvent) => {\n if (isDisabled()) return;\n e.preventDefault();\n const value = getValueFromPointer(e.clientX);\n const thumb = closerThumb(value);\n setDraggingThumb(thumb);\n\n if (thumb === 'start') {\n setRange(value, endValue());\n } else {\n setRange(startValue(), value);\n }\n\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n };\n\n const onPointerMove = (e: PointerEvent) => {\n const thumb = draggingThumb();\n if (!thumb) return;\n const value = getValueFromPointer(e.clientX);\n if (thumb === 'start') {\n setRange(value, endValue());\n } else {\n setRange(startValue(), value);\n }\n };\n\n const onPointerUp = () => {\n if (draggingThumb()) {\n setDraggingThumb(null);\n props.onChangeEnd?.({ start: startValue(), end: endValue() });\n }\n };\n\n // Keyboard handler for thumbs\n const onKeyDown = (thumb: 'start' | 'end', e: KeyboardEvent) => {\n if (isDisabled()) return;\n const s = step();\n const pageStep = Math.max(s, snapToStep((maxValue() - minValue()) / 10, 0, maxValue() - minValue(), s));\n const current = thumb === 'start' ? startValue() : endValue();\n let newValue = current;\n let handled = true;\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = current + s;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = current - s;\n break;\n case 'PageUp':\n newValue = current + pageStep;\n break;\n case 'PageDown':\n newValue = current - pageStep;\n break;\n case 'Home':\n newValue = minValue();\n break;\n case 'End':\n newValue = maxValue();\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n newValue = snapToStep(newValue, minValue(), maxValue(), s);\n if (thumb === 'start') {\n setRange(newValue, endValue());\n } else {\n setRange(startValue(), newValue);\n }\n }\n };\n\n // Thumb style classes\n const thumbClasses = (isDragging: boolean, isFocused: boolean): string => {\n const base = 'absolute rounded-full shadow-md transition-all top-1/2 -translate-y-1/2 -translate-x-1/2 outline-none';\n const sizeClass = size().thumb;\n\n let stateClass: string;\n if (isDisabled()) {\n stateClass = 'bg-primary-400 cursor-not-allowed';\n } else if (isDragging) {\n stateClass = 'bg-accent-400 scale-110 cursor-grabbing';\n } else {\n stateClass = 'bg-accent cursor-grab hover:bg-accent-400 hover:scale-105';\n }\n\n const focusClass = isFocused ? 'ring-2 ring-accent ring-offset-2 ring-offset-bg-100' : '';\n return [base, sizeClass, stateClass, focusClass].filter(Boolean).join(' ');\n };\n\n return (\n <div\n class={`flex flex-col w-full ${isDisabled() ? 'opacity-60' : ''} ${props.class ?? ''}`}\n role=\"group\"\n aria-label={props['aria-label'] ?? props.label}\n >\n <Show when={props.label || (props.showOutput ?? true)}>\n <div class=\"flex justify-between items-center mb-2\">\n <Show when={props.label}>\n <span class={`font-medium text-primary-200 ${size().label}`}>{props.label}</span>\n </Show>\n <Show when={props.showOutput ?? true}>\n <output class={`font-medium text-primary-100 ${size().label}`} aria-live=\"off\">\n {formattedOutput()}\n </output>\n </Show>\n </div>\n </Show>\n <div class=\"relative w-full\">\n <div\n ref={trackRef!}\n class={`relative rounded-full bg-bg-300 w-full ${size().track} ${isDisabled() ? '' : 'cursor-pointer'}`}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n style={{ 'touch-action': 'none' }}\n >\n {/* Filled range between thumbs */}\n <div\n class=\"absolute h-full rounded-full bg-accent\"\n style={{\n left: `${startPercent() * 100}%`,\n width: `${(endPercent() - startPercent()) * 100}%`,\n }}\n />\n {/* Start thumb */}\n <div\n class={thumbClasses(draggingThumb() === 'start', focusedThumb() === 'start')}\n style={{ left: `${startPercent() * 100}%` }}\n tabIndex={isDisabled() ? undefined : 0}\n role=\"slider\"\n aria-label={`${props.label ?? 'Range'} start`}\n aria-valuemin={minValue()}\n aria-valuemax={endValue()}\n aria-valuenow={startValue()}\n aria-valuetext={formatter().format(startValue())}\n onKeyDown={(e) => onKeyDown('start', e)}\n onFocus={() => setFocusedThumb('start')}\n onBlur={() => setFocusedThumb(null)}\n />\n {/* End thumb */}\n <div\n class={thumbClasses(draggingThumb() === 'end', focusedThumb() === 'end')}\n style={{ left: `${endPercent() * 100}%` }}\n tabIndex={isDisabled() ? undefined : 0}\n role=\"slider\"\n aria-label={`${props.label ?? 'Range'} end`}\n aria-valuemin={startValue()}\n aria-valuemax={maxValue()}\n aria-valuenow={endValue()}\n aria-valuetext={formatter().format(endValue())}\n onKeyDown={(e) => onKeyDown('end', e)}\n onFocus={() => setFocusedThumb('end')}\n onBlur={() => setFocusedThumb(null)}\n />\n </div>\n </div>\n </div>\n );\n}\n","/**\n * Toast components for proyecto-viviana-silapse\n *\n * Toast notifications with auto-dismiss, animations, and variants.\n * Built on top of solidaria-components for accessibility.\n */\n\nimport { type JSX, splitProps, For, Show } from 'solid-js';\nimport {\n Toast as HeadlessToast,\n ToastRegion as HeadlessToastRegion,\n ToastProvider as HeadlessToastProvider,\n ToastContext,\n ToastTitle as HeadlessToastTitle,\n ToastDescription as HeadlessToastDescription,\n ToastCloseButton as HeadlessToastCloseButton,\n globalToastQueue,\n addToast as headlessAddToast,\n useToastContext,\n type ToastContent,\n type ToastProps as HeadlessToastProps,\n type ToastRegionProps as HeadlessToastRegionProps,\n type ToastProviderProps as HeadlessToastProviderProps,\n type ToastRenderProps,\n type ToastRegionRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { type QueuedToast, type ToastOptions } from '@proyecto-viviana/solid-stately';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ToastPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end';\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error' | 'neutral';\n\nexport interface ToastProviderProps extends HeadlessToastProviderProps {}\n\nexport interface ToastRegionProps extends Omit<HeadlessToastRegionProps, 'class' | 'style' | 'children'> {\n /** The placement of the toast region. */\n placement?: ToastPlacement;\n /** Additional CSS class name. */\n class?: string;\n}\n\nexport interface ToastProps extends Omit<HeadlessToastProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst regionStyles = [\n 'flex flex-col gap-3',\n 'p-4',\n].join(' ');\n\nconst toastBaseStyles = [\n 'flex items-start gap-3',\n 'px-4 py-3',\n 'rounded-lg shadow-lg',\n 'min-w-[300px] max-w-[400px]',\n 'border',\n // Animations\n 'data-[animation=entering]:animate-in data-[animation=entering]:fade-in-0 data-[animation=entering]:slide-in-from-right-5',\n 'data-[animation=exiting]:animate-out data-[animation=exiting]:fade-out-0 data-[animation=exiting]:slide-out-to-right-5',\n].join(' ');\n\nconst variantStyles: Record<ToastVariant, string> = {\n info: 'bg-blue-50 border-blue-200 text-blue-800 dark:bg-blue-950 dark:border-blue-800 dark:text-blue-200',\n success: 'bg-green-50 border-green-200 text-green-800 dark:bg-green-950 dark:border-green-800 dark:text-green-200',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-800 dark:bg-yellow-950 dark:border-yellow-800 dark:text-yellow-200',\n error: 'bg-red-50 border-red-200 text-red-800 dark:bg-red-950 dark:border-red-800 dark:text-red-200',\n neutral: 'bg-neutral-50 border-neutral-200 text-neutral-800 dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-200',\n};\n\nconst iconStyles: Record<ToastVariant, string> = {\n info: 'text-blue-500 dark:text-blue-400',\n success: 'text-green-500 dark:text-green-400',\n warning: 'text-yellow-500 dark:text-yellow-400',\n error: 'text-red-500 dark:text-red-400',\n neutral: 'text-neutral-500 dark:text-neutral-400',\n};\n\nconst closeButtonStyles = [\n 'ml-auto -mr-1 -mt-1',\n 'p-1 rounded-md',\n 'text-current opacity-60 hover:opacity-100',\n 'transition-opacity',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2',\n].join(' ');\n\n// ============================================\n// ICONS\n// ============================================\n\nconst InfoIcon = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n);\n\nconst SuccessIcon = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n);\n\nconst WarningIcon = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n </svg>\n);\n\nconst ErrorIcon = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n);\n\nconst getVariantIcon = (variant: ToastVariant) => {\n switch (variant) {\n case 'success': return <SuccessIcon />;\n case 'warning': return <WarningIcon />;\n case 'error': return <ErrorIcon />;\n case 'info':\n case 'neutral':\n default: return <InfoIcon />;\n }\n};\n\n// ============================================\n// COMPONENTS\n// ============================================\n\n/**\n * ToastProvider creates a toast queue context for descendant components.\n * Wrap your app or a section that needs toast notifications.\n *\n * @example\n * ```tsx\n * <ToastProvider>\n * <App />\n * <ToastRegion placement=\"bottom-end\" />\n * </ToastProvider>\n * ```\n */\nexport function ToastProvider(props: ToastProviderProps): JSX.Element {\n return <HeadlessToastProvider {...props} />;\n}\n\n/**\n * ToastRegion displays all visible toasts in a fixed position.\n *\n * @example\n * ```tsx\n * <ToastRegion placement=\"bottom-end\" />\n * ```\n */\nexport function ToastRegion(props: ToastRegionProps): JSX.Element {\n const [local, rest] = splitProps(props, ['placement', 'class']);\n\n return (\n <HeadlessToastRegion\n {...rest}\n placement={local.placement ?? 'bottom-end'}\n class={(_renderProps: ToastRegionRenderProps) => {\n return [regionStyles, local.class ?? ''].filter(Boolean).join(' ');\n }}\n >\n {(regionProps: ToastRegionRenderProps) => (\n <For each={regionProps.visibleToasts}>\n {(toast) => <Toast toast={toast} />}\n </For>\n )}\n </HeadlessToastRegion>\n );\n}\n\n/**\n * Toast displays an individual notification with icon, content, and close button.\n *\n * Usually you don't need to use this directly - ToastRegion renders toasts automatically.\n */\nexport function Toast(props: ToastProps): JSX.Element {\n const [local, rest] = splitProps(props, ['toast', 'class']);\n\n const content = () => local.toast.content;\n const variant = (): ToastVariant => content().type ?? 'neutral';\n\n return (\n <HeadlessToast\n {...rest}\n toast={local.toast}\n class={(_renderProps: ToastRenderProps) => {\n return [\n toastBaseStyles,\n variantStyles[variant()],\n local.class ?? '',\n ].filter(Boolean).join(' ');\n }}\n >\n {/* Icon */}\n <div class={`flex-shrink-0 ${iconStyles[variant()]}`}>\n {getVariantIcon(variant())}\n </div>\n\n {/* Content */}\n <div class=\"flex-1 min-w-0\">\n <Show when={content().title}>\n <HeadlessToastTitle class=\"font-semibold text-sm\">{content().title}</HeadlessToastTitle>\n </Show>\n <Show when={content().description}>\n <HeadlessToastDescription class=\"text-sm opacity-90 mt-1\">\n {content().description}\n </HeadlessToastDescription>\n </Show>\n <Show when={content().action}>\n <button\n type=\"button\"\n class=\"mt-2 text-sm font-medium underline hover:no-underline\"\n onClick={content().action?.onAction}\n >\n {content().action?.label}\n </button>\n </Show>\n </div>\n\n {/* Close Button */}\n <HeadlessToastCloseButton\n toast={local.toast}\n class={closeButtonStyles}\n aria-label=\"Dismiss\"\n >\n <CloseIcon />\n </HeadlessToastCloseButton>\n </HeadlessToast>\n );\n}\n\n// ============================================\n// GLOBAL TOAST API\n// ============================================\n\n/**\n * Add a toast to the global queue.\n * Use this to show toasts from anywhere in your app.\n *\n * @example\n * ```tsx\n * // Show a success toast\n * addToast({\n * title: 'Success!',\n * description: 'Your changes have been saved.',\n * type: 'success',\n * });\n *\n * // Show an error toast with auto-dismiss\n * addToast({\n * title: 'Error',\n * description: 'Something went wrong.',\n * type: 'error',\n * }, { timeout: 5000 });\n *\n * // Show a toast with action\n * addToast({\n * title: 'File deleted',\n * type: 'info',\n * action: {\n * label: 'Undo',\n * onAction: () => restoreFile(),\n * },\n * }, { timeout: 10000 });\n * ```\n */\nexport function addToast(\n content: ToastContent,\n options?: ToastOptions\n): string {\n return headlessAddToast(content, options);\n}\n\n/**\n * Convenience function to show a success toast.\n */\nexport function toastSuccess(message: string, options?: Omit<ToastOptions, 'priority'>): string {\n return addToast({ title: message, type: 'success' }, { timeout: 5000, ...options });\n}\n\n/**\n * Convenience function to show an error toast.\n */\nexport function toastError(message: string, options?: Omit<ToastOptions, 'priority'>): string {\n return addToast({ title: message, type: 'error' }, { timeout: 8000, ...options });\n}\n\n/**\n * Convenience function to show a warning toast.\n */\nexport function toastWarning(message: string, options?: Omit<ToastOptions, 'priority'>): string {\n return addToast({ title: message, type: 'warning' }, { timeout: 6000, ...options });\n}\n\n/**\n * Convenience function to show an info toast.\n */\nexport function toastInfo(message: string, options?: Omit<ToastOptions, 'priority'>): string {\n return addToast({ title: message, type: 'info' }, { timeout: 5000, ...options });\n}\n\n// Re-exports\nexport {\n ToastContext,\n globalToastQueue,\n useToastContext,\n type ToastContent,\n type ToastRenderProps,\n type ToastRegionRenderProps,\n type QueuedToast,\n type ToastOptions,\n};\n","/**\n * Disclosure and Accordion components for proyecto-viviana-silapse\n *\n * Styled disclosure/accordion components built on top of solidaria-components.\n * Inspired by Spectrum 2's disclosure patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext, Show } from 'solid-js';\nimport {\n Disclosure as HeadlessDisclosure,\n DisclosureGroup as HeadlessDisclosureGroup,\n DisclosureTrigger as HeadlessDisclosureTrigger,\n DisclosurePanel as HeadlessDisclosurePanel,\n type DisclosureProps as HeadlessDisclosureProps,\n type DisclosureGroupProps as HeadlessDisclosureGroupProps,\n type DisclosureTriggerProps as HeadlessDisclosureTriggerProps,\n type DisclosurePanelProps as HeadlessDisclosurePanelProps,\n type DisclosureRenderProps,\n type DisclosureGroupRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// SIZE AND VARIANT CONTEXT\n// ============================================\n\nexport type DisclosureSize = 'sm' | 'md' | 'lg';\nexport type DisclosureVariant = 'default' | 'bordered' | 'filled' | 'ghost';\n\ninterface DisclosureContextValue {\n size: DisclosureSize;\n variant: DisclosureVariant;\n}\n\nconst DisclosureSizeContext = createContext<DisclosureContextValue>({\n size: 'md',\n variant: 'default',\n});\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface DisclosureGroupProps extends Omit<HeadlessDisclosureGroupProps, 'class' | 'style'> {\n /** The size of all disclosures in the group. */\n size?: DisclosureSize;\n /** The visual variant of all disclosures in the group. */\n variant?: DisclosureVariant;\n /** Additional CSS class name. */\n class?: string;\n}\n\nexport interface DisclosureProps extends Omit<HeadlessDisclosureProps, 'class' | 'style'> {\n /** The size of the disclosure. Overrides group size if set. */\n size?: DisclosureSize;\n /** The visual variant. Overrides group variant if set. */\n variant?: DisclosureVariant;\n /** Additional CSS class name. */\n class?: string;\n}\n\nexport interface DisclosureTriggerProps extends Omit<HeadlessDisclosureTriggerProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string;\n /** Optional icon to show (defaults to chevron). */\n hideIcon?: boolean;\n}\n\nexport interface DisclosurePanelProps extends Omit<HeadlessDisclosurePanelProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n trigger: 'px-3 py-2 text-sm',\n panel: 'px-3 py-2 text-sm',\n icon: 'w-4 h-4',\n gap: 'gap-1',\n },\n md: {\n trigger: 'px-4 py-3 text-base',\n panel: 'px-4 py-3 text-base',\n icon: 'w-5 h-5',\n gap: 'gap-2',\n },\n lg: {\n trigger: 'px-5 py-4 text-lg',\n panel: 'px-5 py-4 text-lg',\n icon: 'w-6 h-6',\n gap: 'gap-3',\n },\n};\n\nconst variantStyles = {\n default: {\n container: 'border-b border-primary-700',\n trigger: {\n base: 'w-full flex items-center justify-between text-left transition-colors duration-200',\n default: 'text-primary-200 hover:text-primary-100 hover:bg-bg-400/50',\n disabled: 'text-primary-500 cursor-not-allowed',\n },\n panel: 'text-primary-300',\n },\n bordered: {\n container: 'border border-primary-600 rounded-lg mb-2 overflow-hidden',\n trigger: {\n base: 'w-full flex items-center justify-between text-left transition-colors duration-200',\n default: 'text-primary-200 hover:bg-bg-400/50',\n disabled: 'text-primary-500 cursor-not-allowed',\n },\n panel: 'text-primary-300 border-t border-primary-600',\n },\n filled: {\n container: 'bg-bg-400 rounded-lg mb-2 overflow-hidden',\n trigger: {\n base: 'w-full flex items-center justify-between text-left transition-colors duration-200',\n default: 'text-primary-200 hover:bg-bg-300',\n disabled: 'text-primary-500 cursor-not-allowed',\n },\n panel: 'text-primary-300 bg-bg-300/50',\n },\n ghost: {\n container: '',\n trigger: {\n base: 'w-full flex items-center justify-between text-left transition-colors duration-200 rounded-md',\n default: 'text-primary-200 hover:bg-bg-400/50',\n disabled: 'text-primary-500 cursor-not-allowed',\n },\n panel: 'text-primary-300',\n },\n};\n\n// ============================================\n// DISCLOSURE GROUP COMPONENT\n// ============================================\n\n/**\n * DisclosureGroup manages a group of Disclosure components.\n * Use this to create an accordion where only one item can be expanded at a time.\n *\n * @example\n * ```tsx\n * <DisclosureGroup>\n * <Disclosure id=\"item1\">\n * <DisclosureTrigger>Section 1</DisclosureTrigger>\n * <DisclosurePanel>Content 1</DisclosurePanel>\n * </Disclosure>\n * <Disclosure id=\"item2\">\n * <DisclosureTrigger>Section 2</DisclosureTrigger>\n * <DisclosurePanel>Content 2</DisclosurePanel>\n * </Disclosure>\n * </DisclosureGroup>\n * ```\n */\nexport function DisclosureGroup(props: DisclosureGroupProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n ]);\n\n const size = local.size ?? 'md';\n const variant = local.variant ?? 'default';\n const customClass = local.class ?? '';\n\n const getClassName = (_renderProps: DisclosureGroupRenderProps): string => {\n const base = 'flex flex-col';\n const gapClass = sizeStyles[size].gap;\n return [base, gapClass, customClass].filter(Boolean).join(' ');\n };\n\n return (\n <DisclosureSizeContext.Provider value={{ size, variant }}>\n <HeadlessDisclosureGroup\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n </DisclosureSizeContext.Provider>\n );\n}\n\n// ============================================\n// DISCLOSURE COMPONENT\n// ============================================\n\n/**\n * Disclosure is a widget that can be toggled to show or hide content.\n *\n * @example\n * ```tsx\n * <Disclosure>\n * <DisclosureTrigger>Show more</DisclosureTrigger>\n * <DisclosurePanel>Hidden content here...</DisclosurePanel>\n * </Disclosure>\n * ```\n */\nexport function Disclosure(props: DisclosureProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n ]);\n\n const parentCtx = useContext(DisclosureSizeContext);\n const size = local.size ?? parentCtx.size;\n const variant = local.variant ?? parentCtx.variant;\n const customClass = local.class ?? '';\n\n const getClassName = (_renderProps: DisclosureRenderProps): string => {\n const variantClass = variantStyles[variant].container;\n return [variantClass, customClass].filter(Boolean).join(' ');\n };\n\n return (\n <DisclosureSizeContext.Provider value={{ size, variant }}>\n <HeadlessDisclosure\n {...headlessProps}\n class={getClassName}\n >\n {props.children}\n </HeadlessDisclosure>\n </DisclosureSizeContext.Provider>\n );\n}\n\n// ============================================\n// DISCLOSURE TRIGGER COMPONENT\n// ============================================\n\n/**\n * DisclosureTrigger is the button that toggles the disclosure.\n * The chevron rotates based on the data-expanded attribute using Tailwind's group class.\n */\nexport function DisclosureTrigger(props: DisclosureTriggerProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'hideIcon']);\n const ctx = useContext(DisclosureSizeContext);\n const customClass = local.class ?? '';\n\n return (\n <HeadlessDisclosureTrigger\n {...headlessProps}\n class={[\n 'group', // Enable Tailwind group selector for chevron rotation\n variantStyles[ctx.variant].trigger.base,\n sizeStyles[ctx.size].trigger,\n customClass,\n ].filter(Boolean).join(' ')}\n >\n {props.children}\n <Show when={!local.hideIcon}>\n <svg\n class={[\n sizeStyles[ctx.size].icon,\n 'transition-transform duration-200',\n 'group-data-[expanded=true]:rotate-180', // Rotate when expanded\n ].filter(Boolean).join(' ')}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n style={{ \"flex-shrink\": 0 }}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </Show>\n </HeadlessDisclosureTrigger>\n );\n}\n\n// ============================================\n// DISCLOSURE PANEL COMPONENT\n// ============================================\n\n/**\n * DisclosurePanel contains the content that is shown/hidden.\n */\nexport function DisclosurePanel(props: DisclosurePanelProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class']);\n const ctx = useContext(DisclosureSizeContext);\n const customClass = local.class ?? '';\n\n const getClassName = (_renderProps: DisclosureRenderProps): string => {\n const base = variantStyles[ctx.variant].panel;\n const sizeClass = sizeStyles[ctx.size].panel;\n return [base, sizeClass, customClass].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessDisclosurePanel\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n );\n}\n\n// Attach sub-components for convenience\nDisclosure.Trigger = DisclosureTrigger;\nDisclosure.Panel = DisclosurePanel;\nDisclosureGroup.Item = Disclosure;\n","/**\n * Meter component for proyecto-viviana-silapse\n *\n * Styled meter component built on top of solidaria-components.\n * Meters represent a quantity within a known range (unlike progress bars which show progress toward a goal).\n */\n\nimport { type JSX, splitProps, Show, createUniqueId } from 'solid-js';\nimport {\n Meter as HeadlessMeter,\n type MeterRenderProps as HeadlessMeterRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type MeterSize = 'sm' | 'md' | 'lg';\nexport type MeterVariant = 'primary' | 'accent' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface MeterProps {\n /** The current value (controlled). @default 0 */\n value?: number;\n /** The smallest value allowed. @default 0 */\n minValue?: number;\n /** The largest value allowed. @default 100 */\n maxValue?: number;\n /** The content to display as the value's label (e.g. \"75 GB\"). */\n valueLabel?: string;\n /** The size of the meter. @default 'md' */\n size?: MeterSize;\n /** The visual style variant. @default 'primary' */\n variant?: MeterVariant;\n /** The label to display above the meter. */\n label?: string;\n /** Whether to show the value text. @default true */\n showValueLabel?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** An accessibility label. */\n 'aria-label'?: string;\n /** Reference to external label element. */\n 'aria-labelledby'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n track: 'h-1',\n text: 'text-xs',\n },\n md: {\n track: 'h-2',\n text: 'text-sm',\n },\n lg: {\n track: 'h-3',\n text: 'text-base',\n },\n};\n\nconst variantStyles = {\n primary: 'bg-primary-500',\n accent: 'bg-accent',\n success: 'bg-green-500',\n warning: 'bg-yellow-500',\n danger: 'bg-red-500',\n info: 'bg-blue-500',\n};\n\n// ============================================\n// METER COMPONENT\n// ============================================\n\n/**\n * Meters represent a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n *\n * @example\n * ```tsx\n * // Storage usage meter\n * <Meter value={75} label=\"Storage space\" valueLabel=\"75 GB of 100 GB\" />\n *\n * // Battery level\n * <Meter value={25} variant=\"warning\" label=\"Battery\" />\n *\n * // CPU usage with dynamic color\n * <Meter value={cpuUsage} variant={cpuUsage > 80 ? 'danger' : 'success'} label=\"CPU\" />\n * ```\n */\nexport function Meter(props: MeterProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'variant',\n 'label',\n 'showValueLabel',\n 'class',\n ]);\n\n const size = () => local.size ?? 'md';\n const variant = () => local.variant ?? 'primary';\n const sizeConfig = () => sizeStyles[size()];\n const labelId = createUniqueId();\n const renderChildren = ({ valueText, percentage }: HeadlessMeterRenderProps) => {\n const showValueLabel = local.showValueLabel ?? true;\n return (\n <>\n <Show when={local.label || showValueLabel}>\n <div class={`flex justify-between items-center mb-1 ${sizeConfig().text}`}>\n <Show when={local.label}>\n <span id={labelId} class=\"text-primary-200 font-medium\">{local.label}</span>\n </Show>\n <Show when={showValueLabel}>\n <span class=\"text-primary-300\">{valueText}</span>\n </Show>\n </div>\n </Show>\n\n <div class={`w-full ${sizeConfig().track} bg-bg-300 rounded-full overflow-hidden`}>\n <div\n class={`h-full rounded-full transition-all duration-300 ${variantStyles[variant()]}`}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </>\n );\n };\n\n return (\n <HeadlessMeter\n {...headlessProps}\n aria-labelledby={headlessProps['aria-labelledby'] ?? (!headlessProps['aria-label'] && local.label ? labelId : undefined)}\n aria-label={headlessProps['aria-label']}\n class={`w-full ${local.class ?? ''}`}\n children={renderChildren}\n />\n );\n}\n","/**\n * TagGroup component for proyecto-viviana-silapse\n *\n * Styled tag group component built on top of solidaria-components.\n * A tag group displays a collection of tags that can be selected and/or removed.\n */\n\nimport { type JSX, splitProps, Show, createUniqueId } from 'solid-js';\nimport {\n TagList as HeadlessTagList,\n Tag as HeadlessTag,\n TagRemoveButton as HeadlessTagRemoveButton,\n} from '@proyecto-viviana/solidaria-components';\nimport type { Key, SelectionMode } from '@proyecto-viviana/solid-stately';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TagGroupSize = 'sm' | 'md' | 'lg';\nexport type TagGroupVariant = 'default' | 'outline' | 'solid';\n\nexport interface TagGroupProps<T> {\n /** The label for the tag group. */\n label?: string;\n /** The items to display as tags. */\n items: T[];\n /** Function to render the content of each tag. */\n children: (item: T) => JSX.Element;\n /** Function to get a unique key from an item. */\n getKey?: (item: T) => Key;\n /** Handler called when tags are removed. */\n onRemove?: (keys: Set<Key>) => void;\n /** The size of the tags. @default 'md' */\n size?: TagGroupSize;\n /** The visual variant of the tags. @default 'default' */\n variant?: TagGroupVariant;\n /** The selection mode. @default 'none' */\n selectionMode?: SelectionMode;\n /** The currently selected keys (controlled). */\n selectedKeys?: Iterable<Key>;\n /** The default selected keys (uncontrolled). */\n defaultSelectedKeys?: Iterable<Key>;\n /** Handler called when selection changes. */\n onSelectionChange?: (keys: 'all' | Set<Key>) => void;\n /** Keys that are disabled. */\n disabledKeys?: Iterable<Key>;\n /** Whether all tags are disabled. */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Content to render when empty. */\n renderEmptyState?: () => JSX.Element;\n}\n\nexport interface TagProps {\n /** A unique key for this tag. */\n id: Key;\n /** The content of the tag. */\n children: JSX.Element;\n /** Whether the tag is disabled. */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n tag: 'text-xs px-2 py-0.5 gap-1',\n removeButton: 'w-3 h-3',\n label: 'text-xs',\n },\n md: {\n tag: 'text-sm px-2.5 py-1 gap-1.5',\n removeButton: 'w-4 h-4',\n label: 'text-sm',\n },\n lg: {\n tag: 'text-base px-3 py-1.5 gap-2',\n removeButton: 'w-5 h-5',\n label: 'text-base',\n },\n};\n\nconst variantStyles = {\n default: {\n tag: 'bg-bg-400 text-primary-200 hover:bg-bg-300',\n selected: 'bg-accent text-bg-400',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n outline: {\n tag: 'border border-primary-600 text-primary-200 hover:border-primary-500 hover:bg-bg-400/50',\n selected: 'border-accent bg-accent/10 text-accent',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n solid: {\n tag: 'bg-primary-700 text-primary-100 hover:bg-primary-600',\n selected: 'bg-accent text-bg-400',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n};\n\n// ============================================\n// TAG GROUP COMPONENT\n// ============================================\n\n/**\n * A tag group displays a collection of tags that can be selected and/or removed.\n *\n * @example\n * ```tsx\n * // Simple tag group\n * <TagGroup\n * label=\"Categories\"\n * items={categories}\n * onRemove={(keys) => removeCategories(keys)}\n * >\n * {(item) => item.name}\n * </TagGroup>\n *\n * // With selection\n * <TagGroup\n * label=\"Filters\"\n * items={filters}\n * selectionMode=\"multiple\"\n * selectedKeys={selectedFilters}\n * onSelectionChange={setSelectedFilters}\n * >\n * {(item) => item.label}\n * </TagGroup>\n * ```\n */\nexport function TagGroup<T extends { id?: Key; key?: Key }>(props: TagGroupProps<T>): JSX.Element {\n const [local] = splitProps(props, [\n 'label',\n 'items',\n 'getKey',\n 'onRemove',\n 'size',\n 'variant',\n 'selectionMode',\n 'selectedKeys',\n 'defaultSelectedKeys',\n 'onSelectionChange',\n 'disabledKeys',\n 'isDisabled',\n 'class',\n 'renderEmptyState',\n ]);\n\n const labelId = createUniqueId();\n const size = () => local.size ?? 'md';\n const variant = () => local.variant ?? 'default';\n const sizeConfig = () => sizeStyles[size()];\n const variantConfig = () => variantStyles[variant()];\n\n // Default getKey function\n const getKey = (item: T): Key => {\n if (local.getKey) return local.getKey(item);\n if (item.id !== undefined) return item.id;\n if (item.key !== undefined) return item.key;\n return String(item);\n };\n\n return (\n <div class={`flex flex-col gap-2 ${local.class ?? ''}`}>\n <Show when={local.label}>\n <span id={labelId} class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {local.label}\n </span>\n </Show>\n <HeadlessTagList\n items={local.items}\n getKey={getKey}\n onRemove={local.onRemove}\n selectionMode={local.selectionMode}\n selectedKeys={local.selectedKeys}\n defaultSelectedKeys={local.defaultSelectedKeys}\n onSelectionChange={local.onSelectionChange}\n disabledKeys={local.disabledKeys}\n isDisabled={local.isDisabled}\n aria-labelledby={local.label ? labelId : undefined}\n class=\"flex flex-wrap gap-2\"\n renderEmptyState={local.renderEmptyState ?? (() => (\n <span class=\"text-primary-400 text-sm italic\">No items</span>\n ))}\n >\n {(item) => (\n <HeadlessTag\n id={getKey(item)}\n class={({ isSelected, isDisabled }) => {\n const base = `\n inline-flex items-center rounded-full\n transition-colors duration-150 cursor-pointer\n focus:outline-none focus:ring-2 focus:ring-accent/50\n ${sizeConfig().tag}\n `;\n const variantClass = isSelected\n ? variantConfig().selected\n : variantConfig().tag;\n const disabledClass = isDisabled ? variantConfig().disabled : '';\n return `${base} ${variantClass} ${disabledClass}`.trim();\n }}\n >\n {(renderProps) => (\n <>\n <span>{props.children(item)}</span>\n <Show when={renderProps.allowsRemoving}>\n <HeadlessTagRemoveButton\n buttonProps={renderProps.removeButtonProps}\n class={`\n ${sizeConfig().removeButton}\n rounded-full flex items-center justify-center\n hover:bg-black/20 transition-colors\n focus:outline-none\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-full h-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </HeadlessTagRemoveButton>\n </Show>\n </>\n )}\n </HeadlessTag>\n )}\n </HeadlessTagList>\n </div>\n );\n}\n\n// Re-export types\nexport type { Key, SelectionMode };\n","/**\n * LabeledValue component for proyecto-viviana-silapse.\n *\n * Styling-only presentation primitive for read-only label/value pairs.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js';\nimport { Label as UILabel } from '../label';\nimport { Text as UIText } from '../text';\n\nexport type LabeledValueOrientation = 'vertical' | 'horizontal';\n\nexport interface LabeledValueProps {\n /** Visible label content. */\n label: JSX.Element;\n /** Value content. Prefer this over children for clarity. */\n value?: JSX.Element;\n /** Alternate value content. */\n children?: JSX.Element;\n /** Layout orientation. @default 'vertical' */\n orientation?: LabeledValueOrientation;\n /** Additional class for root container. */\n class?: string;\n /** Additional class for label slot. */\n labelClass?: string;\n /** Additional class for value slot. */\n valueClass?: string;\n}\n\nconst orientationStyles: Record<LabeledValueOrientation, string> = {\n vertical: 'flex-col items-start gap-1',\n horizontal: 'flex-row items-center justify-between gap-3',\n};\n\nexport function LabeledValue(props: LabeledValueProps): JSX.Element {\n const [local] = splitProps(props, [\n 'label',\n 'value',\n 'children',\n 'orientation',\n 'class',\n 'labelClass',\n 'valueClass',\n ]);\n\n const orientation = () => local.orientation ?? 'vertical';\n const resolvedValue = () => local.value ?? local.children;\n\n return (\n <div class={`flex ${orientationStyles[orientation()]} ${local.class ?? ''}`}>\n <UILabel size=\"sm\" class={`text-primary-400 ${local.labelClass ?? ''}`}>\n {local.label}\n </UILabel>\n <Show when={resolvedValue()}>\n <UIText size=\"md\" variant=\"default\" class={local.valueClass}>\n {resolvedValue()}\n </UIText>\n </Show>\n </div>\n );\n}\n\n","/**\n * StatusLight component for proyecto-viviana-silapse.\n *\n * Styling-only status indicator primitive.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js';\n\nexport type StatusLightVariant = 'neutral' | 'positive' | 'notice' | 'negative' | 'info';\nexport type StatusLightSize = 'sm' | 'md' | 'lg';\n\nexport interface StatusLightProps {\n /** Visual status variant. @default 'neutral' */\n variant?: StatusLightVariant;\n /** Indicator size. @default 'md' */\n size?: StatusLightSize;\n /** Optional visible text. */\n children?: JSX.Element;\n /** Additional CSS class for root container. */\n class?: string;\n /** Additional CSS class for the indicator dot. */\n indicatorClass?: string;\n}\n\nconst variantStyles: Record<StatusLightVariant, string> = {\n neutral: 'bg-primary-400',\n positive: 'bg-green-500',\n notice: 'bg-yellow-500',\n negative: 'bg-danger-400',\n info: 'bg-accent',\n};\n\nconst sizeStyles: Record<StatusLightSize, { dot: string; text: string }> = {\n sm: { dot: 'h-2 w-2', text: 'text-xs' },\n md: { dot: 'h-2.5 w-2.5', text: 'text-sm' },\n lg: { dot: 'h-3 w-3', text: 'text-base' },\n};\n\nexport function StatusLight(props: StatusLightProps): JSX.Element {\n const [local] = splitProps(props, ['variant', 'size', 'children', 'class', 'indicatorClass']);\n const variant = () => local.variant ?? 'neutral';\n const size = () => local.size ?? 'md';\n\n return (\n <span class={`inline-flex items-center gap-2 text-primary-200 ${sizeStyles[size()].text} ${local.class ?? ''}`}>\n <span\n aria-hidden=\"true\"\n class={`inline-block rounded-full ${sizeStyles[size()].dot} ${variantStyles[variant()]} ${local.indicatorClass ?? ''}`}\n />\n <Show when={local.children}>{local.children}</Show>\n </span>\n );\n}\n\n","/**\n * Calendar component for proyecto-viviana-silapse\n *\n * Styled calendar component built on top of solidaria-components.\n * A calendar displays a grid of days and allows users to select dates.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Calendar as HeadlessCalendar,\n CalendarHeading,\n CalendarButton,\n CalendarGrid,\n CalendarCell,\n type CalendarDate,\n type DateValue,\n} from '@proyecto-viviana/solidaria-components';\nimport type { CalendarStateProps } from '@proyecto-viviana/solid-stately';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type CalendarSize = 'sm' | 'md' | 'lg';\n\nexport interface CalendarProps<T extends DateValue = DateValue>\n extends Omit<CalendarStateProps<T>, 'locale'> {\n /** The size of the calendar. @default 'md' */\n size?: CalendarSize;\n /** Additional CSS class name. */\n class?: string;\n /** Whether to show week numbers. */\n showWeekNumbers?: boolean;\n /** The locale to use for formatting. */\n locale?: string;\n /** Custom aria label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'w-64',\n header: 'text-sm',\n cell: 'w-8 h-8 text-xs',\n button: 'w-6 h-6',\n },\n md: {\n container: 'w-80',\n header: 'text-base',\n cell: 'w-10 h-10 text-sm',\n button: 'w-8 h-8',\n },\n lg: {\n container: 'w-96',\n header: 'text-lg',\n cell: 'w-12 h-12 text-base',\n button: 'w-10 h-10',\n },\n};\n\n// ============================================\n// CALENDAR COMPONENT\n// ============================================\n\n/**\n * A calendar displays a grid of days and allows users to select a date.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Calendar\n * aria-label=\"Event date\"\n * onChange={(date) => console.log(date)}\n * />\n *\n * // Controlled\n * const [date, setDate] = createSignal<CalendarDate | null>(null);\n * <Calendar\n * value={date()}\n * onChange={setDate}\n * />\n *\n * // With min/max dates\n * <Calendar\n * minValue={today(getLocalTimeZone())}\n * maxValue={today(getLocalTimeZone()).add({ months: 3 })}\n * />\n * ```\n */\nexport function Calendar<T extends DateValue = CalendarDate>(\n props: CalendarProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'showWeekNumbers',\n 'aria-label',\n ]);\n\n const size = () => local.size ?? 'md';\n const sizeConfig = () => sizeStyles[size()];\n\n return (\n <HeadlessCalendar\n {...rest}\n aria-label={local['aria-label']}\n class={`\n ${sizeConfig().container}\n bg-bg-500 rounded-lg border border-primary-700 p-4\n ${local.class ?? ''}\n `}\n >\n {/* Header with navigation */}\n <header class=\"flex items-center justify-between mb-4\">\n <CalendarButton\n slot=\"previous\"\n class={`\n ${sizeConfig().button}\n flex items-center justify-center\n rounded-md text-primary-200\n hover:bg-bg-400 transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-4 h-4\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </CalendarButton>\n\n <CalendarHeading\n class={`\n font-semibold text-primary-100\n ${sizeConfig().header}\n `}\n />\n\n <CalendarButton\n slot=\"next\"\n class={`\n ${sizeConfig().button}\n flex items-center justify-center\n rounded-md text-primary-200\n hover:bg-bg-400 transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-4 h-4\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </CalendarButton>\n </header>\n\n {/* Calendar grid */}\n <CalendarGrid\n class=\"w-full border-collapse\"\n >\n {(date) => (\n <CalendarCell\n date={date}\n class={({ isSelected, isFocused, isDisabled, isOutsideMonth, isToday, isPressed }) => {\n const base = `\n ${sizeConfig().cell}\n flex items-center justify-center\n rounded-md cursor-pointer\n transition-colors duration-150\n focus:outline-none\n `;\n\n let stateClass = '';\n\n if (isDisabled) {\n stateClass = 'text-primary-600 cursor-not-allowed';\n } else if (isSelected) {\n stateClass = 'bg-accent text-bg-400 font-medium';\n } else if (isOutsideMonth) {\n stateClass = 'text-primary-600';\n } else if (isToday) {\n stateClass = 'ring-1 ring-accent text-primary-100';\n } else {\n stateClass = 'text-primary-200 hover:bg-bg-400';\n }\n\n const focusClass = isFocused && !isSelected\n ? 'ring-2 ring-accent/50'\n : '';\n\n const pressedClass = isPressed && !isDisabled\n ? 'scale-95'\n : '';\n\n return `${base} ${stateClass} ${focusClass} ${pressedClass}`.trim();\n }}\n />\n )}\n </CalendarGrid>\n </HeadlessCalendar>\n );\n}\n\n// Re-export types\nexport type { CalendarDate, DateValue };\n","/**\n * RangeCalendar component for proyecto-viviana-silapse\n *\n * Styled range calendar component built on top of solidaria-components.\n * A range calendar displays a grid of days and allows users to select a date range.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n RangeCalendar as HeadlessRangeCalendar,\n RangeCalendarHeading,\n RangeCalendarButton,\n RangeCalendarGrid,\n RangeCalendarCell,\n type CalendarDate,\n type DateValue,\n type RangeValue,\n} from '@proyecto-viviana/solidaria-components';\nimport type { RangeCalendarStateProps } from '@proyecto-viviana/solid-stately';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type RangeCalendarSize = 'sm' | 'md' | 'lg';\n\nexport interface RangeCalendarProps<T extends DateValue = DateValue>\n extends Omit<RangeCalendarStateProps<T>, 'locale'> {\n /** The size of the calendar. @default 'md' */\n size?: RangeCalendarSize;\n /** Additional CSS class name. */\n class?: string;\n /** The locale to use for formatting. */\n locale?: string;\n /** Custom aria label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'w-64',\n header: 'text-sm',\n cell: 'w-8 h-8 text-xs',\n button: 'w-6 h-6',\n },\n md: {\n container: 'w-80',\n header: 'text-base',\n cell: 'w-10 h-10 text-sm',\n button: 'w-8 h-8',\n },\n lg: {\n container: 'w-96',\n header: 'text-lg',\n cell: 'w-12 h-12 text-base',\n button: 'w-10 h-10',\n },\n};\n\n// ============================================\n// RANGE CALENDAR COMPONENT\n// ============================================\n\n/**\n * A range calendar displays a grid of days and allows users to select a date range.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <RangeCalendar\n * aria-label=\"Trip dates\"\n * onChange={(range) => console.log(range)}\n * />\n *\n * // Controlled\n * const [range, setRange] = createSignal<RangeValue<CalendarDate> | null>(null);\n * <RangeCalendar\n * value={range()}\n * onChange={setRange}\n * />\n * ```\n */\nexport function RangeCalendar<T extends DateValue = CalendarDate>(\n props: RangeCalendarProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'aria-label',\n ]);\n\n const size = () => local.size ?? 'md';\n const sizeConfig = () => sizeStyles[size()];\n\n return (\n <HeadlessRangeCalendar\n {...rest}\n aria-label={local['aria-label']}\n class={`\n ${sizeConfig().container}\n bg-bg-500 rounded-lg border border-primary-700 p-4\n ${local.class ?? ''}\n `}\n >\n {/* Header with navigation */}\n <header class=\"flex items-center justify-between mb-4\">\n <RangeCalendarButton\n slot=\"previous\"\n class={`\n ${sizeConfig().button}\n flex items-center justify-center\n rounded-md text-primary-200\n hover:bg-bg-400 transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-4 h-4\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </RangeCalendarButton>\n\n <RangeCalendarHeading\n class={`\n font-semibold text-primary-100\n ${sizeConfig().header}\n `}\n />\n\n <RangeCalendarButton\n slot=\"next\"\n class={`\n ${sizeConfig().button}\n flex items-center justify-center\n rounded-md text-primary-200\n hover:bg-bg-400 transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-4 h-4\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </RangeCalendarButton>\n </header>\n\n {/* Calendar grid */}\n <RangeCalendarGrid\n class=\"w-full border-collapse [&_.solidaria-RangeCalendarHeaderCell]:text-primary-200\"\n >\n {(date) => (\n <RangeCalendarCell\n date={date}\n class={({\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isFocused,\n isDisabled,\n isOutsideMonth,\n isToday,\n isPressed,\n }) => {\n const base = `\n ${sizeConfig().cell}\n flex items-center justify-center\n cursor-pointer\n transition-colors duration-150\n focus:outline-none\n `;\n\n let stateClass = '';\n let roundedClass = 'rounded-md';\n\n if (isDisabled) {\n stateClass = 'text-primary-600 cursor-not-allowed';\n } else if (isSelectionStart && isSelectionEnd) {\n // Single day selection\n stateClass = 'bg-accent text-bg-400 font-medium';\n roundedClass = 'rounded-md';\n } else if (isSelectionStart) {\n stateClass = 'bg-accent text-bg-400 font-medium';\n roundedClass = 'rounded-l-md rounded-r-none';\n } else if (isSelectionEnd) {\n stateClass = 'bg-accent text-bg-400 font-medium';\n roundedClass = 'rounded-r-md rounded-l-none';\n } else if (isSelected) {\n stateClass = 'bg-accent/20 text-primary-100';\n roundedClass = 'rounded-none';\n } else if (isOutsideMonth) {\n stateClass = 'text-primary-600';\n } else if (isToday) {\n stateClass = 'ring-1 ring-accent text-primary-100';\n } else {\n stateClass = 'text-primary-200 hover:bg-bg-400';\n }\n\n const focusClass = isFocused && !isSelected\n ? 'ring-2 ring-accent/50'\n : '';\n\n const pressedClass = isPressed && !isDisabled\n ? 'scale-95'\n : '';\n\n return `${base} ${stateClass} ${roundedClass} ${focusClass} ${pressedClass}`.trim();\n }}\n />\n )}\n </RangeCalendarGrid>\n </HeadlessRangeCalendar>\n );\n}\n\n// Re-export types\nexport type { RangeValue };\n","/**\n * DateField component for proyecto-viviana-silapse\n *\n * Styled date field component with segment-based editing.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n DateField as HeadlessDateField,\n DateFieldLabel,\n DateFieldDescription,\n DateFieldErrorMessage,\n DateInput,\n DateSegment,\n type DateFieldProps as HeadlessDateFieldProps,\n type CalendarDate,\n type DateValue,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type DateFieldSize = 'sm' | 'md' | 'lg';\n\nexport interface DateFieldProps<T extends DateValue = DateValue>\n extends Omit<HeadlessDateFieldProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the field. @default 'md' */\n size?: DateFieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label for the field. */\n label?: string;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n input: 'px-2 py-1 gap-0.5',\n segment: 'px-0.5',\n label: 'text-xs',\n },\n md: {\n container: 'text-base',\n input: 'px-3 py-2 gap-1',\n segment: 'px-1',\n label: 'text-sm',\n },\n lg: {\n container: 'text-lg',\n input: 'px-4 py-3 gap-1.5',\n segment: 'px-1.5',\n label: 'text-base',\n },\n};\n\n// ============================================\n// DATE FIELD COMPONENT\n// ============================================\n\n/**\n * A date field allows users to enter and edit date values using a keyboard.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <DateField label=\"Birth date\" />\n *\n * // Controlled\n * const [date, setDate] = createSignal<CalendarDate | null>(null);\n * <DateField\n * label=\"Event date\"\n * value={date()}\n * onChange={setDate}\n * />\n *\n * // With validation\n * <DateField\n * label=\"Future date\"\n * minValue={today(getLocalTimeZone())}\n * errorMessage=\"Date must be in the future\"\n * />\n * ```\n */\nexport function DateField<T extends DateValue = CalendarDate>(\n props: DateFieldProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ]);\n\n const size = () => local.size ?? 'md';\n const sizeConfig = () => sizeStyles[size()];\n const isInvalid = () => local.isInvalid || !!local.errorMessage;\n\n return (\n <HeadlessDateField\n {...rest}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={`\n flex flex-col gap-1\n ${sizeConfig().container}\n ${local.class ?? ''}\n `}\n >\n {/* Label */}\n {local.label && (\n <DateFieldLabel class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {local.label}\n {rest.isRequired && <span class=\"text-red-500 ml-0.5\">*</span>}\n </DateFieldLabel>\n )}\n\n {/* Input container */}\n <DateInput\n class={({ isFocused, isDisabled }) => {\n const base = `\n inline-flex items-center\n ${sizeConfig().input}\n bg-bg-400 rounded-md border\n transition-colors duration-150\n `;\n\n let borderClass = 'border-primary-600';\n if (isInvalid()) {\n borderClass = 'border-red-500';\n } else if (isFocused) {\n borderClass = 'border-accent';\n }\n\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : '';\n\n const focusClass = isFocused\n ? 'ring-2 ring-accent/30'\n : '';\n\n return `${base} ${borderClass} ${disabledClass} ${focusClass}`.trim();\n }}\n >\n {(segment) => (\n <DateSegment\n segment={segment}\n class={({ isFocused, isPlaceholder, isEditable }) => {\n const base = `\n ${sizeConfig().segment}\n rounded\n outline-none\n tabular-nums\n `;\n\n let stateClass = '';\n if (segment.type === 'literal') {\n stateClass = 'text-primary-400';\n } else if (isPlaceholder) {\n stateClass = 'text-primary-500 italic';\n } else {\n stateClass = 'text-primary-100';\n }\n\n const focusClass = isFocused && isEditable\n ? 'bg-accent text-bg-400'\n : '';\n\n return `${base} ${stateClass} ${focusClass}`.trim();\n }}\n />\n )}\n </DateInput>\n\n {/* Description */}\n {local.description && !isInvalid() && (\n <DateFieldDescription class={`text-primary-400 ${sizeConfig().label}`}>\n {local.description}\n </DateFieldDescription>\n )}\n\n {/* Error message */}\n {isInvalid() && local.errorMessage && (\n <DateFieldErrorMessage class={`text-red-500 ${sizeConfig().label}`}>\n {local.errorMessage}\n </DateFieldErrorMessage>\n )}\n </HeadlessDateField>\n );\n}\n\n// Re-export types\nexport type { CalendarDate, DateValue };\n","/**\n * TimeField component for proyecto-viviana-silapse\n *\n * Styled time field component with segment-based editing.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n TimeField as HeadlessTimeField,\n TimeFieldLabel,\n TimeFieldDescription,\n TimeFieldErrorMessage,\n TimeInput,\n TimeSegment,\n type TimeFieldProps as HeadlessTimeFieldProps,\n type TimeValue,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TimeFieldSize = 'sm' | 'md' | 'lg';\n\nexport interface TimeFieldProps<T extends TimeValue = TimeValue>\n extends Omit<HeadlessTimeFieldProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the field. @default 'md' */\n size?: TimeFieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label for the field. */\n label?: string;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n input: 'px-2 py-1 gap-0.5',\n segment: 'px-0.5',\n label: 'text-xs',\n },\n md: {\n container: 'text-base',\n input: 'px-3 py-2 gap-1',\n segment: 'px-1',\n label: 'text-sm',\n },\n lg: {\n container: 'text-lg',\n input: 'px-4 py-3 gap-1.5',\n segment: 'px-1.5',\n label: 'text-base',\n },\n};\n\n// ============================================\n// TIME FIELD COMPONENT\n// ============================================\n\n/**\n * A time field allows users to enter and edit time values using a keyboard.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TimeField label=\"Start time\" />\n *\n * // With 24-hour format\n * <TimeField\n * label=\"Meeting time\"\n * hourCycle={24}\n * />\n *\n * // With seconds\n * <TimeField\n * label=\"Precise time\"\n * granularity=\"second\"\n * />\n * ```\n */\nexport function TimeField<T extends TimeValue = TimeValue>(\n props: TimeFieldProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ]);\n\n const size = () => local.size ?? 'md';\n const sizeConfig = () => sizeStyles[size()];\n const isInvalid = () => local.isInvalid || !!local.errorMessage;\n\n return (\n <HeadlessTimeField\n {...rest}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={`\n flex flex-col gap-1\n ${sizeConfig().container}\n ${local.class ?? ''}\n `}\n >\n {/* Label */}\n {local.label && (\n <TimeFieldLabel class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {local.label}\n {rest.isRequired && <span class=\"text-red-500 ml-0.5\">*</span>}\n </TimeFieldLabel>\n )}\n\n {/* Input container */}\n <TimeInput\n class={({ isFocused, isDisabled }) => {\n const base = `\n inline-flex items-center\n ${sizeConfig().input}\n bg-bg-400 rounded-md border\n transition-colors duration-150\n `;\n\n let borderClass = 'border-primary-600';\n if (isInvalid()) {\n borderClass = 'border-red-500';\n } else if (isFocused) {\n borderClass = 'border-accent';\n }\n\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : '';\n\n const focusClass = isFocused\n ? 'ring-2 ring-accent/30'\n : '';\n\n return `${base} ${borderClass} ${disabledClass} ${focusClass}`.trim();\n }}\n >\n {(segment) => (\n <TimeSegment\n segment={segment}\n class={({ isFocused, isPlaceholder, isEditable }) => {\n const base = `\n ${sizeConfig().segment}\n rounded\n outline-none\n tabular-nums\n `;\n\n let stateClass = '';\n if (segment.type === 'literal') {\n stateClass = 'text-primary-400';\n } else if (isPlaceholder) {\n stateClass = 'text-primary-500 italic';\n } else {\n stateClass = 'text-primary-100';\n }\n\n const focusClass = isFocused && isEditable\n ? 'bg-accent text-bg-400'\n : '';\n\n return `${base} ${stateClass} ${focusClass}`.trim();\n }}\n />\n )}\n </TimeInput>\n\n {/* Description */}\n {local.description && !isInvalid() && (\n <TimeFieldDescription class={`text-primary-400 ${sizeConfig().label}`}>\n {local.description}\n </TimeFieldDescription>\n )}\n\n {/* Error message */}\n {isInvalid() && local.errorMessage && (\n <TimeFieldErrorMessage class={`text-red-500 ${sizeConfig().label}`}>\n {local.errorMessage}\n </TimeFieldErrorMessage>\n )}\n </HeadlessTimeField>\n );\n}\n\n// Re-export types\nexport type { TimeValue };\n","/**\n * DatePicker component for proyecto-viviana-silapse\n *\n * Styled date picker component that combines a date field with a calendar popup.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js'\nimport {\n DatePicker as HeadlessDatePicker,\n DatePickerLabel as HeadlessDatePickerLabel,\n DatePickerDescription as HeadlessDatePickerDescription,\n DatePickerErrorMessage as HeadlessDatePickerErrorMessage,\n DatePickerButton,\n DatePickerContent,\n DateInput,\n DateSegment,\n type DatePickerProps as HeadlessDatePickerProps,\n type CalendarDate,\n type DateValue,\n} from '@proyecto-viviana/solidaria-components'\nimport { Calendar } from './index'\nimport { useProviderProps } from '../provider'\n\n// Calendar icon component - use function to ensure consistent hydration\nfunction CalendarIcon(): JSX.Element {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-5 h-5\"\n aria-hidden=\"true\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n )\n}\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type DatePickerSize = 'sm' | 'md' | 'lg'\n\nexport interface DatePickerProps<T extends DateValue = DateValue>\n extends Omit<HeadlessDatePickerProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the picker. @default 'md' */\n size?: DatePickerSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the field. */\n label?: string\n /** Description text. */\n description?: string\n /** Error message. */\n errorMessage?: string\n /** Placeholder text. */\n placeholder?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n input: 'px-2 py-1 gap-0.5',\n segment: 'px-0.5',\n label: 'text-xs',\n button: 'w-7 h-7',\n },\n md: {\n container: 'text-base',\n input: 'px-3 py-2 gap-1',\n segment: 'px-1',\n label: 'text-sm',\n button: 'w-9 h-9',\n },\n lg: {\n container: 'text-lg',\n input: 'px-4 py-3 gap-1.5',\n segment: 'px-1.5',\n label: 'text-base',\n button: 'w-11 h-11',\n },\n}\n\n// ============================================\n// DATE PICKER COMPONENT\n// ============================================\n\n/**\n * A date picker combines a date field and a calendar popup.\n */\nexport function DatePicker<T extends DateValue = CalendarDate>(\n props: DatePickerProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n 'placeholder',\n ])\n\n const size = () => local.size ?? 'md'\n const sizeConfig = () => sizeStyles[size()]\n const isInvalid = () => local.isInvalid || !!local.errorMessage\n\n return (\n <HeadlessDatePicker\n {...rest}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={`flex flex-col gap-1 relative ${sizeConfig().container} ${local.class ?? ''}`}\n >\n <Show when={local.label}>\n <HeadlessDatePickerLabel class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {local.label}\n <Show when={rest.isRequired}>\n <span class=\"text-red-500 ml-0.5\">*</span>\n </Show>\n </HeadlessDatePickerLabel>\n </Show>\n\n <div class=\"relative flex items-center\">\n <DateInput\n class={({ isFocused, isDisabled }) => {\n const base = `\n inline-flex items-center flex-1\n ${sizeConfig().input}\n bg-bg-400 rounded-l-md border-y border-l\n transition-colors duration-150\n `\n\n let borderClass = 'border-primary-600'\n if (isInvalid()) {\n borderClass = 'border-red-500'\n } else if (isFocused) {\n borderClass = 'border-accent'\n }\n\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : ''\n\n const focusClass = isFocused\n ? 'ring-2 ring-accent/30'\n : ''\n\n return `${base} ${borderClass} ${disabledClass} ${focusClass}`.trim()\n }}\n >\n {(segment) => (\n <DateSegment\n segment={segment}\n class={({ isFocused, isPlaceholder, isEditable }) => {\n const base = `\n ${sizeConfig().segment}\n rounded\n outline-none\n tabular-nums\n `\n\n let stateClass = ''\n if (segment.type === 'literal') {\n stateClass = 'text-primary-400'\n } else if (isPlaceholder) {\n stateClass = 'text-primary-500 italic'\n } else {\n stateClass = 'text-primary-100'\n }\n\n const focusClass = isFocused && isEditable\n ? 'bg-accent text-bg-400'\n : ''\n\n return `${base} ${stateClass} ${focusClass}`.trim()\n }}\n />\n )}\n </DateInput>\n\n <DatePickerButton\n class={({ isDisabled, isOpen }) => {\n const base = `\n ${sizeConfig().button}\n flex items-center justify-center\n bg-bg-400 border-y border-r rounded-r-md\n text-primary-200\n transition-colors duration-150\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `\n\n let borderClass = 'border-primary-600'\n if (isInvalid()) {\n borderClass = 'border-red-500'\n } else if (isOpen) {\n borderClass = 'border-accent bg-bg-300'\n }\n\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : 'hover:bg-bg-300 cursor-pointer'\n\n return `${base} ${borderClass} ${disabledClass}`.trim()\n }}\n >\n <CalendarIcon />\n </DatePickerButton>\n\n <DatePickerPopup size={size()} />\n </div>\n\n <Show when={local.description && !isInvalid()}>\n <HeadlessDatePickerDescription class={`text-primary-400 ${sizeConfig().label}`}>\n {local.description}\n </HeadlessDatePickerDescription>\n </Show>\n\n <Show when={isInvalid() && local.errorMessage}>\n <HeadlessDatePickerErrorMessage class={`text-red-500 ${sizeConfig().label}`}>\n {local.errorMessage}\n </HeadlessDatePickerErrorMessage>\n </Show>\n </HeadlessDatePicker>\n )\n}\n\n// ============================================\n// POPUP COMPONENT (uses context)\n// ============================================\n\nfunction DatePickerPopup(props: { size: DatePickerSize }): JSX.Element {\n return (\n <DatePickerContent\n class=\"z-50 shadow-lg rounded-lg\"\n >\n <Calendar size={props.size} />\n </DatePickerContent>\n )\n}\n\n// Re-export types\nexport type { CalendarDate, DateValue }\n","/**\n * DateRangePicker component for proyecto-viviana-silapse\n *\n * Styled date range picker with calendar popup.\n * Uses the range calendar for date selection and displays formatted dates.\n */\n\nimport { type JSX, splitProps, Show, createMemo } from 'solid-js'\nimport {\n DateRangePicker as HeadlessDateRangePicker,\n DateRangePickerLabel as HeadlessDateRangePickerLabel,\n DateRangePickerDescription as HeadlessDateRangePickerDescription,\n DateRangePickerErrorMessage as HeadlessDateRangePickerErrorMessage,\n DateRangePickerButton,\n DateRangePickerContent,\n useDateRangePickerContext,\n type DateRangePickerProps as HeadlessDateRangePickerProps,\n type CalendarDate,\n type DateValue,\n} from '@proyecto-viviana/solidaria-components'\nimport { RangeCalendar } from './RangeCalendar'\nimport { useProviderProps } from '../provider'\n\nfunction CalendarIcon(): JSX.Element {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-5 h-5\"\n aria-hidden=\"true\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n )\n}\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type DateRangePickerSize = 'sm' | 'md' | 'lg'\n\nexport interface DateRangePickerProps<T extends DateValue = DateValue>\n extends Omit<HeadlessDateRangePickerProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the picker. @default 'md' */\n size?: DateRangePickerSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the field. */\n label?: string\n /** Description text. */\n description?: string\n /** Error message. */\n errorMessage?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n field: 'px-2 py-1',\n label: 'text-xs',\n button: 'w-7 h-7',\n },\n md: {\n container: 'text-base',\n field: 'px-3 py-2',\n label: 'text-sm',\n button: 'w-9 h-9',\n },\n lg: {\n container: 'text-lg',\n field: 'px-4 py-3',\n label: 'text-base',\n button: 'w-11 h-11',\n },\n}\n\n/**\n * Inner component that uses the DateRangePicker context to display formatted dates.\n */\nfunction DateRangeDisplay(props: {\n size: DateRangePickerSize\n isInvalid: boolean\n label?: string\n description?: string\n errorMessage?: string\n isRequired?: boolean\n}): JSX.Element {\n const context = useDateRangePickerContext()\n const sizeConfig = () => sizeStyles[props.size]\n\n const startDisplay = createMemo(() => {\n const state = context.calendarState\n const start = state.value?.()?.start ?? state.anchorDate?.()\n if (!start) return 'Start date'\n return `${start.month}/${start.day}/${start.year}`\n })\n\n const endDisplay = createMemo(() => {\n const state = context.calendarState\n const end = state.value?.()?.end\n if (!end) return 'End date'\n return `${end.month}/${end.day}/${end.year}`\n })\n\n const hasValue = createMemo(() => {\n const state = context.calendarState\n return !!state.value?.()?.start\n })\n\n return (\n <>\n <Show when={props.label}>\n <HeadlessDateRangePickerLabel class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {props.label}\n <Show when={props.isRequired}>\n <span class=\"text-red-500 ml-0.5\">*</span>\n </Show>\n </HeadlessDateRangePickerLabel>\n </Show>\n\n <div class=\"relative flex items-center\" role=\"group\">\n <div\n {...context.pickerAria.startFieldProps}\n class={`\n inline-flex items-center flex-1\n ${sizeConfig().field}\n bg-bg-400 rounded-l-md border-y border-l\n transition-colors duration-150\n ${props.isInvalid ? 'border-red-500' : 'border-primary-600'}\n ${hasValue() ? 'text-primary-100' : 'text-primary-500 italic'}\n ${context.calendarState.isDisabled() ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer focus:outline-none focus:ring-2 focus:ring-accent/50'}\n `}\n >\n {startDisplay()}\n </div>\n\n <span class=\"px-1 text-primary-400 bg-bg-400 border-y border-primary-600\" aria-hidden=\"true\">–</span>\n\n <div\n {...context.pickerAria.endFieldProps}\n class={`\n inline-flex items-center flex-1\n ${sizeConfig().field}\n bg-bg-400 border-y\n transition-colors duration-150\n ${props.isInvalid ? 'border-red-500' : 'border-primary-600'}\n ${hasValue() ? 'text-primary-100' : 'text-primary-500 italic'}\n ${context.calendarState.isDisabled() ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer focus:outline-none focus:ring-2 focus:ring-accent/50'}\n `}\n >\n {endDisplay()}\n </div>\n\n <DateRangePickerButton\n class={({ isDisabled, isOpen }) => {\n const base = `\n ${sizeConfig().button}\n flex items-center justify-center\n bg-bg-400 border-y border-r rounded-r-md\n text-primary-200\n transition-colors duration-150\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `\n let borderClass = 'border-primary-600'\n if (props.isInvalid) {\n borderClass = 'border-red-500'\n } else if (isOpen) {\n borderClass = 'border-accent bg-bg-300'\n }\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : 'hover:bg-bg-300 cursor-pointer'\n return `${base} ${borderClass} ${disabledClass}`.trim()\n }}\n >\n <CalendarIcon />\n </DateRangePickerButton>\n\n <DateRangePickerContent class=\"z-50 shadow-lg rounded-lg\">\n <RangeCalendar size={props.size} />\n </DateRangePickerContent>\n </div>\n\n <Show when={props.description && !props.isInvalid}>\n <HeadlessDateRangePickerDescription class={`text-primary-400 ${sizeConfig().label}`}>\n {props.description}\n </HeadlessDateRangePickerDescription>\n </Show>\n\n <Show when={props.isInvalid && props.errorMessage}>\n <HeadlessDateRangePickerErrorMessage class={`text-red-500 ${sizeConfig().label}`}>\n {props.errorMessage}\n </HeadlessDateRangePickerErrorMessage>\n </Show>\n </>\n )\n}\n\n// ============================================\n// DATE RANGE PICKER COMPONENT\n// ============================================\n\n/**\n * A date range picker combines two date display fields with a range calendar popup.\n */\nexport function DateRangePicker<T extends DateValue = CalendarDate>(\n props: DateRangePickerProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ])\n\n const size = () => local.size ?? 'md'\n const sizeConfig = () => sizeStyles[size()]\n const isInvalid = () => local.isInvalid || !!local.errorMessage\n\n return (\n <HeadlessDateRangePicker\n {...rest}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={`flex flex-col gap-1 relative ${sizeConfig().container} ${local.class ?? ''}`}\n >\n <DateRangeDisplay\n size={size()}\n isInvalid={isInvalid()}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isRequired={rest.isRequired}\n />\n </HeadlessDateRangePicker>\n )\n}\n","/**\n * Table component for proyecto-viviana-silapse\n *\n * Styled table component built on top of solidaria-components.\n * Inspired by Spectrum 2's Table component patterns.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext, Show } from 'solid-js'\nimport {\n Table as HeadlessTable,\n TableHeader as HeadlessTableHeader,\n TableColumn as HeadlessTableColumn,\n TableBody as HeadlessTableBody,\n TableRow as HeadlessTableRow,\n TableCell as HeadlessTableCell,\n TableSelectionCheckbox as HeadlessTableSelectionCheckbox,\n TableSelectAllCheckbox as HeadlessTableSelectAllCheckbox,\n type TableProps as HeadlessTableProps,\n type TableHeaderProps as HeadlessTableHeaderProps,\n type TableColumnProps as HeadlessTableColumnProps,\n type TableBodyProps as HeadlessTableBodyProps,\n type TableRowProps as HeadlessTableRowProps,\n type TableCellProps as HeadlessTableCellProps,\n type TableRenderProps,\n type TableColumnRenderProps,\n type TableRowRenderProps,\n type TableCellRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key, SortDescriptor, ColumnDefinition } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type TableSize = 'sm' | 'md' | 'lg'\nexport type TableVariant = 'default' | 'striped' | 'bordered'\n\ninterface TableContextValue {\n size: TableSize\n variant: TableVariant\n}\n\nconst TableSizeContext = createContext<TableContextValue>({ size: 'md', variant: 'default' })\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface TableProps<T extends object>\n extends Omit<HeadlessTableProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the table. */\n size?: TableSize\n /** The visual variant of the table. */\n variant?: TableVariant\n /** Additional CSS class name. */\n class?: string\n /** Title for the table. */\n title?: string\n /** Description for the table. */\n description?: string\n /** Children components (TableHeader, TableBody). */\n children?: JSX.Element | (() => JSX.Element)\n}\n\nexport interface TableHeaderProps extends Omit<HeadlessTableHeaderProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TableColumnProps extends Omit<HeadlessTableColumnProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Text alignment for the column. */\n align?: 'left' | 'center' | 'right'\n /** Width of the column (CSS value). */\n width?: string\n}\n\nexport interface TableBodyProps<T> extends Omit<HeadlessTableBodyProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TableRowProps<T> extends Omit<HeadlessTableRowProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TableCellProps extends Omit<HeadlessTableCellProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Text alignment for the cell. */\n align?: 'left' | 'center' | 'right'\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n table: 'text-sm',\n headerCell: 'px-3 py-2',\n cell: 'px-3 py-2',\n checkbox: 'w-4 h-4',\n },\n md: {\n table: 'text-base',\n headerCell: 'px-4 py-3',\n cell: 'px-4 py-3',\n checkbox: 'w-5 h-5',\n },\n lg: {\n table: 'text-lg',\n headerCell: 'px-5 py-4',\n cell: 'px-5 py-4',\n checkbox: 'w-6 h-6',\n },\n}\n\nconst variantStyles = {\n default: {\n wrapper: 'rounded-lg border border-bg-300 overflow-hidden',\n header: 'bg-bg-300 border-b border-bg-400',\n row: '',\n rowHover: 'hover:bg-bg-200/50',\n rowSelected: 'bg-accent/10',\n },\n striped: {\n wrapper: 'rounded-lg border border-bg-300 overflow-hidden',\n header: 'bg-bg-300 border-b border-bg-400',\n row: 'even:bg-bg-200/30',\n rowHover: 'hover:bg-bg-200/50',\n rowSelected: 'bg-accent/10',\n },\n bordered: {\n wrapper: 'rounded-lg border-2 border-bg-400 overflow-hidden',\n header: 'bg-bg-300 border-b-2 border-bg-400',\n row: 'border-b border-bg-300 last:border-b-0',\n rowHover: 'hover:bg-bg-200/50',\n rowSelected: 'bg-accent/10',\n },\n}\n\nconst alignStyles = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\n// ============================================\n// TABLE COMPONENT\n// ============================================\n\n/**\n * A table displays data in rows and columns and enables a user to navigate its contents\n * via directional navigation keys, and optionally supports row selection and sorting.\n *\n * Built on solidaria-components Table for full accessibility support.\n *\n * @example\n * ```tsx\n * const columns = [\n * { key: 'name', name: 'Name' },\n * { key: 'role', name: 'Role' },\n * { key: 'status', name: 'Status' },\n * ]\n *\n * const rows = [\n * { id: '1', name: 'John', role: 'Developer', status: 'Active' },\n * { id: '2', name: 'Jane', role: 'Designer', status: 'Active' },\n * ]\n *\n * <Table items={rows} columns={columns} selectionMode=\"multiple\">\n * {() => (\n * <>\n * <TableHeader>\n * {() => (\n * <For each={columns}>\n * {(col) => <TableColumn id={col.key}>{col.name}</TableColumn>}\n * </For>\n * )}\n * </TableHeader>\n * <TableBody>\n * {(row) => (\n * <TableRow id={row.id}>\n * {() => (\n * <>\n * <TableCell>{row.name}</TableCell>\n * <TableCell>{row.role}</TableCell>\n * <TableCell>{row.status}</TableCell>\n * </>\n * )}\n * </TableRow>\n * )}\n * </TableBody>\n * </>\n * )}\n * </Table>\n * ```\n */\nexport function Table<T extends object>(props: TableProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'title',\n 'description',\n 'children',\n ])\n\n const size = () => local.size ?? 'md'\n const variant = () => local.variant ?? 'default'\n const styles = () => sizeStyles[size()]\n const variantStyle = () => variantStyles[variant()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TableRenderProps): string => {\n const base = 'w-full bg-bg-400'\n const sizeClass = styles().table\n\n let stateClass = ''\n if (renderProps.isEmpty) {\n stateClass = ''\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, stateClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size(), variant: variant() }))\n\n return (\n <TableSizeContext.Provider value={contextValue()}>\n <div class=\"flex flex-col gap-2\">\n <Show when={local.title}>\n <h3 class=\"text-lg font-semibold text-primary-100\">{local.title}</h3>\n </Show>\n <Show when={local.description}>\n <p class=\"text-sm text-primary-400\">{local.description}</p>\n </Show>\n <div class={variantStyle().wrapper}>\n <HeadlessTable {...headlessProps} class={getClassName}>\n {props.children}\n </HeadlessTable>\n </div>\n </div>\n </TableSizeContext.Provider>\n )\n}\n\n// ============================================\n// TABLE HEADER COMPONENT\n// ============================================\n\n/**\n * A header row in a table containing column headers.\n */\nexport function TableHeader(props: TableHeaderProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const context = useContext(TableSizeContext)\n const variantStyle = variantStyles[context.variant]\n const customClass = local.class ?? ''\n\n const className = [variantStyle.header, customClass].filter(Boolean).join(' ')\n\n return (\n <HeadlessTableHeader {...headlessProps} class={className}>\n {props.children}\n </HeadlessTableHeader>\n )\n}\n\n// ============================================\n// TABLE COLUMN COMPONENT\n// ============================================\n\n/**\n * A column header in a table.\n */\nexport function TableColumn(props: TableColumnProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'align', 'width'])\n const context = useContext(TableSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TableColumnRenderProps): string => {\n const base = 'font-semibold text-primary-200 select-none'\n const sizeClass = sizeStyle.headerCell\n const alignClass = alignStyles[local.align ?? 'left']\n\n let sortClass = ''\n if (renderProps.isSortable) {\n sortClass = 'cursor-pointer'\n if (renderProps.isHovered) {\n sortClass += ' text-primary-100'\n }\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, alignClass, sortClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const getStyle = (): JSX.CSSProperties | undefined => {\n if (local.width) {\n return { width: local.width }\n }\n return undefined\n }\n\n return (\n <HeadlessTableColumn {...headlessProps} class={getClassName} style={getStyle()}>\n {(renderProps: TableColumnRenderProps) => (\n <div class=\"flex items-center gap-2\">\n <span class=\"flex-1\">\n {typeof props.children === 'function'\n ? props.children(renderProps)\n : props.children}\n </span>\n <Show when={renderProps.isSortable && renderProps.sortDirection}>\n <SortIcon direction={renderProps.sortDirection!} class=\"w-4 h-4\" />\n </Show>\n </div>\n )}\n </HeadlessTableColumn>\n )\n}\n\n// ============================================\n// TABLE BODY COMPONENT\n// ============================================\n\n/**\n * The body of a table containing data rows.\n */\nexport function TableBody<T extends object>(props: TableBodyProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'renderEmptyState'])\n const customClass = local.class ?? ''\n\n const defaultEmptyState = () => (\n <tr>\n <td colSpan={100} class=\"py-8 text-center text-primary-400\">\n <div class=\"flex flex-col items-center gap-2\">\n <EmptyIcon class=\"w-12 h-12 text-primary-500\" />\n <span>No data available</span>\n </div>\n </td>\n </tr>\n )\n\n return (\n <HeadlessTableBody\n {...headlessProps}\n class={customClass}\n renderEmptyState={local.renderEmptyState ?? defaultEmptyState}\n >\n {props.children}\n </HeadlessTableBody>\n )\n}\n\n// ============================================\n// TABLE ROW COMPONENT\n// ============================================\n\n/**\n * A row in a table.\n */\nexport function TableRow<T extends object>(props: TableRowProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const context = useContext(TableSizeContext)\n const variantStyle = variantStyles[context.variant]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TableRowRenderProps): string => {\n const base = 'transition-colors duration-150 outline-none'\n const variantClass = variantStyle.row\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n stateClass = variantStyle.rowSelected\n } else if (renderProps.isHovered) {\n stateClass = variantStyle.rowHover\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n const pressedClass = renderProps.isPressed ? 'bg-bg-200/70' : ''\n\n return [base, variantClass, stateClass, focusClass, pressedClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n return (\n <HeadlessTableRow {...headlessProps} class={getClassName}>\n {props.children}\n </HeadlessTableRow>\n )\n}\n\n// ============================================\n// TABLE CELL COMPONENT\n// ============================================\n\n/**\n * A cell in a table row.\n */\nexport function TableCell(props: TableCellProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'align'])\n const context = useContext(TableSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TableCellRenderProps): string => {\n const base = 'text-primary-200'\n const sizeClass = sizeStyle.cell\n const alignClass = alignStyles[local.align ?? 'left']\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, alignClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTableCell {...headlessProps} class={getClassName}>\n {props.children}\n </HeadlessTableCell>\n )\n}\n\n// ============================================\n// TABLE SELECTION CHECKBOX COMPONENT\n// ============================================\n\n/**\n * A styled checkbox cell for row selection.\n */\nexport function TableSelectionCheckbox(props: { rowKey: Key }): JSX.Element {\n const context = useContext(TableSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const checkboxClass = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400`\n\n return (\n <td class={`${sizeStyle.cell} w-px`}>\n <span class={checkboxClass}>\n <HeadlessTableSelectionCheckbox rowKey={props.rowKey} />\n </span>\n </td>\n )\n}\n\n/**\n * A styled checkbox for select-all functionality.\n */\nexport function TableSelectAllCheckbox(): JSX.Element {\n const context = useContext(TableSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const checkboxClass = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400`\n\n return (\n <th class={`${sizeStyle.headerCell} w-px`}>\n <span class={checkboxClass}>\n <HeadlessTableSelectAllCheckbox />\n </span>\n </th>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction SortIcon(props: { direction: 'ascending' | 'descending'; class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n {props.direction === 'ascending' ? (\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 15l7-7 7 7\" />\n ) : (\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n )}\n </svg>\n )\n}\n\nfunction EmptyIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4\"\n />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nTable.Header = TableHeader\nTable.Column = TableColumn\nTable.Body = TableBody\nTable.Row = TableRow\nTable.Cell = TableCell\nTable.SelectionCheckbox = TableSelectionCheckbox\nTable.SelectAllCheckbox = TableSelectAllCheckbox\n\n// Re-export types for convenience\nexport type { Key, SortDescriptor, ColumnDefinition }\n","/**\n * Tree component for proyecto-viviana-silapse\n *\n * Styled tree component built on top of solidaria-components.\n * Inspired by Spectrum 2's Tree component patterns.\n *\n * Tree displays hierarchical data with expandable/collapsible nodes,\n * supporting keyboard navigation and selection.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext, Show } from 'solid-js'\nimport {\n Tree as HeadlessTree,\n TreeItem as HeadlessTreeItem,\n TreeExpandButton as HeadlessTreeExpandButton,\n TreeSelectionCheckbox as HeadlessTreeSelectionCheckbox,\n type TreeProps as HeadlessTreeProps,\n type TreeItemProps as HeadlessTreeItemProps,\n type TreeExpandButtonProps as HeadlessTreeExpandButtonProps,\n type TreeRenderProps,\n type TreeItemRenderProps,\n type TreeRenderItemState,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key, TreeItemData } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type TreeSize = 'sm' | 'md' | 'lg'\nexport type TreeVariant = 'default' | 'bordered' | 'quiet'\n\ninterface TreeContextValue {\n size: TreeSize\n variant: TreeVariant\n}\n\nconst TreeSizeContext = createContext<TreeContextValue>({ size: 'md', variant: 'default' })\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface TreeProps<T extends object>\n extends Omit<HeadlessTreeProps<T>, 'class' | 'style'> {\n /** The size of the tree. */\n size?: TreeSize\n /** The visual variant of the tree. */\n variant?: TreeVariant\n /** Additional CSS class name. */\n class?: string\n /** Label for the tree. */\n label?: string\n /** Description for the tree. */\n description?: string\n}\n\nexport interface TreeItemProps<T extends object>\n extends Omit<HeadlessTreeItemProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Optional description text. */\n description?: string\n /**\n * Optional icon to display before the content.\n * Use a function returning JSX for SSR compatibility: `icon={() => <FolderIcon />}`\n */\n icon?: () => JSX.Element\n}\n\nexport interface TreeExpandButtonProps extends Omit<HeadlessTreeExpandButtonProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n tree: 'text-sm',\n item: 'py-1 px-2 gap-1',\n indent: 16,\n icon: 'h-4 w-4',\n expandButton: 'h-4 w-4',\n label: 'text-sm',\n description: 'text-xs',\n checkbox: 'w-4 h-4',\n },\n md: {\n tree: 'text-base',\n item: 'py-1.5 px-3 gap-2',\n indent: 20,\n icon: 'h-5 w-5',\n expandButton: 'h-5 w-5',\n label: 'text-base',\n description: 'text-sm',\n checkbox: 'w-5 h-5',\n },\n lg: {\n tree: 'text-lg',\n item: 'py-2 px-4 gap-2',\n indent: 24,\n icon: 'h-6 w-6',\n expandButton: 'h-6 w-6',\n label: 'text-lg',\n description: 'text-base',\n checkbox: 'w-6 h-6',\n },\n}\n\nconst variantStyles = {\n default: {\n tree: 'bg-bg-400 rounded-lg border border-bg-300 p-2',\n item: 'rounded-md',\n itemHover: 'hover:bg-bg-200/50',\n itemSelected: 'bg-accent/10 text-accent',\n },\n bordered: {\n tree: 'bg-bg-400 rounded-lg border-2 border-bg-400 p-2',\n item: 'border-b border-bg-300/30 last:border-b-0',\n itemHover: 'hover:bg-bg-200/50',\n itemSelected: 'bg-accent/10 text-accent',\n },\n quiet: {\n tree: 'bg-transparent',\n item: 'rounded-md',\n itemHover: 'hover:bg-bg-300/50',\n itemSelected: 'bg-accent/10 text-accent',\n },\n}\n\n// ============================================\n// TREE COMPONENT\n// ============================================\n\n/**\n * A tree displays hierarchical data with expandable/collapsible nodes,\n * supporting keyboard navigation and selection.\n *\n * Built on solidaria-components Tree for full accessibility support.\n *\n * @example\n * ```tsx\n * const items = [\n * {\n * key: 'documents',\n * value: { name: 'Documents' },\n * children: [\n * { key: 'doc1', value: { name: 'Report.pdf' } },\n * { key: 'doc2', value: { name: 'Notes.txt' } },\n * ],\n * },\n * {\n * key: 'images',\n * value: { name: 'Images' },\n * children: [\n * { key: 'img1', value: { name: 'Photo.jpg' } },\n * ],\n * },\n * ]\n *\n * <Tree items={items} defaultExpandedKeys={['documents']}>\n * {(item, state) => (\n * <TreeItem id={item.key} icon={() => <FolderIcon />}>\n * {item.value.name}\n * </TreeItem>\n * )}\n * </Tree>\n * ```\n */\nexport function Tree<T extends object>(props: TreeProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n ])\n\n const size = () => local.size ?? 'md'\n const variant = () => local.variant ?? 'default'\n const styles = () => sizeStyles[size()]\n const variantStyle = () => variantStyles[variant()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TreeRenderProps): string => {\n const base = 'overflow-auto focus:outline-none'\n const sizeClass = styles().tree\n const variantClass = variantStyle().tree\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, variantClass, stateClass, focusClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n const defaultEmptyState = () => (\n <div class=\"py-8 text-center text-primary-400\">\n <div class=\"flex flex-col items-center gap-2\">\n <EmptyTreeIcon class=\"w-12 h-12 text-primary-500\" />\n <span>No items</span>\n </div>\n </div>\n )\n\n const contextValue = createMemo(() => ({ size: size(), variant: variant() }))\n\n return (\n <TreeSizeContext.Provider value={contextValue()}>\n <div class=\"flex flex-col gap-2\">\n <Show when={local.label}>\n <label class={`text-primary-200 font-medium ${styles().label}`}>\n {local.label}\n </label>\n </Show>\n <HeadlessTree\n {...headlessProps}\n class={getClassName}\n renderEmptyState={headlessProps.renderEmptyState ?? defaultEmptyState}\n />\n <Show when={local.description}>\n <span class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n </div>\n </TreeSizeContext.Provider>\n )\n}\n\n// ============================================\n// TREE ITEM COMPONENT\n// ============================================\n\n/**\n * An item in a tree.\n */\nexport function TreeItem<T extends object>(props: TreeItemProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'class',\n 'description',\n 'icon',\n ])\n\n const context = useContext(TreeSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const variantStyle = variantStyles[context.variant]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TreeItemRenderProps): string => {\n const base = 'flex items-center cursor-pointer transition-all duration-150 outline-none'\n const sizeClass = sizeStyle.item\n const variantClass = variantStyle.item\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n stateClass = variantStyle.itemSelected\n } else if (renderProps.isHovered) {\n stateClass = variantStyle.itemHover\n }\n\n let textClass = ''\n if (!renderProps.isDisabled && !renderProps.isSelected) {\n textClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n const pressedClass = renderProps.isPressed ? 'scale-[0.99]' : ''\n\n return [base, sizeClass, variantClass, stateClass, textClass, focusClass, pressedClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n const getStyle = (renderProps: TreeItemRenderProps): JSX.CSSProperties => ({\n 'padding-left': `${renderProps.level * sizeStyle.indent + 8}px`,\n })\n\n return (\n <HeadlessTreeItem {...headlessProps} class={getClassName} style={getStyle}>\n {(renderProps: TreeItemRenderProps) => (\n <>\n {/* Expand button */}\n <TreeExpandButton class={`${sizeStyle.expandButton} shrink-0`} />\n\n {/* Icon */}\n <Show when={local.icon}>\n <span class={`shrink-0 ${sizeStyle.icon}`}>\n {local.icon!()}\n </span>\n </Show>\n\n {/* Default folder/file icon if no custom icon */}\n <Show when={!local.icon}>\n {renderProps.isExpandable ? (\n <FolderIcon class={`shrink-0 ${sizeStyle.icon} text-accent-300`} isOpen={renderProps.isExpanded} />\n ) : (\n <FileIcon class={`shrink-0 ${sizeStyle.icon} text-primary-400`} />\n )}\n </Show>\n\n {/* Content */}\n <div class=\"flex flex-col flex-1 min-w-0\">\n <span class=\"truncate\">\n {typeof props.children === 'function'\n ? props.children(renderProps)\n : props.children}\n </span>\n <Show when={local.description}>\n <span class={`text-primary-400 truncate ${sizeStyle.description}`}>\n {local.description}\n </span>\n </Show>\n </div>\n\n {/* Selection indicator */}\n <Show when={renderProps.isSelected}>\n <CheckIcon class={`shrink-0 ${sizeStyle.icon} text-accent`} />\n </Show>\n </>\n )}\n </HeadlessTreeItem>\n )\n}\n\n// ============================================\n// TREE EXPAND BUTTON COMPONENT\n// ============================================\n\n/**\n * A button to expand/collapse a tree item.\n */\nexport function TreeExpandButton(props: TreeExpandButtonProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const context = useContext(TreeSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const customClass = local.class ?? ''\n\n const className = [\n 'flex items-center justify-center transition-transform duration-150 text-primary-400 hover:text-primary-200',\n customClass,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <HeadlessTreeExpandButton\n {...headlessProps}\n class={className}\n >\n {props.children ?? (({ isExpanded }: { isExpanded: boolean }) => (\n <ChevronIcon\n class={`${sizeStyle.expandButton} transition-transform duration-150 ${\n isExpanded ? 'rotate-90' : ''\n }`}\n />\n ))}\n </HeadlessTreeExpandButton>\n )\n}\n\n// ============================================\n// TREE SELECTION CHECKBOX COMPONENT\n// ============================================\n\n/**\n * A styled checkbox for item selection in a tree.\n */\nexport function TreeSelectionCheckbox(props: { itemKey: Key; class?: string }): JSX.Element {\n const context = useContext(TreeSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const className = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400 ${props.class ?? ''}`\n\n return (\n <span class={className}>\n <HeadlessTreeSelectionCheckbox itemKey={props.itemKey} />\n </span>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n}\n\nfunction FolderIcon(props: { class?: string; isOpen?: boolean }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n {props.isOpen ? (\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776\"\n />\n ) : (\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z\"\n />\n )}\n </svg>\n )\n}\n\nfunction FileIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z\"\n />\n </svg>\n )\n}\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\nfunction EmptyTreeIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6z\"\n />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nTree.Item = TreeItem\nTree.ExpandButton = TreeExpandButton\nTree.SelectionCheckbox = TreeSelectionCheckbox\n\n// Re-export types for convenience\nexport type { Key, TreeItemData, TreeRenderItemState }\n","/**\n * Color components for proyecto-viviana-silapse\n *\n * Styled color picker components built on top of solidaria-components.\n * Inspired by Spectrum 2's color picker patterns.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext, Show } from 'solid-js'\nimport {\n ColorSlider as HeadlessColorSlider,\n ColorSliderTrack as HeadlessColorSliderTrack,\n ColorSliderThumb as HeadlessColorSliderThumb,\n ColorArea as HeadlessColorArea,\n ColorAreaGradient as HeadlessColorAreaGradient,\n ColorAreaThumb as HeadlessColorAreaThumb,\n ColorWheel as HeadlessColorWheel,\n ColorWheelTrack as HeadlessColorWheelTrack,\n ColorWheelThumb as HeadlessColorWheelThumb,\n ColorField as HeadlessColorField,\n ColorFieldInput as HeadlessColorFieldInput,\n ColorSwatch as HeadlessColorSwatch,\n type ColorSliderProps as HeadlessColorSliderProps,\n type ColorAreaProps as HeadlessColorAreaProps,\n type ColorWheelProps as HeadlessColorWheelProps,\n type ColorFieldProps as HeadlessColorFieldProps,\n type ColorSwatchProps as HeadlessColorSwatchProps,\n type ColorSliderRenderProps,\n type ColorSliderTrackRenderProps,\n type ColorSliderThumbRenderProps,\n type ColorAreaRenderProps,\n type ColorAreaThumbRenderProps,\n type ColorWheelRenderProps,\n type ColorWheelThumbRenderProps,\n type ColorFieldRenderProps,\n type ColorSwatchRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Color, ColorChannel, ColorFormat } from '@proyecto-viviana/solid-stately'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type ColorSize = 'sm' | 'md' | 'lg'\n\ninterface ColorContextValue {\n size: ColorSize\n}\n\nconst ColorSizeContext = createContext<ColorContextValue>({ size: 'md' })\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n slider: {\n track: 'h-4 rounded',\n thumb: 'w-4 h-4',\n label: 'text-sm',\n },\n area: {\n container: 'w-48 h-48',\n thumb: 'w-4 h-4',\n },\n wheel: {\n container: 'w-48 h-48',\n track: 'stroke-[16px]',\n thumb: 'w-4 h-4',\n },\n field: {\n input: 'h-8 text-sm px-2',\n label: 'text-sm',\n },\n swatch: 'w-8 h-8',\n },\n md: {\n slider: {\n track: 'h-6 rounded-md',\n thumb: 'w-5 h-5',\n label: 'text-base',\n },\n area: {\n container: 'w-64 h-64',\n thumb: 'w-5 h-5',\n },\n wheel: {\n container: 'w-64 h-64',\n track: 'stroke-[20px]',\n thumb: 'w-5 h-5',\n },\n field: {\n input: 'h-10 text-base px-3',\n label: 'text-base',\n },\n swatch: 'w-10 h-10',\n },\n lg: {\n slider: {\n track: 'h-8 rounded-lg',\n thumb: 'w-6 h-6',\n label: 'text-lg',\n },\n area: {\n container: 'w-80 h-80',\n thumb: 'w-6 h-6',\n },\n wheel: {\n container: 'w-80 h-80',\n track: 'stroke-[24px]',\n thumb: 'w-6 h-6',\n },\n field: {\n input: 'h-12 text-lg px-4',\n label: 'text-lg',\n },\n swatch: 'w-12 h-12',\n },\n}\n\n// ============================================\n// COLOR SLIDER\n// ============================================\n\nexport interface ColorSliderProps extends Omit<HeadlessColorSliderProps, 'class' | 'style' | 'children'> {\n /** The size of the color slider. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n /** Show the current value. */\n showValue?: boolean\n}\n\n/**\n * A color slider allows users to adjust a single color channel.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('hsl(0, 100%, 50%)'))\n *\n * <ColorSlider\n * channel=\"hue\"\n * value={color()}\n * onChange={setColor}\n * label=\"Hue\"\n * />\n * ```\n */\nexport function ColorSlider(props: ColorSliderProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class', 'showValue'])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ColorSliderRenderProps): string => {\n const base = 'flex flex-col gap-1.5'\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n }\n return [base, stateClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size() }))\n\n return (\n <ColorSizeContext.Provider value={contextValue()}>\n <HeadlessColorSlider {...headlessProps} class={getClassName}>\n {(renderProps: ColorSliderRenderProps) => (\n <>\n <div class=\"flex items-center justify-between\">\n <Show when={headlessProps.label}>\n <span class={`text-primary-200 font-medium ${styles().slider.label}`}>\n {headlessProps.label}\n </span>\n </Show>\n <Show when={local.showValue}>\n <span class={`text-primary-400 ${styles().slider.label}`}>\n {Math.round(renderProps.value)}\n </span>\n </Show>\n </div>\n <ColorSliderTrack>\n {() => <ColorSliderThumb />}\n </ColorSliderTrack>\n </>\n )}\n </HeadlessColorSlider>\n </ColorSizeContext.Provider>\n )\n}\n\n/**\n * The track component for a color slider.\n */\nexport function ColorSliderTrack(props: { children?: JSX.Element | (() => JSX.Element); class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const getClassName = (renderProps: ColorSliderTrackRenderProps): string => {\n const base = `relative ${styles.slider.track} shadow-inner border border-bg-300`\n const dragClass = renderProps.isDragging ? 'cursor-grabbing' : 'cursor-pointer'\n return [base, dragClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessColorSliderTrack class={getClassName}>\n {props.children}\n </HeadlessColorSliderTrack>\n )\n}\n\n/**\n * The thumb component for a color slider.\n */\nexport function ColorSliderThumb(props: { class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const getClassName = (renderProps: ColorSliderThumbRenderProps): string => {\n const base = `${styles.slider.thumb} rounded-full border-2 border-white shadow-md cursor-grab`\n const dragClass = renderProps.isDragging ? 'cursor-grabbing scale-110' : ''\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent-300 ring-offset-2' : ''\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed' : ''\n return [base, dragClass, focusClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return <HeadlessColorSliderThumb class={getClassName} />\n}\n\n// ============================================\n// COLOR AREA\n// ============================================\n\nexport interface ColorAreaProps extends Omit<HeadlessColorAreaProps, 'class' | 'style' | 'children'> {\n /** The size of the color area. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n}\n\n/**\n * A color area allows users to select a color by dragging in a 2D gradient.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('hsl(0, 100%, 50%)'))\n *\n * <ColorArea\n * value={color()}\n * onChange={setColor}\n * xChannel=\"saturation\"\n * yChannel=\"lightness\"\n * />\n * ```\n */\nexport function ColorArea(props: ColorAreaProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class'])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ColorAreaRenderProps): string => {\n const base = `relative ${styles().area.container} rounded-lg overflow-hidden border border-bg-300 shadow-inner`\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n }\n return [base, stateClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size() }))\n\n return (\n <ColorSizeContext.Provider value={contextValue()}>\n <HeadlessColorArea {...headlessProps} class={getClassName}>\n {() => (\n <>\n <ColorAreaGradient />\n <ColorAreaThumb />\n </>\n )}\n </HeadlessColorArea>\n </ColorSizeContext.Provider>\n )\n}\n\n/**\n * The gradient background for a color area.\n */\nexport function ColorAreaGradient(props: { class?: string }): JSX.Element {\n const customClass = props.class ?? ''\n const className = `absolute inset-0 ${customClass}`\n\n return <HeadlessColorAreaGradient class={className} />\n}\n\n/**\n * The thumb component for a color area.\n */\nexport function ColorAreaThumb(props: { class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const getClassName = (renderProps: ColorAreaThumbRenderProps): string => {\n const base = `${styles.area.thumb} rounded-full border-2 border-white shadow-md cursor-grab`\n const dragClass = renderProps.isDragging ? 'cursor-grabbing scale-110' : ''\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent-300 ring-offset-2' : ''\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed' : ''\n return [base, dragClass, focusClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return <HeadlessColorAreaThumb class={getClassName} />\n}\n\n// ============================================\n// COLOR WHEEL\n// ============================================\n\nexport interface ColorWheelProps extends Omit<HeadlessColorWheelProps, 'class' | 'style' | 'children'> {\n /** The size of the color wheel. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n}\n\n/**\n * A color wheel allows users to select a hue by dragging around a circular track.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('hsl(0, 100%, 50%)'))\n *\n * <ColorWheel\n * value={color()}\n * onChange={setColor}\n * />\n * ```\n */\nexport function ColorWheel(props: ColorWheelProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class'])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ColorWheelRenderProps): string => {\n const base = `relative ${styles().wheel.container}`\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n }\n return [base, stateClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size() }))\n\n return (\n <ColorSizeContext.Provider value={contextValue()}>\n <HeadlessColorWheel {...headlessProps} class={getClassName}>\n {() => (\n <>\n <ColorWheelTrack />\n <ColorWheelThumb />\n </>\n )}\n </HeadlessColorWheel>\n </ColorSizeContext.Provider>\n )\n}\n\n/**\n * The circular track for a color wheel.\n */\nexport function ColorWheelTrack(props: { class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const className = `${styles.wheel.track} ${customClass}`\n\n return <HeadlessColorWheelTrack class={className} />\n}\n\n/**\n * The thumb component for a color wheel.\n */\nexport function ColorWheelThumb(props: { class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const getClassName = (renderProps: ColorWheelThumbRenderProps): string => {\n const base = `${styles.wheel.thumb} rounded-full border-2 border-white shadow-md cursor-grab`\n const dragClass = renderProps.isDragging ? 'cursor-grabbing scale-110' : ''\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent-300 ring-offset-2' : ''\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed' : ''\n return [base, dragClass, focusClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return <HeadlessColorWheelThumb class={getClassName} />\n}\n\n// ============================================\n// COLOR FIELD\n// ============================================\n\nexport interface ColorFieldProps extends Omit<HeadlessColorFieldProps, 'class' | 'style' | 'children'> {\n /** The size of the color field. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n /** Description text below the input. */\n description?: string\n /** Error message to display. */\n errorMessage?: string\n}\n\n/**\n * A color field allows users to enter a color value as text.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('#ff0000'))\n *\n * <ColorField\n * value={color()}\n * onChange={setColor}\n * label=\"Color\"\n * />\n * ```\n */\nexport function ColorField(props: ColorFieldProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'class',\n 'description',\n 'errorMessage',\n ])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ColorFieldRenderProps): string => {\n const base = 'flex flex-col gap-1.5'\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n }\n return [base, stateClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size() }))\n\n return (\n <ColorSizeContext.Provider value={contextValue()}>\n <HeadlessColorField {...headlessProps} class={getClassName}>\n {() => (\n <>\n <Show when={headlessProps.label}>\n <span class={`text-primary-200 font-medium ${styles().field.label}`}>\n {headlessProps.label}\n </span>\n </Show>\n <ColorFieldInput isInvalid={!!local.errorMessage} />\n <Show when={local.description && !local.errorMessage}>\n <span class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n <Show when={local.errorMessage}>\n <span class=\"text-danger-400 text-sm\">{local.errorMessage}</span>\n </Show>\n </>\n )}\n </HeadlessColorField>\n </ColorSizeContext.Provider>\n )\n}\n\n/**\n * The input component for a color field.\n */\nexport function ColorFieldInput(props: { class?: string; isInvalid?: boolean }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const base = `${styles.field.input} w-full rounded-md border bg-bg-400 text-primary-200 placeholder:text-primary-500 focus:outline-none focus:ring-2 focus:ring-accent-300`\n const borderClass = props.isInvalid\n ? 'border-danger-400'\n : 'border-bg-300 focus:border-accent-300'\n const className = [base, borderClass, customClass].filter(Boolean).join(' ')\n\n return <HeadlessColorFieldInput class={className} />\n}\n\n// ============================================\n// COLOR SWATCH\n// ============================================\n\nexport interface ColorSwatchProps extends Omit<HeadlessColorSwatchProps, 'class' | 'style'> {\n /** The size of the color swatch. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n /** Whether the swatch is selectable. */\n isSelectable?: boolean\n /** Whether the swatch is selected. */\n isSelected?: boolean\n /** Handler called when the swatch is clicked. */\n onClick?: () => void\n}\n\n/**\n * A color swatch displays a color sample.\n *\n * @example\n * ```tsx\n * <ColorSwatch color={parseColor('#ff0000')} />\n *\n * // Selectable swatch\n * <ColorSwatch\n * color={parseColor('#00ff00')}\n * isSelectable\n * isSelected={selectedColor === '#00ff00'}\n * onClick={() => setSelectedColor('#00ff00')}\n * />\n * ```\n */\nexport function ColorSwatch(props: ColorSwatchProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'class',\n 'isSelectable',\n 'isSelected',\n 'onClick',\n 'aria-label',\n ])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (_renderProps: ColorSwatchRenderProps): string => {\n const base = `${styles().swatch} rounded-md border border-bg-300 shadow-sm`\n const selectableClass = local.isSelectable\n ? 'cursor-pointer hover:scale-105 transition-transform'\n : ''\n const selectedClass = local.isSelected\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n return [base, selectableClass, selectedClass, customClass].filter(Boolean).join(' ')\n }\n\n const handleClick = () => {\n if (local.isSelectable && local.onClick) {\n local.onClick()\n }\n }\n\n if (local.isSelectable && local.onClick) {\n return (\n <button\n type=\"button\"\n class=\"inline-flex bg-transparent border-0 p-0 cursor-pointer\"\n onClick={handleClick}\n aria-pressed={local.isSelected}\n aria-label={local['aria-label']}\n >\n <HeadlessColorSwatch\n {...headlessProps}\n aria-label={local['aria-label']}\n class={getClassName}\n />\n </button>\n )\n }\n\n return (\n <HeadlessColorSwatch\n {...headlessProps}\n aria-label={local['aria-label']}\n class={getClassName}\n />\n )\n}\n\n// ============================================\n// COLOR PICKER (Composite Component)\n// ============================================\n\nexport interface ColorPickerProps {\n /** The current color value (controlled). */\n value?: Color | string\n /** The default color value (uncontrolled). */\n defaultValue?: Color | string\n /** Handler called when the color changes. */\n onChange?: (color: Color) => void\n /** The size of the picker. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n /** Whether the picker is disabled. */\n isDisabled?: boolean\n /** A label for the picker. */\n label?: string\n /** Whether to show the hex input field. */\n showInput?: boolean\n /** Whether to show channel sliders. */\n showSliders?: boolean\n}\n\n/**\n * A complete color picker component with area, sliders, and input.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('hsl(0, 100%, 50%)'))\n *\n * <ColorPicker\n * value={color()}\n * onChange={setColor}\n * label=\"Pick a color\"\n * showInput\n * showSliders\n * />\n * ```\n */\nexport function ColorPicker(props: ColorPickerProps): JSX.Element {\n const size = () => props.size ?? 'md'\n const styles = () => sizeStyles[size()]\n\n return (\n <div class={`flex flex-col gap-4 ${props.class ?? ''}`}>\n <Show when={props.label}>\n <span class={`text-primary-200 font-medium ${styles().field.label}`}>\n {props.label}\n </span>\n </Show>\n\n <ColorArea\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={props.onChange}\n xChannel=\"saturation\"\n yChannel=\"lightness\"\n size={size()}\n isDisabled={props.isDisabled}\n />\n\n <Show when={props.showSliders !== false}>\n <ColorSlider\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={props.onChange}\n channel=\"hue\"\n label=\"Hue\"\n size={size()}\n showValue\n isDisabled={props.isDisabled}\n />\n\n <ColorSlider\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={props.onChange}\n channel=\"alpha\"\n label=\"Alpha\"\n size={size()}\n showValue\n isDisabled={props.isDisabled}\n />\n </Show>\n\n <Show when={props.showInput}>\n <ColorField\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={(color) => {\n if (color && props.onChange) {\n props.onChange(color)\n }\n }}\n label=\"Hex\"\n size={size()}\n isDisabled={props.isDisabled}\n />\n </Show>\n </div>\n )\n}\n\n// Attach sub-components for convenience\nColorSlider.Track = ColorSliderTrack\nColorSlider.Thumb = ColorSliderThumb\nColorArea.Gradient = ColorAreaGradient\nColorArea.Thumb = ColorAreaThumb\nColorWheel.Track = ColorWheelTrack\nColorWheel.Thumb = ColorWheelThumb\nColorField.Input = ColorFieldInput\n\n// Re-export types for convenience\nexport type { Color, ColorChannel, ColorFormat }\n\n// Re-exports from lower layers\nexport { parseColor, getColorChannels } from '@proyecto-viviana/solid-stately';\n\n// ColorEditor\nexport { ColorEditor } from './ColorEditor';\nexport type { ColorEditorProps } from './ColorEditor';\n\n// ColorSwatchPicker\nexport { ColorSwatchPicker, ColorSwatchPickerItem } from './ColorSwatchPicker';\nexport type {\n ColorSwatchPickerProps,\n ColorSwatchPickerItemProps,\n SwatchPickerSize,\n SwatchPickerDensity,\n SwatchPickerRounding,\n} from './ColorSwatchPicker';\n","/**\n * ColorEditor component for proyecto-viviana-silapse\n *\n * Styled color editor composing ColorArea, ColorSliders, and ColorFields.\n */\n\nimport { type JSX, splitProps } from 'solid-js'\nimport {\n ColorEditor as HeadlessColorEditor,\n type ColorEditorProps as HeadlessColorEditorProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ColorEditorProps extends Omit<HeadlessColorEditorProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A complete color editor with area, hue slider, alpha slider,\n * color space selector, and channel fields.\n */\nexport function ColorEditor(props: ColorEditorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n\n return (\n <HeadlessColorEditor\n {...headlessProps}\n class={({ colorSpace }) => {\n const base = [\n // Container\n 'flex flex-col gap-3',\n // Ensure readable defaults for nested native form controls\n '[&_label]:text-primary-200 [&_input]:text-primary-100',\n // Top row (area + sliders)\n '[&_.solidaria-ColorEditor-top]:flex [&_.solidaria-ColorEditor-top]:gap-3',\n // Bottom row (format + fields)\n '[&_.solidaria-ColorEditor-bottom]:flex [&_.solidaria-ColorEditor-bottom]:gap-2 [&_.solidaria-ColorEditor-bottom]:items-end',\n // Format selector styling\n '[&_.solidaria-ColorEditor-format]:h-8 [&_.solidaria-ColorEditor-format]:px-2 [&_.solidaria-ColorEditor-format]:text-sm',\n '[&_.solidaria-ColorEditor-format]:rounded-md [&_.solidaria-ColorEditor-format]:border [&_.solidaria-ColorEditor-format]:border-bg-300',\n '[&_.solidaria-ColorEditor-format]:bg-bg-400 [&_.solidaria-ColorEditor-format]:text-primary-200',\n '[&_.solidaria-ColorEditor-format]:outline-none [&_.solidaria-ColorEditor-format]:focus:ring-2 [&_.solidaria-ColorEditor-format]:focus:ring-accent',\n // Channel fields\n '[&_.solidaria-ColorField-input]:bg-bg-400 [&_.solidaria-ColorField-input]:border [&_.solidaria-ColorField-input]:border-bg-300',\n '[&_.solidaria-ColorField-input]:text-primary-100 [&_.solidaria-ColorField-input]:rounded-md',\n ].join(' ')\n\n return `${base} ${local.class ?? ''}`\n }}\n />\n )\n}\n","/**\n * ColorSwatchPicker component for proyecto-viviana-silapse\n *\n * Styled grid of selectable color swatches.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext } from 'solid-js'\nimport {\n ColorSwatchPicker as HeadlessColorSwatchPicker,\n ColorSwatchPickerItem as HeadlessColorSwatchPickerItem,\n ColorSwatch as HeadlessColorSwatch,\n type ColorSwatchPickerProps as HeadlessColorSwatchPickerProps,\n type ColorSwatchPickerItemProps as HeadlessColorSwatchPickerItemProps,\n type ColorSwatchRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Color } from '@proyecto-viviana/solid-stately'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SwatchPickerSize = 'xs' | 'sm' | 'md' | 'lg' | 'XS' | 'S' | 'M' | 'L'\nexport type SwatchPickerDensity = 'compact' | 'regular' | 'spacious'\nexport type SwatchPickerRounding = 'none' | 'default' | 'full'\n\nexport interface ColorSwatchPickerProps extends Omit<HeadlessColorSwatchPickerProps, 'class' | 'style'> {\n /** The size of the swatches. @default 'md' */\n size?: SwatchPickerSize\n /** The gap between swatches. @default 'regular' */\n density?: SwatchPickerDensity\n /** The corner rounding of swatches. @default 'none' */\n rounding?: SwatchPickerRounding\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface ColorSwatchPickerItemProps extends Omit<HeadlessColorSwatchPickerItemProps, 'class' | 'style'> {\n /** The color value for this swatch. */\n color: Color | string\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// CONTEXT\n// ============================================\n\ninterface SwatchPickerContextValue {\n size: 'xs' | 'sm' | 'md' | 'lg'\n rounding: SwatchPickerRounding\n}\n\nconst SwatchPickerContext = createContext<SwatchPickerContextValue>({\n size: 'md',\n rounding: 'none',\n})\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeMap: Record<'xs' | 'sm' | 'md' | 'lg', string> = {\n xs: 'w-5 h-5',\n sm: 'w-6 h-6',\n md: 'w-8 h-8',\n lg: 'w-10 h-10',\n}\n\nconst densityMap: Record<SwatchPickerDensity, string> = {\n compact: 'gap-1',\n regular: 'gap-2',\n spacious: 'gap-4',\n}\n\nconst roundingMap: Record<SwatchPickerRounding, string> = {\n none: 'rounded-none',\n default: 'rounded',\n full: 'rounded-full',\n}\n\n// ============================================\n// COMPONENTS\n// ============================================\n\n/**\n * A ColorSwatchPicker displays a list of color swatches and allows a user to select one.\n */\nexport function ColorSwatchPicker(props: ColorSwatchPickerProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'density',\n 'rounding',\n 'class',\n ])\n\n const normalizeSize = (size: SwatchPickerSize | undefined): 'xs' | 'sm' | 'md' | 'lg' => {\n switch (size) {\n case 'XS':\n return 'xs'\n case 'S':\n return 'sm'\n case 'M':\n return 'md'\n case 'L':\n return 'lg'\n default:\n return size ?? 'md'\n }\n }\n\n const size = () => normalizeSize(local.size)\n const density = () => local.density ?? 'regular'\n const rounding = () => local.rounding ?? 'none'\n\n const contextValue = createMemo((): SwatchPickerContextValue => ({\n size: size(),\n rounding: rounding(),\n }))\n\n return (\n <SwatchPickerContext.Provider value={contextValue()}>\n <HeadlessColorSwatchPicker\n {...headlessProps}\n class={`flex flex-wrap ${densityMap[density()]} ${local.class ?? ''}`}\n />\n </SwatchPickerContext.Provider>\n )\n}\n\n/**\n * An item within a ColorSwatchPicker that wraps a color swatch with selection state.\n */\nexport function ColorSwatchPickerItem(props: ColorSwatchPickerItemProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['color', 'class'])\n const context = useContext(SwatchPickerContext)\n\n const sizeClass = () => sizeMap[context.size]\n const roundingClass = () => roundingMap[context.rounding]\n\n return (\n <HeadlessColorSwatchPickerItem\n {...headlessProps}\n color={local.color}\n class={`\n relative inline-flex cursor-pointer\n outline-none transition-all duration-150\n focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2\n ${local.class ?? ''}\n `}\n >\n <HeadlessColorSwatch\n color={local.color}\n class={(_renderProps: ColorSwatchRenderProps) => {\n const base = `${sizeClass()} ${roundingClass()} border border-bg-300 shadow-sm`\n return base\n }}\n />\n <div\n aria-hidden=\"true\"\n class={`\n absolute inset-0 pointer-events-none opacity-0 transition-opacity\n ${roundingClass()}\n ring-2 ring-accent ring-offset-2 ring-offset-bg-400\n [[data-selected]_&]:opacity-100\n `}\n />\n </HeadlessColorSwatchPickerItem>\n )\n}\n","/**\n * Landmark component for proyecto-viviana-silapse\n *\n * Styled landmark component built on top of solidaria-components.\n * Landmarks help screen reader users navigate between major sections of a page.\n * Press F6 to cycle through landmarks, or Shift+F6 to go backwards.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js'\nimport {\n Landmark as HeadlessLandmark,\n useLandmarkController,\n type LandmarkProps as HeadlessLandmarkProps,\n type AriaLandmarkRole,\n type LandmarkController,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface LandmarkProps extends Omit<HeadlessLandmarkProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Whether to show a visual indicator (for development). */\n showLabel?: boolean\n}\n\nexport type { AriaLandmarkRole, LandmarkController }\n\n// ============================================\n// STYLES\n// ============================================\n\nconst roleLabels: Record<AriaLandmarkRole, string> = {\n main: 'Main',\n navigation: 'Navigation',\n search: 'Search',\n banner: 'Banner',\n contentinfo: 'Footer',\n complementary: 'Aside',\n form: 'Form',\n region: 'Region',\n}\n\nconst roleColors: Record<AriaLandmarkRole, string> = {\n main: 'bg-accent/10 border-accent-300',\n navigation: 'bg-primary-500/10 border-primary-400',\n search: 'bg-warning-400/10 border-warning-400',\n banner: 'bg-success-400/10 border-success-400',\n contentinfo: 'bg-danger-400/10 border-danger-400',\n complementary: 'bg-primary-300/10 border-primary-300',\n form: 'bg-accent-200/10 border-accent-200',\n region: 'bg-bg-200/50 border-bg-300',\n}\n\n// ============================================\n// LANDMARK COMPONENT\n// ============================================\n\n/**\n * A landmark is a region of the page that helps screen reader users navigate.\n * Press F6 to cycle through landmarks, or Shift+F6 to go backwards.\n *\n * @example\n * ```tsx\n * // Main content area\n * <Landmark role=\"main\" aria-label=\"Main content\">\n * <h1>Welcome</h1>\n * <p>Page content here...</p>\n * </Landmark>\n *\n * // Navigation\n * <Landmark role=\"navigation\" aria-label=\"Primary navigation\">\n * <nav>...</nav>\n * </Landmark>\n *\n * // With development label visible\n * <Landmark role=\"main\" aria-label=\"Main content\" showLabel>\n * ...\n * </Landmark>\n * ```\n */\nexport function Landmark(props: LandmarkProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'showLabel'])\n const customClass = local.class ?? ''\n\n const role = () => headlessProps.role\n\n const getClassName = (): string => {\n const base = 'relative'\n const debugClass = local.showLabel\n ? `border-2 border-dashed ${roleColors[role()]}`\n : ''\n return [base, debugClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessLandmark {...headlessProps} class={getClassName()}>\n <Show when={local.showLabel}>\n <div\n class={`absolute -top-3 left-2 px-2 py-0.5 text-xs font-medium rounded ${roleColors[role()]} text-primary-200`}\n >\n {roleLabels[role()]}\n <Show when={headlessProps['aria-label']}>\n <span class=\"text-primary-400\"> - {headlessProps['aria-label']}</span>\n </Show>\n </div>\n </Show>\n {props.children}\n </HeadlessLandmark>\n )\n}\n\n// ============================================\n// SKIP LINK COMPONENT\n// ============================================\n\nexport interface SkipLinkProps {\n /** The ID of the element to skip to (usually the main landmark). */\n href: string\n /** The text to display in the skip link. */\n children?: JSX.Element\n /** Additional CSS class name. */\n class?: string\n}\n\n/**\n * A skip link allows keyboard users to bypass repetitive navigation and jump directly to main content.\n * The link is visually hidden until focused.\n *\n * @example\n * ```tsx\n * <SkipLink href=\"#main-content\">Skip to main content</SkipLink>\n *\n * <Landmark role=\"navigation\">...</Landmark>\n *\n * <Landmark role=\"main\" id=\"main-content\">\n * ...\n * </Landmark>\n * ```\n */\nexport function SkipLink(props: SkipLinkProps): JSX.Element {\n const customClass = props.class ?? ''\n\n const className = [\n // Visually hidden by default\n 'absolute left-0 top-0 -translate-y-full',\n // Show when focused\n 'focus:translate-y-0',\n // Styling\n 'z-50 px-4 py-2 bg-accent text-bg-400 font-medium rounded-br-lg',\n 'transition-transform duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-accent-300 focus:ring-offset-2',\n customClass,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <a href={props.href} class={className}>\n {props.children ?? 'Skip to main content'}\n </a>\n )\n}\n\n// ============================================\n// LANDMARK NAVIGATOR COMPONENT\n// ============================================\n\nexport interface LandmarkNavigatorProps {\n /** Additional CSS class name. */\n class?: string\n /** Whether to show the navigator (for development/accessibility testing). */\n isVisible?: boolean\n}\n\n/**\n * A floating navigator for landmarks, useful for development and accessibility testing.\n * Provides buttons to navigate between landmarks programmatically.\n *\n * @example\n * ```tsx\n * // Show in development only\n * <LandmarkNavigator isVisible={import.meta.env.DEV} />\n * ```\n */\nexport function LandmarkNavigator(props: LandmarkNavigatorProps): JSX.Element {\n const controller = useLandmarkController()\n\n return (\n <Show when={props.isVisible}>\n <div\n class={`fixed bottom-4 right-4 z-50 flex flex-col gap-2 p-3 bg-bg-400 border border-bg-300 rounded-lg shadow-lg ${props.class ?? ''}`}\n >\n <span class=\"text-xs font-medium text-primary-400 uppercase tracking-wider\">\n Landmarks (F6)\n </span>\n <div class=\"flex gap-1\">\n <button\n type=\"button\"\n onClick={() => controller.focusPrevious()}\n class=\"px-2 py-1 text-sm bg-bg-300 hover:bg-bg-200 text-primary-200 rounded transition-colors\"\n title=\"Previous landmark (Shift+F6)\"\n >\n ←\n </button>\n <button\n type=\"button\"\n onClick={() => controller.focusMain()}\n class=\"px-3 py-1 text-sm bg-accent hover:bg-accent-200 text-white rounded transition-colors\"\n title=\"Go to main content\"\n >\n Main\n </button>\n <button\n type=\"button\"\n onClick={() => controller.focusNext()}\n class=\"px-2 py-1 text-sm bg-bg-300 hover:bg-bg-200 text-primary-200 rounded transition-colors\"\n title=\"Next landmark (F6)\"\n >\n →\n </button>\n </div>\n </div>\n </Show>\n )\n}\n\n// Export controller hook for convenience\nexport { useLandmarkController }\n","/**\n * View component for proyecto-viviana-silapse.\n *\n * Styling-only container primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface ViewProps extends JSX.HTMLAttributes<HTMLDivElement> {\n class?: string;\n}\n\nexport function View(props: ViewProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <div\n {...domProps}\n class={`vui-view ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n\n// Sub-component re-exports\nexport { Content, ViewHeader, ViewFooter } from './Content';\nexport type { ContentProps, ViewHeaderProps, ViewFooterProps } from './Content';\n\n","/**\n * Content/Header/Footer view slot components for proyecto-viviana-silapse\n *\n * Simple styled slot components for composing dialog, card, and panel layouts.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// CONTENT\n// ============================================\n\nexport interface ContentProps {\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n/**\n * A content slot component for dialog or panel body.\n */\nexport function Content(props: ContentProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class', 'children']);\n return (\n <div {...rest} class={`text-primary-200 text-sm ${local.class ?? ''}`}>\n {local.children}\n </div>\n );\n}\n\n// ============================================\n// HEADER\n// ============================================\n\nexport interface ViewHeaderProps {\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n/**\n * A header slot component.\n */\nexport function ViewHeader(props: ViewHeaderProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class', 'children']);\n return (\n <header {...rest} class={`text-primary-100 font-semibold text-lg pb-3 border-b border-primary-700 ${local.class ?? ''}`}>\n {local.children}\n </header>\n );\n}\n\n// ============================================\n// FOOTER\n// ============================================\n\nexport interface ViewFooterProps {\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n/**\n * A footer slot component.\n */\nexport function ViewFooter(props: ViewFooterProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class', 'children']);\n return (\n <footer {...rest} class={`pt-3 border-t border-primary-700 flex justify-end gap-3 ${local.class ?? ''}`}>\n {local.children}\n </footer>\n );\n}\n","/**\n * Well component for proyecto-viviana-silapse.\n *\n * Styling-only emphasized container primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface WellProps extends JSX.HTMLAttributes<HTMLDivElement> {\n class?: string;\n}\n\nexport function Well(props: WellProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <div\n {...domProps}\n class={`rounded-lg border border-primary-600 bg-bg-300 p-4 ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n\n","/**\n * Card component for proyecto-viviana-silapse.\n *\n * Styling-only surface container primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {\n class?: string;\n}\n\nexport function Card(props: CardProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <div\n {...domProps}\n class={`rounded-xl border border-primary-600 bg-bg-300 p-4 ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n\n","/**\n * Image component for proyecto-viviana-silapse.\n *\n * Styling-only wrapper for semantic images.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface ImageProps extends JSX.ImgHTMLAttributes<HTMLImageElement> {\n class?: string;\n}\n\nexport function Image(props: ImageProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class']);\n return (\n <img\n {...domProps}\n class={`max-w-full h-auto ${local.class ?? ''}`}\n />\n );\n}\n\n","import { JSX, splitProps } from 'solid-js'\n\nexport interface PageLayoutProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Content of the page */\n children: JSX.Element\n /** Add padding-top to account for fixed header (use for non-landing pages) */\n withHeader?: boolean\n}\n\n/**\n * PageLayout provides consistent page structure with proper background and font styling.\n * Use this as the root wrapper for all pages.\n */\nexport function PageLayout(props: PageLayoutProps) {\n const [local, rest] = splitProps(props, ['class', 'withHeader'])\n\n const classes = () => {\n const base = 'vui-page'\n const header = local.withHeader ? 'vui-page--with-header' : ''\n const custom = local.class ?? ''\n return [base, header, custom].filter(Boolean).join(' ')\n }\n\n return (\n <div class={classes()} {...rest}>\n {props.children}\n </div>\n )\n}\n","/**\n * Flex component for proyecto-viviana-silapse\n *\n * A styled flex container with gap, direction, wrap, align, and justify props.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface FlexProps {\n /** The flex direction. @default 'row' */\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\n /** The gap between items. Accepts Tailwind gap values. @default '0' */\n gap?: string | number;\n /** Whether items should wrap. @default false */\n wrap?: boolean | 'wrap' | 'nowrap' | 'wrap-reverse';\n /** The alignment of items. */\n alignItems?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n /** The justification of items. */\n justifyContent?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n /** Whether the flex container is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n// ============================================\n// HELPERS\n// ============================================\n\nconst directionMap: Record<string, string> = {\n 'row': 'flex-row',\n 'column': 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n};\n\nconst alignMap: Record<string, string> = {\n 'start': 'items-start',\n 'center': 'items-center',\n 'end': 'items-end',\n 'stretch': 'items-stretch',\n 'baseline': 'items-baseline',\n};\n\nconst justifyMap: Record<string, string> = {\n 'start': 'justify-start',\n 'center': 'justify-center',\n 'end': 'justify-end',\n 'between': 'justify-between',\n 'around': 'justify-around',\n 'evenly': 'justify-evenly',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A flex container layout component.\n */\nexport function Flex(props: FlexProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'direction', 'gap', 'wrap', 'alignItems', 'justifyContent', 'inline', 'class', 'children',\n ]);\n\n const classes = (): string => {\n const parts: string[] = [local.inline ? 'inline-flex' : 'flex'];\n\n if (local.direction) parts.push(directionMap[local.direction] ?? 'flex-row');\n if (local.gap !== undefined) {\n parts.push(typeof local.gap === 'number' ? `gap-${local.gap}` : `gap-${local.gap}`);\n }\n if (local.wrap) {\n parts.push(local.wrap === true || local.wrap === 'wrap' ? 'flex-wrap' : local.wrap === 'wrap-reverse' ? 'flex-wrap-reverse' : 'flex-nowrap');\n }\n if (local.alignItems) parts.push(alignMap[local.alignItems] ?? '');\n if (local.justifyContent) parts.push(justifyMap[local.justifyContent] ?? '');\n if (local.class) parts.push(local.class);\n\n return parts.filter(Boolean).join(' ');\n };\n\n return (\n <div {...rest} class={classes()}>\n {local.children}\n </div>\n );\n}\n","/**\n * Grid component for proyecto-viviana-silapse\n *\n * A styled CSS grid container with columns, rows, gap, and areas props.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface GridProps {\n /** The number of columns, or a grid-template-columns value. */\n columns?: number | string;\n /** The number of rows, or a grid-template-rows value. */\n rows?: number | string;\n /** The gap between items. Accepts Tailwind gap values. */\n gap?: string | number;\n /** The column gap. */\n columnGap?: string | number;\n /** The row gap. */\n rowGap?: string | number;\n /** Named grid areas (grid-template-areas). */\n areas?: string[];\n /** The alignment of items. */\n alignItems?: 'start' | 'center' | 'end' | 'stretch';\n /** The justification of items. */\n justifyItems?: 'start' | 'center' | 'end' | 'stretch';\n /** Whether the grid is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n /** The content. */\n children?: JSX.Element;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A CSS Grid layout component.\n */\nexport function Grid(props: GridProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'columns', 'rows', 'gap', 'columnGap', 'rowGap', 'areas',\n 'alignItems', 'justifyItems', 'inline', 'class', 'style', 'children',\n ]);\n\n const gridStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = { ...(local.style ?? {}) };\n\n if (local.columns !== undefined) {\n s['grid-template-columns'] = typeof local.columns === 'number'\n ? `repeat(${local.columns}, 1fr)`\n : local.columns;\n }\n if (local.rows !== undefined) {\n s['grid-template-rows'] = typeof local.rows === 'number'\n ? `repeat(${local.rows}, 1fr)`\n : local.rows;\n }\n if (local.areas) {\n s['grid-template-areas'] = local.areas.map(a => `\"${a}\"`).join(' ');\n }\n\n return s;\n };\n\n const classes = (): string => {\n const parts: string[] = [local.inline ? 'inline-grid' : 'grid'];\n\n if (local.gap !== undefined) parts.push(`gap-${local.gap}`);\n if (local.columnGap !== undefined) parts.push(`gap-x-${local.columnGap}`);\n if (local.rowGap !== undefined) parts.push(`gap-y-${local.rowGap}`);\n\n if (local.alignItems) {\n const map: Record<string, string> = { start: 'items-start', center: 'items-center', end: 'items-end', stretch: 'items-stretch' };\n parts.push(map[local.alignItems] ?? '');\n }\n if (local.justifyItems) {\n const map: Record<string, string> = { start: 'justify-items-start', center: 'justify-items-center', end: 'justify-items-end', stretch: 'justify-items-stretch' };\n parts.push(map[local.justifyItems] ?? '');\n }\n if (local.class) parts.push(local.class);\n\n return parts.filter(Boolean).join(' ');\n };\n\n return (\n <div {...rest} class={classes()} style={gridStyle()}>\n {local.children}\n </div>\n );\n}\n","/**\n * CSS utility functions for proyecto-viviana-silapse\n *\n * Helper functions for common CSS grid/layout values.\n */\n\n/**\n * Creates a CSS `fit-content()` value.\n * @param value - The max content size (e.g., '200px', '50%')\n */\nexport function fitContent(value: string): string {\n return `fit-content(${value})`;\n}\n\n/**\n * Creates a CSS `minmax()` value.\n * @param min - The minimum size\n * @param max - The maximum size\n */\nexport function minmax(min: string, max: string): string {\n return `minmax(${min}, ${max})`;\n}\n\n/**\n * Creates a CSS `repeat()` value.\n * @param count - The repetition count or 'auto-fill' / 'auto-fit'\n * @param track - The track definition\n */\nexport function repeat(count: number | 'auto-fill' | 'auto-fit', track: string): string {\n return `repeat(${count}, ${track})`;\n}\n","/**\n * IllustratedMessage component for proyecto-viviana-silapse.\n *\n * Styling-only empty-state/message primitive.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js';\n\nexport interface IllustratedMessageProps extends JSX.HTMLAttributes<HTMLDivElement> {\n illustration?: JSX.Element;\n heading?: JSX.Element;\n description?: JSX.Element;\n class?: string;\n}\n\nexport function IllustratedMessage(props: IllustratedMessageProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\n 'illustration',\n 'heading',\n 'description',\n 'class',\n 'children',\n ]);\n\n return (\n <div\n {...domProps}\n class={`flex flex-col items-center justify-center gap-3 rounded-lg border border-primary-600 bg-bg-300 p-6 text-center ${local.class ?? ''}`}\n >\n <Show when={local.illustration}>\n <div class=\"text-primary-300\">{local.illustration}</div>\n </Show>\n <Show when={local.heading}>\n <h3 class=\"text-lg font-semibold text-primary-100\">{local.heading}</h3>\n </Show>\n <Show when={local.description}>\n <p class=\"text-sm text-primary-300\">{local.description}</p>\n </Show>\n <Show when={local.children}>\n <div class=\"mt-1\">{local.children}</div>\n </Show>\n </div>\n );\n}\n","/**\n * StepList component for proyecto-viviana-silapse.\n *\n * Styling-only ordered-step composition primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface StepListProps extends JSX.HTMLAttributes<HTMLOListElement> {\n class?: string;\n}\n\nexport interface StepProps extends JSX.HTMLAttributes<HTMLLIElement> {\n class?: string;\n}\n\nexport function StepList(props: StepListProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <ol\n {...domProps}\n class={`flex list-decimal flex-col gap-2 pl-5 text-primary-200 ${local.class ?? ''}`}\n >\n {local.children}\n </ol>\n );\n}\n\nexport function Step(props: StepProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <li\n {...domProps}\n class={`text-sm leading-6 ${local.class ?? ''}`}\n >\n {local.children}\n </li>\n );\n}\n\n","/**\n * Drag-and-drop module compatibility entrypoint for proyecto-viviana-silapse.\n */\n\nexport {\n DragAndDropContext,\n DropIndicator,\n DropIndicatorContext,\n useDndPersistedKeys,\n useRenderDropIndicator,\n useDragAndDrop,\n} from '@proyecto-viviana/solidaria-components';\nexport type {\n DragAndDropContextValue,\n DropIndicatorProps,\n DropIndicatorRenderProps,\n DropTargetDelegate,\n DragAndDropOptions,\n DragAndDropHooks,\n} from '@proyecto-viviana/solidaria-components';\n\nexport { DIRECTORY_DRAG_TYPE } from '@proyecto-viviana/solid-stately';\n\n","import { splitProps } from 'solid-js';\nimport type { JSX } from 'solid-js';\nimport {\n SharedElement as HeadlessSharedElement,\n SharedElementTransition as HeadlessSharedElementTransition,\n type SharedElementProps as HeadlessSharedElementProps,\n type SharedElementRenderProps,\n type SharedElementTransitionProps as HeadlessSharedElementTransitionProps,\n} from '@proyecto-viviana/solidaria-components';\n\nconst mergeClassName = (custom?: string) =>\n (_renderProps: SharedElementRenderProps) =>\n ['vui-shared-element', custom].filter(Boolean).join(' ');\n\nexport interface SharedElementProps\n extends Omit<HeadlessSharedElementProps, 'class' | 'style'> {\n class?: string;\n style?: JSX.CSSProperties;\n}\n\nexport function SharedElement(props: SharedElementProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class', 'style']);\n return (\n <HeadlessSharedElement\n {...rest}\n class={mergeClassName(local.class)}\n style={local.style}\n />\n );\n}\n\nexport function SharedElementTransition(\n props: HeadlessSharedElementTransitionProps\n): JSX.Element {\n return <HeadlessSharedElementTransition {...props} />;\n}\n\nexport type SharedElementTransitionProps = HeadlessSharedElementTransitionProps;\n","// ============================================\n// SPECTRUM-BASED COMPONENTS\n// ============================================\n\n// Button\nexport { Button } from './button';\nexport type { ButtonProps, ButtonVariant, ButtonStyle, StaticColor } from './button';\n\n// Badge\nexport { Badge } from './badge';\nexport type { BadgeProps, BadgeVariant, BadgeSize } from './badge';\n\n// Alert\nexport { Alert } from './alert';\nexport type { AlertProps, AlertVariant } from './alert';\n\n// InlineAlert\nexport { InlineAlert } from './inlinealert';\nexport type { InlineAlertProps, InlineAlertVariant } from './inlinealert';\n\n// Avatar\nexport { Avatar, AvatarGroup } from './avatar';\nexport type { AvatarProps, AvatarGroupProps, AvatarSize } from './avatar';\n\n// Switch\nexport { TabSwitch, ToggleSwitch, ToggleSwitch as Switch } from './switch';\nexport type { TabSwitchProps, ToggleSwitchProps, ToggleSwitchProps as SwitchProps, SwitchSize } from './switch';\n\n// Checkbox\nexport { Checkbox, CheckboxGroup } from './checkbox';\nexport type { CheckboxProps, CheckboxGroupProps, CheckboxSize } from './checkbox';\n\n// Radio\nexport { RadioGroup, Radio } from './radio';\nexport type { RadioGroupProps, RadioProps, RadioGroupOrientation, RadioGroupSize } from './radio';\n\n// Dialog\nexport { Dialog, DialogTrigger, DialogFooter } from './dialog';\nexport type { DialogProps, DialogTriggerProps, DialogFooterProps, DialogSize } from './dialog';\n\n// Icon\nexport { Icon, GitHubIcon } from './icon';\nexport type { IconProps, GitHubIconProps } from './icon';\n\n// Tooltip\nexport { Tooltip, TooltipTrigger, SimpleTooltip } from './tooltip';\nexport type { TooltipProps, TooltipTriggerProps, TooltipPlacement, TooltipVariant, SimpleTooltipProps } from './tooltip';\n\n// Overlays\nexport {\n Dialog as OverlayDialog,\n DialogTrigger as OverlayDialogTrigger,\n DialogFooter as OverlayDialogFooter,\n Popover as OverlayPopover,\n PopoverTrigger as OverlayPopoverTrigger,\n PopoverHeader as OverlayPopoverHeader,\n PopoverFooter as OverlayPopoverFooter,\n Tooltip as OverlayTooltip,\n TooltipTrigger as OverlayTooltipTrigger,\n SimpleTooltip as OverlaySimpleTooltip,\n} from './overlays';\nexport type {\n DialogProps as OverlayDialogProps,\n DialogTriggerProps as OverlayDialogTriggerProps,\n DialogFooterProps as OverlayDialogFooterProps,\n DialogSize as OverlayDialogSize,\n PopoverProps as OverlayPopoverProps,\n PopoverTriggerProps as OverlayPopoverTriggerProps,\n PopoverHeaderProps as OverlayPopoverHeaderProps,\n PopoverFooterProps as OverlayPopoverFooterProps,\n PopoverPlacement as OverlayPopoverPlacement,\n PopoverSize as OverlayPopoverSize,\n PopoverRenderProps as OverlayPopoverRenderProps,\n TooltipProps as OverlayTooltipProps,\n TooltipTriggerProps as OverlayTooltipTriggerProps,\n TooltipPlacement as OverlayTooltipPlacement,\n TooltipVariant as OverlayTooltipVariant,\n SimpleTooltipProps as OverlaySimpleTooltipProps,\n} from './overlays';\n\n// Popover\nexport { Popover, PopoverTrigger, PopoverHeader, PopoverFooter } from './popover';\nexport type { PopoverProps, PopoverTriggerProps, PopoverHeaderProps, PopoverFooterProps, PopoverPlacement, PopoverSize, PopoverRenderProps } from './popover';\n\n// TextField\nexport { TextField } from './textfield';\nexport type { TextFieldProps, TextFieldSize, TextFieldVariant } from './textfield';\n\n// TextArea\nexport { TextArea } from './textfield/TextArea';\nexport type { TextAreaProps, TextAreaSize, TextAreaVariant } from './textfield/TextArea';\n\n// Link\nexport { Link } from './link';\nexport type { LinkProps, LinkVariant } from './link';\n\n// ProgressBar\nexport { ProgressBar } from './progress-bar';\nexport type { ProgressBarProps, ProgressBarSize, ProgressBarVariant } from './progress-bar';\n\n// Progress\nexport { ProgressBar as Progress } from './progress';\nexport type { ProgressBarProps as ProgressProps, ProgressBarSize as ProgressSize, ProgressBarVariant as ProgressVariant } from './progress';\n\n// Separator\nexport { Separator } from './separator';\nexport type { SeparatorProps, SeparatorVariant, SeparatorSize } from './separator';\n\n// Divider\nexport { Divider } from './divider';\nexport type { DividerProps, DividerVariant, DividerSize } from './divider';\n\n// Text\nexport { Text } from './text';\nexport type { TextProps, TextVariant, TextSize } from './text';\n\n// Label\nexport { Label } from './label';\nexport type { LabelProps, LabelSize } from './label';\n\n// Form\nexport { Form, FieldError as FormFieldError } from './form';\nexport type { FormProps, FieldErrorProps } from './form';\n\n// Toolbar\nexport { Toolbar } from './toolbar';\nexport type { ToolbarProps, ToolbarSize, ToolbarVariant } from './toolbar';\n\n// ActionBar\nexport { ActionBar, ActionBarContainer } from './actionbar';\nexport type { ActionBarProps, ActionBarContainerProps } from './actionbar';\n\n// ActionGroup\nexport { ActionGroup } from './actiongroup';\nexport type { ActionGroupProps } from './actiongroup';\n\n// ButtonGroup\nexport { ButtonGroup } from './buttongroup';\nexport type { ButtonGroupProps } from './buttongroup';\n\n// Autocomplete\nexport { SearchAutocomplete } from './autocomplete';\nexport type { SearchAutocompleteProps, SearchAutocompleteItem, SearchAutocompleteSize } from './autocomplete';\n\n// Select\nexport { Select, SelectTrigger, SelectValue, SelectListBox, SelectOption } from './select';\nexport type { SelectProps, SelectTriggerProps, SelectValueProps, SelectListBoxProps, SelectOptionProps, SelectSize } from './select';\n\n// Picker\nexport { Picker, PickerTrigger, PickerValue, PickerListBox, PickerItem } from './picker';\nexport type {\n PickerProps,\n PickerTriggerProps,\n PickerValueProps,\n PickerListBoxProps,\n PickerItemProps,\n PickerSize,\n} from './picker';\n\n// Menu\nexport { Menu, MenuItem, MenuTrigger, MenuButton, MenuSeparator } from './menu';\nexport type { MenuProps, MenuItemProps, MenuTriggerProps, MenuButtonProps, MenuSeparatorProps, MenuSize } from './menu';\n\n// ListBox\nexport { ListBox, ListBoxOption } from './listbox';\nexport type { ListBoxProps, ListBoxOptionProps, ListBoxSize } from './listbox';\n\n// List\nexport { ListView, ListViewItem, ListViewSelectionCheckbox } from './list';\nexport type {\n ListViewProps,\n ListViewItemProps,\n ListViewSize,\n ListViewVariant,\n ListViewLayout,\n} from './list';\n\n// Tabs\nexport { Tabs, TabList, Tab, TabPanel } from './tabs';\nexport type { TabsProps, TabListProps, TabProps, TabPanelProps, TabsSize, TabsVariant, TabOrientation } from './tabs';\n\n// Breadcrumbs\nexport { Breadcrumbs, BreadcrumbItem } from './breadcrumbs';\nexport type { BreadcrumbsProps, BreadcrumbItemProps, BreadcrumbsSize, BreadcrumbsVariant } from './breadcrumbs';\n\n// NumberField\nexport { NumberField } from './numberfield';\nexport type { NumberFieldProps, NumberFieldSize, NumberFieldVariant } from './numberfield';\n\n// DropZone\nexport { DropZone } from './dropzone';\nexport type { DropZoneProps } from './dropzone';\n\n// FileTrigger\nexport { FileTrigger } from './filetrigger';\nexport type { FileTriggerProps } from './filetrigger';\n\n// SearchField\nexport { SearchField } from './searchfield';\nexport type { SearchFieldProps, SearchFieldSize, SearchFieldVariant } from './searchfield';\n\n// ContextualHelp\nexport { ContextualHelp } from './contextualhelp';\nexport type { ContextualHelpProps } from './contextualhelp';\n\n// Slider\nexport { Slider } from './slider';\nexport type { SliderProps, SliderSize, SliderVariant } from './slider';\n\n// ComboBox\nexport { ComboBox, ComboBoxInputGroup, ComboBoxInput, ComboBoxButton, ComboBoxListBox, ComboBoxOption, defaultContainsFilter } from './combobox';\nexport type { ComboBoxProps, ComboBoxInputProps, ComboBoxButtonProps, ComboBoxListBoxProps, ComboBoxOptionProps, ComboBoxSize, FilterFn, MenuTriggerAction } from './combobox';\n\n// Toast\nexport {\n Toast,\n ToastRegion,\n ToastProvider,\n ToastContext,\n addToast,\n toastSuccess,\n toastError,\n toastWarning,\n toastInfo,\n globalToastQueue,\n useToastContext,\n} from './toast';\nexport type {\n ToastProps,\n ToastRegionProps,\n ToastProviderProps,\n ToastPlacement,\n ToastVariant,\n ToastContent,\n ToastRenderProps,\n ToastRegionRenderProps,\n QueuedToast,\n ToastOptions,\n} from './toast';\n\n// Disclosure\nexport {\n Disclosure,\n DisclosureGroup,\n DisclosureTrigger,\n DisclosurePanel,\n} from './disclosure';\nexport type {\n DisclosureProps,\n DisclosureGroupProps,\n DisclosureTriggerProps,\n DisclosurePanelProps,\n DisclosureSize,\n DisclosureVariant,\n} from './disclosure';\n\n// Accordion\nexport {\n Accordion,\n AccordionItem,\n AccordionHeader,\n AccordionPanel,\n} from './accordion';\nexport type {\n AccordionProps,\n AccordionItemProps,\n AccordionHeaderProps,\n AccordionPanelProps,\n AccordionSize,\n AccordionVariant,\n} from './accordion';\n\n// Meter\nexport { Meter } from './meter';\nexport type { MeterProps, MeterSize, MeterVariant } from './meter';\n\n// TagGroup\nexport { TagGroup } from './tag-group';\nexport type { TagGroupProps, TagProps, TagGroupSize, TagGroupVariant } from './tag-group';\n\n// LabeledValue\nexport { LabeledValue } from './labeledvalue';\nexport type { LabeledValueProps, LabeledValueOrientation } from './labeledvalue';\n\n// StatusLight\nexport { StatusLight } from './statuslight';\nexport type { StatusLightProps, StatusLightSize, StatusLightVariant } from './statuslight';\n\n// Calendar\nexport { Calendar } from './calendar';\nexport type { CalendarProps, CalendarSize, CalendarDate, DateValue } from './calendar';\n\n// RangeCalendar\nexport { RangeCalendar } from './calendar/RangeCalendar';\nexport type { RangeCalendarProps, RangeCalendarSize, RangeValue } from './calendar/RangeCalendar';\n\n// DateField\nexport { DateField } from './calendar/DateField';\nexport type { DateFieldProps, DateFieldSize } from './calendar/DateField';\n\n// TimeField\nexport { TimeField } from './calendar/TimeField';\nexport type { TimeFieldProps, TimeFieldSize, TimeValue } from './calendar/TimeField';\n\n// DatePicker\nexport { DatePicker } from './calendar/DatePicker';\nexport type { DatePickerProps, DatePickerSize } from './calendar/DatePicker';\n\n// DateRangePicker\nexport { DateRangePicker } from './calendar/DateRangePicker';\nexport type { DateRangePickerProps, DateRangePickerSize } from './calendar/DateRangePicker';\n\n// Table\nexport {\n Table,\n TableHeader,\n TableColumn,\n TableBody,\n TableRow,\n TableCell,\n TableSelectionCheckbox,\n TableSelectAllCheckbox,\n} from './table';\nexport type {\n TableProps,\n TableHeaderProps,\n TableColumnProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n TableSize,\n TableVariant,\n} from './table';\n\n// GridList\nexport {\n GridList,\n GridListItem,\n GridListSelectionCheckbox,\n} from './gridlist';\nexport type {\n GridListProps,\n GridListItemProps,\n GridListSize,\n GridListVariant,\n GridListLayout,\n} from './gridlist';\n\n// Tree\nexport {\n Tree,\n TreeItem,\n TreeExpandButton,\n TreeSelectionCheckbox,\n} from './tree';\nexport type {\n TreeProps,\n TreeItemProps,\n TreeExpandButtonProps,\n TreeSize,\n TreeVariant,\n} from './tree';\n\n// Color\nexport {\n ColorSlider,\n ColorSliderTrack,\n ColorSliderThumb,\n ColorArea,\n ColorAreaGradient,\n ColorAreaThumb,\n ColorWheel,\n ColorWheelTrack,\n ColorWheelThumb,\n ColorField,\n ColorFieldInput,\n ColorSwatch,\n ColorPicker,\n} from './color';\nexport type {\n ColorSliderProps,\n ColorAreaProps,\n ColorWheelProps,\n ColorFieldProps,\n ColorSwatchProps,\n ColorPickerProps,\n ColorSize,\n} from './color';\n\n// ColorEditor\nexport { ColorEditor } from './color/ColorEditor';\nexport type { ColorEditorProps } from './color/ColorEditor';\n\n// ColorSwatchPicker\nexport { ColorSwatchPicker, ColorSwatchPickerItem } from './color/ColorSwatchPicker';\nexport type { ColorSwatchPickerProps, ColorSwatchPickerItemProps, SwatchPickerSize, SwatchPickerDensity, SwatchPickerRounding } from './color/ColorSwatchPicker';\n\n// Landmark\nexport {\n Landmark,\n SkipLink,\n LandmarkNavigator,\n useLandmarkController,\n} from './landmark';\nexport type {\n LandmarkProps,\n SkipLinkProps,\n LandmarkNavigatorProps,\n AriaLandmarkRole,\n LandmarkController,\n} from './landmark';\n\n// View\nexport { View } from './view';\nexport type { ViewProps } from './view';\n\n// Well\nexport { Well } from './well';\nexport type { WellProps } from './well';\n\n// Card\nexport { Card } from './card';\nexport type { CardProps } from './card';\n\n// Image\nexport { Image } from './image';\nexport type { ImageProps } from './image';\n\n// Layout\nexport { Layout } from './layout';\nexport type { LayoutProps } from './layout';\n\n// IllustratedMessage\nexport { IllustratedMessage } from './illustratedmessage';\nexport type { IllustratedMessageProps } from './illustratedmessage';\n\n// StepList\nexport { StepList, Step } from './steplist';\nexport type { StepListProps, StepProps } from './steplist';\n\n// Drag and Drop\nexport {\n DragAndDropContext,\n DropIndicator,\n DropIndicatorContext,\n useDndPersistedKeys,\n useRenderDropIndicator,\n useDragAndDrop,\n} from './dnd';\nexport type {\n DragAndDropContextValue,\n DropIndicatorProps,\n DropIndicatorRenderProps,\n DropTargetDelegate,\n DragAndDropOptions,\n DragAndDropHooks,\n} from './dnd';\n\n// Shared Element\nexport { SharedElement, SharedElementTransition } from './shared-element';\nexport type { SharedElementProps, SharedElementTransitionProps } from './shared-element';\n\n// Heading\nexport { Heading } from './text/Heading';\nexport type { HeadingProps, HeadingLevel } from './text/Heading';\n\n// Keyboard\nexport { StyledKeyboard } from './text/Keyboard';\nexport type { KeyboardProps as StyledKeyboardProps } from './text/Keyboard';\n\n// ToggleButton\nexport { ToggleButton } from './button/ToggleButton';\nexport type { ToggleButtonProps, ToggleButtonSize } from './button/ToggleButton';\n\n// ActionButton\nexport { ActionButton } from './button/ActionButton';\nexport type { ActionButtonProps, ActionButtonSize } from './button/ActionButton';\n\n// ClearButton\nexport { ClearButton } from './button/ClearButton';\nexport type { ClearButtonProps, ClearButtonSize } from './button/ClearButton';\n\n// FieldButton\nexport { FieldButton } from './button/FieldButton';\nexport type { FieldButtonProps } from './button/FieldButton';\n\n// LogicButton\nexport { LogicButton } from './button/LogicButton';\nexport type { LogicButtonProps } from './button/LogicButton';\n\n// AlertDialog\nexport { AlertDialog } from './dialog/AlertDialog';\nexport type { AlertDialogProps, AlertDialogVariant } from './dialog/AlertDialog';\n\n// ActionMenu\nexport { ActionMenu } from './menu/ActionMenu';\nexport type { ActionMenuProps } from './menu/ActionMenu';\n\n// SubmenuTrigger\nexport { SubmenuTrigger } from './menu/SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './menu/SubmenuTrigger';\n\n// ContextualHelpTrigger\nexport { ContextualHelpTrigger } from './menu/ContextualHelpTrigger';\nexport type { ContextualHelpTriggerProps } from './menu/ContextualHelpTrigger';\n\n// ProgressCircle\nexport { ProgressCircle } from './progress/ProgressCircle';\nexport type { ProgressCircleProps, ProgressCircleSize, ProgressCircleVariant } from './progress/ProgressCircle';\n\n// RangeSlider\nexport { RangeSlider } from './slider/RangeSlider';\nexport type { RangeSliderProps, RangeSliderSize } from './slider/RangeSlider';\n\n// Field\nexport { Field } from './form/Field';\nexport type { FieldProps, FieldSize } from './form/Field';\n\n// HelpText\nexport { HelpText } from './form/HelpText';\nexport type { HelpTextProps } from './form/HelpText';\n\n// StyledModal\nexport { StyledModal } from './overlays/Modal';\nexport type { StyledModalProps, ModalSize } from './overlays/Modal';\n\n// Overlay\nexport { Overlay } from './overlays/Overlay';\nexport type { OverlayProps } from './overlays/Overlay';\n\n// Tray\nexport { Tray } from './overlays/Tray';\nexport type { TrayProps } from './overlays/Tray';\n\n// OpenTransition\nexport { OpenTransition } from './overlays/OpenTransition';\nexport type { OpenTransitionProps } from './overlays/OpenTransition';\n\n// View Slots\nexport { Content, ViewHeader, ViewFooter } from './view/Content';\nexport type { ContentProps, ViewHeaderProps, ViewFooterProps } from './view/Content';\n\n// Illustration\nexport { Illustration } from './icon/Illustration';\nexport type { IllustrationProps, IllustrationSize } from './icon/Illustration';\n\n// UIIcon\nexport { UIIcon } from './icon/UIIcon';\nexport type { UIIconProps, UIIconSize } from './icon/UIIcon';\n\n// Virtualizer\nexport {\n Virtualizer,\n VirtualizerContext,\n useVirtualizerContext,\n ListLayout,\n GridLayout,\n WaterfallLayout,\n TableLayout,\n} from '@proyecto-viviana/solidaria-components';\nexport type {\n VirtualizerProps,\n VirtualizerLayout,\n VirtualizerLayoutClass,\n VirtualizerContextValue,\n VirtualizerVisibleRange,\n VirtualizerDropTarget,\n VirtualizerDropOperationResolver,\n VirtualizerDropTargetResolver,\n VirtualizerRangeContext,\n DefaultVirtualizerLayoutOptions,\n GridLayoutOptions,\n WaterfallLayoutOptions,\n} from '@proyecto-viviana/solidaria-components';\n\n// Flex Layout\nexport { Flex } from './layout/Flex';\nexport type { FlexProps } from './layout/Flex';\n\n// Grid Layout\nexport { Grid } from './layout/Grid';\nexport type { GridProps } from './layout/Grid';\n\n// CSS Utilities\nexport { fitContent, minmax, repeat } from './layout/css-utils';\n\n// Story utilities\nexport { cx } from './story-utils';\nexport { StoryErrorBoundary } from './story-utils/ErrorBoundary';\nexport type { StoryErrorBoundaryProps } from './story-utils/ErrorBoundary';\nexport { generatePowerset } from './story-utils/generatePowerset';\nexport type { PropValues, PowersetItem } from './story-utils/generatePowerset';\n\n// Style macro compatibility\nexport { s1 } from './style-macro-s1';\n\n// Provider\nexport { Provider, useProvider, useProviderProps, useTheme, ThemeContext } from './provider';\nexport type {\n ProviderProps,\n ProviderContextValue,\n ProviderInheritedProps,\n ThemeContextValue,\n ColorScheme,\n Scale,\n ValidationState,\n} from './provider';\n\n// Theme compatibility\nexport { themeExpressClass } from './theme-express';\nexport { themeLightClass, lightTheme } from './theme-light';\nexport { themeDarkClass, darkTheme } from './theme-dark';\nexport { themeDefaultClass, defaultTheme } from './theme-default';\nexport type { Theme } from './theme/types';\n\n// ============================================\n// CUSTOM COMPONENTS\n// ============================================\n\n// Chip\nexport { Chip } from './custom/chip';\nexport type { ChipProps, ChipVariant } from './custom/chip';\n\n// NavHeader\nexport { NavHeader } from './custom/nav-header';\nexport type { NavHeaderProps } from './custom/nav-header';\n\n// Header\nexport { Header } from './custom/header';\nexport type { HeaderProps } from './custom/header';\n\n// LateralNav\nexport { LateralNav, NavItem, NavLink, NavSection } from './custom/lateral-nav';\nexport type { LateralNavProps, NavItemProps, NavLinkProps, NavSectionProps } from './custom/lateral-nav';\n\n// TimelineItem\nexport { TimelineItem } from './custom/timeline-item';\nexport type { TimelineItemProps, TimelineEventType } from './custom/timeline-item';\n\n// Conversation\nexport { Conversation, ConversationPreview, ConversationBubble } from './custom/conversation';\nexport type { ConversationProps, ConversationPreviewProps, ConversationBubbleProps, Message } from './custom/conversation';\n\n// ProfileCard\nexport { ProfileCard } from './custom/profile-card';\nexport type { ProfileCardProps } from './custom/profile-card';\n\n// EventCard\nexport { EventCard, EventListItem } from './custom/event-card';\nexport type { EventCardProps, EventListItemProps } from './custom/event-card';\n\n// CalendarCard\nexport { CalendarCard } from './custom/calendar-card';\nexport type { CalendarCardProps } from './custom/calendar-card';\n\n// Logo\nexport { Logo } from './custom/logo';\nexport type { LogoProps, LogoSize } from './custom/logo';\n\n// ProjectCard\nexport { ProjectCard } from './custom/project-card';\nexport type { ProjectCardProps, ProjectCardSize } from './custom/project-card';\n\n// PageLayout\nexport { PageLayout } from './custom/page-layout';\nexport type { PageLayoutProps } from './custom/page-layout';\n","/**\n * ErrorBoundary component for proyecto-viviana-silapse\n *\n * A styled error boundary for use in stories and development.\n */\n\nimport { type JSX, ErrorBoundary as SolidErrorBoundary } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface StoryErrorBoundaryProps {\n /** The content to render. */\n children?: JSX.Element;\n /** Custom fallback component. */\n fallback?: (err: Error, reset: () => void) => JSX.Element;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled error boundary that catches and displays errors in stories.\n */\nexport function StoryErrorBoundary(props: StoryErrorBoundaryProps): JSX.Element {\n return (\n <SolidErrorBoundary\n fallback={(err: Error, reset: () => void) =>\n props.fallback\n ? props.fallback(err, reset)\n : (\n <div class=\"rounded-lg border-2 border-red-400 bg-red-400/10 p-4\">\n <h3 class=\"text-red-400 font-semibold mb-2\">Error</h3>\n <pre class=\"text-sm text-red-300 whitespace-pre-wrap mb-3\">{err.message}</pre>\n <button\n class=\"px-3 py-1 text-sm rounded bg-red-400 text-white hover:bg-red-500 transition-colors\"\n onClick={reset}\n >\n Retry\n </button>\n </div>\n )\n }\n >\n {props.children}\n </SolidErrorBoundary>\n );\n}\n","/**\n * generatePowerset - Prop combination generator for component testing\n *\n * Generates all combinations of prop values for visual regression testing.\n */\n\nexport type PropValues<T> = {\n [K in keyof T]?: T[K][];\n};\n\nexport interface PowersetItem<T> {\n /** Human-readable label for this combination. */\n label: string;\n /** The prop values for this combination. */\n props: Partial<T>;\n}\n\n/**\n * Generates all combinations of the given prop values.\n *\n * @param propValues - An object mapping prop names to arrays of possible values.\n * @returns An array of all prop combinations.\n *\n * @example\n * ```ts\n * const combos = generatePowerset({\n * size: ['sm', 'md', 'lg'],\n * variant: ['primary', 'secondary'],\n * isDisabled: [false, true],\n * });\n * // Returns 12 combinations (3 * 2 * 2)\n * ```\n */\nexport function generatePowerset<T extends Record<string, unknown>>(\n propValues: PropValues<T>,\n): PowersetItem<T>[] {\n const keys = Object.keys(propValues) as (keyof T)[];\n const result: PowersetItem<T>[] = [];\n\n function generate(index: number, current: Partial<T>, labels: string[]): void {\n if (index === keys.length) {\n result.push({\n label: labels.join(', '),\n props: { ...current },\n });\n return;\n }\n\n const key = keys[index];\n const values = propValues[key]!;\n\n for (const value of values) {\n generate(\n index + 1,\n { ...current, [key]: value },\n [...labels, `${String(key)}=${String(value)}`],\n );\n }\n }\n\n generate(0, {}, []);\n return result;\n}\n","/**\n * Story utility helpers for local component stories.\n */\n\nexport function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n\nexport { StoryErrorBoundary } from './ErrorBoundary';\nexport type { StoryErrorBoundaryProps } from './ErrorBoundary';\nexport { generatePowerset } from './generatePowerset';\nexport type { PropValues, PowersetItem } from './generatePowerset';\n\n","/**\n * Lightweight style-macro compatibility helpers.\n */\n\nexport function s1(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n\n","/**\n * Theme Express compatibility module.\n */\n\nexport const themeExpressClass = 'vui-theme-express';\n\n","import { type JSX, Show } from 'solid-js'\nimport { Button as HeadlessButton } from '@proyecto-viviana/solidaria-components'\n\nexport type ChipVariant = 'primary' | 'secondary' | 'accent' | 'outline'\n\nexport interface ChipProps {\n text: string\n variant?: ChipVariant\n onClick?: () => void\n /**\n * Icon to display before the text.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n * Or pass a simple string for text-based icons: `icon=\"★\"`\n */\n icon?: string | (() => JSX.Element)\n class?: string\n}\n\nconst variantStyles: Record<ChipVariant, string> = {\n primary: 'bg-primary-700 text-primary-100 shadow-primary-chip',\n secondary: 'bg-primary-700 text-primary-100 hover:bg-primary-600',\n accent: 'bg-accent text-bg-400',\n outline: 'bg-transparent border border-primary-500 text-primary-300',\n}\n\nexport function Chip(props: ChipProps) {\n const variant = () => props.variant ?? 'primary'\n\n const renderIcon = () => {\n const icon = props.icon\n if (!icon) return null\n if (typeof icon === 'string') return icon\n return icon()\n }\n\n return (\n <HeadlessButton\n class={`flex justify-center items-center h-6 w-auto rounded-full px-4 py-1 font-medium text-sm tracking-wide transition-colors ${variantStyles[variant()]} ${props.class ?? ''}`}\n onPress={() => props.onClick?.()}\n >\n <Show when={props.icon}>\n <span class=\"mr-1.5\">{renderIcon()}</span>\n </Show>\n <span>{props.text}</span>\n </HeadlessButton>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\nimport { Button as HeadlessButton } from '@proyecto-viviana/solidaria-components'\n\nexport interface NavHeaderProps {\n logo?: string\n logoAlt?: string\n logoText?: string\n children?: JSX.Element\n menuIcon?: JSX.Element\n onMenuClick?: () => void\n menuAriaLabel?: string\n class?: string\n}\n\nexport function NavHeader(props: NavHeaderProps) {\n return (\n <nav class={`flex items-center bg-bg-400 h-[70px] border-b-4 border-accent-500 ${props.class ?? ''}`}>\n <div class=\"pl-1 md:pl-8 flex items-center\">\n <Show when={props.logo} fallback={\n <Show when={props.logoText}>\n <span class=\"text-[34px] font-light text-primary-700 flex items-center\">\n {props.logoText}\n </span>\n </Show>\n }>\n <img src={props.logo} alt={props.logoAlt ?? 'Logo'} class=\"h-[42px] w-auto\" />\n </Show>\n </div>\n\n <div class=\"flex-1 flex justify-end items-center pr-1 md:pr-8\">\n {props.children}\n <Show when={props.menuIcon}>\n <HeadlessButton\n class=\"md:hidden flex items-center justify-center\"\n onPress={() => props.onMenuClick?.()}\n aria-label={props.menuAriaLabel ?? 'Open menu'}\n >\n {props.menuIcon}\n </HeadlessButton>\n </Show>\n </div>\n </nav>\n )\n}\n","import { JSX } from \"solid-js\";\n\nexport type LogoSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface LogoProps {\n /** First word (light weight, muted color) */\n firstWord?: string;\n /** Second word (bold, with 3D effect) */\n secondWord?: string;\n /** Size variant of the logo */\n size?: LogoSize;\n /** Invert the styles (first word gets 3D effect, second word is muted) */\n inverted?: boolean;\n /** Additional CSS classes */\n class?: string;\n}\n\n/**\n * Two-word logo with retro synthwave 3D effect.\n * First word is light/muted, second word has bold styling with pink 3D shadow.\n *\n * @example\n * // Default usage\n * <Logo />\n *\n * @example\n * // Custom text\n * <Logo firstWord=\"My\" secondWord=\"Brand\" size=\"lg\" />\n */\nexport function Logo(props: LogoProps): JSX.Element {\n const sizeClass = () => {\n switch (props.size) {\n case \"sm\":\n return \"vui-logo--sm\";\n case \"lg\":\n return \"vui-logo--lg\";\n case \"xl\":\n return \"vui-logo--xl\";\n case \"md\":\n default:\n return \"vui-logo--md\";\n }\n };\n\n const firstWord = () => props.firstWord ?? \"Proyecto\";\n const secondWord = () => props.secondWord ?? \"Viviana\";\n\n return (\n <span class={`vui-logo ${sizeClass()} ${props.inverted ? \"vui-logo--inverted\" : \"\"} ${props.class ?? \"\"}`}>\n <span class=\"vui-logo__first\" data-text={props.inverted ? firstWord() : undefined}>\n {firstWord()}\n </span>\n <span class=\"vui-logo__second\" data-text={props.inverted ? undefined : secondWord()}>\n {secondWord()}\n </span>\n </span>\n );\n}\n","import type { JSX } from 'solid-js'\nimport { Logo, type LogoProps } from '../logo'\n\nexport interface HeaderProps {\n /** Image element to show to the left of the text logo */\n logoImage?: JSX.Element\n /** Props to pass to the Logo component (firstWord, secondWord, size, inverted). Pass null to hide the text logo. */\n logoProps?: LogoProps | null\n /** Custom logo element - replaces the default Logo component entirely */\n logo?: JSX.Element\n /** Navigation items to display on the right side */\n children?: JSX.Element\n /** Additional CSS classes */\n class?: string\n}\n\nexport function Header(props: HeaderProps) {\n const showTextLogo = () => props.logo !== undefined || props.logoProps !== null\n\n return (\n <header class={`vui-header ${props.class ?? ''}`}>\n <div class=\"vui-header__container\">\n <div class=\"flex items-center gap-3\">\n {props.logoImage}\n {showTextLogo() && (props.logo ?? <Logo size=\"lg\" {...(props.logoProps ?? {})} />)}\n </div>\n <nav class=\"vui-header__nav\">\n {props.children}\n </nav>\n </div>\n </header>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show, For } from 'solid-js'\n\nexport interface NavItemProps {\n title: string\n children?: JSX.Element\n class?: string\n}\n\nexport function NavItem(props: NavItemProps) {\n return (\n <li class={`flex items-center ${props.class ?? ''}`}>\n <span class=\"text-lg font-bold text-primary-200\">{props.title}</span>\n {props.children}\n </li>\n )\n}\n\nexport interface NavLinkProps {\n href: string\n children: JSX.Element\n active?: boolean\n class?: string\n}\n\nexport function NavLink(props: NavLinkProps) {\n const activeStyles = 'font-medium text-primary-300 underline underline-offset-4'\n const inactiveStyles = 'font-normal text-gray-200 underline-offset-4 hover:text-gray-100 hover:underline'\n\n return (\n <a\n href={props.href}\n class={`${props.active ? activeStyles : inactiveStyles} ${props.class ?? ''}`}\n >\n {props.children}\n </a>\n )\n}\n\nexport interface NavSectionProps {\n title: string\n links?: { href: string; label: string; active?: boolean }[]\n children?: JSX.Element\n class?: string\n}\n\nexport function NavSection(props: NavSectionProps) {\n return (\n <div class={props.class ?? ''}>\n <NavItem title={props.title} />\n <div class=\"flex h-full\">\n <div class=\"h-5 w-1 bg-accent-300\" />\n <ul class=\"flex h-full flex-1 flex-col gap-1 pl-4\">\n <Show when={props.links}>\n <For each={props.links}>\n {(link) => (\n <li>\n <NavLink href={link.href} active={link.active}>\n {link.label}\n </NavLink>\n </li>\n )}\n </For>\n </Show>\n {props.children}\n </ul>\n </div>\n </div>\n )\n}\n\nexport interface LateralNavProps {\n transparent?: boolean\n children?: JSX.Element\n class?: string\n}\n\nexport function LateralNav(props: LateralNavProps) {\n const bgColor = () => (props.transparent ? '' : 'bg-bg-200')\n\n return (\n <div\n class={`hidden w-[300px] md:block ${bgColor()} m-0 border-r border-primary-600 p-3 ${props.class ?? ''}`}\n >\n {props.children}\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\nimport { Avatar } from '../../avatar'\n\nexport type TimelineEventType = 'follow' | 'like' | 'comment' | 'event' | 'custom'\n\nexport interface TimelineItemProps {\n type?: TimelineEventType\n /**\n * Icon to display between the two avatars.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n * Or pass a simple string for text-based icons: `icon=\"👋\"`\n */\n icon?: string | (() => JSX.Element)\n leftUser?: {\n name: string\n avatar?: string\n }\n rightUser?: {\n name: string\n avatar?: string\n }\n /**\n * Custom message content.\n * Use a function returning JSX for SSR compatibility: `message={() => <span>...</span>}`\n * Or pass a simple string.\n */\n message?: string | (() => JSX.Element)\n class?: string\n}\n\nconst eventMessages: Record<TimelineEventType, (left: string, right: string) => JSX.Element> = {\n follow: (left, right) => (\n <>\n <span class=\"font-semibold text-accent-200\">{left}</span>\n {' ha empezado a seguir a '}\n <span class=\"font-semibold text-accent-200\">{right}</span>\n </>\n ),\n like: (left, right) => (\n <>\n <span class=\"font-semibold text-accent-200\">{left}</span>\n {' le ha dado like a '}\n <span class=\"font-semibold text-accent-200\">{right}</span>\n </>\n ),\n comment: (left, right) => (\n <>\n <span class=\"font-semibold text-accent-200\">{left}</span>\n {' ha comentado en '}\n <span class=\"font-semibold text-accent-200\">{right}</span>\n </>\n ),\n event: (left, right) => (\n <>\n <span class=\"font-semibold text-accent-200\">{left}</span>\n {' asistirá al evento de '}\n <span class=\"font-semibold text-accent-200\">{right}</span>\n </>\n ),\n custom: () => null,\n}\n\nexport function TimelineItem(props: TimelineItemProps) {\n const type = () => props.type ?? 'follow'\n const leftName = () => props.leftUser?.name ?? ''\n const rightName = () => props.rightUser?.name ?? ''\n\n const renderIcon = () => {\n const icon = props.icon\n if (!icon) return null\n if (typeof icon === 'string') return icon\n return icon()\n }\n\n const renderMessage = () => {\n const message = props.message\n if (!message) return null\n if (typeof message === 'string') return message\n return message()\n }\n\n return (\n <div class={`inline-flex w-auto flex-col gap-5 rounded-2xl border border-primary-700 bg-bg-200 p-5 hover:bg-bg-300 transition-colors ${props.class ?? ''}`}>\n <div class=\"flex items-center justify-around gap-3\">\n <Show when={props.leftUser}>\n <Avatar src={props.leftUser!.avatar} alt={props.leftUser!.name} />\n </Show>\n <Show when={props.icon}>\n {renderIcon()}\n </Show>\n <Show when={props.rightUser}>\n <Avatar src={props.rightUser!.avatar} alt={props.rightUser!.name} />\n </Show>\n </div>\n <div class=\"flex items-center justify-center gap-3 text-center\">\n <span class=\"font-light text-primary-300\">\n <Show when={props.message} fallback={eventMessages[type()](leftName(), rightName())}>\n {renderMessage()}\n </Show>\n </span>\n </div>\n </div>\n )\n}\n","import { Show, For } from 'solid-js'\nimport { Avatar } from '../../avatar'\nimport { Button as HeadlessButton } from '@proyecto-viviana/solidaria-components'\n\nexport interface Message {\n id: string\n content: string\n sender: 'user' | 'other'\n timestamp?: string\n}\n\nexport interface ConversationPreviewProps {\n user: {\n name: string\n avatar?: string\n online?: boolean\n }\n lastMessage?: string\n unreadCount?: number\n timestamp?: string\n onClick?: () => void\n class?: string\n}\n\nexport function ConversationPreview(props: ConversationPreviewProps) {\n return (\n <HeadlessButton\n type=\"button\"\n class={`flex w-full items-center gap-3 rounded-xl p-3 hover:bg-bg-300 transition-colors text-left ${props.class ?? ''}`}\n onPress={() => props.onClick?.()}\n >\n <Avatar\n src={props.user.avatar}\n alt={props.user.name}\n online={props.user.online}\n size=\"md\"\n />\n <div class=\"flex-1 min-w-0\">\n <div class=\"flex items-center justify-between\">\n <span class=\"font-semibold text-primary-100 truncate\">{props.user.name}</span>\n <Show when={props.timestamp}>\n <span class=\"text-xs text-primary-500\">{props.timestamp}</span>\n </Show>\n </div>\n <Show when={props.lastMessage}>\n <p class=\"text-sm text-primary-400 truncate\">{props.lastMessage}</p>\n </Show>\n </div>\n <Show when={props.unreadCount && props.unreadCount > 0}>\n <span class=\"flex h-5 w-5 items-center justify-center rounded-full bg-accent text-xs font-bold text-white\">\n {props.unreadCount}\n </span>\n </Show>\n </HeadlessButton>\n )\n}\n\nexport interface ConversationBubbleProps {\n content: string\n sender: 'user' | 'other'\n timestamp?: string\n class?: string\n}\n\nexport function ConversationBubble(props: ConversationBubbleProps) {\n const isUser = () => props.sender === 'user'\n\n return (\n <div class={`flex ${isUser() ? 'justify-end' : 'justify-start'} ${props.class ?? ''}`}>\n <div\n class={`max-w-[70%] rounded-2xl px-4 py-2 ${\n isUser()\n ? 'bg-accent text-bg-400 rounded-br-sm'\n : 'bg-bg-300 text-primary-100 rounded-bl-sm'\n }`}\n >\n <p>{props.content}</p>\n <Show when={props.timestamp}>\n <span class={`text-xs ${isUser() ? 'text-bg-300' : 'text-primary-500'}`}>\n {props.timestamp}\n </span>\n </Show>\n </div>\n </div>\n )\n}\n\nexport interface ConversationProps {\n messages: Message[]\n class?: string\n}\n\nexport function Conversation(props: ConversationProps) {\n return (\n <div class={`flex flex-col gap-2 p-4 ${props.class ?? ''}`}>\n <For each={props.messages}>\n {(message) => (\n <ConversationBubble\n content={message.content}\n sender={message.sender}\n timestamp={message.timestamp}\n />\n )}\n </For>\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\nimport { Avatar } from '../../avatar'\n\nexport interface ProfileCardProps {\n username: string\n avatar?: string\n bio?: string\n followers?: number\n following?: number\n /**\n * Actions to display below the profile.\n * Use a function returning JSX for SSR compatibility: `actions={() => <Button>...</Button>}`\n */\n actions?: JSX.Element | (() => JSX.Element)\n class?: string\n}\n\nexport function ProfileCard(props: ProfileCardProps) {\n const formatNumber = (num: number) => {\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`\n return num.toString()\n }\n\n return (\n <div class={`bg-bg-200 rounded-xl p-4 ${props.class ?? ''}`}>\n <div class=\"flex items-start gap-4\">\n <Avatar src={props.avatar} alt={props.username} size=\"lg\" />\n <div class=\"flex-1 min-w-0\">\n <h3 class=\"font-semibold text-primary-100 text-lg truncate\">\n {props.username}\n </h3>\n <Show when={props.bio}>\n <p class=\"text-primary-300 text-sm mt-1 line-clamp-2\">{props.bio}</p>\n </Show>\n <div class=\"flex gap-4 mt-2 text-sm\">\n <Show when={props.followers !== undefined}>\n <span class=\"text-primary-300\">\n <span class=\"font-semibold text-primary-100\">\n {formatNumber(props.followers!)}\n </span>{' '}\n seguidores\n </span>\n </Show>\n <Show when={props.following !== undefined}>\n <span class=\"text-primary-300\">\n <span class=\"font-semibold text-primary-100\">\n {formatNumber(props.following!)}\n </span>{' '}\n siguiendo\n </span>\n </Show>\n </div>\n </div>\n </div>\n <Show when={props.actions}>\n <div class=\"mt-4 flex gap-2\">\n {typeof props.actions === 'function' ? props.actions() : props.actions}\n </div>\n </Show>\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show, For } from 'solid-js'\nimport { Avatar } from '../../avatar'\nimport { Button as HeadlessButton } from '@proyecto-viviana/solidaria-components'\n\nexport interface EventCardProps {\n title: string\n image?: string\n date?: string\n author?: string\n authorAvatar?: string\n attendees?: { avatar?: string; name: string }[]\n attendeeCount?: number\n decorationImage?: string\n /**\n * Actions to display below the event.\n * Use a function returning JSX for SSR compatibility: `actions={() => <Button>...</Button>}`\n */\n actions?: JSX.Element | (() => JSX.Element)\n class?: string\n}\n\nexport function EventCard(props: EventCardProps) {\n const displayedAttendees = () => props.attendees?.slice(0, 3) ?? []\n const remainingCount = () => {\n const total = props.attendeeCount ?? props.attendees?.length ?? 0\n const displayed = displayedAttendees().length\n return total - displayed\n }\n\n return (\n <div class={`relative bg-bg-200 rounded-3xl overflow-hidden ${props.class ?? ''}`}>\n {/* Decoration image (fire gif, etc) */}\n <Show when={props.decorationImage}>\n <div class=\"absolute -top-2 -right-2 z-10 flex flex-col gap-1\">\n <img src={props.decorationImage} alt=\"\" class=\"w-8 h-8 object-contain\" />\n <img src={props.decorationImage} alt=\"\" class=\"w-6 h-6 object-contain ml-2\" />\n <img src={props.decorationImage} alt=\"\" class=\"w-5 h-5 object-contain\" />\n </div>\n </Show>\n\n <Show when={props.image}>\n <div class=\"relative h-32 w-full\">\n <img\n src={props.image}\n alt={props.title}\n class=\"w-full h-full object-cover\"\n />\n <div class=\"absolute inset-0 bg-gradient-to-t from-bg-200 via-transparent to-transparent\" />\n </div>\n </Show>\n\n <div class=\"p-4 pt-2\">\n <h3 class=\"font-bold text-xl leading-tight bg-gradient-to-r from-accent to-accent-300 bg-clip-text text-transparent\">\n {props.title}\n </h3>\n\n <Show when={props.date || props.author}>\n <div class=\"flex items-center gap-4 mt-3 text-sm text-primary-300\">\n <Show when={props.author}>\n <div class=\"flex items-center gap-1.5\">\n <span class=\"text-accent\">@</span>\n <span>{props.author}</span>\n </div>\n </Show>\n <Show when={props.date}>\n <div class=\"flex items-center gap-1.5\">\n <span class=\"text-accent\">⏱</span>\n <span>{props.date}</span>\n </div>\n </Show>\n </div>\n </Show>\n\n <Show when={displayedAttendees().length > 0}>\n <div class=\"flex items-center mt-3\">\n <div class=\"flex -space-x-2\">\n <For each={displayedAttendees()}>\n {(attendee) => (\n <Avatar src={attendee.avatar} alt={attendee.name} size=\"sm\" />\n )}\n </For>\n </div>\n <Show when={remainingCount() > 0}>\n <span class=\"ml-2 text-sm text-primary-300\">\n +{remainingCount()} más\n </span>\n </Show>\n </div>\n </Show>\n\n <Show when={props.actions}>\n <div class=\"mt-4 flex gap-2\">\n {typeof props.actions === 'function' ? props.actions() : props.actions}\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\nexport interface EventListItemProps {\n title: string\n image?: string\n subtitle?: string\n onClick?: () => void\n class?: string\n}\n\nexport function EventListItem(props: EventListItemProps) {\n return (\n <HeadlessButton\n class={`flex items-center gap-3 w-full p-2 rounded-lg hover:bg-bg-300 transition-colors text-left ${props.class ?? ''}`}\n onPress={() => props.onClick?.()}\n >\n <Show when={props.image}>\n <div class=\"w-12 h-12 rounded-lg overflow-hidden flex-shrink-0\">\n <img\n src={props.image}\n alt={props.title}\n class=\"w-full h-full object-cover\"\n />\n </div>\n </Show>\n <div class=\"flex-1 min-w-0\">\n <h4 class=\"font-medium text-primary-100 truncate\">{props.title}</h4>\n <Show when={props.subtitle}>\n <p class=\"text-sm text-primary-300 truncate\">{props.subtitle}</p>\n </Show>\n </div>\n </HeadlessButton>\n )\n}\n","import { Show, For } from 'solid-js'\nimport { Chip } from '../chip'\n\nexport interface CalendarCardProps {\n title: string\n image?: string\n tags?: string[]\n followers?: { name: string }[]\n followerCount?: number\n class?: string\n}\n\nexport function CalendarCard(props: CalendarCardProps) {\n const displayedFollowers = () => props.followers?.slice(0, 2) ?? []\n const remainingCount = () => {\n const total = props.followerCount ?? props.followers?.length ?? 0\n const displayed = displayedFollowers().length\n return total - displayed\n }\n\n return (\n <div class={`flex h-[100px] w-full max-w-[500px] items-center rounded-xl border border-primary-600 border-b-accent-500 bg-bg-300 p-2 ${props.class ?? ''}`}>\n <Show when={props.image}>\n <div class=\"relative h-[80px] w-[80px] flex-shrink-0 overflow-hidden rounded-xl border-2 border-accent-200\">\n <img src={props.image} alt={props.title} class=\"h-full w-full object-cover\" />\n </div>\n </Show>\n <div class=\"relative h-full flex-1 flex-col pl-3\">\n <Show when={props.tags && props.tags.length > 0}>\n <div class=\"absolute bottom-[-20px] h-[30px] w-full\">\n <div class=\"flex h-full w-full flex-1 justify-end gap-1\">\n <For each={props.tags}>\n {(tag) => <Chip text={tag} variant=\"primary\" />}\n </For>\n </div>\n </div>\n </Show>\n <div class=\"flex h-full flex-col items-end justify-center pb-3 pr-5 pt-2\">\n <div class=\"flex flex-1\">\n <span class=\"text-lg font-semibold text-white drop-shadow-sm\">\n {props.title}\n </span>\n </div>\n <Show when={displayedFollowers().length > 0}>\n <div class=\"flex flex-1\">\n <span class=\"text-base font-normal text-primary-500\">\n seguida por{' '}\n <For each={displayedFollowers()}>\n {(follower, index) => (\n <>\n <span class=\"font-semibold text-accent-200\">{follower.name}</span>\n {index() < displayedFollowers().length - 1 && ', '}\n </>\n )}\n </For>\n <Show when={remainingCount() > 0}>\n {' '}y <span class=\"font-semibold text-accent-200\">{remainingCount()} más</span>\n </Show>\n </span>\n </div>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\n\nexport type ProjectCardSize = 'sm' | 'md' | 'lg'\n\nexport interface ProjectCardProps {\n /** Project name shown in tooltip on hover */\n name: string\n /** Image source for the project logo */\n imageSrc: string\n /** Alt text for the image */\n imageAlt?: string\n /** Optional link to the project */\n href?: string\n /** Size of the card */\n size?: ProjectCardSize\n /** Whether the project is inactive/greyed out */\n inactive?: boolean\n /** Additional CSS class */\n class?: string\n}\n\n/**\n * Project card with logo and hover tooltip.\n * Used for showcasing ecosystem projects.\n */\nexport function ProjectCard(props: ProjectCardProps): JSX.Element {\n const size = () => props.size ?? 'sm'\n const inactive = () => props.inactive ?? false\n\n const cardContent = () => (\n <>\n <div class=\"vui-project-card__tooltip\">\n <span>{props.name}</span>\n </div>\n <img\n class=\"vui-project-card__image\"\n src={props.imageSrc}\n alt={props.imageAlt ?? props.name}\n />\n </>\n )\n\n const cardClasses = () =>\n `vui-project-card vui-project-card--${size()} ${inactive() ? 'vui-project-card--inactive' : ''} ${props.class ?? ''}`\n\n if (props.href) {\n return (\n <a href={props.href} target=\"_blank\" rel=\"noopener noreferrer\" class={cardClasses()}>\n {cardContent()}\n </a>\n )\n }\n\n return (\n <div class={cardClasses()}>\n {cardContent()}\n </div>\n )\n}\n"],"mappings":"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","names":["splitProps","mergeProps","solidMergeProps","Button","HeadlessButton","createContext","createMemo","mergeProps","splitProps","useContext","I18nProvider","ModalProvider","isRTL","useLocale","useModalProvider","defaultThemeContext","colorScheme","scale","themeClass","lightTheme","className","theme","ThemeContext","createContext","ProviderContext","useTheme","provider","useContext","useProvider","context","Error","useProviderProps","props","mergeProps","isQuiet","isEmphasized","isDisabled","isRequired","isReadOnly","validationState","getBuiltInTheme","darkTheme","resolveTheme","themeInput","inheritedThemeClass","properties","themeObj","builtIn","ProviderRoot","locale","useLocale","modalProviderProps","useModalProvider","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","rest","class","style","lang","dir","direction","_$insert","children","_$runHydrationEvents","Provider","parentProvider","inheritedLocale","local","splitProps","createMemo","undefined","builtInParentTheme","resolvedTheme","themeSource","providerValue","isRTL","classes","parts","filter","Boolean","join","mergedStyle","isolation","_$createComponent","value","I18nProvider","ModalProvider","Button","props","providerProps","useProviderProps","defaultProps","variant","buttonStyle","size","merged","solidMergeProps","local","headlessProps","splitProps","getClassName","renderProps","classList","isPressed","push","fullWidth","class","join","_$createComponent","HeadlessButton","_$mergeProps","staticColor","undefined","children","splitProps","ToggleButton","HeadlessToggleButton","sizeStyles","sm","md","lg","ToggleButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","getClassName","renderProps","base","sizeClass","size","stateClass","isDisabled","isSelected","isHovered","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessToggleButton","_$mergeProps","splitProps","Button","HeadlessButton","sizeStyles","sm","md","lg","ActionButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","isQuiet","getClassName","renderProps","base","sizeClass","size","stateClass","isDisabled","isPressed","isHovered","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessButton","_$mergeProps","splitProps","Button","HeadlessButton","sizeStyles","sm","button","icon","md","lg","ClearButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","getClassName","renderProps","base","sizeClass","stateClass","isDisabled","isPressed","isHovered","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessButton","_$mergeProps","children","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","splitProps","Button","HeadlessButton","FieldButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","getClassName","renderProps","base","stateClass","isDisabled","isPressed","isHovered","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessButton","_$mergeProps","splitProps","ToggleButton","HeadlessToggleButton","LogicButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","getClassName","renderProps","base","stateClass","isDisabled","isSelected","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessToggleButton","_$mergeProps","children","_el$","_$getNextElement","_tmpl$","_$insert","Show","variantStyles","primary","secondary","accent","success","warning","danger","sizeStyles","sm","md","lg","Badge","props","variant","size","_el$","_$getNextElement","_tmpl$2","_$insert","_$createComponent","when","count","undefined","fallback","children","_el$2","_tmpl$","_$effect","_$className","class","Show","Alert","HeadlessAlert","AlertDismissButton","variantStyles","info","success","warning","error","props","variant","getClassName","_renderProps","class","_$createComponent","isDismissible","dismissible","onDismiss","children","_el$","_$getNextElement","_tmpl$3","_el$5","firstChild","_el$6","_co$","_$getNextMarker","nextSibling","_el$4","_el$7","_el$8","_co$2","_$insert","when","title","_el$2","_tmpl$","_tmpl$2","Show","sizeStyles","xs","container","text","indicator","sm","md","lg","xl","Avatar","props","size","styles","initials","fallback","slice","toUpperCase","alt","_el$","_$getNextElement","_tmpl$3","_el$2","firstChild","_el$5","nextSibling","_el$6","_co$","_$getNextMarker","_$insert","_$createComponent","when","src","_el$7","_tmpl$2","_$effect","_$className","children","_el$3","_tmpl$","_p$","_v$","_v$2","e","_$setAttribute","t","undefined","online","_el$4","_v$3","class","_v$4","AvatarGroup","_el$8","_tmpl$4","createMemo","ToggleButtonGroup","HeadlessToggleButtonGroup","ToggleButton","HeadlessToggleButton","splitProps","mergeProps","solidMergeProps","ToggleSwitch","HeadlessToggleSwitch","sizeStyles","sm","track","thumb","translate","md","lg","ToggleSwitch","props","providerProps","useProviderProps","defaultProps","size","merged","solidMergeProps","local","headlessProps","splitProps","getClassName","renderProps","base","disabledClass","isDisabled","custom","class","filter","Boolean","join","_$createComponent","HeadlessToggleSwitch","_$mergeProps","children","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","isSelected","_v$2","e","_$className","t","undefined","_$memo","_el$3","_tmpl$2","_$insert","TabSwitch","props","options","createMemo","slice","selectedValue","match","find","option","value","selectedIndex","index","findIndex","selectedKeys","Set","textSelected","textUnselected","optionCount","Math","max","length","indicatorStyle","width","transform","layoutStyle","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_co$","_$getNextMarker","_$insert","_$createComponent","HeadlessToggleButtonGroup","selectionMode","style","children","map","HeadlessToggleButton","toggleKey","onClick","onChange","class","_el$5","_tmpl$2","label","_$effect","_p$","_v$","_v$2","e","_$className","t","_$style","undefined","splitProps","mergeProps","solidMergeProps","Show","Checkbox","HeadlessCheckbox","CheckboxGroup","HeadlessCheckboxGroup","sizeStyles","sm","box","icon","label","md","lg","CheckIcon","props","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","class","IndeterminateIcon","_el$2","_tmpl$2","Checkbox","providerProps","useProviderProps","defaultProps","size","merged","solidMergeProps","local","headlessProps","splitProps","getClassName","renderProps","base","disabledClass","isDisabled","custom","filter","Boolean","join","_$createComponent","HeadlessCheckbox","_$mergeProps","children","boxClasses","sizeClass","colorClass","isSelected","isIndeterminate","focusClass","isFocusVisible","cursorClass","iconClasses","visibilityClass","labelClasses","_el$3","_tmpl$3","_$insert","Show","when","fallback","_$className","_el$4","CheckboxGroup","mergedProps","renderChildren","_el$5","_tmpl$4","_el$6","_tmpl$5","_$memo","description","isInvalid","_el$7","_tmpl$6","errorMessage","_el$8","_tmpl$7","HeadlessCheckboxGroup","Show","createContext","useContext","splitProps","createUniqueId","RadioGroup","HeadlessRadioGroup","Radio","HeadlessRadio","RadioSizeContext","createContext","sizeStyles","sm","circle","dot","label","md","lg","RadioGroup","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","customClass","class","idBase","createUniqueId","labelId","descriptionId","errorId","getClassName","renderProps","base","orientationClass","orientation","disabledClass","isDisabled","filter","Boolean","join","ariaDescribedBy","ids","description","undefined","errorMessage","isInvalid","length","_$createComponent","Provider","value","children","HeadlessRadioGroup","_$mergeProps","Show","when","_el$","_$getNextElement","_tmpl$","_$setAttribute","_$insert","_$memo","_el$2","_tmpl$2","_el$3","_tmpl$3","Radio","sizeFromContext","useContext","sizeStyle","cursorClass","circleClass","dotClass","labelClass","HeadlessRadio","_el$4","_tmpl$4","_el$5","firstChild","_$className","_el$6","_tmpl$5","_c$","splitProps","Show","createContext","useContext","Dialog","HeadlessDialog","DialogTrigger","HeadlessDialogTrigger","Heading","HeadlessDialogHeading","Modal","HeadlessModal","ModalOverlay","HeadlessModalOverlay","useDialogTrigger","DialogContext","sizeStyles","sm","md","lg","fullscreen","Dialog","props","local","rest","splitProps","size","className","base","sizeClass","custom","class","filter","Boolean","join","_$createComponent","HeadlessDialog","_$mergeProps","onClose","children","close","DialogContext","Provider","value","Show","when","title","_el$","_$getNextElement","_tmpl$2","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","_$insert","HeadlessDialogHeading","level","isDismissable","_el$2","_tmpl$","_$addEventListener","_$runHydrationEvents","_el$7","_tmpl$3","DialogTriggerContent","triggerContext","useDialogTrigger","state","content","DialogTrigger","HeadlessDialogTrigger","isOpen","onOpenChange","_$memo","trigger","HeadlessModalOverlay","isKeyboardDismissDisabled","_el$8","_tmpl$4","HeadlessModal","DialogFooter","_el$9","_tmpl$5","_$effect","_$className","_$delegateEvents","splitProps","Show","Dialog","HeadlessDialog","DialogTrigger","HeadlessDialogTrigger","Heading","HeadlessHeading","Modal","HeadlessModal","ModalOverlay","HeadlessModalOverlay","variantStyles","confirmation","icon","buttonVariant","information","destructive","error","warning","AlertDialog","props","local","splitProps","variant","styles","_$createComponent","HeadlessDialogTrigger","isOpen","onOpenChange","children","_$memo","trigger","HeadlessModalOverlay","isDismissable","HeadlessModal","HeadlessDialog","role","class","close","HeadlessHeading","slot","title","_el$","_$getNextElement","_tmpl$","_$insert","_el$2","_tmpl$2","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","Show","when","cancelLabel","undefined","onCancel","Button","onPress","autoFocus","autoFocusButton","onPrimaryAction","primaryActionLabel","Icon","HeadlessIcon","GitHubIcon","props","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","class","_v$2","size","_v$3","_v$4","color","e","_$setAttribute","t","a","o","undefined","splitProps","sizeStyles","sm","md","lg","Illustration","props","local","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","role","size","class","_$insert","children","_$runHydrationEvents","splitProps","sizeStyles","xs","sm","md","lg","UIIcon","props","local","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","role","undefined","size","class","_$insert","children","_$runHydrationEvents","Icon","props","size","color","IconComponent","icon","getClassName","_renderProps","classList","withShadow","push","onPress","class","join","_$createComponent","HeadlessIcon","children","_$memo","_el$2","_$getNextElement","_tmpl$2","_$insert","_el$","_tmpl$","Show","splitProps","Tooltip","HeadlessTooltip","TooltipTrigger","HeadlessTooltipTrigger","baseStyles","join","variantStyles","default","neutral","info","arrowStyles","top","bottom","left","right","getArrowBorderColor","variant","colors","props","_$createComponent","local","rest","placement","_$mergeProps","_renderProps","classes","class","filter","Boolean","children","renderProps","_$memo","when","showArrow","_el$","_$getNextElement","_tmpl$","_$effect","_$className","SimpleTooltip","position","_el$2","_tmpl$2","_el$3","firstChild","_el$4","nextSibling","_el$5","_$insert","label","_p$","_v$","_v$2","e","t","undefined","Show","splitProps","Popover","HeadlessPopover","PopoverTrigger","HeadlessPopoverTrigger","OverlayArrow","HeadlessOverlayArrow","baseStyles","join","sizeStyles","sm","md","lg","paddingStyles","none","arrowBaseStyles","getArrowRotation","placement","props","_$createComponent","local","rest","size","padding","_$mergeProps","_renderProps","classes","class","filter","Boolean","children","renderProps","when","showArrow","PopoverArrow","_$memo","style","bottom","left","transform","top","right","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","PopoverHeader","_el$2","_tmpl$3","_el$3","firstChild","_el$5","nextSibling","_el$6","_co$","_$getNextMarker","_$insert","title","description","_el$4","_tmpl$2","_$className","PopoverFooter","_el$7","_tmpl$4","splitProps","Modal","HeadlessModal","ModalOverlay","HeadlessModalOverlay","sizeStyles","sm","md","lg","fullscreen","StyledModal","props","local","headlessProps","_$createComponent","_$mergeProps","children","size","class","splitProps","Show","Portal","useUNSAFE_PortalContext","Overlay","props","local","portalContext","portalContainer","container","getContainer","undefined","_$createComponent","when","isOpen","children","mount","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_$className","class","splitProps","ModalOverlay","HeadlessModalOverlay","Modal","HeadlessModal","Tray","props","local","headlessProps","_$createComponent","_$mergeProps","children","class","_$getNextElement","_tmpl$","_$memo","createSignal","createEffect","on","onCleanup","Show","children","resolveChildren","OpenTransition","props","duration","mounted","setMounted","open","transitionClasses","setTransitionClasses","isOpen","enterFrom","requestAnimationFrame","enterTo","exitFrom","exitTo","timer","setTimeout","onExited","clearTimeout","resolved","_$createComponent","when","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_p$","_v$","class","_v$2","_v$3","undefined","e","_$className","t","_$setStyleProperty","a","_$setAttribute","splitProps","Show","useContext","TextField","HeadlessTextField","Label","HeadlessLabel","Input","HeadlessInput","TextFieldContext","splitProps","Show","useContext","TextField","HeadlessTextField","Label","HeadlessLabel","TextArea","HeadlessTextArea","TextFieldContext","sizeStyles","sm","textarea","label","description","md","lg","TextAreaDescription","props","context","useContext","TextFieldContext","descriptionProps","ref","_ref","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","TextAreaError","errorMessageProps","_el$2","TextArea","mergedProps","useProviderProps","local","headlessProps","splitProps","size","containerClasses","base","custom","filter","Boolean","join","textareaClasses","renderProps","sizeClass","variantClass","variant","stateClass","isDisabled","isInvalid","hoverClass","labelClasses","descriptionClasses","errorClasses","_$createComponent","HeadlessTextField","errorMessage","Show","when","HeadlessLabel","_$memo","isRequired","_tmpl$2","HeadlessTextArea","sizeStyles","sm","input","label","description","md","lg","TextFieldDescription","props","context","useContext","TextFieldContext","descriptionProps","ref","_ref","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","TextFieldError","errorMessageProps","_el$2","TextField","mergedProps","useProviderProps","local","headlessProps","splitProps","size","containerClasses","base","custom","filter","Boolean","join","inputClasses","renderProps","sizeClass","variantClass","variant","stateClass","isDisabled","isInvalid","hoverClass","labelClasses","descriptionClasses","errorClasses","_$createComponent","HeadlessTextField","errorMessage","Show","when","HeadlessLabel","_$memo","isRequired","_tmpl$2","HeadlessInput","splitProps","Link","HeadlessLink","variantStyles","primary","secondary","subtle","Link","props","mergedProps","useProviderProps","local","headlessProps","splitProps","variant","customClass","class","getClassName","renderProps","base","variantClass","underlineClass","isStandalone","isQuiet","isHovered","isFocusVisible","weightClass","focusClass","disabledClass","isDisabled","pressedClass","isPressed","filter","Boolean","join","_$createComponent","HeadlessLink","_$mergeProps","children","splitProps","Show","createUniqueId","ProgressBar","HeadlessProgressBar","sizeStyles","sm","track","text","md","lg","variantStyles","primary","accent","success","warning","danger","props","local","headlessProps","size","variant","sizeConfig","labelId","renderChildren","valueText","percentage","isIndeterminate","showValueLabel","fillWidth","_$createComponent","when","label","children","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","_el$2","_tmpl$","_$setAttribute","_el$3","_tmpl$2","_$effect","_$className","_el$8","_tmpl$4","_el$9","_$setStyleProperty","_p$","_v$","_v$2","e","t","undefined","_$mergeProps","class","splitProps","ProgressBar","HeadlessProgressBar","sizeConfig","sm","size","stroke","md","lg","variantColors","primary","accent","ProgressCircle","props","local","headlessProps","config","variant","radius","circumference","Math","PI","center","_$createComponent","_$mergeProps","class","children","renderProps","offset","isIndeterminate","percentage","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","String","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","e","_$setAttribute","t","a","o","i","n","s","h","r","d","l","u","c","w","m","f","undefined","splitProps","createMemo","Separator","HeadlessSeparator","variantStyles","default","subtle","strong","horizontalSizeStyles","sm","md","lg","verticalSizeStyles","props","local","headlessProps","orientation","variant","size","className","isVertical","sizeStyles","base","class","filter","Boolean","join","_$createComponent","_$mergeProps","splitProps","Text","HeadlessText","splitProps","Dynamic","levelStyles","Heading","props","local","rest","level","tag","_$createComponent","_$mergeProps","component","class","children","splitProps","Keyboard","HeadlessKeyboard","StyledKeyboard","props","local","rest","_$createComponent","_$mergeProps","class","variantStyles","default","muted","success","danger","sizeStyles","sm","md","lg","Text","props","local","headlessProps","splitProps","variant","size","_$createComponent","HeadlessText","_$mergeProps","class","splitProps","Label","HeadlessLabel","sizeStyles","sm","md","lg","props","local","headlessProps","size","_$createComponent","_$mergeProps","class","splitProps","Form","HeadlessForm","FieldError","HeadlessFieldError","splitProps","Show","sizeStyles","sm","label","text","gap","md","lg","Field","props","local","size","showError","isInvalid","errorMessage","_el$","_$getNextElement","_tmpl$5","_el$0","firstChild","_el$1","_co$3","_$getNextMarker","nextSibling","_el$10","_el$11","_co$4","_el$12","_el$13","_co$5","_el$14","_el$15","_co$6","_$insert","_$createComponent","when","children","_el$2","_tmpl$2","_el$4","_el$5","_co$","_el$6","_el$7","_co$2","isRequired","_tmpl$","_$effect","_p$","_v$","htmlFor","_v$2","e","_$setAttribute","t","_$className","undefined","_el$8","_tmpl$3","_$memo","description","_el$9","_tmpl$4","isDisabled","class","splitProps","Show","HelpText","props","local","showError","isInvalid","errorMessage","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","_$createComponent","when","children","_el$2","_tmpl$","_$memo","description","_el$3","_tmpl$2","_$effect","_$className","isDisabled","class","Form","props","local","headlessProps","splitProps","_$createComponent","HeadlessForm","_$mergeProps","class","FieldError","HeadlessFieldError","splitProps","Toolbar","HeadlessToolbar","baseStyles","variantStyles","default","bordered","ghost","sizeStyles","sm","md","lg","orientationStyles","horizontal","vertical","Toolbar","props","mergedProps","useProviderProps","local","headlessProps","splitProps","variant","size","getClassName","renderProps","orientation","class","filter","Boolean","join","_$createComponent","HeadlessToolbar","_$mergeProps","style","splitProps","ActionBar","HeadlessActionBar","ActionBarContainer","HeadlessActionBarContainer","ActionBarSelectionCount","HeadlessSelectionCount","ActionBarClearButton","HeadlessClearButton","getBarClassName","renderProps","extraClass","filter","Boolean","join","props","local","headlessProps","_$createComponent","_$mergeProps","rp","class","children","_$getNextElement","_tmpl$","_el$2","_tmpl$2","_$insert","splitProps","ActionGroup","HeadlessActionGroup","getContainerClassName","renderProps","extraClass","orientationClass","orientation","filter","Boolean","join","getItemClassName","stateClass","isSelected","disabledClass","isDisabled","ActionGroup","props","mergedProps","useProviderProps","local","headlessProps","splitProps","_$createComponent","HeadlessActionGroup","_$mergeProps","rp","class","children","item","_el$","_$getNextElement","_tmpl$","_$insert","_c$","_$memo","renderItem","label","_$effect","_$className","splitProps","ButtonGroup","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","role","class","_$insert","children","_$runHydrationEvents","splitProps","splitProps","createContext","useContext","Show","ComboBox","HeadlessComboBox","ComboBoxInput","HeadlessComboBoxInput","ComboBoxLabel","HeadlessComboBoxLabel","ComboBoxDescription","HeadlessComboBoxDescription","ComboBoxErrorMessage","HeadlessComboBoxErrorMessage","ComboBoxButton","HeadlessComboBoxButton","ComboBoxListBox","HeadlessComboBoxListBox","ComboBoxOption","HeadlessComboBoxOption","defaultContainsFilter","ComboBoxSizeContext","createContext","sizeStyles","sm","wrapper","input","button","label","option","icon","md","lg","ComboBox","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","customClass","class","getClassName","renderProps","base","disabledClass","isDisabled","filter","Boolean","join","_$createComponent","Provider","value","children","HeadlessComboBox","_$mergeProps","description","_$memo","isInvalid","undefined","errorMessage","Show","when","HeadlessComboBoxLabel","HeadlessComboBoxDescription","HeadlessComboBoxErrorMessage","ComboBoxInputGroup","useContext","styles","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_$className","ComboBoxInput","sizeClass","colorClass","isOpen","isHovered","focusClass","isFocusVisible","HeadlessComboBoxInput","ComboBoxButton","sizeStyle","HeadlessComboBoxButton","ChevronIcon","ComboBoxListBox","_renderProps","HeadlessComboBoxListBox","ComboBoxOption","isSelected","isFocused","iconPadding","HeadlessComboBoxOption","CheckIcon","_el$2","_tmpl$2","_el$3","_tmpl$3","_$setAttribute","_el$4","_tmpl$4","InputGroup","Input","Button","ListBox","Option","sizeStyles","sm","container","md","lg","SearchAutocomplete","props","local","comboBoxProps","splitProps","size","textKey","styles","getTextValue","item","text","name","String","handleSelectionChange","key","selected","items","find","id","onSelect","_el$","_$getNextElement","_tmpl$","_$insert","_$createComponent","ComboBox","_$mergeProps","label","description","placeholder","isDisabled","defaultFilter","filter","getKey","onSelectionChange","children","InputGroup","ComboBoxInput","ComboBoxButton","ComboBoxListBox","ComboBoxOption","_$memo","renderItem","_$effect","_$className","class","Boolean","join","Show","splitProps","createContext","useContext","createUniqueId","Select","HeadlessSelect","SelectTrigger","HeadlessSelectTrigger","SelectValue","HeadlessSelectValue","SelectListBox","HeadlessSelectListBox","SelectOption","HeadlessSelectOption","SelectSizeContext","createContext","sizeStyles","sm","trigger","label","option","icon","md","lg","Select","props","mergedProps","useProviderProps","descriptionId","createUniqueId","errorId","local","headlessProps","splitProps","size","customClass","class","getClassName","renderProps","base","disabledClass","isDisabled","filter","Boolean","join","mergedAriaLabel","styledLabel","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_$className","undefined","describedByIds","description","isInvalid","errorMessage","_$createComponent","Provider","value","children","HeadlessSelect","_$mergeProps","_$memo","Show","when","_el$2","_tmpl$2","_$setAttribute","_el$3","_tmpl$3","SelectTrigger","useContext","sizeStyle","sizeClass","colorClass","isOpen","isHovered","focusClass","isFocusVisible","HeadlessSelectTrigger","ChevronIcon","SelectValue","placeholderClass","isSelected","HeadlessSelectValue","SelectListBox","_renderProps","HeadlessSelectListBox","paddingStyles","SelectOption","isFocused","iconClass","paddingClass","HeadlessSelectOption","CheckIcon","_el$4","_el$5","_tmpl$4","_el$6","_tmpl$5","Trigger","Value","ListBox","Option","splitProps","createContext","useContext","Menu","HeadlessMenu","MenuItem","HeadlessMenuItem","MenuTrigger","HeadlessMenuTrigger","MenuButton","HeadlessMenuButton","splitProps","MenuTrigger","HeadlessMenuTrigger","MenuButton","HeadlessMenuButton","Menu","HeadlessMenu","MenuItem","HeadlessMenuItem","ActionMenu","props","local","menuProps","_$createComponent","children","isDisabled","label","renderProps","base","quietClass","isQuiet","stateClass","isPressed","isHovered","focusClass","isFocusVisible","filter","Boolean","join","MoreIcon","_$mergeProps","class","item","menuItem","textValue","String","id","colorClass","isFocused","pressedClass","_$getNextElement","_tmpl$","SubmenuTrigger","HeadlessSubmenuTrigger","props","_$createComponent","splitProps","ContextualHelpTrigger","HeadlessContextualHelpTrigger","helpIcon","_$getNextElement","_tmpl$","infoIcon","_tmpl$2","props","local","headlessProps","children","icon","variant","trigger","_el$3","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","_c$","_$memo","title","_el$8","_tmpl$4","content","_el$9","_tmpl$5","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_c$2","_el$12","_tmpl$6","_c$3","_el$13","_tmpl$7","_$createComponent","_$mergeProps","class","join","MenuSizeContext","createContext","sizeStyles","sm","button","menu","item","icon","md","lg","buttonVariants","primary","secondary","quiet","MenuTrigger","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","_$createComponent","Provider","value","children","_el$","_$getNextElement","_tmpl$","_$insert","HeadlessMenuTrigger","_$mergeProps","_$effect","_$className","class","MenuButton","useContext","sizeStyle","variant","customClass","getClassName","renderProps","base","sizeClass","variantClass","stateClass","isDisabled","isPressed","focusClass","isFocusVisible","filter","Boolean","join","HeadlessMenuButton","_$memo","ChevronIcon","Menu","styles","_renderProps","HeadlessMenu","MenuItem","colorClass","isDestructive","isFocused","isHovered","pressedClass","HeadlessMenuItem","_el$3","_tmpl$3","_el$2","_tmpl$2","shortcut","_el$4","_tmpl$4","MenuSeparator","_el$5","_tmpl$5","_el$6","_tmpl$6","_$setAttribute","Item","Separator","Button","splitProps","createContext","useContext","Show","createUniqueId","ListBox","HeadlessListBox","ListBoxOption","HeadlessListBoxOption","ListBoxSizeContext","createContext","sizeStyles","sm","list","option","icon","label","description","md","lg","ListBox","props","mergedProps","useProviderProps","labelId","createUniqueId","descriptionId","local","headlessProps","splitProps","size","styles","customClass","class","getClassName","renderProps","base","sizeClass","stateClass","isDisabled","focusClass","isFocusVisible","filter","Boolean","join","defaultEmptyState","_$getNextElement","_tmpl$","mergedAriaLabel","labelledByIds","undefined","describedByIds","_$createComponent","Provider","value","children","_el$2","_tmpl$4","_el$5","firstChild","_el$6","_co$","_$getNextMarker","nextSibling","_el$7","_el$8","_co$2","_el$9","_el$0","_co$3","_$insert","Show","when","_el$3","_tmpl$2","_$setAttribute","_$effect","_$className","HeadlessListBox","_$mergeProps","renderEmptyState","_el$4","_tmpl$3","ListBoxOption","useContext","sizeStyle","colorClass","isSelected","isFocused","isHovered","HeadlessListBoxOption","_$memo","_el$13","CheckIcon","_el$1","_tmpl$5","_el$10","_el$11","_el$12","_co$4","_c$","_el$14","_el$15","_tmpl$6","Option","splitProps","createContext","createMemo","useContext","Show","GridList","HeadlessGridList","GridListItem","HeadlessGridListItem","GridListSelectionCheckbox","HeadlessGridListSelectionCheckbox","GridListSizeContext","size","variant","layout","sizeStyles","sm","list","item","icon","image","label","description","checkbox","md","lg","variantStyles","default","itemHover","itemSelected","cards","bordered","props","local","headlessProps","styles","variantStyle","customClass","class","getClassName","renderProps","base","sizeClass","variantClass","layoutClass","columns","undefined","stateClass","isDisabled","focusClass","isFocusVisible","filter","Boolean","join","defaultEmptyState","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$4","_el$5","_co$","_$getNextMarker","nextSibling","_el$3","_$insert","_$createComponent","EmptyIcon","contextValue","Provider","value","children","_el$6","_tmpl$4","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","_el$11","_el$12","_co$4","when","_el$7","_tmpl$2","_$effect","_$className","_$mergeProps","renderEmptyState","_el$8","_tmpl$3","context","sizeStyle","isSelected","isHovered","textClass","pressedClass","isPressed","_el$13","_tmpl$5","_p$","_v$","_v$2","imageAlt","_v$3","e","_$setAttribute","t","a","_el$14","_tmpl$6","CheckIcon","_el$15","_tmpl$7","_el$16","_el$18","_el$19","_co$5","_c$","_$memo","_el$17","className","_el$20","itemKey","_el$21","_tmpl$8","_el$22","_tmpl$9","Item","SelectionCheckbox","splitProps","createContext","useContext","Tabs","HeadlessTabs","TabList","HeadlessTabList","Tab","HeadlessTab","TabPanel","HeadlessTabPanel","TabsSizeContext","createContext","size","variant","sizeStyles","sm","tab","tabList","panel","md","lg","variantStyles","underline","base","default","selected","disabled","pill","boxed","Tabs","props","mergedProps","useProviderProps","local","headlessProps","splitProps","customClass","class","getClassName","renderProps","orientationClass","orientation","disabledClass","isDisabled","filter","Boolean","join","_$createComponent","Provider","value","children","HeadlessTabs","_$mergeProps","TabList","ctx","useContext","sizeClass","variantClass","focusClass","isFocusVisible","HeadlessTabList","Tab","variantBase","stateClass","isSelected","pressedClass","isPressed","cursorClass","HeadlessTab","TabPanel","HeadlessTabPanel","List","Panel","splitProps","createContext","useContext","Breadcrumbs","HeadlessBreadcrumbs","BreadcrumbItem","HeadlessBreadcrumbItem","BreadcrumbsSizeContext","createContext","size","variant","showSeparator","sizeStyles","sm","text","icon","gap","md","lg","variantStyles","default","item","current","separator","subtle","Breadcrumbs","props","mergedProps","useProviderProps","local","headlessProps","splitProps","customClass","class","getClassName","renderProps","base","sizeClass","disabledClass","isDisabled","filter","Boolean","join","_$createComponent","Provider","value","children","HeadlessBreadcrumbs","_$mergeProps","BreadcrumbItem","ctx","useContext","vStyles","stateClass","isCurrent","cursorClass","transitionClass","focusClass","isFocusVisible","separatorClass","renderChildren","_$memo","ChevronIcon","HeadlessBreadcrumbItem","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","Item","splitProps","Show","useContext","NumberField","HeadlessNumberField","NumberFieldLabel","HeadlessNumberFieldLabel","NumberFieldGroup","HeadlessNumberFieldGroup","NumberFieldInput","HeadlessNumberFieldInput","NumberFieldIncrementButton","HeadlessNumberFieldIncrementButton","NumberFieldDecrementButton","HeadlessNumberFieldDecrementButton","NumberFieldContext","sizeStyles","sm","input","label","description","button","buttonGap","md","lg","PlusIcon","props","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","class","MinusIcon","_el$2","_tmpl$2","NumberFieldDescription","context","useContext","NumberFieldContext","descriptionProps","ref","_ref","rest","_el$3","_tmpl$3","_$spread","_$mergeProps","_$insert","children","_$runHydrationEvents","NumberFieldError","errorMessageProps","_el$4","NumberField","mergedProps","useProviderProps","local","headlessProps","splitProps","size","containerClasses","base","disabledClass","isDisabled","custom","filter","Boolean","join","groupClasses","gapClass","inputClasses","renderProps","sizeClass","variantClass","variant","stateClass","isInvalid","hoverClass","buttonClasses","isPressed","isHovered","labelClasses","descriptionClasses","errorClasses","_$createComponent","HeadlessNumberField","errorMessage","Show","when","HeadlessNumberFieldLabel","_$memo","isRequired","_tmpl$4","HeadlessNumberFieldGroup","hideStepper","HeadlessNumberFieldDecrementButton","HeadlessNumberFieldInput","HeadlessNumberFieldIncrementButton","splitProps","DropZone","HeadlessDropZone","props","local","headlessProps","getClassName","renderProps","base","join","stateClass","isDisabled","isDropTarget","isHovered","isFocused","focusRingClass","isFocusVisible","class","filter","Boolean","_$createComponent","_$mergeProps","splitProps","FileTrigger","HeadlessFileTrigger","props","local","headlessProps","hasClass","class","trim","length","_$createComponent","_$mergeProps","children","_$memo","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_$className","splitProps","Show","useContext","SearchField","HeadlessSearchField","SearchFieldLabel","HeadlessSearchFieldLabel","SearchFieldInput","HeadlessSearchFieldInput","SearchFieldClearButton","HeadlessSearchFieldClearButton","SearchFieldContext","sizeStyles","sm","container","input","label","description","icon","clearButton","md","lg","SearchIcon","props","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","class","ClearIcon","_el$2","_tmpl$2","SearchFieldDescription","context","useContext","SearchFieldContext","_el$3","_tmpl$3","_$spread","_$mergeProps","descriptionProps","_$insert","children","_$runHydrationEvents","SearchFieldError","_el$4","errorMessageProps","SearchField","mergedProps","useProviderProps","local","headlessProps","splitProps","size","containerClasses","base","disabledClass","isDisabled","custom","filter","Boolean","join","inputWrapperClasses","sizeClass","inputClasses","renderProps","paddingClass","hideSearchIcon","variantClass","variant","stateClass","isInvalid","hoverClass","searchIconClasses","clearButtonClasses","isPressed","isHovered","labelClasses","descriptionClasses","errorClasses","_$createComponent","HeadlessSearchField","errorMessage","Show","when","HeadlessSearchFieldLabel","_$memo","isRequired","_tmpl$4","_el$6","_tmpl$5","_el$7","firstChild","_el$8","_co$","_$getNextMarker","nextSibling","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","HeadlessSearchFieldInput","HeadlessSearchFieldClearButton","_$className","Show","splitProps","ContextualHelp","props","local","splitProps","_$createComponent","TooltipTrigger","children","Show","when","fallback","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","triggerLabel","_v$2","class","e","_$setAttribute","t","_$className","undefined","Tooltip","content","splitProps","Show","createUniqueId","Slider","HeadlessSlider","SliderTrack","HeadlessSliderTrack","SliderThumb","HeadlessSliderThumb","SliderOutput","HeadlessSliderOutput","createSignal","createMemo","Show","sizeStyles","sm","track","thumb","label","md","lg","clamp","value","min","max","Math","snapToStep","step","snapped","round","decimalPlaces","toString","split","length","rounded","parseFloat","toFixed","RangeSlider","props","minValue","maxValue","size","isDisabled","defaultStart","defaultValue","start","defaultEnd","end","internalStart","setInternalStart","internalEnd","setInternalEnd","startValue","undefined","endValue","startPercent","endPercent","formatter","Intl","NumberFormat","formatOptions","formattedOutput","format","setRange","s","e","newStart","newEnd","onChange","draggingThumb","setDraggingThumb","focusedThumb","setFocusedThumb","trackRef","getValueFromPointer","clientX","rect","getBoundingClientRect","percent","left","width","closerThumb","distToStart","abs","distToEnd","onPointerDown","preventDefault","currentTarget","setPointerCapture","pointerId","onPointerMove","onPointerUp","onChangeEnd","onKeyDown","pageStep","current","newValue","handled","key","stopPropagation","thumbClasses","isDragging","isFocused","base","sizeClass","stateClass","focusClass","filter","Boolean","join","_el$","_$getNextElement","_tmpl$4","_el$12","firstChild","_el$13","_co$3","_$getNextMarker","nextSibling","_el$9","_el$0","_el$1","_el$10","_el$11","_$insert","_$createComponent","when","showOutput","children","_el$2","_tmpl$3","_el$5","_el$6","_co$","_el$7","_el$8","_co$2","_el$3","_tmpl$","_$effect","_$className","_el$4","_tmpl$2","$$pointerup","$$pointermove","$$pointerdown","_ref$","_$use","addEventListener","$$keydown","_p$","_v$","class","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","t","_$setAttribute","a","o","_$setStyleProperty","i","n","h","r","d","l","u","c","w","m","f","y","g","p","b","T","_$runHydrationEvents","_$delegateEvents","sizeStyles","sm","trackHorizontal","trackVertical","thumb","label","output","md","lg","Slider","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","orientation","labelId","createUniqueId","containerClasses","base","custom","class","filter","Boolean","join","labelRowClasses","rowLayout","trackContainerClasses","disabledClass","isDisabled","trackClasses","_renderProps","axisClass","interactiveClass","fillClasses","variantClass","variant","fillStyle","renderProps","left","bottom","width","height","valuePercent","top","thumbClasses","sizeClass","stateClass","isDragging","isHovered","focusClass","isFocusVisible","labelClasses","outputClasses","minMaxClasses","showOutput","minValue","maxValue","_$createComponent","HeadlessSlider","_$mergeProps","undefined","children","Show","when","_el$","_$getNextElement","_tmpl$2","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","_$insert","_el$2","_tmpl$","_$setAttribute","_$effect","_$className","HeadlessSliderOutput","_el$7","_tmpl$3","HeadlessSliderTrack","trackRenderProps","_el$1","_p$","_v$3","_v$4","e","t","_$style","HeadlessSliderThumb","showMinMax","_el$8","_tmpl$4","_el$9","_el$0","_v$","_v$2","splitProps","For","Show","Toast","HeadlessToast","ToastRegion","HeadlessToastRegion","ToastProvider","HeadlessToastProvider","ToastContext","ToastTitle","HeadlessToastTitle","ToastDescription","HeadlessToastDescription","ToastCloseButton","HeadlessToastCloseButton","globalToastQueue","addToast","headlessAddToast","useToastContext","regionStyles","join","toastBaseStyles","variantStyles","info","success","warning","error","neutral","iconStyles","closeButtonStyles","InfoIcon","_$getNextElement","_tmpl$","SuccessIcon","_tmpl$2","WarningIcon","_tmpl$3","ErrorIcon","_tmpl$4","CloseIcon","_tmpl$5","getVariantIcon","variant","_$createComponent","props","local","rest","_$mergeProps","placement","_renderProps","class","filter","Boolean","children","regionProps","each","visibleToasts","toast","content","type","_el$6","_tmpl$6","_$insert","_$effect","_$className","_el$7","_tmpl$8","_el$9","firstChild","_el$0","_co$","_$getNextMarker","nextSibling","_el$1","_el$10","_co$2","_el$11","_el$12","_co$3","when","title","description","action","_el$8","_tmpl$7","_$addEventListener","onAction","label","_$runHydrationEvents","options","toastSuccess","message","timeout","toastError","toastWarning","toastInfo","_$delegateEvents","splitProps","createContext","useContext","Show","Disclosure","HeadlessDisclosure","DisclosureGroup","HeadlessDisclosureGroup","DisclosureTrigger","HeadlessDisclosureTrigger","DisclosurePanel","HeadlessDisclosurePanel","DisclosureSizeContext","createContext","size","variant","sizeStyles","sm","trigger","panel","icon","gap","md","lg","variantStyles","default","container","base","disabled","bordered","filled","ghost","DisclosureGroup","props","mergedProps","useProviderProps","local","headlessProps","splitProps","customClass","class","getClassName","_renderProps","gapClass","filter","Boolean","join","_$createComponent","Provider","value","children","HeadlessDisclosureGroup","_$mergeProps","Disclosure","parentCtx","useContext","variantClass","HeadlessDisclosure","DisclosureTrigger","ctx","HeadlessDisclosureTrigger","_$memo","Show","when","hideIcon","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","DisclosurePanel","sizeClass","HeadlessDisclosurePanel","Trigger","Panel","Item","splitProps","Show","createUniqueId","Meter","HeadlessMeter","sizeStyles","sm","track","text","md","lg","variantStyles","primary","accent","success","warning","danger","info","props","local","headlessProps","size","variant","sizeConfig","labelId","renderChildren","valueText","percentage","showValueLabel","_$createComponent","when","label","children","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","_el$2","_tmpl$","_$setAttribute","_el$3","_tmpl$2","_$effect","_$className","_el$8","_tmpl$4","_el$9","_$setStyleProperty","_p$","_v$","_v$2","e","t","undefined","_$mergeProps","class","splitProps","Show","createUniqueId","TagList","HeadlessTagList","Tag","HeadlessTag","TagRemoveButton","HeadlessTagRemoveButton","sizeStyles","sm","tag","removeButton","label","md","lg","variantStyles","default","selected","disabled","outline","solid","TagGroup","props","local","labelId","size","variant","sizeConfig","variantConfig","getKey","item","id","undefined","key","String","_el$","_$getNextElement","_tmpl$2","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","_$insert","_$createComponent","when","children","_el$2","_tmpl$","_$setAttribute","_$effect","_$className","items","onRemove","selectionMode","selectedKeys","defaultSelectedKeys","onSelectionChange","disabledKeys","isDisabled","renderEmptyState","_tmpl$3","class","isSelected","base","variantClass","disabledClass","trim","renderProps","_el$8","allowsRemoving","buttonProps","removeButtonProps","_tmpl$4","Show","splitProps","orientationStyles","vertical","horizontal","LabeledValue","props","local","splitProps","orientation","resolvedValue","value","children","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","_co$","_$getNextMarker","nextSibling","_el$4","_el$5","_co$2","_$insert","_$createComponent","UILabel","size","labelClass","label","Show","when","UIText","variant","valueClass","_$effect","_$className","class","Show","splitProps","variantStyles","neutral","positive","notice","negative","info","sizeStyles","sm","dot","text","md","lg","StatusLight","props","local","variant","size","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_co$","_$getNextMarker","_$insert","_$createComponent","when","children","_$effect","_p$","_v$","class","_v$2","indicatorClass","e","_$className","t","undefined","splitProps","Calendar","HeadlessCalendar","CalendarHeading","CalendarButton","CalendarGrid","CalendarCell","sizeStyles","sm","container","header","cell","button","md","lg","Calendar","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","_$createComponent","HeadlessCalendar","_$mergeProps","class","children","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_el$8","_el$9","_co$3","_$insert","CalendarButton","slot","_tmpl$","CalendarHeading","_tmpl$2","CalendarGrid","date","CalendarCell","isSelected","isFocused","isDisabled","isOutsideMonth","isToday","isPressed","base","stateClass","focusClass","pressedClass","trim","splitProps","RangeCalendar","HeadlessRangeCalendar","RangeCalendarHeading","RangeCalendarButton","RangeCalendarGrid","RangeCalendarCell","sizeStyles","sm","container","header","cell","button","md","lg","RangeCalendar","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","_$createComponent","HeadlessRangeCalendar","_$mergeProps","class","children","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_el$8","_el$9","_co$3","_$insert","RangeCalendarButton","slot","_tmpl$","RangeCalendarHeading","_tmpl$2","RangeCalendarGrid","date","RangeCalendarCell","isSelected","isSelectionStart","isSelectionEnd","isFocused","isDisabled","isOutsideMonth","isToday","isPressed","base","stateClass","roundedClass","focusClass","pressedClass","trim","splitProps","DateField","HeadlessDateField","DateFieldLabel","DateFieldDescription","DateFieldErrorMessage","DateInput","DateSegment","sizeStyles","sm","container","input","segment","label","md","lg","DateField","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","isInvalid","errorMessage","_$createComponent","HeadlessDateField","_$mergeProps","description","class","children","_$memo","DateFieldLabel","isRequired","_$getNextElement","_tmpl$","DateInput","isFocused","isDisabled","base","borderClass","disabledClass","focusClass","trim","DateSegment","isPlaceholder","isEditable","stateClass","type","DateFieldDescription","DateFieldErrorMessage","splitProps","TimeField","HeadlessTimeField","TimeFieldLabel","TimeFieldDescription","TimeFieldErrorMessage","TimeInput","TimeSegment","sizeStyles","sm","container","input","segment","label","md","lg","TimeField","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","isInvalid","errorMessage","_$createComponent","HeadlessTimeField","_$mergeProps","description","class","children","_$memo","TimeFieldLabel","isRequired","_$getNextElement","_tmpl$","TimeInput","isFocused","isDisabled","base","borderClass","disabledClass","focusClass","trim","TimeSegment","isPlaceholder","isEditable","stateClass","type","TimeFieldDescription","TimeFieldErrorMessage","splitProps","Show","DatePicker","HeadlessDatePicker","DatePickerLabel","HeadlessDatePickerLabel","DatePickerDescription","HeadlessDatePickerDescription","DatePickerErrorMessage","HeadlessDatePickerErrorMessage","DatePickerButton","DatePickerContent","DateInput","DateSegment","CalendarIcon","_$getNextElement","_tmpl$","sizeStyles","sm","container","input","segment","label","button","md","lg","DatePicker","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","isInvalid","errorMessage","_$createComponent","HeadlessDatePicker","_$mergeProps","description","class","children","Show","when","HeadlessDatePickerLabel","_$memo","isRequired","_tmpl$2","_el$3","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_el$8","_el$9","_co$3","_$insert","DateInput","isFocused","isDisabled","base","borderClass","disabledClass","focusClass","trim","DateSegment","isPlaceholder","isEditable","stateClass","type","DatePickerButton","isOpen","DatePickerPopup","HeadlessDatePickerDescription","HeadlessDatePickerErrorMessage","DatePickerContent","Calendar","splitProps","Show","createMemo","DateRangePicker","HeadlessDateRangePicker","DateRangePickerLabel","HeadlessDateRangePickerLabel","DateRangePickerDescription","HeadlessDateRangePickerDescription","DateRangePickerErrorMessage","HeadlessDateRangePickerErrorMessage","DateRangePickerButton","DateRangePickerContent","useDateRangePickerContext","CalendarIcon","_$getNextElement","_tmpl$","sizeStyles","sm","container","field","label","button","md","lg","DateRangeDisplay","props","context","useDateRangePickerContext","sizeConfig","size","startDisplay","createMemo","state","calendarState","start","value","anchorDate","month","day","year","endDisplay","end","hasValue","_$createComponent","Show","when","children","HeadlessDateRangePickerLabel","_$memo","isRequired","_tmpl$2","_el$3","_tmpl$3","_el$4","firstChild","_el$5","nextSibling","_el$6","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_$spread","_$mergeProps","pickerAria","startFieldProps","isInvalid","isDisabled","_$insert","endFieldProps","DateRangePickerButton","class","isOpen","base","borderClass","disabledClass","trim","DateRangePickerContent","RangeCalendar","_$runHydrationEvents","description","HeadlessDateRangePickerDescription","errorMessage","HeadlessDateRangePickerErrorMessage","DateRangePicker","mergedProps","useProviderProps","local","rest","splitProps","HeadlessDateRangePicker","splitProps","createContext","createMemo","useContext","Show","Table","HeadlessTable","TableHeader","HeadlessTableHeader","TableColumn","HeadlessTableColumn","TableBody","HeadlessTableBody","TableRow","HeadlessTableRow","TableCell","HeadlessTableCell","TableSelectionCheckbox","HeadlessTableSelectionCheckbox","TableSelectAllCheckbox","HeadlessTableSelectAllCheckbox","TableSizeContext","createContext","size","variant","sizeStyles","sm","table","headerCell","cell","checkbox","md","lg","variantStyles","default","wrapper","header","row","rowHover","rowSelected","striped","bordered","alignStyles","left","center","right","Table","props","mergedProps","useProviderProps","local","headlessProps","splitProps","styles","variantStyle","customClass","class","getClassName","renderProps","base","sizeClass","stateClass","isEmpty","focusClass","isFocusVisible","filter","Boolean","join","contextValue","createMemo","_$createComponent","Provider","value","children","_el$","_$getNextElement","_tmpl$3","_el$5","firstChild","_el$6","_co$","_$getNextMarker","nextSibling","_el$7","_el$8","_co$2","_el$4","_$insert","Show","when","title","_el$2","_tmpl$","description","_el$3","_tmpl$2","HeadlessTable","_$mergeProps","_$effect","_$className","TableHeader","context","useContext","className","HeadlessTableHeader","TableColumn","sizeStyle","alignClass","align","sortClass","isSortable","isHovered","getStyle","width","undefined","HeadlessTableColumn","style","_el$9","_tmpl$4","_el$0","_el$1","_el$10","_co$3","_c$","_$memo","sortDirection","SortIcon","direction","TableBody","defaultEmptyState","_el$11","_tmpl$5","_el$12","_el$13","_el$15","_el$16","_co$4","_el$14","EmptyIcon","HeadlessTableBody","renderEmptyState","TableRow","variantClass","isDisabled","isSelected","pressedClass","isPressed","HeadlessTableRow","TableCell","HeadlessTableCell","TableSelectionCheckbox","checkboxClass","_el$17","_tmpl$6","_el$18","HeadlessTableSelectionCheckbox","rowKey","TableSelectAllCheckbox","_el$19","_tmpl$7","_el$20","HeadlessTableSelectAllCheckbox","_el$21","_tmpl$8","_c$2","_tmpl$9","_tmpl$0","_$setAttribute","_el$24","_tmpl$1","Header","Column","Body","Row","Cell","SelectionCheckbox","SelectAllCheckbox","splitProps","createContext","createMemo","useContext","Show","Tree","HeadlessTree","TreeItem","HeadlessTreeItem","TreeExpandButton","HeadlessTreeExpandButton","TreeSelectionCheckbox","HeadlessTreeSelectionCheckbox","TreeSizeContext","createContext","size","variant","sizeStyles","sm","tree","item","indent","icon","expandButton","label","description","checkbox","md","lg","variantStyles","default","itemHover","itemSelected","bordered","quiet","Tree","props","mergedProps","useProviderProps","local","headlessProps","splitProps","styles","variantStyle","customClass","class","getClassName","renderProps","base","sizeClass","variantClass","stateClass","isDisabled","focusClass","isFocusVisible","filter","Boolean","join","defaultEmptyState","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$4","_el$5","_co$","_$getNextMarker","nextSibling","_el$3","_$insert","_$createComponent","EmptyTreeIcon","contextValue","createMemo","Provider","value","children","_el$6","_tmpl$4","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","_el$11","_el$12","_co$4","Show","when","_el$7","_tmpl$2","_$effect","_$className","HeadlessTree","_$mergeProps","renderEmptyState","_el$8","_tmpl$3","TreeItem","context","useContext","sizeStyle","isSelected","isHovered","textClass","pressedClass","isPressed","getStyle","level","HeadlessTreeItem","style","TreeExpandButton","_el$13","_tmpl$5","_$memo","isExpandable","FolderIcon","isOpen","isExpanded","FileIcon","_el$14","_tmpl$6","_el$15","_el$17","_el$18","_co$5","_c$","_el$16","CheckIcon","className","HeadlessTreeExpandButton","ChevronIcon","TreeSelectionCheckbox","_el$19","HeadlessTreeSelectionCheckbox","itemKey","_el$20","_tmpl$7","_$setAttribute","_el$21","_tmpl$8","_c$2","_tmpl$9","_tmpl$0","_el$24","_tmpl$1","_el$25","_tmpl$10","_el$26","_tmpl$11","Item","ExpandButton","SelectionCheckbox","splitProps","createContext","createMemo","useContext","Show","ColorSlider","HeadlessColorSlider","ColorSliderTrack","HeadlessColorSliderTrack","ColorSliderThumb","HeadlessColorSliderThumb","ColorArea","HeadlessColorArea","ColorAreaGradient","HeadlessColorAreaGradient","ColorAreaThumb","HeadlessColorAreaThumb","ColorWheel","HeadlessColorWheel","ColorWheelTrack","HeadlessColorWheelTrack","ColorWheelThumb","HeadlessColorWheelThumb","ColorField","HeadlessColorField","ColorFieldInput","HeadlessColorFieldInput","ColorSwatch","HeadlessColorSwatch","parseColor","getColorChannels","splitProps","ColorEditor","HeadlessColorEditor","props","local","headlessProps","_$createComponent","_$mergeProps","class","colorSpace","base","join","splitProps","createContext","createMemo","useContext","ColorSwatchPicker","HeadlessColorSwatchPicker","ColorSwatchPickerItem","HeadlessColorSwatchPickerItem","ColorSwatch","HeadlessColorSwatch","SwatchPickerContext","size","rounding","sizeMap","xs","sm","md","lg","densityMap","compact","regular","spacious","roundingMap","none","default","full","props","local","headlessProps","normalizeSize","density","contextValue","_$createComponent","Provider","value","children","_$mergeProps","class","context","sizeClass","roundingClass","color","_renderProps","base","_el$","_$getNextElement","_tmpl$","_$effect","_$className","ColorSizeContext","createContext","size","sizeStyles","sm","slider","track","thumb","label","area","container","wheel","field","input","swatch","md","lg","ColorSlider","props","local","headlessProps","splitProps","styles","customClass","class","getClassName","renderProps","base","stateClass","isDisabled","filter","Boolean","join","contextValue","createMemo","_$createComponent","Provider","value","children","HeadlessColorSlider","_$mergeProps","_el$","_$getNextElement","_tmpl$2","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","Show","when","_el$2","_tmpl$","_$effect","_$className","showValue","_el$3","Math","round","ColorSliderTrack","ColorSliderThumb","context","useContext","dragClass","isDragging","HeadlessColorSliderTrack","focusClass","isFocusVisible","disabledClass","HeadlessColorSliderThumb","ColorArea","HeadlessColorArea","ColorAreaGradient","ColorAreaThumb","className","HeadlessColorAreaGradient","HeadlessColorAreaThumb","ColorWheel","HeadlessColorWheel","ColorWheelTrack","ColorWheelThumb","HeadlessColorWheelTrack","HeadlessColorWheelThumb","ColorField","HeadlessColorField","_el$8","ColorFieldInput","isInvalid","errorMessage","_$memo","description","_el$9","_tmpl$3","_el$0","_tmpl$4","borderClass","HeadlessColorFieldInput","ColorSwatch","_renderProps","selectableClass","isSelectable","selectedClass","isSelected","handleClick","onClick","_el$1","_tmpl$5","$$click","HeadlessColorSwatch","_p$","_v$","_v$2","e","_$setAttribute","t","undefined","_$runHydrationEvents","ColorPicker","_el$10","_tmpl$6","_el$12","_el$13","_co$3","_el$14","_el$15","_co$4","_el$16","_el$17","_co$5","_el$18","_el$19","_co$6","_el$11","defaultValue","onChange","xChannel","yChannel","showSliders","channel","showInput","color","Track","Thumb","Gradient","Input","_$delegateEvents","splitProps","Show","Landmark","HeadlessLandmark","useLandmarkController","roleLabels","main","navigation","search","banner","contentinfo","complementary","form","region","roleColors","props","local","headlessProps","customClass","class","role","getClassName","base","debugClass","showLabel","filter","Boolean","join","_$createComponent","_$mergeProps","children","when","_el$","_$getNextElement","_tmpl$2","_el$6","firstChild","_el$7","_co$2","_$getNextMarker","nextSibling","_el$8","_el$9","_co$3","_$insert","_el$2","_tmpl$","_el$3","_el$4","_el$5","_co$","_$effect","_$className","_$memo","SkipLink","className","_el$0","_tmpl$3","_$setAttribute","href","LandmarkNavigator","controller","isVisible","_el$1","_tmpl$4","_el$10","_el$11","_el$12","_el$13","_el$14","$$click","focusPrevious","focusMain","focusNext","_$runHydrationEvents","_$delegateEvents","splitProps","splitProps","Content","props","local","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","ViewHeader","_el$2","_tmpl$2","ViewFooter","_el$3","_tmpl$3","View","props","local","domProps","splitProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","splitProps","Well","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","splitProps","Card","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","splitProps","Image","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$runHydrationEvents","splitProps","PageLayout","props","local","rest","classes","base","header","withHeader","custom","class","filter","Boolean","join","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","children","_$runHydrationEvents","splitProps","directionMap","alignMap","justifyMap","Flex","props","local","rest","classes","parts","inline","direction","push","gap","undefined","wrap","alignItems","justifyContent","class","filter","Boolean","join","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","children","_$runHydrationEvents","splitProps","Grid","props","local","rest","gridStyle","s","style","columns","undefined","rows","areas","map","a","join","classes","parts","inline","gap","push","columnGap","rowGap","alignItems","start","center","end","stretch","justifyItems","class","filter","Boolean","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","children","_$runHydrationEvents","Show","splitProps","IllustratedMessage","props","local","domProps","_el$","_$getNextElement","_tmpl$5","_el$6","firstChild","_el$7","_co$","_$getNextMarker","nextSibling","_el$8","_el$9","_co$2","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_$spread","_$mergeProps","class","_$insert","_$createComponent","when","illustration","children","_el$2","_tmpl$","heading","_el$3","_tmpl$2","description","_el$4","_tmpl$3","_el$5","_tmpl$4","_$runHydrationEvents","splitProps","StepList","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","Step","_el$2","_tmpl$2","DragAndDropContext","DropIndicator","DropIndicatorContext","useDndPersistedKeys","useRenderDropIndicator","useDragAndDrop","DIRECTORY_DRAG_TYPE","splitProps","SharedElement","HeadlessSharedElement","SharedElementTransition","HeadlessSharedElementTransition","mergeClassName","custom","_renderProps","filter","Boolean","join","props","local","rest","_$createComponent","_$mergeProps","class","style","ErrorBoundary","SolidErrorBoundary","StoryErrorBoundary","props","_$createComponent","fallback","err","reset","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_$insert","message","_$addEventListener","_$runHydrationEvents","children","_$delegateEvents","Show","Button","HeadlessButton","variantStyles","primary","secondary","accent","outline","Chip","props","variant","renderIcon","icon","_$createComponent","class","onPress","onClick","children","when","_el$","_$getNextElement","_tmpl$","_$insert","_el$2","_tmpl$2","text","Show","Button","HeadlessButton","NavHeader","props","_el$","_$getNextElement","_tmpl$2","_el$2","firstChild","_el$4","nextSibling","_el$5","_el$6","_co$","_$getNextMarker","_el$7","_el$8","_co$2","_$insert","_$createComponent","when","logo","fallback","logoText","children","_el$9","_tmpl$3","_el$3","_tmpl$","_$effect","_p$","_v$","_v$2","logoAlt","e","_$setAttribute","t","undefined","menuIcon","onPress","onMenuClick","menuAriaLabel","_$className","class","Logo","props","sizeClass","size","firstWord","secondWord","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$insert","_$effect","_p$","_v$","inverted","class","_v$2","undefined","_v$3","e","_$className","t","_$setAttribute","a","Header","props","showTextLogo","logo","undefined","logoProps","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","_el$4","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_el$8","_$insert","logoImage","_c$","_$memo","_$createComponent","Logo","_$mergeProps","size","children","_$effect","_$className","class","Show","For","NavItem","props","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_co$","_$getNextMarker","_$insert","title","children","_$effect","_$className","class","NavLink","activeStyles","inactiveStyles","_el$5","_tmpl$2","_p$","_v$","href","_v$2","active","e","_$setAttribute","t","undefined","NavSection","_el$6","_tmpl$3","_el$12","_el$13","_co$4","_el$7","_el$8","_el$9","_el$0","_el$1","_co$2","_el$10","_el$11","_co$3","_$createComponent","when","links","each","link","_el$14","_tmpl$4","label","LateralNav","bgColor","transparent","_el$15","_tmpl$5","Show","eventMessages","follow","left","right","_el$","_$getNextElement","_tmpl$","_$insert","_el$2","like","_el$3","_el$4","comment","_el$5","_el$6","event","_el$7","_el$8","custom","TimelineItem","props","type","leftName","leftUser","name","rightName","rightUser","renderIcon","icon","renderMessage","message","_el$9","_tmpl$2","_el$0","firstChild","_el$1","_el$10","_co$","_$getNextMarker","nextSibling","_el$11","_el$12","_co$2","_el$13","_el$14","_co$3","_el$15","_el$16","_$createComponent","Show","when","children","Avatar","src","avatar","alt","fallback","_$effect","_$className","class","Show","For","Button","HeadlessButton","ConversationPreview","props","_$createComponent","type","class","onPress","onClick","children","Avatar","src","user","avatar","alt","name","online","size","_el$","_$getNextElement","_tmpl$3","_el$2","firstChild","_el$3","_el$5","nextSibling","_el$6","_co$","_$getNextMarker","_el$8","_el$9","_co$2","_$insert","Show","when","timestamp","_el$4","_tmpl$","lastMessage","_el$7","_tmpl$2","_$memo","unreadCount","_el$0","_tmpl$4","ConversationBubble","isUser","sender","_el$1","_tmpl$6","_el$10","_el$11","_el$13","_el$14","_co$3","content","_el$12","_tmpl$5","_$effect","_$className","_p$","_v$","_v$2","e","t","undefined","Conversation","_el$15","_tmpl$7","For","each","messages","message","Show","ProfileCard","props","formatNumber","num","toFixed","toString","_el$","_$getNextElement","_tmpl$5","_el$2","firstChild","_el$15","_el$16","_co$4","_$getNextMarker","nextSibling","_el$3","_el$4","_el$13","_el$14","_co$3","_el$6","_el$1","_el$10","_co$","_el$11","_el$12","_co$2","_el$18","_el$19","_co$5","_$insert","_$createComponent","Avatar","src","avatar","alt","username","size","Show","when","bio","children","_el$5","_tmpl$","followers","undefined","_el$7","_tmpl$2","_el$8","following","_el$9","_tmpl$3","_el$0","actions","_el$17","_tmpl$4","_c$","_$memo","_$effect","_$className","class","Show","For","Button","HeadlessButton","EventCard","props","displayedAttendees","attendees","slice","remainingCount","total","attendeeCount","length","displayed","_el$","_$getNextElement","_tmpl$9","_el$35","firstChild","_el$36","_co$8","_$getNextMarker","nextSibling","_el$37","_el$38","_co$9","_el$8","_el$9","_el$29","_el$30","_co$5","_el$31","_el$32","_co$6","_el$33","_el$34","_co$7","_$insert","_$createComponent","Show","when","decorationImage","children","_el$2","_tmpl$","_el$3","_el$4","_el$5","_$effect","_p$","_v$","_v$2","_v$3","e","_$setAttribute","t","a","undefined","image","_el$6","_tmpl$2","_el$7","_v$4","_v$5","title","date","author","_el$0","_tmpl$5","_el$15","_el$16","_co$","_el$17","_el$18","_co$2","_el$1","_tmpl$3","_el$10","_el$11","_el$12","_tmpl$4","_el$13","_el$14","_el$19","_tmpl$7","_el$20","_el$26","_el$27","_co$4","For","each","attendee","Avatar","src","avatar","alt","name","size","_el$21","_tmpl$6","_el$22","_el$24","_el$25","_co$3","_el$23","actions","_el$28","_tmpl$8","_c$","_$memo","_$className","class","EventListItem","onPress","onClick","_el$39","_tmpl$0","_el$40","_v$6","_v$7","_el$41","_tmpl$10","_el$42","_el$44","_el$45","_co$0","subtitle","_el$43","_tmpl$1","Show","For","CalendarCard","props","displayedFollowers","followers","slice","remainingCount","total","followerCount","length","displayed","_el$","_$getNextElement","_tmpl$5","_el$24","firstChild","_el$25","_co$6","_$getNextMarker","nextSibling","_el$4","_el$22","_el$23","_co$5","_el$7","_el$8","_el$9","_el$20","_el$21","_co$4","_$insert","_$createComponent","Show","when","image","children","_el$2","_tmpl$","_el$3","_$effect","_p$","_v$","_v$2","title","e","_$setAttribute","t","undefined","_$memo","tags","_el$5","_tmpl$2","_el$6","For","each","tag","Chip","text","variant","_el$0","_tmpl$4","_el$1","_el$10","_el$16","_el$17","_co$2","_el$18","_el$19","_co$3","follower","index","_el$26","_tmpl$6","name","_el$12","_tmpl$3","_el$14","_el$15","_co$","_el$13","_$className","class","ProjectCard","props","size","inactive","cardContent","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$insert","name","_el$3","_tmpl$2","_$effect","_p$","_v$","imageSrc","_v$2","imageAlt","e","_$setAttribute","t","undefined","cardClasses","class","href","_el$4","_tmpl$3","_v$3","_v$4","_$className","_el$5","_tmpl$4"]}
1
+ {"version":3,"sources":["../src/button/Button.tsx","../src/provider/index.tsx","../src/theme-light/index.ts","../src/theme-dark/index.ts","../src/button/ToggleButton.tsx","../src/button/ActionButton.tsx","../src/button/ClearButton.tsx","../src/button/FieldButton.tsx","../src/button/LogicButton.tsx","../src/badge/index.tsx","../src/alert/index.tsx","../src/avatar/index.tsx","../src/switch/index.tsx","../src/switch/ToggleSwitch.tsx","../src/checkbox/index.tsx","../src/radio/index.tsx","../src/dialog/Dialog.tsx","../src/dialog/AlertDialog.tsx","../src/icon/index.tsx","../src/icon/icons/GitHubIcon.tsx","../src/icon/Illustration.tsx","../src/icon/UIIcon.tsx","../src/tooltip/index.tsx","../src/popover/index.tsx","../src/overlays/Modal.tsx","../src/overlays/Overlay.tsx","../src/overlays/Tray.tsx","../src/overlays/OpenTransition.tsx","../src/textfield/index.tsx","../src/textfield/TextArea.tsx","../src/link/index.tsx","../src/progress-bar/index.tsx","../src/progress/ProgressCircle.tsx","../src/separator/index.tsx","../src/text/index.tsx","../src/text/Heading.tsx","../src/text/Keyboard.tsx","../src/label/index.tsx","../src/form/index.tsx","../src/form/Field.tsx","../src/form/HelpText.tsx","../src/toolbar/index.tsx","../src/actionbar/index.tsx","../src/actiongroup/index.tsx","../src/buttongroup/index.tsx","../src/autocomplete/index.tsx","../src/combobox/index.tsx","../src/select/index.tsx","../src/menu/index.tsx","../src/menu/ActionMenu.tsx","../src/menu/SubmenuTrigger.tsx","../src/menu/ContextualHelpTrigger.tsx","../src/listbox/index.tsx","../src/gridlist/index.tsx","../src/tabs/index.tsx","../src/breadcrumbs/index.tsx","../src/numberfield/index.tsx","../src/dropzone/index.tsx","../src/filetrigger/index.tsx","../src/searchfield/index.tsx","../src/contextualhelp/index.tsx","../src/slider/index.tsx","../src/slider/RangeSlider.tsx","../src/toast/index.tsx","../src/disclosure/index.tsx","../src/meter/index.tsx","../src/tag-group/index.tsx","../src/labeledvalue/index.tsx","../src/statuslight/index.tsx","../src/calendar/index.tsx","../src/calendar/RangeCalendar.tsx","../src/calendar/DateField.tsx","../src/calendar/TimeField.tsx","../src/calendar/DatePicker.tsx","../src/calendar/DateRangePicker.tsx","../src/table/index.tsx","../src/tree/index.tsx","../src/color/index.tsx","../src/color/ColorEditor.tsx","../src/color/ColorSwatchPicker.tsx","../src/landmark/index.tsx","../src/view/index.tsx","../src/view/Content.tsx","../src/well/index.tsx","../src/card/index.tsx","../src/image/index.tsx","../src/custom/page-layout/index.tsx","../src/layout/Flex.tsx","../src/layout/Grid.tsx","../src/layout/css-utils.ts","../src/illustratedmessage/index.tsx","../src/steplist/index.tsx","../src/dnd/index.tsx","../src/shared-element/index.tsx","../src/index.ts","../src/story-utils/ErrorBoundary.tsx","../src/story-utils/generatePowerset.ts","../src/story-utils/index.ts","../src/style-macro-s1/index.ts","../src/theme-express/index.ts","../src/custom/chip/index.tsx","../src/custom/nav-header/index.tsx","../src/custom/logo/index.tsx","../src/custom/header/index.tsx","../src/custom/lateral-nav/index.tsx","../src/custom/timeline-item/index.tsx","../src/custom/conversation/index.tsx","../src/custom/profile-card/index.tsx","../src/custom/event-card/index.tsx","../src/custom/calendar-card/index.tsx","../src/custom/project-card/index.tsx"],"sourcesContent":["/**\n * Button component for proyecto-viviana-silapse\n *\n * A styled button component built on top of solidaria-components.\n * This component only handles styling - all behavior and accessibility\n * is provided by the headless Button from solidaria-components.\n */\n\nimport { type JSX, splitProps, mergeProps as solidMergeProps } from 'solid-js';\nimport { Button as HeadlessButton, type ButtonRenderProps } from '@proyecto-viviana/solidaria-components';\nimport type { ButtonProps } from './types';\nimport { useProviderProps } from '../provider';\n\n/**\n * Buttons allow users to perform an action or to navigate to another page.\n * They have multiple styles for various needs, and are ideal for calling attention to\n * where a user needs to do something in order to move forward in a flow.\n *\n * Built on solidaria-components Button for full accessibility support.\n * Styles are defined in components.css using the vui-button class system.\n */\nexport function Button(props: ButtonProps): JSX.Element {\n const providerProps = useProviderProps(props);\n const defaultProps: Partial<ButtonProps> = {\n variant: 'primary',\n buttonStyle: 'fill',\n size: 'md',\n };\n\n const merged = solidMergeProps(defaultProps, providerProps);\n\n const [local, headlessProps] = splitProps(merged, [\n 'variant',\n 'buttonStyle',\n 'size',\n 'fullWidth',\n 'staticColor',\n 'class',\n ]);\n\n // Generate class based on render props\n const getClassName = (renderProps: ButtonRenderProps): string => {\n const classList = [\n 'vui-button',\n `vui-button--${local.buttonStyle}`,\n `vui-button--${local.variant}`,\n `vui-button--${local.size}`,\n ];\n\n if (renderProps.isPressed) {\n classList.push('is-pressed');\n }\n\n if (local.fullWidth) {\n classList.push('vui-button--full-width');\n }\n\n if (local.class) {\n classList.push(local.class);\n }\n\n return classList.join(' ');\n };\n\n return (\n <HeadlessButton\n {...headlessProps}\n class={getClassName}\n data-variant={local.variant}\n data-style={local.buttonStyle}\n data-static-color={local.staticColor || undefined}\n >\n {props.children}\n </HeadlessButton>\n );\n}\n","/**\n * Provider component for proyecto-viviana-silapse\n *\n * Compound provider wrapping locale, modal, and theme context.\n * Modeled after React Spectrum's <Provider> behavior.\n */\n\nimport {\n type JSX,\n type ParentProps,\n createContext,\n createMemo,\n mergeProps,\n splitProps,\n useContext,\n} from 'solid-js';\nimport {\n I18nProvider,\n ModalProvider,\n isRTL,\n useLocale,\n useModalProvider,\n type Direction,\n} from '@proyecto-viviana/solidaria';\nimport type { Theme } from '../theme/types';\nimport { lightTheme } from '../theme-light';\nimport { darkTheme } from '../theme-dark';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ColorScheme = 'light' | 'dark';\nexport type Scale = 'medium' | 'large';\nexport type ValidationState = 'valid' | 'invalid';\n\nexport interface ProviderInheritedProps {\n /** Whether controls should render in their quiet/subtle style. */\n isQuiet?: boolean;\n /** Whether controls should render in their emphasized style. */\n isEmphasized?: boolean;\n /** Whether controls should be disabled. */\n isDisabled?: boolean;\n /** Whether controls should be required. */\n isRequired?: boolean;\n /** Whether controls should be read only. */\n isReadOnly?: boolean;\n /** Shared validation state for descendant form fields. */\n validationState?: ValidationState;\n}\n\nexport interface ThemeContextValue {\n /** The current color scheme. */\n colorScheme: ColorScheme;\n /** The UI scale. */\n scale: Scale;\n /** CSS class name for the active theme. */\n themeClass: string;\n /** The full resolved theme object. */\n theme: Theme;\n}\n\nexport interface ProviderContextValue extends ThemeContextValue, ProviderInheritedProps {\n /** The locale applied by the provider. */\n locale: string;\n /** The writing direction applied by the provider. */\n direction: Direction;\n}\n\nexport interface ProviderProps extends ParentProps, ProviderInheritedProps {\n /** The locale for i18n. If not provided, inherits the nearest locale. */\n locale?: string;\n /** The color scheme. Inherits from the nearest provider when omitted. */\n colorScheme?: ColorScheme;\n /** The UI scale. Inherits from the nearest provider when omitted. */\n scale?: Scale;\n /** The theme CSS class (string) or a full Theme object. */\n theme?: string | Theme;\n /** Additional CSS class name for the provider wrapper. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n}\n\ninterface InternalProviderContextValue extends ProviderContextValue {\n themeSource?: string | Theme;\n}\n\n// ============================================\n// CONTEXT\n// ============================================\n\nconst defaultThemeContext: ThemeContextValue = {\n colorScheme: 'light',\n scale: 'medium',\n themeClass: lightTheme.className,\n theme: lightTheme,\n};\n\nexport const ThemeContext = createContext<ThemeContextValue>(defaultThemeContext);\nconst ProviderContext = createContext<InternalProviderContextValue | null>(null);\n\n/**\n * Hook to access the current theme context.\n */\nexport function useTheme(): ThemeContextValue {\n const provider = useContext(ProviderContext);\n if (provider) {\n return provider;\n }\n\n return useContext(ThemeContext);\n}\n\n/**\n * Returns the settings applied by the nearest provider.\n */\nexport function useProvider(): ProviderContextValue {\n const context = useContext(ProviderContext);\n\n if (!context) {\n throw new Error('No root provider found. Wrap this subtree in <Provider>.');\n }\n\n return context;\n}\n\n/**\n * Merges inherited provider props with the component's explicit props.\n */\nexport function useProviderProps<T extends object>(props: T): T {\n const context = useContext(ProviderContext);\n\n if (!context) {\n return props;\n }\n\n return mergeProps(\n ({\n isQuiet: context.isQuiet,\n isEmphasized: context.isEmphasized,\n isDisabled: context.isDisabled,\n isRequired: context.isRequired,\n isReadOnly: context.isReadOnly,\n validationState: context.validationState,\n } as unknown as Partial<T>),\n props\n ) as T;\n}\n\n// ============================================\n// THEME RESOLUTION\n// ============================================\n\nfunction getBuiltInTheme(colorScheme: ColorScheme): Theme {\n return colorScheme === 'dark' ? darkTheme : lightTheme;\n}\n\nfunction resolveTheme(\n themeInput: string | Theme | undefined,\n colorScheme: ColorScheme,\n inheritedThemeClass?: string\n): { className: string; properties: Record<string, string>; themeObj: Theme } {\n if (themeInput && typeof themeInput === 'object') {\n return {\n className: themeInput.className,\n properties: themeInput.properties,\n themeObj: themeInput,\n };\n }\n\n const builtIn = getBuiltInTheme(colorScheme);\n\n if (typeof themeInput === 'string') {\n return {\n className: themeInput,\n properties: builtIn.properties,\n themeObj: builtIn,\n };\n }\n\n if (inheritedThemeClass && inheritedThemeClass !== builtIn.className) {\n return {\n className: inheritedThemeClass,\n properties: builtIn.properties,\n themeObj: builtIn,\n };\n }\n\n return {\n className: builtIn.className,\n properties: builtIn.properties,\n themeObj: builtIn,\n };\n}\n\n// ============================================\n// INTERNAL COMPONENTS\n// ============================================\n\ninterface ProviderRootProps {\n children: JSX.Element;\n class: string;\n style: JSX.CSSProperties;\n colorScheme: ColorScheme;\n rest: Record<string, unknown>;\n}\n\nfunction ProviderRoot(props: ProviderRootProps): JSX.Element {\n const locale = useLocale();\n const { modalProviderProps } = useModalProvider();\n\n return (\n <div\n {...props.rest}\n {...modalProviderProps}\n class={props.class}\n style={props.style}\n lang={locale().locale}\n dir={locale().direction}\n data-color-scheme={props.colorScheme}\n >\n {props.children}\n </div>\n );\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * Root provider for proyecto-viviana UI.\n *\n * Wraps I18nProvider for locale management, provides inherited component props,\n * and applies theme CSS custom properties to a scoped wrapper element.\n */\nexport function Provider(props: ProviderProps): JSX.Element {\n const parentProvider = useContext(ProviderContext);\n const inheritedLocale = useLocale();\n\n const [local, rest] = splitProps(props, [\n 'locale',\n 'colorScheme',\n 'scale',\n 'theme',\n 'class',\n 'style',\n 'children',\n 'isQuiet',\n 'isEmphasized',\n 'isDisabled',\n 'isRequired',\n 'isReadOnly',\n 'validationState',\n ]);\n\n const colorScheme = createMemo<ColorScheme>(() => local.colorScheme ?? parentProvider?.colorScheme ?? 'light');\n const scale = createMemo<Scale>(() => local.scale ?? parentProvider?.scale ?? 'medium');\n const locale = createMemo(() => local.locale ?? parentProvider?.locale ?? inheritedLocale().locale);\n\n const inheritedThemeClass = createMemo(() => {\n if (!parentProvider) {\n return undefined;\n }\n\n const builtInParentTheme = getBuiltInTheme(parentProvider.colorScheme);\n return parentProvider.themeClass !== builtInParentTheme.className ? parentProvider.themeClass : undefined;\n });\n\n const resolvedTheme = createMemo(() =>\n resolveTheme(\n local.theme ?? parentProvider?.themeSource,\n colorScheme(),\n inheritedThemeClass()\n )\n );\n\n const providerValue: InternalProviderContextValue = {\n get locale() {\n return locale();\n },\n get direction() {\n return local.locale ? (isRTL(local.locale) ? 'rtl' : 'ltr') : inheritedLocale().direction;\n },\n get colorScheme() {\n return colorScheme();\n },\n get scale() {\n return scale();\n },\n get themeClass() {\n return resolvedTheme().className;\n },\n get theme() {\n return resolvedTheme().themeObj;\n },\n get themeSource() {\n return local.theme ?? parentProvider?.themeSource;\n },\n get isQuiet() {\n return local.isQuiet ?? parentProvider?.isQuiet;\n },\n get isEmphasized() {\n return local.isEmphasized ?? parentProvider?.isEmphasized;\n },\n get isDisabled() {\n return local.isDisabled ?? parentProvider?.isDisabled;\n },\n get isRequired() {\n return local.isRequired ?? parentProvider?.isRequired;\n },\n get isReadOnly() {\n return local.isReadOnly ?? parentProvider?.isReadOnly;\n },\n get validationState() {\n return local.validationState ?? parentProvider?.validationState;\n },\n };\n\n const classes = createMemo(() => {\n const parts = [\n 'vui-provider',\n `vui-provider--${colorScheme()}`,\n `vui-provider--${scale()}`,\n resolvedTheme().className,\n local.class,\n ];\n\n return parts.filter(Boolean).join(' ');\n });\n\n const mergedStyle = createMemo<JSX.CSSProperties>(() => ({\n ...resolvedTheme().properties,\n 'color-scheme': colorScheme(),\n isolation: parentProvider ? undefined : 'isolate',\n ...(local.style ?? {}),\n }));\n\n return (\n <ProviderContext.Provider value={providerValue}>\n <ThemeContext.Provider value={providerValue}>\n <I18nProvider locale={locale()}>\n <ModalProvider>\n <ProviderRoot\n rest={rest as Record<string, unknown>}\n class={classes()}\n style={mergedStyle()}\n colorScheme={colorScheme()}\n >\n {local.children}\n </ProviderRoot>\n </ModalProvider>\n </I18nProvider>\n </ThemeContext.Provider>\n </ProviderContext.Provider>\n );\n}\n","/**\n * Theme Light module for proyecto-viviana-silapse\n *\n * Light theme CSS custom properties. Apply the class to the root element\n * or use the Provider component with colorScheme=\"light\".\n */\n\nimport type { Theme } from '../theme/types';\n\nexport const themeLightClass = 'vui-theme-light';\n\nexport const lightTheme: Theme = {\n className: themeLightClass,\n properties: {\n // Backgrounds\n '--vui-bg-100': '#ffffff',\n '--vui-bg-200': '#fafafa',\n '--vui-bg-300': '#f5f5f5',\n '--vui-bg-400': '#eeeeee',\n '--vui-bg-500': '#e0e0e0',\n\n // Text / Primary\n '--vui-text-primary': '#1a1a1a',\n '--vui-text-secondary': '#666666',\n '--vui-text-tertiary': '#999999',\n '--vui-text-disabled': '#bdbdbd',\n\n // Accent\n '--vui-accent': '#6366f1',\n '--vui-accent-hover': '#5558e6',\n '--vui-accent-active': '#4f46e5',\n '--vui-accent-subtle': 'rgba(99, 102, 241, 0.1)',\n\n // Border\n '--vui-border': '#e5e7eb',\n '--vui-border-hover': '#d1d5db',\n '--vui-border-focus': '#6366f1',\n\n // Focus\n '--vui-focus-ring': 'rgba(99, 102, 241, 0.5)',\n\n // Status: Error/Danger\n '--vui-danger': '#ef4444',\n '--vui-danger-subtle': 'rgba(239, 68, 68, 0.1)',\n\n // Status: Success\n '--vui-success': '#22c55e',\n '--vui-success-subtle': 'rgba(34, 197, 94, 0.1)',\n\n // Status: Warning\n '--vui-warning': '#f59e0b',\n '--vui-warning-subtle': 'rgba(245, 158, 11, 0.1)',\n\n // Status: Info\n '--vui-info': '#3b82f6',\n '--vui-info-subtle': 'rgba(59, 130, 246, 0.1)',\n\n // Overlay\n '--vui-overlay-bg': 'rgba(0, 0, 0, 0.4)',\n '--vui-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)',\n '--vui-shadow-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)',\n },\n};\n","/**\n * Theme Dark module for proyecto-viviana-silapse\n *\n * Dark mode CSS custom properties. Apply the class to the root element\n * or use the Provider component with colorScheme=\"dark\".\n */\n\nimport type { Theme } from '../theme/types';\n\nexport const themeDarkClass = 'vui-theme-dark';\n\nexport const darkTheme: Theme = {\n className: themeDarkClass,\n properties: {\n // Backgrounds\n '--vui-bg-100': '#0a0a0a',\n '--vui-bg-200': '#141414',\n '--vui-bg-300': '#1e1e1e',\n '--vui-bg-400': '#282828',\n '--vui-bg-500': '#333333',\n\n // Text / Primary\n '--vui-text-primary': '#f5f5f5',\n '--vui-text-secondary': '#a3a3a3',\n '--vui-text-tertiary': '#737373',\n '--vui-text-disabled': '#525252',\n\n // Accent\n '--vui-accent': '#818cf8',\n '--vui-accent-hover': '#a5b4fc',\n '--vui-accent-active': '#6366f1',\n '--vui-accent-subtle': 'rgba(129, 140, 248, 0.15)',\n\n // Border\n '--vui-border': '#374151',\n '--vui-border-hover': '#4b5563',\n '--vui-border-focus': '#818cf8',\n\n // Focus\n '--vui-focus-ring': 'rgba(129, 140, 248, 0.5)',\n\n // Status: Error/Danger\n '--vui-danger': '#f87171',\n '--vui-danger-subtle': 'rgba(248, 113, 113, 0.15)',\n\n // Status: Success\n '--vui-success': '#4ade80',\n '--vui-success-subtle': 'rgba(74, 222, 128, 0.15)',\n\n // Status: Warning\n '--vui-warning': '#fbbf24',\n '--vui-warning-subtle': 'rgba(251, 191, 36, 0.15)',\n\n // Status: Info\n '--vui-info': '#60a5fa',\n '--vui-info-subtle': 'rgba(96, 165, 250, 0.15)',\n\n // Overlay\n '--vui-overlay-bg': 'rgba(0, 0, 0, 0.6)',\n '--vui-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.3)',\n '--vui-shadow-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3)',\n },\n};\n","/**\n * ToggleButton component for proyecto-viviana-silapse\n *\n * A styled toggle button wrapping headless ToggleButton.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ToggleButton as HeadlessToggleButton,\n type ToggleButtonProps as HeadlessToggleButtonProps,\n type ToggleButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ToggleButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ToggleButtonProps extends Omit<HeadlessToggleButtonProps, 'class' | 'style'> {\n /** The size of the button. @default 'md' */\n size?: ToggleButtonSize;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<ToggleButtonSize, string> = {\n sm: 'px-2 py-1 text-xs rounded',\n md: 'px-3 py-1.5 text-sm rounded-md',\n lg: 'px-4 py-2 text-base rounded-lg',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled toggle button that can be selected or deselected.\n */\nexport function ToggleButton(props: ToggleButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['size', 'class']);\n\n const getClassName = (renderProps: ToggleButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center font-medium transition-colors outline-none border';\n const sizeClass = sizeStyles[local.size ?? 'md'];\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-300 text-primary-500 border-primary-600 cursor-not-allowed';\n } else if (renderProps.isSelected) {\n stateClass = renderProps.isHovered\n ? 'bg-accent-400 text-bg-400 border-accent-400'\n : 'bg-accent text-bg-400 border-accent';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-200 text-primary-100 border-primary-500';\n } else {\n stateClass = 'bg-bg-400 text-primary-200 border-primary-600';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent ring-offset-2 ring-offset-bg-100' : '';\n\n return [base, sizeClass, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessToggleButton\n {...headlessProps}\n class={getClassName}\n />\n );\n}\n","/**\n * ActionButton component for proyecto-viviana-silapse\n *\n * A quiet/subtle button variant for toolbar and secondary actions.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Button as HeadlessButton,\n type ButtonProps as HeadlessButtonProps,\n type ButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ActionButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ActionButtonProps extends Omit<HeadlessButtonProps, 'class' | 'style'> {\n /** The size of the button. @default 'md' */\n size?: ActionButtonSize;\n /** Whether the button is quiet (no background until hover). @default true */\n isQuiet?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<ActionButtonSize, string> = {\n sm: 'px-2 py-1 text-xs rounded',\n md: 'px-3 py-1.5 text-sm rounded-md',\n lg: 'px-4 py-2 text-base rounded-lg',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A quiet/subtle button for toolbar and secondary actions.\n */\nexport function ActionButton(props: ActionButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['size', 'isQuiet', 'class']);\n const isQuiet = () => local.isQuiet ?? true;\n\n const getClassName = (renderProps: ButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center font-medium transition-colors outline-none';\n const sizeClass = sizeStyles[local.size ?? 'md'];\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-200 text-primary-100';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-100';\n } else if (isQuiet()) {\n stateClass = 'bg-transparent text-primary-200';\n } else {\n stateClass = 'bg-bg-400 text-primary-200 border border-primary-600';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent ring-offset-2 ring-offset-bg-100' : '';\n\n return [base, sizeClass, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessButton\n {...headlessProps}\n class={getClassName}\n />\n );\n}\n","/**\n * ClearButton component for proyecto-viviana-silapse\n *\n * An icon-only clear/dismiss button.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Button as HeadlessButton,\n type ButtonProps as HeadlessButtonProps,\n type ButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ClearButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ClearButtonProps extends Omit<HeadlessButtonProps, 'class' | 'style' | 'children'> {\n /** The size of the button. @default 'md' */\n size?: ClearButtonSize;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<ClearButtonSize, { button: string; icon: string }> = {\n sm: { button: 'w-5 h-5', icon: 'w-3 h-3' },\n md: { button: 'w-6 h-6', icon: 'w-4 h-4' },\n lg: { button: 'w-8 h-8', icon: 'w-5 h-5' },\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * An icon-only clear/dismiss button, typically used in search fields and tags.\n */\nexport function ClearButton(props: ClearButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['size', 'class']);\n const size = () => sizeStyles[local.size ?? 'md'];\n\n const getClassName = (renderProps: ButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center rounded-full transition-colors outline-none';\n const sizeClass = size().button;\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-200 text-primary-100';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-200';\n } else {\n stateClass = 'text-primary-400 hover:text-primary-200';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent' : '';\n\n return [base, sizeClass, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessButton\n {...headlessProps}\n aria-label={headlessProps['aria-label'] ?? 'Clear'}\n class={getClassName}\n >\n <svg class={size().icon} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </HeadlessButton>\n );\n}\n","/**\n * FieldButton component for proyecto-viviana-silapse\n *\n * A button embedded inside input fields (e.g., date picker trigger, combobox button).\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Button as HeadlessButton,\n type ButtonProps as HeadlessButtonProps,\n type ButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface FieldButtonProps extends Omit<HeadlessButtonProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A button designed to sit inside an input field.\n */\nexport function FieldButton(props: FieldButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['class']);\n\n const getClassName = (renderProps: ButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center px-2 rounded-r-md transition-colors outline-none border-l border-primary-600';\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-200 text-primary-100';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-200';\n } else {\n stateClass = 'bg-bg-400 text-primary-300';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-inset ring-accent' : '';\n\n return [base, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessButton\n {...headlessProps}\n class={getClassName}\n />\n );\n}\n","/**\n * LogicButton component for proyecto-viviana-silapse\n *\n * An AND/OR toggle button for logic-based UIs.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ToggleButton as HeadlessToggleButton,\n type ToggleButtonProps as HeadlessToggleButtonProps,\n type ToggleButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface LogicButtonProps extends Omit<HeadlessToggleButtonProps, 'class' | 'style' | 'children'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * An AND/OR logic toggle button. Displays \"AND\" when selected (default), \"OR\" when not.\n */\nexport function LogicButton(props: LogicButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['class']);\n\n const getClassName = (renderProps: ToggleButtonRenderProps): string => {\n const base = 'inline-flex items-center justify-center px-2 py-0.5 text-xs font-mono font-bold rounded transition-colors outline-none min-w-[3rem]';\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-300 text-primary-500 cursor-not-allowed';\n } else if (renderProps.isSelected) {\n stateClass = 'bg-accent text-bg-400';\n } else {\n stateClass = 'bg-bg-400 text-primary-300 border border-primary-600';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent ring-offset-1 ring-offset-bg-100' : '';\n\n return [base, stateClass, focusClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessToggleButton\n {...headlessProps}\n class={getClassName}\n >\n {(renderProps: ToggleButtonRenderProps) => (\n <span>{renderProps.isSelected ? 'AND' : 'OR'}</span>\n )}\n </HeadlessToggleButton>\n );\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\n\nexport type BadgeVariant = 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'danger'\nexport type BadgeSize = 'sm' | 'md' | 'lg'\n\nexport interface BadgeProps {\n children?: JSX.Element\n count?: number\n variant?: BadgeVariant\n size?: BadgeSize\n class?: string\n}\n\nconst variantStyles: Record<BadgeVariant, string> = {\n primary: 'bg-primary-500 text-white',\n secondary: 'bg-bg-300 text-primary-300',\n accent: 'bg-accent-300 text-black',\n success: 'bg-success-400 text-white',\n warning: 'bg-warning-400 text-black',\n danger: 'bg-danger-400 text-white',\n}\n\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: 'w-5 h-5 text-xs',\n md: 'w-7 h-7 text-xs',\n lg: 'w-9 h-9 text-sm',\n}\n\nexport function Badge(props: BadgeProps) {\n const variant = () => props.variant ?? 'accent'\n const size = () => props.size ?? 'md'\n\n return (\n <div\n class={`flex items-center justify-center rounded-full border-b border-white font-semibold ${variantStyles[variant()]} ${sizeStyles[size()]} ${props.class ?? ''}`}\n >\n <Show when={props.count !== undefined} fallback={props.children}>\n <span>{props.count}</span>\n </Show>\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\nimport {\n Alert as HeadlessAlert,\n AlertDismissButton,\n type AlertRenderProps,\n type AlertVariant,\n} from '@proyecto-viviana/solidaria-components'\n\nexport type { AlertVariant }\n\nexport interface AlertProps {\n children: JSX.Element\n variant?: AlertVariant\n title?: string\n dismissible?: boolean\n onDismiss?: () => void\n class?: string\n}\n\nconst variantStyles: Record<AlertVariant, string> = {\n info: 'bg-primary-700 text-primary-200 border border-primary-500',\n success: 'bg-success-600 text-white border border-success-400',\n warning: 'bg-warning-600 text-warning-100 border border-warning-400',\n error: 'bg-danger-600 text-white border border-danger-400',\n}\n\nexport function Alert(props: AlertProps) {\n const variant = () => props.variant ?? 'info'\n\n const getClassName = (_renderProps: AlertRenderProps): string => {\n return `flex items-center min-h-[50px] font-normal rounded-lg px-4 py-2 ${variantStyles[variant()]} ${props.class ?? ''}`\n }\n\n return (\n <HeadlessAlert\n variant={variant()}\n isDismissible={props.dismissible}\n onDismiss={props.onDismiss}\n class={getClassName}\n >\n <div class=\"flex items-center gap-3 flex-1\">\n <Show when={props.title}>\n <span class=\"font-semibold font-jost\">{props.title}</span>\n <span class=\"opacity-50\">|</span>\n </Show>\n <div class=\"flex-1\">{props.children}</div>\n <Show when={props.dismissible}>\n <AlertDismissButton\n class=\"hover:opacity-70 transition-opacity ml-2\"\n aria-label=\"Dismiss\"\n >\n ✕\n </AlertDismissButton>\n </Show>\n </div>\n </HeadlessAlert>\n )\n}\n","import { Show, type JSX } from 'solid-js'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n size?: AvatarSize\n fallback?: string\n online?: boolean\n class?: string\n}\n\nconst sizeStyles: Record<AvatarSize, { container: string; text: string; indicator: string }> = {\n xs: { container: 'w-6 h-6', text: 'text-xs', indicator: 'w-1.5 h-1.5' },\n sm: { container: 'w-8 h-8', text: 'text-sm', indicator: 'w-2 h-2' },\n md: { container: 'w-10 h-10', text: 'text-base', indicator: 'w-2.5 h-2.5' },\n lg: { container: 'w-14 h-14', text: 'text-lg', indicator: 'w-3 h-3' },\n xl: { container: 'w-20 h-20', text: 'text-xl', indicator: 'w-4 h-4' },\n}\n\nexport function Avatar(props: AvatarProps) {\n const size = () => props.size ?? 'md'\n const styles = () => sizeStyles[size()]\n\n const initials = () => {\n if (props.fallback) return props.fallback.slice(0, 2).toUpperCase()\n if (props.alt) return props.alt.slice(0, 2).toUpperCase()\n return '?'\n }\n\n return (\n <div class={`relative inline-block ${props.class ?? ''}`}>\n <div\n class={`${styles().container} rounded-full overflow-hidden bg-bg-200 flex items-center justify-center ring-2 ring-accent/50`}\n >\n <Show\n when={props.src}\n fallback={\n <span class={`${styles().text} font-medium text-primary-300`}>\n {initials()}\n </span>\n }\n >\n <img\n src={props.src}\n alt={props.alt ?? 'Avatar'}\n class=\"w-full h-full object-cover\"\n />\n </Show>\n </div>\n <Show when={props.online !== undefined}>\n <span\n class={`absolute bottom-0 right-0 ${styles().indicator} rounded-full ring-2 ring-bg-400 ${\n props.online ? 'bg-success-400' : 'bg-bg-light'\n }`}\n />\n </Show>\n </div>\n )\n}\n\nexport interface AvatarGroupProps {\n children: JSX.Element\n max?: number\n size?: AvatarSize\n}\n\nexport function AvatarGroup(props: AvatarGroupProps) {\n return (\n <div class=\"flex -space-x-2\">\n {props.children}\n </div>\n )\n}\n","/**\n * Switch components for proyecto-viviana-silapse\n *\n * This file exports:\n * - ToggleSwitch: The primary switch component built on solidaria-components\n * (named to avoid conflict with SolidJS's built-in Switch)\n * - TabSwitch: A styled two-option selector composed with headless toggle primitives\n */\n\nimport { type JSX, createMemo } from 'solid-js'\nimport type { Key } from '@proyecto-viviana/solid-stately'\nimport {\n ToggleButtonGroup as HeadlessToggleButtonGroup,\n ToggleButton as HeadlessToggleButton,\n} from '@proyecto-viviana/solidaria-components'\n\n// Re-export ToggleSwitch (the solidaria-components based switch)\nexport { ToggleSwitch, type ToggleSwitchProps, type SwitchSize } from './ToggleSwitch'\n\n// ============================================\n// TAB SWITCH (Two-option selector)\n// ============================================\n\ninterface SwitchOption {\n label: string\n value: string\n}\n\nexport interface TabSwitchProps {\n options: SwitchOption[]\n value?: string\n onChange?: (value: string) => void\n class?: string\n}\n\n/**\n * A tab-style switch that allows users to select between two options.\n * Behavior is delegated to headless ToggleButtonGroup/ToggleButton primitives.\n */\nexport function TabSwitch(props: TabSwitchProps): JSX.Element {\n const options = createMemo(() => props.options.slice(0, 2))\n const selectedValue = createMemo(() => {\n const match = options().find((option) => option.value === props.value)\n return match?.value ?? options()[0]?.value\n })\n const selectedIndex = createMemo(() => {\n const index = options().findIndex((option) => option.value === selectedValue())\n return index >= 0 ? index : 0\n })\n const selectedKeys = createMemo<Set<Key>>(() => {\n const value = selectedValue()\n return value ? new Set<Key>([value]) : new Set<Key>()\n })\n\n const textSelected = 'font-extrabold text-primary-100 tracking-wider'\n const textUnselected = 'font-medium text-primary-300 tracking-wider'\n const optionCount = createMemo(() => Math.max(options().length, 1))\n const indicatorStyle = createMemo(() => ({\n width: `calc(100% / ${optionCount()})`,\n transform: `translateX(${selectedIndex() * 100}%)`,\n }))\n const layoutStyle = createMemo(() => ({\n 'grid-template-columns': `repeat(${optionCount()}, minmax(0, 1fr))`,\n }))\n\n return (\n <div class={`relative bg-bg-400 rounded-full w-[250px] ${props.class ?? ''}`}>\n <div\n class=\"left-0 top-0 transition-all duration-300 ease-in-out z-0 absolute bg-primary-700 rounded-full h-8 border-l-2 border-r-2 border-accent-300\"\n style={indicatorStyle()}\n />\n <HeadlessToggleButtonGroup\n selectionMode=\"single\"\n selectedKeys={selectedKeys()}\n class=\"relative z-10 grid h-8\"\n style={layoutStyle()}\n aria-label=\"View mode\"\n >\n {options().map((option) => (\n <HeadlessToggleButton\n toggleKey={option.value}\n onClick={() => props.onChange?.(option.value)}\n class={() =>\n `transition-all ease-in-out duration-300 z-10 text-lg flex justify-center items-center rounded-full ${\n selectedValue() === option.value ? textSelected : textUnselected\n }`\n }\n >\n <span>{option.label}</span>\n </HeadlessToggleButton>\n ))}\n </HeadlessToggleButtonGroup>\n </div>\n )\n}\n","/**\n * ToggleSwitch component for proyecto-viviana-silapse\n *\n * A styled switch component built on top of solidaria-components.\n * This component only handles styling - all behavior and accessibility\n * is provided by the headless Switch from solidaria-components.\n *\n * Named \"ToggleSwitch\" to avoid conflict with SolidJS's built-in Switch component.\n */\n\nimport { type JSX, splitProps, mergeProps as solidMergeProps } from 'solid-js';\nimport { ToggleSwitch as HeadlessToggleSwitch, type ToggleSwitchProps as HeadlessToggleSwitchProps, type ToggleSwitchRenderProps } from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SwitchSize = 'sm' | 'md' | 'lg';\n\nexport interface ToggleSwitchProps extends Omit<HeadlessToggleSwitchProps, 'class' | 'children'> {\n /** The size of the switch. */\n size?: SwitchSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label text for the switch. */\n children?: JSX.Element;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n track: 'h-5 w-9',\n thumb: 'h-4 w-4',\n translate: 'translate-x-4',\n },\n md: {\n track: 'h-6 w-11',\n thumb: 'h-5 w-5',\n translate: 'translate-x-5',\n },\n lg: {\n track: 'h-7 w-14',\n thumb: 'h-6 w-6',\n translate: 'translate-x-7',\n },\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A switch allows users to toggle between two mutually exclusive states.\n *\n * Built on solidaria-components Switch for full accessibility support.\n * Named \"ToggleSwitch\" to avoid conflict with SolidJS's built-in Switch component.\n */\nexport function ToggleSwitch(props: ToggleSwitchProps): JSX.Element {\n const providerProps = useProviderProps(props);\n const defaultProps: Partial<ToggleSwitchProps> = {\n size: 'md',\n };\n\n const merged = solidMergeProps(defaultProps, providerProps);\n\n const [local, headlessProps] = splitProps(merged, [\n 'size',\n 'class',\n ]);\n\n const size = () => sizeStyles[local.size!];\n\n // Generate class based on render props\n const getClassName = (renderProps: ToggleSwitchRenderProps): string => {\n const base = 'inline-flex items-center gap-2 cursor-pointer';\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed opacity-50' : '';\n const custom = local.class || '';\n return [base, disabledClass, custom].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessToggleSwitch\n {...headlessProps}\n class={getClassName}\n >\n {(renderProps: ToggleSwitchRenderProps) => (\n <>\n <span\n class={[\n 'relative rounded-full transition-colors duration-200',\n 'focus-within:ring-2 focus-within:ring-accent-300 focus-within:ring-offset-2 focus-within:ring-offset-bg-400',\n size().track,\n renderProps.isSelected ? 'bg-accent' : 'bg-bg-300',\n renderProps.isDisabled ? 'cursor-not-allowed' : 'cursor-pointer',\n ].join(' ')}\n >\n <span\n class={[\n 'absolute top-0.5 left-0.5 rounded-full bg-white shadow transition-transform duration-200',\n size().thumb,\n renderProps.isSelected ? size().translate : 'translate-x-0',\n ].join(' ')}\n />\n </span>\n {props.children && <span class=\"text-primary-200\">{props.children}</span>}\n </>\n )}\n </HeadlessToggleSwitch>\n );\n}\n","/**\n * Checkbox component for proyecto-viviana-silapse\n *\n * A styled checkbox component built on top of solidaria-components.\n * This component only handles styling - all behavior and accessibility\n * is provided by the headless Checkbox from solidaria-components.\n */\n\nimport { type JSX, splitProps, mergeProps as solidMergeProps, Show } from 'solid-js'\nimport {\n Checkbox as HeadlessCheckbox,\n CheckboxGroup as HeadlessCheckboxGroup,\n type CheckboxProps as HeadlessCheckboxProps,\n type CheckboxGroupProps as HeadlessCheckboxGroupProps,\n type CheckboxRenderProps,\n type CheckboxGroupRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg'\n\nexport interface CheckboxProps extends Omit<HeadlessCheckboxProps, 'class' | 'children' | 'style'> {\n /** The size of the checkbox. */\n size?: CheckboxSize\n /** Additional CSS class name. */\n class?: string\n /** Label text for the checkbox. */\n children?: JSX.Element\n}\n\nexport interface CheckboxGroupProps extends Omit<HeadlessCheckboxGroupProps, 'class' | 'children' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Children checkboxes. */\n children?: JSX.Element\n /** Label for the group. */\n label?: string\n /** Description for the group. */\n description?: string\n /** Error message when invalid. */\n errorMessage?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n box: 'h-4 w-4',\n icon: 'h-3 w-3',\n label: 'text-sm',\n },\n md: {\n box: 'h-5 w-5',\n icon: 'h-3.5 w-3.5',\n label: 'text-base',\n },\n lg: {\n box: 'h-6 w-6',\n icon: 'h-4 w-4',\n label: 'text-lg',\n },\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction CheckIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 5L4.5 8.5L11 1\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction IndeterminateIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 12 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 1H11\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n )\n}\n\n// ============================================\n// CHECKBOX COMPONENT\n// ============================================\n\n/**\n * A checkbox allows users to select one or more items from a set.\n *\n * Built on solidaria-components Checkbox for full accessibility support.\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const providerProps = useProviderProps(props)\n const defaultProps: Partial<CheckboxProps> = {\n size: 'md',\n }\n\n const merged = solidMergeProps(defaultProps, providerProps)\n\n const [local, headlessProps] = splitProps(merged, [\n 'size',\n 'class',\n 'children',\n ])\n\n const size = () => sizeStyles[local.size!]\n\n // Generate class based on render props\n const getClassName = (renderProps: CheckboxRenderProps): string => {\n const base = 'inline-flex items-center gap-2 cursor-pointer'\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed opacity-50' : ''\n const custom = local.class || ''\n return [base, disabledClass, custom].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessCheckbox\n {...headlessProps}\n class={getClassName}\n >\n {(renderProps: CheckboxRenderProps) => {\n const boxClasses = () => {\n const base = 'relative flex items-center justify-center rounded border-2 transition-all duration-200'\n const sizeClass = size().box\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'border-bg-300 bg-bg-200'\n } else if (renderProps.isSelected || renderProps.isIndeterminate) {\n colorClass = 'border-accent bg-accent'\n } else {\n colorClass = 'border-primary-600 bg-transparent hover:border-accent-300'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n const cursorClass = renderProps.isDisabled ? 'cursor-not-allowed' : 'cursor-pointer'\n\n return [base, sizeClass, colorClass, focusClass, cursorClass].filter(Boolean).join(' ')\n }\n\n const iconClasses = () => {\n const base = 'text-white transition-opacity duration-200'\n const sizeClass = size().icon\n const visibilityClass = (renderProps.isSelected || renderProps.isIndeterminate)\n ? 'opacity-100'\n : 'opacity-0'\n\n return [base, sizeClass, visibilityClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'text-primary-200'\n const sizeClass = size().label\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n\n return [base, sizeClass, disabledClass].filter(Boolean).join(' ')\n }\n\n return (\n <>\n <span class={boxClasses()}>\n <Show\n when={!renderProps.isIndeterminate}\n fallback={<IndeterminateIcon class={iconClasses()} />}\n >\n <CheckIcon class={iconClasses()} />\n </Show>\n </span>\n <Show when={props.children}>\n <span class={labelClasses()}>{props.children}</span>\n </Show>\n </>\n )\n }}\n </HeadlessCheckbox>\n )\n}\n\n// ============================================\n// CHECKBOX GROUP COMPONENT\n// ============================================\n\n/**\n * A checkbox group allows users to select multiple items from a list.\n *\n * Built on solidaria-components CheckboxGroup for full accessibility support.\n */\nexport function CheckboxGroup(props: CheckboxGroupProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n ])\n\n // Generate class based on render props\n const getClassName = (renderProps: CheckboxGroupRenderProps): string => {\n const base = 'flex flex-col gap-2'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n const custom = local.class || ''\n return [base, disabledClass, custom].filter(Boolean).join(' ')\n }\n\n // Render children function for the headless component\n const renderChildren = (renderProps: CheckboxGroupRenderProps) => (\n <>\n <Show when={local.label}>\n <span class=\"text-sm font-medium text-primary-200\">{local.label}</span>\n </Show>\n <div class=\"flex flex-col gap-2\">\n {props.children}\n </div>\n <Show when={local.description && !renderProps.isInvalid}>\n <span class=\"text-sm text-primary-400\">{local.description}</span>\n </Show>\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <span class=\"text-sm text-danger-400\">{local.errorMessage}</span>\n </Show>\n </>\n )\n return (\n <HeadlessCheckboxGroup\n {...headlessProps}\n class={getClassName}\n children={renderChildren}\n />\n )\n}\n","/**\n * RadioGroup and Radio components for proyecto-viviana-silapse\n *\n * Styled radio components built on top of solidaria-components.\n */\n\nimport { type JSX, Show, createContext, useContext, splitProps, createUniqueId } from 'solid-js'\nimport {\n RadioGroup as HeadlessRadioGroup,\n Radio as HeadlessRadio,\n type RadioGroupProps as HeadlessRadioGroupProps,\n type RadioProps as HeadlessRadioProps,\n type RadioGroupRenderProps,\n type RadioRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type RadioGroupOrientation = 'horizontal' | 'vertical'\nexport type RadioGroupSize = 'sm' | 'md' | 'lg'\n\nconst RadioSizeContext = createContext<RadioGroupSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface RadioGroupProps extends Omit<HeadlessRadioGroupProps, 'class' | 'style'> {\n /** The size of the radio buttons. */\n size?: RadioGroupSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the group. */\n label?: string\n /** Description for the group. */\n description?: string\n /** Error message when invalid. */\n errorMessage?: string\n}\n\nexport interface RadioProps extends Omit<HeadlessRadioProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n circle: 'h-4 w-4',\n dot: 'h-2 w-2',\n label: 'text-sm',\n },\n md: {\n circle: 'h-5 w-5',\n dot: 'h-2.5 w-2.5',\n label: 'text-base',\n },\n lg: {\n circle: 'h-6 w-6',\n dot: 'h-3 w-3',\n label: 'text-lg',\n },\n}\n\n// ============================================\n// RADIO GROUP COMPONENT\n// ============================================\n\n/**\n * A radio group allows users to select a single option from a list of mutually exclusive options.\n *\n * Built on solidaria-components RadioGroup for full accessibility support.\n */\nexport function RadioGroup(props: RadioGroupProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n // Split out our custom styling props from the rest\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n ])\n\n const size = local.size ?? 'md'\n const customClass = local.class ?? ''\n const idBase = createUniqueId()\n const labelId = `${idBase}-label`\n const descriptionId = `${idBase}-description`\n const errorId = `${idBase}-error`\n\n // Generate class based on render props\n const getClassName = (renderProps: RadioGroupRenderProps): string => {\n const base = 'flex gap-2'\n const orientationClass = renderProps.orientation === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, orientationClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n const ariaDescribedBy = () => {\n const ids = [\n headlessProps['aria-describedby'],\n local.description ? descriptionId : undefined,\n local.errorMessage && headlessProps.isInvalid ? errorId : undefined,\n ].filter(Boolean)\n return ids.length > 0 ? ids.join(' ') : undefined\n }\n\n // Pass remaining props through to headless component\n // headlessProps maintains reactivity for controlled values like value/onChange\n return (\n <RadioSizeContext.Provider value={size}>\n <HeadlessRadioGroup\n {...headlessProps}\n aria-labelledby={headlessProps['aria-labelledby'] ?? (local.label ? labelId : undefined)}\n aria-describedby={ariaDescribedBy()}\n class={getClassName}\n data-size={size}\n >\n <Show when={local.label}>\n <span id={labelId} class=\"text-primary-200 font-medium mb-1\">{local.label}</span>\n </Show>\n {props.children as JSX.Element}\n <Show when={local.description}>\n <span id={descriptionId} class=\"text-primary-400 text-sm [&:has(~[data-invalid])]:hidden\">{local.description}</span>\n </Show>\n <Show when={local.errorMessage}>\n <span id={errorId} class=\"text-danger-400 text-sm hidden [[data-invalid]_&]:block\">{local.errorMessage}</span>\n </Show>\n </HeadlessRadioGroup>\n </RadioSizeContext.Provider>\n )\n}\n\n// ============================================\n// RADIO COMPONENT\n// ============================================\n\n/**\n * A radio button allows users to select a single option from a list.\n * Must be used within a RadioGroup.\n *\n * Built on solidaria-components Radio for full accessibility support.\n */\nexport function Radio(props: RadioProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const sizeFromContext = useContext(RadioSizeContext)\n const sizeStyle = sizeStyles[sizeFromContext]\n const customClass = local.class ?? ''\n\n // Generate class based on render props\n const getClassName = (renderProps: RadioRenderProps): string => {\n const base = 'inline-flex items-center gap-2'\n const cursorClass = renderProps.isDisabled ? 'cursor-not-allowed' : 'cursor-pointer'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, cursorClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n // Use data-selected attribute from headless Radio for conditional dot visibility via CSS\n const circleClass = `relative flex items-center justify-center rounded-full border-2 transition-all duration-200 ${sizeStyle.circle} border-primary-600 bg-transparent hover:border-accent-300 [[data-selected]_&]:border-accent`\n const dotClass = `rounded-full bg-accent transition-all duration-200 ${sizeStyle.dot} scale-0 [[data-selected]_&]:scale-100`\n const labelClass = `text-primary-200 ${sizeStyle.label}`\n\n return (\n <HeadlessRadio\n {...headlessProps}\n class={getClassName}\n >\n {(renderProps) => (\n <>\n <span class={circleClass}>\n <span class={dotClass} />\n </span>\n <Show when={props.children}>\n <span class={labelClass}>\n {typeof props.children === 'function'\n ? props.children(renderProps)\n : props.children}\n </span>\n </Show>\n </>\n )}\n </HeadlessRadio>\n )\n}\n","/**\n * Dialog component for proyecto-viviana-silapse\n *\n * Styled dialog component with overlay and backdrop.\n * Follows Spectrum 2 design patterns.\n */\n\nimport { type JSX, splitProps, Show, createContext, useContext } from 'solid-js'\nimport {\n Dialog as HeadlessDialog,\n DialogTrigger as HeadlessDialogTrigger,\n Heading as HeadlessDialogHeading,\n Modal as HeadlessModal,\n ModalOverlay as HeadlessModalOverlay,\n useDialogTrigger,\n type DialogProps as HeadlessDialogProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'fullscreen'\n\nexport interface DialogProps extends Omit<HeadlessDialogProps, 'class' | 'style' | 'children'> {\n /** The size of the dialog. */\n size?: DialogSize\n /** Whether the dialog can be dismissed by clicking the X button. */\n isDismissable?: boolean\n /** Additional CSS class name. */\n class?: string\n /** The title of the dialog. */\n title?: string\n /** The children content. */\n children: JSX.Element\n /** Callback when dialog should close */\n onClose?: () => void\n}\n\nexport interface DialogTriggerProps {\n /** Button to trigger the dialog. */\n trigger: JSX.Element\n /** The dialog content - receives close function. */\n content: (close: () => void) => JSX.Element\n /** Whether the dialog is controlled. */\n isOpen?: boolean\n /** Callback when open state changes. */\n onOpenChange?: (isOpen: boolean) => void\n /** Whether clicking outside the dialog closes it. Defaults to true. */\n isDismissable?: boolean\n /** Whether pressing Escape closes the dialog. Defaults to false. */\n isKeyboardDismissDisabled?: boolean\n}\n\n// ============================================\n// CONTEXT\n// ============================================\n\ninterface DialogContextValue {\n close: () => void\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nexport function useDialogContext(): DialogContextValue | null {\n return useContext(DialogContext)\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<DialogSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-2xl',\n fullscreen: 'max-w-full w-full h-full',\n}\n\n// ============================================\n// DIALOG COMPONENT\n// ============================================\n\n/**\n * A dialog is an overlay shown above other content in an application.\n */\nexport function Dialog(props: DialogProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'size',\n 'isDismissable',\n 'class',\n 'title',\n 'children',\n 'onClose',\n ])\n\n const size = () => local.size ?? 'md'\n\n const className = () => {\n const base = 'bg-bg-300 rounded-lg shadow-xl border border-primary-700 p-6'\n const sizeClass = sizeStyles[size()]\n const custom = local.class ?? ''\n return [base, sizeClass, custom].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessDialog\n {...rest}\n onClose={local.onClose}\n class={className()}\n children={({ close }) => (\n <DialogContext.Provider value={{ close }}>\n <Show when={local.title}>\n <div class=\"flex items-center justify-between mb-4\">\n <HeadlessDialogHeading level={2} class=\"text-xl font-semibold text-primary-100\">\n {local.title}\n </HeadlessDialogHeading>\n <Show when={local.isDismissable}>\n <button\n type=\"button\"\n onClick={close}\n class=\"text-primary-400 hover:text-primary-200 transition-colors\"\n aria-label=\"Close dialog\"\n >\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </Show>\n </div>\n </Show>\n <div class=\"text-primary-200\">{local.children}</div>\n </DialogContext.Provider>\n )}\n />\n )\n}\n\n// ============================================\n// DIALOG TRIGGER COMPONENT\n// ============================================\n\nfunction DialogTriggerContent(props: { content: (close: () => void) => JSX.Element }): JSX.Element {\n const triggerContext = useDialogTrigger()\n const close = () => triggerContext?.state.close()\n return props.content(close)\n}\n\n/**\n * DialogTrigger wraps a trigger button and dialog content.\n * Handles opening/closing the dialog with overlay and backdrop.\n */\nexport function DialogTrigger(props: DialogTriggerProps): JSX.Element {\n return (\n <HeadlessDialogTrigger\n isOpen={props.isOpen}\n onOpenChange={props.onOpenChange}\n >\n {props.trigger}\n <HeadlessModalOverlay\n isDismissable={props.isDismissable ?? true}\n isKeyboardDismissDisabled={props.isKeyboardDismissDisabled ?? false}\n class=\"fixed inset-0 z-40 bg-black/50 backdrop-blur-sm\"\n >\n <div class=\"fixed inset-0 z-50 flex items-center justify-center p-4 pointer-events-none\">\n <HeadlessModal class=\"pointer-events-auto\">\n <DialogTriggerContent content={props.content} />\n </HeadlessModal>\n </div>\n </HeadlessModalOverlay>\n </HeadlessDialogTrigger>\n )\n}\n\n// ============================================\n// DIALOG FOOTER COMPONENT\n// ============================================\n\nexport interface DialogFooterProps {\n /** Footer content, typically buttons. */\n children: JSX.Element\n /** Additional CSS class. */\n class?: string\n}\n\n/**\n * Footer section for dialog actions.\n */\nexport function DialogFooter(props: DialogFooterProps): JSX.Element {\n return (\n <div class={`flex gap-3 justify-end mt-6 pt-4 border-t border-primary-700 ${props.class ?? ''}`}>\n {props.children}\n </div>\n )\n}\n","/**\n * AlertDialog component for proyecto-viviana-silapse\n *\n * A dialog variant with role=\"alertdialog\" and confirm/cancel buttons.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\nimport {\n Dialog as HeadlessDialog,\n DialogTrigger as HeadlessDialogTrigger,\n Heading as HeadlessHeading,\n Modal as HeadlessModal,\n ModalOverlay as HeadlessModalOverlay,\n type DialogRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { Button } from '../button';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type AlertDialogVariant = 'confirmation' | 'information' | 'destructive' | 'error' | 'warning';\n\nexport interface AlertDialogProps {\n /** The title of the alert dialog. */\n title: string;\n /** The content/message of the alert dialog. */\n children: JSX.Element;\n /** The trigger element that opens the dialog. */\n trigger?: JSX.Element;\n /** The variant of the alert dialog. @default 'confirmation' */\n variant?: AlertDialogVariant;\n /** Label for the primary action button. @default 'Confirm' */\n primaryActionLabel?: string;\n /** Label for the secondary/cancel button. @default 'Cancel' */\n cancelLabel?: string;\n /** Handler called when the primary action is triggered. */\n onPrimaryAction?: () => void;\n /** Handler called when canceled. */\n onCancel?: () => void;\n /** Whether the dialog is open. */\n isOpen?: boolean;\n /** Handler called when open state changes. */\n onOpenChange?: (isOpen: boolean) => void;\n /** Whether the primary action button should auto-focus. @default true */\n autoFocusButton?: 'primary' | 'cancel';\n /** Additional CSS class name. */\n class?: string;\n /** Whether the dialog is dismissable by clicking outside. @default false */\n isDismissable?: boolean;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst variantStyles: Record<AlertDialogVariant, { icon: string; buttonVariant: string }> = {\n confirmation: { icon: 'text-accent', buttonVariant: '' },\n information: { icon: 'text-blue-400', buttonVariant: '' },\n destructive: { icon: 'text-red-400', buttonVariant: 'destructive' },\n error: { icon: 'text-red-400', buttonVariant: '' },\n warning: { icon: 'text-yellow-400', buttonVariant: '' },\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A dialog that requires user acknowledgement before proceeding.\n * Uses role=\"alertdialog\" for proper accessibility.\n */\nexport function AlertDialog(props: AlertDialogProps): JSX.Element {\n const [local] = splitProps(props, [\n 'title', 'children', 'trigger', 'variant', 'primaryActionLabel', 'cancelLabel',\n 'onPrimaryAction', 'onCancel', 'isOpen', 'onOpenChange', 'autoFocusButton',\n 'class', 'isDismissable',\n ]);\n\n const variant = () => local.variant ?? 'confirmation';\n const styles = () => variantStyles[variant()];\n\n return (\n <HeadlessDialogTrigger isOpen={local.isOpen} onOpenChange={local.onOpenChange}>\n {local.trigger}\n <HeadlessModalOverlay\n isDismissable={local.isDismissable ?? false}\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n >\n <HeadlessModal class=\"w-full max-w-md\">\n <HeadlessDialog\n role=\"alertdialog\"\n class={`bg-bg-300 rounded-lg shadow-xl border border-primary-700 p-6 ${local.class ?? ''}`}\n >\n {({ close }: DialogRenderProps) => (\n <>\n <HeadlessHeading\n slot=\"title\"\n class={`text-lg font-semibold text-primary-100 mb-3 ${styles().icon}`}\n >\n {local.title}\n </HeadlessHeading>\n\n <div class=\"text-primary-300 text-sm mb-6\">\n {local.children}\n </div>\n\n <div class=\"flex justify-end gap-3\">\n <Show when={local.cancelLabel !== undefined || local.onCancel}>\n <Button\n variant=\"secondary\"\n onPress={() => {\n local.onCancel?.();\n close();\n }}\n autoFocus={local.autoFocusButton === 'cancel'}\n >\n {local.cancelLabel ?? 'Cancel'}\n </Button>\n </Show>\n\n <Button\n variant={variant() === 'destructive' ? 'negative' : 'accent'}\n onPress={() => {\n local.onPrimaryAction?.();\n close();\n }}\n autoFocus={local.autoFocusButton !== 'cancel'}\n >\n {local.primaryActionLabel ?? 'Confirm'}\n </Button>\n </div>\n </>\n )}\n </HeadlessDialog>\n </HeadlessModal>\n </HeadlessModalOverlay>\n </HeadlessDialogTrigger>\n );\n}\n","import type { Component, JSX } from 'solid-js'\nimport { Icon as HeadlessIcon, type IconRenderProps } from '@proyecto-viviana/solidaria-components'\nimport type { PressEvent } from '@proyecto-viviana/solidaria'\n\nexport interface IconProps {\n /** The icon component to render (should accept size and color props) */\n icon: Component<{ size?: string | number; color?: string }>\n /** Size of the icon (e.g., '24px' or 24) */\n size?: string | number\n /** Color of the icon */\n color?: string\n /** Whether to show the accent shadow effect (4px offset to bottom) */\n withShadow?: boolean\n /** Additional CSS class */\n class?: string\n /** Press handler for interactive icons. */\n onPress?: (e: PressEvent) => void\n /** Accessible label for interactive icons. */\n 'aria-label'?: string\n /** ID of an element that labels this icon. */\n 'aria-labelledby'?: string\n}\n\n/**\n * Icon wrapper component with optional accent shadow effect.\n *\n * The shadow effect creates a 4px offset accent-colored duplicate\n * of the icon behind it for a stylized look.\n *\n * Behavior (element type, ARIA attributes) is owned by the headless Icon.\n * This component only handles styling and visual composition.\n */\nexport function Icon(props: IconProps): JSX.Element {\n const size = () => props.size ?? 24\n const color = () => props.color ?? 'var(--color-primary-500)'\n const IconComponent = props.icon\n\n const getClassName = (_renderProps: IconRenderProps): string => {\n const classList = [\n 'vui-icon',\n ]\n if (props.withShadow) {\n classList.push('vui-icon--with-shadow')\n }\n if (props.onPress) {\n classList.push('vui-icon--button')\n }\n if (props.class) {\n classList.push(props.class)\n }\n return classList.join(' ')\n }\n\n return (\n <HeadlessIcon\n onPress={props.onPress}\n aria-label={props['aria-label']}\n aria-labelledby={props['aria-labelledby']}\n class={getClassName}\n >\n {props.withShadow && (\n <div class=\"vui-icon__shadow\" aria-hidden=\"true\">\n <IconComponent size={size()} color=\"var(--color-accent)\" />\n </div>\n )}\n <div class=\"vui-icon__main\">\n <IconComponent size={size()} color={color()} />\n </div>\n </HeadlessIcon>\n )\n}\n\n// Re-export common icons\nexport { GitHubIcon } from './icons/GitHubIcon'\nexport type { GitHubIconProps } from './icons/GitHubIcon'\n\n// Sub-component re-exports\nexport { Illustration } from './Illustration';\nexport type { IllustrationProps, IllustrationSize } from './Illustration';\nexport { UIIcon } from './UIIcon';\nexport type { UIIconProps, UIIconSize } from './UIIcon';\n","import type { JSX } from 'solid-js';\n\nexport interface GitHubIconProps {\n size?: number;\n color?: string;\n class?: string;\n}\n\nexport function GitHubIcon(props: GitHubIconProps): JSX.Element {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 24 24\"\n width={props.size}\n height={props.size}\n fill={props.color ?? 'currentColor'}\n aria-hidden=\"true\"\n >\n <path d=\"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z\" />\n </svg>\n );\n}\n","/**\n * Illustration component for proyecto-viviana-silapse\n *\n * A styled illustration container for decorative or explanatory images.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type IllustrationSize = 'sm' | 'md' | 'lg';\n\nexport interface IllustrationProps {\n /** The size of the illustration. @default 'md' */\n size?: IllustrationSize;\n /** Additional CSS class name. */\n class?: string;\n /** The illustration content (SVG or image). */\n children?: JSX.Element;\n /** Accessibility label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<IllustrationSize, string> = {\n sm: 'w-16 h-16',\n md: 'w-24 h-24',\n lg: 'w-32 h-32',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled container for decorative illustrations.\n */\nexport function Illustration(props: IllustrationProps): JSX.Element {\n const [local, rest] = splitProps(props, ['size', 'class', 'children']);\n\n return (\n <div\n {...rest}\n role={rest['aria-label'] ? 'img' : 'presentation'}\n class={`inline-flex items-center justify-center text-primary-300 ${sizeStyles[local.size ?? 'md']} ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n","/**\n * UIIcon component for proyecto-viviana-silapse\n *\n * A utility icon component for internal UI icons (chevrons, close, etc).\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type UIIconSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport interface UIIconProps {\n /** The size of the icon. @default 'md' */\n size?: UIIconSize;\n /** Additional CSS class name. */\n class?: string;\n /** The SVG content or icon element. */\n children?: JSX.Element;\n /** Accessibility label. */\n 'aria-label'?: string;\n /** Whether the icon is hidden from screen readers. @default true */\n 'aria-hidden'?: boolean;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<UIIconSize, string> = {\n xs: 'w-3 h-3',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A utility icon wrapper for internal UI icons.\n */\nexport function UIIcon(props: UIIconProps): JSX.Element {\n const [local, rest] = splitProps(props, ['size', 'class', 'children']);\n\n return (\n <span\n {...rest}\n role={rest['aria-label'] ? 'img' : undefined}\n aria-hidden={rest['aria-hidden'] ?? !rest['aria-label']}\n class={`inline-flex items-center justify-center shrink-0 ${sizeStyles[local.size ?? 'md']} ${local.class ?? ''}`}\n >\n {local.children}\n </span>\n );\n}\n","/**\n * Tooltip component for proyecto-viviana-silapse\n *\n * A tooltip displays a description of an element on hover or focus.\n * Built on top of solidaria-components for accessibility.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js'\nimport {\n Tooltip as HeadlessTooltip,\n TooltipTrigger as HeadlessTooltipTrigger,\n type TooltipProps as HeadlessTooltipProps,\n type TooltipTriggerComponentProps as HeadlessTooltipTriggerProps,\n type TooltipRenderProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'\nexport type TooltipVariant = 'default' | 'neutral' | 'info'\n\nexport interface TooltipTriggerProps extends HeadlessTooltipTriggerProps {\n /** The children of the tooltip trigger (trigger element and tooltip). */\n children: JSX.Element\n}\n\nexport interface TooltipProps extends Omit<HeadlessTooltipProps, 'class' | 'style' | 'children'> {\n /** The content of the tooltip. */\n children: JSX.Element\n /** The position of the tooltip relative to the trigger. */\n placement?: TooltipPlacement\n /** Visual variant of the tooltip. */\n variant?: TooltipVariant\n /** Additional CSS class name. */\n class?: string\n /** Whether to show an arrow pointing to the trigger. */\n showArrow?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\n// Note: Position is now calculated by the headless layer (solidaria-components)\n// so we don't need CSS positioning classes here\nconst baseStyles = [\n 'px-3 py-2 rounded-lg',\n 'text-sm font-medium',\n 'shadow-lg',\n 'pointer-events-auto',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[exiting]:animate-out data-[exiting]:fade-out-0 data-[exiting]:zoom-out-95',\n].join(' ')\n\nconst variantStyles: Record<TooltipVariant, string> = {\n default: 'bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900',\n neutral: 'bg-neutral-800 text-neutral-100 dark:bg-neutral-200 dark:text-neutral-900',\n info: 'bg-blue-600 text-white dark:bg-blue-500',\n}\n\nconst arrowStyles: Record<TooltipPlacement, string> = {\n top: 'bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-l-transparent border-r-transparent border-b-transparent',\n bottom: 'top-0 left-1/2 -translate-x-1/2 -translate-y-full border-l-transparent border-r-transparent border-t-transparent',\n left: 'right-0 top-1/2 -translate-y-1/2 translate-x-full border-t-transparent border-b-transparent border-r-transparent',\n right: 'left-0 top-1/2 -translate-y-1/2 -translate-x-full border-t-transparent border-b-transparent border-l-transparent',\n}\n\nconst getArrowBorderColor = (variant: TooltipVariant): string => {\n const colors: Record<TooltipVariant, string> = {\n default: 'border-neutral-900 dark:border-neutral-100',\n neutral: 'border-neutral-800 dark:border-neutral-200',\n info: 'border-blue-600 dark:border-blue-500',\n }\n return colors[variant]\n}\n\n// ============================================\n// COMPONENTS\n// ============================================\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip.\n * It handles opening and closing the Tooltip when the user hovers\n * over or focuses the trigger.\n *\n * @example\n * ```tsx\n * <TooltipTrigger>\n * <Button>Hover me</Button>\n * <Tooltip>This is helpful information</Tooltip>\n * </TooltipTrigger>\n * ```\n */\nexport function TooltipTrigger(props: TooltipTriggerProps): JSX.Element {\n return <HeadlessTooltipTrigger {...props} />\n}\n\n/**\n * Styled tooltip component that displays a description on hover or focus.\n *\n * @example\n * ```tsx\n * <TooltipTrigger>\n * <Button>Save</Button>\n * <Tooltip placement=\"top\">Save your changes</Tooltip>\n * </TooltipTrigger>\n * ```\n */\nexport function Tooltip(props: TooltipProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'placement',\n 'variant',\n 'class',\n 'showArrow',\n ])\n\n const placement = () => local.placement ?? 'top'\n const variant = () => local.variant ?? 'default'\n\n return (\n <HeadlessTooltip\n {...rest}\n placement={placement()}\n class={(_renderProps: TooltipRenderProps) => {\n const classes = [\n baseStyles,\n variantStyles[variant()],\n local.class ?? '',\n ].filter(Boolean).join(' ')\n return classes\n }}\n >\n {(renderProps: TooltipRenderProps) => (\n <>\n {props.children}\n <Show when={local.showArrow}>\n <div\n class={[\n 'absolute w-0 h-0 border-4',\n arrowStyles[renderProps.placement ?? placement()],\n getArrowBorderColor(variant()),\n ].join(' ')}\n />\n </Show>\n </>\n )}\n </HeadlessTooltip>\n )\n}\n\n// ============================================\n// SIMPLE CSS-ONLY TOOLTIP (Legacy)\n// ============================================\n\nexport interface SimpleTooltipProps {\n /** The content to show in the tooltip */\n label: string\n /** The trigger element */\n children: JSX.Element\n /** Position of the tooltip */\n position?: 'top' | 'bottom'\n /** Additional CSS class */\n class?: string\n}\n\n/**\n * Simple CSS-only tooltip component.\n * Uses CSS hover effect for performance. No JS state management.\n *\n * @deprecated Use the accessible Tooltip + TooltipTrigger components instead.\n *\n * @example\n * ```tsx\n * <SimpleTooltip label=\"Save your changes\">\n * <button>Save</button>\n * </SimpleTooltip>\n * ```\n */\nexport function SimpleTooltip(props: SimpleTooltipProps): JSX.Element {\n const position = () => props.position ?? 'bottom'\n\n return (\n <div class={`vui-tooltip ${props.class ?? ''}`}>\n <div class=\"vui-tooltip__trigger\">\n {props.children}\n </div>\n <div class={`vui-tooltip__content vui-tooltip__content--${position()}`}>\n <span>{props.label}</span>\n </div>\n </div>\n )\n}\n\n// Re-export types\nexport type { TooltipRenderProps }\n","/**\n * Popover component for proyecto-viviana-silapse\n *\n * A popover displays content in an overlay positioned relative to a trigger.\n * Built on top of solidaria-components for accessibility.\n * Follows Spectrum 2 design patterns.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js'\nimport {\n Popover as HeadlessPopover,\n PopoverTrigger as HeadlessPopoverTrigger,\n OverlayArrow as HeadlessOverlayArrow,\n type PopoverProps as HeadlessPopoverProps,\n type PopoverTriggerProps as HeadlessPopoverTriggerProps,\n type PopoverRenderProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type PopoverPlacement = NonNullable<HeadlessPopoverProps['placement']>\nexport type Placement = PopoverPlacement\nexport type PlacementAxis = NonNullable<PopoverRenderProps['placement']>\nexport type PopoverSize = 'sm' | 'md' | 'lg'\n\nexport interface PopoverTriggerProps extends HeadlessPopoverTriggerProps {\n /** The children of the popover trigger (trigger element and popover). */\n children: JSX.Element\n}\n\nexport interface PopoverProps extends Omit<HeadlessPopoverProps, 'class' | 'style' | 'children'> {\n /** The content of the popover. */\n children: JSX.Element\n /** The position of the popover relative to the trigger. */\n placement?: PopoverPlacement\n /** Size variant of the popover. */\n size?: PopoverSize\n /** Additional CSS class name. */\n class?: string\n /** Whether to show an arrow pointing to the trigger. */\n showArrow?: boolean\n /** Custom padding inside the popover. */\n padding?: 'none' | 'sm' | 'md' | 'lg'\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst baseStyles = [\n 'bg-bg-300',\n 'rounded-lg',\n 'shadow-xl',\n 'border border-primary-700',\n 'text-primary-200',\n 'outline-none',\n // Animation\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[placement=top]:slide-in-from-bottom-2',\n 'data-[placement=bottom]:slide-in-from-top-2',\n 'data-[placement=left]:slide-in-from-right-2',\n 'data-[placement=right]:slide-in-from-left-2',\n 'data-[exiting]:animate-out data-[exiting]:fade-out-0 data-[exiting]:zoom-out-95',\n].join(' ')\n\nconst sizeStyles: Record<PopoverSize, string> = {\n sm: 'max-w-xs',\n md: 'max-w-sm',\n lg: 'max-w-lg',\n}\n\nconst paddingStyles: Record<string, string> = {\n none: '',\n sm: 'p-2',\n md: 'p-4',\n lg: 'p-6',\n}\n\n// Arrow styles based on placement\nconst arrowBaseStyles = [\n 'fill-bg-300',\n 'stroke-primary-700',\n 'stroke-1',\n].join(' ')\n\n// Arrow positioning for each placement axis\nconst getArrowRotation = (placement: PlacementAxis | null): string => {\n switch (placement) {\n case 'top':\n return 'rotate-180'\n case 'bottom':\n return ''\n case 'left':\n return 'rotate-90'\n case 'right':\n return '-rotate-90'\n default:\n return ''\n }\n}\n\n// ============================================\n// COMPONENTS\n// ============================================\n\n/**\n * PopoverTrigger wraps around a trigger element and a Popover.\n * It handles opening and closing the Popover when the user interacts\n * with the trigger.\n *\n * @example\n * ```tsx\n * <PopoverTrigger>\n * <Button>Open Popover</Button>\n * <Popover>\n * <p>Popover content here!</p>\n * </Popover>\n * </PopoverTrigger>\n * ```\n */\nexport function PopoverTrigger(props: PopoverTriggerProps): JSX.Element {\n return <HeadlessPopoverTrigger {...props} />\n}\n\n/**\n * Styled popover component that displays content in an overlay.\n *\n * @example\n * ```tsx\n * <PopoverTrigger>\n * <Button>Settings</Button>\n * <Popover placement=\"bottom\" size=\"md\">\n * <h3>Settings</h3>\n * <p>Configure your preferences here.</p>\n * </Popover>\n * </PopoverTrigger>\n * ```\n */\nexport function Popover(props: PopoverProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'placement',\n 'size',\n 'class',\n 'showArrow',\n 'padding',\n ])\n\n const placement = () => local.placement ?? 'bottom'\n const size = () => local.size ?? 'md'\n const padding = () => local.padding ?? 'md'\n\n return (\n <HeadlessPopover\n {...rest}\n placement={placement()}\n class={(_renderProps: PopoverRenderProps) => {\n const classes = [\n baseStyles,\n sizeStyles[size()],\n paddingStyles[padding()],\n local.class ?? '',\n ].filter(Boolean).join(' ')\n return classes\n }}\n >\n {(renderProps: PopoverRenderProps) => (\n <>\n <Show when={local.showArrow}>\n <PopoverArrow placement={renderProps.placement} />\n </Show>\n {props.children}\n </>\n )}\n </HeadlessPopover>\n )\n}\n\n/**\n * Arrow component for the popover.\n * Automatically positions itself based on the popover placement.\n */\ninterface PopoverArrowProps {\n /** The current placement axis. */\n placement: PlacementAxis | null\n /** Additional CSS class. */\n class?: string\n}\n\nfunction PopoverArrow(props: PopoverArrowProps): JSX.Element {\n return (\n <HeadlessOverlayArrow\n class=\"absolute block\"\n style={{\n // Position based on placement\n ...(props.placement === 'top' && { bottom: '100%', left: '50%', transform: 'translateX(-50%)' }),\n ...(props.placement === 'bottom' && { top: '-8px', left: '50%', transform: 'translateX(-50%)' }),\n ...(props.placement === 'left' && { right: '100%', top: '50%', transform: 'translateY(-50%)' }),\n ...(props.placement === 'right' && { left: '-8px', top: '50%', transform: 'translateY(-50%)' }),\n }}\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n class={`${arrowBaseStyles} ${getArrowRotation(props.placement)} ${props.class ?? ''}`}\n >\n <path d=\"M0 0 L6 6 L12 0\" />\n </svg>\n </HeadlessOverlayArrow>\n )\n}\n\n// ============================================\n// POPOVER CONTENT SECTIONS\n// ============================================\n\nexport interface PopoverHeaderProps {\n /** The title of the popover. */\n title: string\n /** Optional description text. */\n description?: string\n /** Additional CSS class. */\n class?: string\n}\n\n/**\n * Header section for popover with title and optional description.\n */\nexport function PopoverHeader(props: PopoverHeaderProps): JSX.Element {\n return (\n <div class={`mb-3 ${props.class ?? ''}`}>\n <h3 class=\"text-lg font-semibold text-primary-100\">{props.title}</h3>\n <Show when={props.description}>\n <p class=\"text-sm text-primary-400 mt-1\">{props.description}</p>\n </Show>\n </div>\n )\n}\n\nexport interface PopoverFooterProps {\n /** Footer content, typically buttons. */\n children: JSX.Element\n /** Additional CSS class. */\n class?: string\n}\n\n/**\n * Footer section for popover actions.\n */\nexport function PopoverFooter(props: PopoverFooterProps): JSX.Element {\n return (\n <div class={`flex gap-2 justify-end mt-4 pt-3 border-t border-primary-700 ${props.class ?? ''}`}>\n {props.children}\n </div>\n )\n}\n\n// Re-export types\nexport type { PopoverRenderProps }\n","/**\n * Modal component for proyecto-viviana-silapse\n *\n * A styled ModalOverlay + Modal combination.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Modal as HeadlessModal,\n ModalOverlay as HeadlessModalOverlay,\n type ModalProps as HeadlessModalProps,\n type ModalOverlayProps as HeadlessModalOverlayProps,\n type ModalRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'fullscreen';\n\nexport interface StyledModalProps extends Omit<HeadlessModalOverlayProps, 'class'> {\n /** The size of the modal. @default 'md' */\n size?: ModalSize;\n /** Additional CSS class name. */\n class?: string;\n /** The content of the modal. */\n children?: JSX.Element;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<ModalSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-lg',\n lg: 'max-w-3xl',\n fullscreen: 'max-w-full h-full',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled modal overlay with sizing options.\n */\nexport function StyledModal(props: StyledModalProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class', 'children']);\n\n return (\n <HeadlessModalOverlay\n {...headlessProps}\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm\"\n >\n <HeadlessModal\n class={`w-full ${sizeStyles[local.size ?? 'md']} bg-bg-300 rounded-lg shadow-xl border border-primary-700 ${local.class ?? ''}`}\n >\n {local.children}\n </HeadlessModal>\n </HeadlessModalOverlay>\n );\n}\n","/**\n * Overlay component for proyecto-viviana-silapse\n *\n * A generic overlay container for positioning content above the page.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { useUNSAFE_PortalContext } from '@proyecto-viviana/solidaria';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface OverlayProps {\n /** Whether the overlay is currently open. */\n isOpen?: boolean;\n /** The content of the overlay. */\n children?: JSX.Element;\n /** Additional CSS class name. */\n class?: string;\n /** The container element to render the overlay into. */\n container?: HTMLElement;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A generic overlay container that renders content above the page via a portal.\n */\nexport function Overlay(props: OverlayProps): JSX.Element {\n const [local] = splitProps(props, ['isOpen', 'children', 'class', 'container']);\n const portalContext = useUNSAFE_PortalContext();\n const portalContainer = () => local.container ?? (portalContext.getContainer?.() as HTMLElement | null | undefined) ?? undefined;\n\n return (\n <Show when={local.isOpen}>\n <Portal mount={portalContainer()}>\n <div class={`fixed z-50 ${local.class ?? ''}`}>\n {local.children}\n </div>\n </Portal>\n </Show>\n );\n}\n","/**\n * Tray component for proyecto-viviana-silapse\n *\n * A bottom-sheet mobile overlay.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ModalOverlay as HeadlessModalOverlay,\n Modal as HeadlessModal,\n type ModalOverlayProps as HeadlessModalOverlayProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface TrayProps extends Omit<HeadlessModalOverlayProps, 'class'> {\n /** Additional CSS class name. */\n class?: string;\n /** The content of the tray. */\n children?: JSX.Element;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A bottom-sheet overlay for mobile contexts.\n */\nexport function Tray(props: TrayProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'children']);\n\n return (\n <HeadlessModalOverlay\n {...headlessProps}\n class=\"fixed inset-0 z-50 flex items-end justify-center bg-black/50\"\n >\n <HeadlessModal\n class={`w-full max-h-[90vh] bg-bg-300 rounded-t-2xl shadow-xl border-t border-primary-700 overflow-auto ${local.class ?? ''}`}\n >\n <div class=\"w-12 h-1 rounded-full bg-primary-500 mx-auto mt-2 mb-4\" />\n {local.children}\n </HeadlessModal>\n </HeadlessModalOverlay>\n );\n}\n","/**\n * OpenTransition utility for proyecto-viviana-silapse\n *\n * CSS transition component for overlay enter/exit animations.\n * SolidJS-idiomatic: uses createEffect + classList for class toggling.\n */\n\nimport { type JSX, createSignal, createEffect, on, onCleanup, Show, children as resolveChildren } from 'solid-js'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface OpenTransitionProps {\n /** Whether the content is open/visible. */\n open: boolean\n /** The content to apply transitions to. */\n children: JSX.Element\n /** CSS classes for the start of the enter transition. */\n enterFrom?: string\n /** CSS classes for the end of the enter transition. */\n enterTo?: string\n /** CSS classes for the start of the exit transition. */\n exitFrom?: string\n /** CSS classes for the end of the exit transition. */\n exitTo?: string\n /** Transition duration in ms. @default 200 */\n duration?: number\n /** Callback when exit transition completes (useful for overlay unmounting). */\n onExited?: () => void\n /** Additional CSS class always applied. */\n class?: string\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A transition utility that applies CSS classes for enter/exit animations.\n *\n * @example\n * ```tsx\n * <OpenTransition\n * open={isOpen()}\n * enterFrom=\"opacity-0 scale-95\"\n * enterTo=\"opacity-100 scale-100\"\n * exitFrom=\"opacity-100 scale-100\"\n * exitTo=\"opacity-0 scale-95\"\n * duration={200}\n * >\n * <div class=\"transition-all\">Content</div>\n * </OpenTransition>\n * ```\n */\nexport function OpenTransition(props: OpenTransitionProps): JSX.Element {\n const duration = () => props.duration ?? 200\n const [mounted, setMounted] = createSignal(props.open)\n const [transitionClasses, setTransitionClasses] = createSignal('')\n\n createEffect(on(\n () => props.open,\n (isOpen) => {\n if (isOpen) {\n // Enter: mount immediately, apply enterFrom, then enterTo\n setMounted(true)\n\n // Apply enterFrom classes first\n setTransitionClasses(props.enterFrom ?? '')\n\n // On next frame, apply enterTo classes\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setTransitionClasses(props.enterTo ?? '')\n })\n })\n } else {\n // Exit: apply exitFrom, then exitTo, then unmount after duration\n setTransitionClasses(props.exitFrom ?? '')\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setTransitionClasses(props.exitTo ?? '')\n })\n })\n\n const timer = setTimeout(() => {\n setMounted(false)\n props.onExited?.()\n }, duration())\n\n onCleanup(() => clearTimeout(timer))\n }\n }\n ))\n\n const resolved = resolveChildren(() => props.children)\n\n return (\n <Show when={mounted()}>\n <div\n class={`${props.class ?? ''} ${transitionClasses()}`}\n style={{ 'transition-duration': `${duration()}ms` }}\n data-open={props.open || undefined}\n >\n {resolved()}\n </div>\n </Show>\n )\n}\n","/**\n * TextField component for proyecto-viviana-silapse\n *\n * Styled text field built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, useContext } from 'solid-js'\nimport {\n TextField as HeadlessTextField,\n Label as HeadlessLabel,\n Input as HeadlessInput,\n TextFieldContext,\n type TextFieldProps as HeadlessTextFieldProps,\n type TextFieldRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TextFieldSize = 'sm' | 'md' | 'lg'\nexport type TextFieldVariant = 'outline' | 'filled'\n\nexport interface TextFieldProps extends Omit<HeadlessTextFieldProps, 'class' | 'style' | 'children'> {\n /** The size of the text field. */\n size?: TextFieldSize\n /** The visual variant of the text field. */\n variant?: TextFieldVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the input. */\n label?: string\n /** Description text shown below the input. */\n description?: string\n /** Error message shown when invalid. */\n errorMessage?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n input: 'h-8 px-2 text-sm',\n label: 'text-sm',\n description: 'text-xs',\n },\n md: {\n input: 'h-10 px-3 text-base',\n label: 'text-sm',\n description: 'text-sm',\n },\n lg: {\n input: 'h-12 px-4 text-lg',\n label: 'text-base',\n description: 'text-sm',\n },\n}\n\nfunction TextFieldDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(TextFieldContext)\n if (!context) return null\n const descriptionProps = () => {\n const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>\n return rest\n }\n return (\n <p {...descriptionProps()} class={props.class}>\n {props.children}\n </p>\n )\n}\n\nfunction TextFieldError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(TextFieldContext)\n if (!context) return null\n const errorMessageProps = () => {\n const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>\n return rest\n }\n return (\n <p {...errorMessageProps()} class={props.class}>\n {props.children}\n </p>\n )\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\nexport { TextArea } from './TextArea';\nexport type { TextAreaProps, TextAreaSize, TextAreaVariant } from './TextArea';\n\nexport function TextField(props: TextFieldProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n\n const containerClasses = () => {\n const base = 'flex flex-col'\n const custom = local.class ?? ''\n return [base, custom].filter(Boolean).join(' ')\n }\n\n const inputClasses = (renderProps: TextFieldRenderProps) => {\n const base = 'w-full rounded-md transition-all duration-200 outline-none'\n const sizeClass = size().input\n\n const variantClass = local.variant === 'filled'\n ? 'bg-bg-200 border border-transparent'\n : 'bg-transparent border border-bg-400'\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isInvalid) {\n stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'\n } else {\n stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'\n }\n\n const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'\n\n return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'block font-medium text-primary-200 mb-1'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const descriptionClasses = () => {\n const base = 'mt-1 text-primary-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const errorClasses = () => {\n const base = 'mt-1 text-danger-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTextField\n {...headlessProps}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n class={containerClasses()}\n children={(renderProps) => (\n <>\n <Show when={local.label}>\n <HeadlessLabel class={labelClasses()}>\n {local.label}\n <Show when={renderProps.isRequired}>\n <span class=\"text-danger-400 ml-0.5\">*</span>\n </Show>\n </HeadlessLabel>\n </Show>\n\n <HeadlessInput class={inputClasses(renderProps)} />\n\n <Show when={local.description && !renderProps.isInvalid}>\n <TextFieldDescription class={descriptionClasses()}>\n {local.description}\n </TextFieldDescription>\n </Show>\n\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <TextFieldError class={errorClasses()}>\n {local.errorMessage}\n </TextFieldError>\n </Show>\n </>\n )}\n />\n )\n}\n","/**\n * TextArea component for proyecto-viviana-silapse\n *\n * Styled multiline text field with auto-resize support.\n * Built on top of solidaria-components TextField + TextArea.\n */\n\nimport { type JSX, splitProps, Show, useContext } from 'solid-js'\nimport {\n TextField as HeadlessTextField,\n Label as HeadlessLabel,\n TextArea as HeadlessTextArea,\n TextFieldContext,\n type TextFieldProps as HeadlessTextFieldProps,\n type TextFieldRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TextAreaSize = 'sm' | 'md' | 'lg'\nexport type TextAreaVariant = 'outline' | 'filled'\n\nexport interface TextAreaProps extends Omit<HeadlessTextFieldProps, 'class' | 'style' | 'children'> {\n /** The size of the text area. */\n size?: TextAreaSize\n /** The visual variant of the text area. */\n variant?: TextAreaVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the textarea. */\n label?: string\n /** Description text shown below the textarea. */\n description?: string\n /** Error message shown when invalid. */\n errorMessage?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n textarea: 'min-h-[60px] px-2 py-1.5 text-sm',\n label: 'text-sm',\n description: 'text-xs',\n },\n md: {\n textarea: 'min-h-[80px] px-3 py-2 text-base',\n label: 'text-sm',\n description: 'text-sm',\n },\n lg: {\n textarea: 'min-h-[100px] px-4 py-3 text-lg',\n label: 'text-base',\n description: 'text-sm',\n },\n}\n\nfunction TextAreaDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(TextFieldContext)\n if (!context) return null\n const descriptionProps = () => {\n const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>\n return rest\n }\n return (\n <p {...descriptionProps()} class={props.class}>\n {props.children}\n </p>\n )\n}\n\nfunction TextAreaError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(TextFieldContext)\n if (!context) return null\n const errorMessageProps = () => {\n const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>\n return rest\n }\n return (\n <p {...errorMessageProps()} class={props.class}>\n {props.children}\n </p>\n )\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * TextAreas are multiline text inputs, useful for cases where users have\n * a sizable amount of text to enter.\n */\nexport function TextArea(props: TextAreaProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n\n const containerClasses = () => {\n const base = 'flex flex-col'\n const custom = local.class ?? ''\n return [base, custom].filter(Boolean).join(' ')\n }\n\n const textareaClasses = (renderProps: TextFieldRenderProps) => {\n const base = 'w-full rounded-md transition-all duration-200 outline-none resize-none overflow-hidden'\n const sizeClass = size().textarea\n\n const variantClass = local.variant === 'filled'\n ? 'bg-bg-200 border border-transparent'\n : 'bg-transparent border border-bg-400'\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isInvalid) {\n stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'\n } else {\n stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'\n }\n\n const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'\n\n return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'block font-medium text-primary-200 mb-1'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const descriptionClasses = () => {\n const base = 'mt-1 text-primary-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const errorClasses = () => {\n const base = 'mt-1 text-danger-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTextField\n {...headlessProps}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n class={containerClasses()}\n children={(renderProps) => (\n <>\n <Show when={local.label}>\n <HeadlessLabel class={labelClasses()}>\n {local.label}\n <Show when={renderProps.isRequired}>\n <span class=\"text-danger-400 ml-0.5\">*</span>\n </Show>\n </HeadlessLabel>\n </Show>\n\n <HeadlessTextArea class={textareaClasses(renderProps)} />\n\n <Show when={local.description && !renderProps.isInvalid}>\n <TextAreaDescription class={descriptionClasses()}>\n {local.description}\n </TextAreaDescription>\n </Show>\n\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <TextAreaError class={errorClasses()}>\n {local.errorMessage}\n </TextAreaError>\n </Show>\n </>\n )}\n />\n )\n}\n","/**\n * Link component for proyecto-viviana-silapse\n *\n * Styled link component built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Link as HeadlessLink,\n type LinkProps as HeadlessLinkProps,\n type LinkRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type LinkVariant = 'primary' | 'secondary' | 'subtle';\n\nexport interface LinkProps extends Omit<HeadlessLinkProps, 'class' | 'style' | 'children'> {\n /** The visual style of the link. @default 'primary' */\n variant?: LinkVariant;\n /** Whether the link is on its own vs inside a longer string of text. */\n isStandalone?: boolean;\n /** Whether the link should be displayed with a quiet style (no underline by default). */\n isQuiet?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** The content of the link. */\n children?: JSX.Element;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst variantStyles = {\n primary: 'text-accent hover:text-accent-300',\n secondary: 'text-primary-300 hover:text-primary-200',\n subtle: 'text-primary-400 hover:text-primary-300',\n};\n\n// ============================================\n// LINK COMPONENT\n// ============================================\n\n/**\n * Links allow users to navigate to a different location.\n * They can be presented inline inside a paragraph or as standalone text.\n *\n * Built on solidaria-components Link for full accessibility support.\n *\n * @example\n * ```tsx\n * <Link href=\"/about\">About Us</Link>\n *\n * // Secondary variant\n * <Link href=\"/help\" variant=\"secondary\">Help</Link>\n *\n * // Standalone (bold, no underline until hover)\n * <Link href=\"/home\" isStandalone isQuiet>Home</Link>\n * ```\n */\nexport function Link(props: LinkProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, [\n 'variant',\n 'isStandalone',\n 'isQuiet',\n 'class',\n ]);\n\n const variant = local.variant ?? 'primary';\n const customClass = local.class ?? '';\n\n // Generate class based on render props\n const getClassName = (renderProps: LinkRenderProps): string => {\n const base = 'transition-colors duration-200 cursor-pointer rounded-sm outline-none';\n\n // Variant colors\n const variantClass = variantStyles[variant];\n\n // Underline behavior\n let underlineClass: string;\n if (local.isStandalone && local.isQuiet) {\n // Quiet standalone: no underline by default, underline on hover/focus\n underlineClass = renderProps.isHovered || renderProps.isFocusVisible\n ? 'underline'\n : 'no-underline';\n } else {\n // Inline links always have underline for accessibility\n underlineClass = 'underline';\n }\n\n // Font weight for standalone\n const weightClass = local.isStandalone ? 'font-medium' : '';\n\n // Focus ring\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : '';\n\n // Disabled state\n const disabledClass = renderProps.isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : '';\n\n // Pressed state\n const pressedClass = renderProps.isPressed ? 'opacity-80' : '';\n\n return [\n base,\n variantClass,\n underlineClass,\n weightClass,\n focusClass,\n disabledClass,\n pressedClass,\n customClass,\n ].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessLink\n {...headlessProps}\n class={getClassName}\n >\n {props.children}\n </HeadlessLink>\n );\n}\n","/**\n * ProgressBar component for proyecto-viviana-silapse\n *\n * Styled progress bar component built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, createUniqueId } from 'solid-js';\nimport {\n ProgressBar as HeadlessProgressBar,\n type ProgressBarRenderProps as HeadlessProgressBarRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ProgressBarSize = 'sm' | 'md' | 'lg';\nexport type ProgressBarVariant = 'primary' | 'accent' | 'success' | 'warning' | 'danger';\n\nexport interface ProgressBarProps {\n /** The current value (controlled). @default 0 */\n value?: number;\n /** The smallest value allowed. @default 0 */\n minValue?: number;\n /** The largest value allowed. @default 100 */\n maxValue?: number;\n /** The content to display as the value's label (e.g. \"1 of 4\"). */\n valueLabel?: string;\n /** Whether presentation is indeterminate when progress isn't known. */\n isIndeterminate?: boolean;\n /** The size of the progress bar. @default 'md' */\n size?: ProgressBarSize;\n /** The visual style variant. @default 'primary' */\n variant?: ProgressBarVariant;\n /** The label to display above the progress bar. */\n label?: string;\n /** Whether to show the value text. @default true for determinate progress */\n showValueLabel?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** An accessibility label. */\n 'aria-label'?: string;\n /** Reference to external label element. */\n 'aria-labelledby'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n track: 'h-1',\n text: 'text-xs',\n },\n md: {\n track: 'h-2',\n text: 'text-sm',\n },\n lg: {\n track: 'h-3',\n text: 'text-base',\n },\n};\n\nconst variantStyles = {\n primary: 'bg-primary-500',\n accent: 'bg-accent',\n success: 'bg-green-500',\n warning: 'bg-yellow-500',\n danger: 'bg-red-500',\n};\n\n// ============================================\n// PROGRESSBAR COMPONENT\n// ============================================\n\n/**\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n *\n * @example\n * ```tsx\n * <ProgressBar value={50} label=\"Loading...\" />\n *\n * // Indeterminate\n * <ProgressBar isIndeterminate label=\"Processing...\" />\n *\n * // Different variants\n * <ProgressBar value={75} variant=\"success\" />\n * ```\n */\nexport function ProgressBar(props: ProgressBarProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'variant',\n 'label',\n 'showValueLabel',\n 'class',\n ]);\n\n const size = () => local.size ?? 'md';\n const variant = () => local.variant ?? 'primary';\n const sizeConfig = () => sizeStyles[size()];\n const labelId = createUniqueId();\n const renderChildren = ({ valueText, percentage, isIndeterminate }: HeadlessProgressBarRenderProps) => {\n const showValueLabel = local.showValueLabel ?? !isIndeterminate;\n const fillWidth = isIndeterminate ? '30%' : `${percentage ?? 0}%`;\n\n return (\n <>\n <Show when={local.label || showValueLabel}>\n <div class={`flex justify-between items-center mb-1 ${sizeConfig().text}`}>\n <Show when={local.label}>\n <span id={labelId} class=\"text-primary-200 font-medium\">{local.label}</span>\n </Show>\n <Show when={showValueLabel && !isIndeterminate}>\n <span class=\"text-primary-300\">{valueText}</span>\n </Show>\n </div>\n </Show>\n\n <div class={`w-full ${sizeConfig().track} bg-bg-300 rounded-full overflow-hidden`}>\n <div\n class={`h-full rounded-full transition-all duration-300 ${variantStyles[variant()]} ${\n isIndeterminate ? 'animate-progress-indeterminate' : ''\n }`}\n style={{ width: fillWidth }}\n />\n </div>\n </>\n );\n };\n\n return (\n <HeadlessProgressBar\n {...headlessProps}\n aria-labelledby={headlessProps['aria-labelledby'] ?? (!headlessProps['aria-label'] && local.label ? labelId : undefined)}\n aria-label={headlessProps['aria-label']}\n class={`w-full ${local.class ?? ''}`}\n children={renderChildren}\n />\n );\n}\n","/**\n * ProgressCircle component for proyecto-viviana-silapse\n *\n * A circular SVG progress indicator.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\nimport {\n ProgressBar as HeadlessProgressBar,\n type ProgressBarRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ProgressCircleSize = 'sm' | 'md' | 'lg';\nexport type ProgressCircleVariant = 'primary' | 'accent';\n\nexport interface ProgressCircleProps {\n /** The current value. @default 0 */\n value?: number;\n /** The smallest value allowed. @default 0 */\n minValue?: number;\n /** The largest value allowed. @default 100 */\n maxValue?: number;\n /** Whether presentation is indeterminate. */\n isIndeterminate?: boolean;\n /** The size of the progress circle. @default 'md' */\n size?: ProgressCircleSize;\n /** The visual variant. @default 'primary' */\n variant?: ProgressCircleVariant;\n /** Additional CSS class name. */\n class?: string;\n /** An accessibility label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeConfig: Record<ProgressCircleSize, { size: number; stroke: number }> = {\n sm: { size: 24, stroke: 3 },\n md: { size: 36, stroke: 3 },\n lg: { size: 48, stroke: 4 },\n};\n\nconst variantColors: Record<ProgressCircleVariant, string> = {\n primary: 'stroke-primary-400',\n accent: 'stroke-accent',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A circular progress indicator using SVG.\n */\nexport function ProgressCircle(props: ProgressCircleProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'variant', 'class']);\n\n const size = () => local.size ?? 'md';\n const config = () => sizeConfig[size()];\n const variant = () => local.variant ?? 'primary';\n\n const radius = () => (config().size - config().stroke) / 2;\n const circumference = () => 2 * Math.PI * radius();\n const center = () => config().size / 2;\n\n return (\n <HeadlessProgressBar\n {...headlessProps}\n class={`inline-flex ${local.class ?? ''}`}\n >\n {(renderProps: ProgressBarRenderProps) => {\n const offset = () => renderProps.isIndeterminate\n ? circumference() * 0.75\n : circumference() - ((renderProps.percentage ?? 0) / 100) * circumference();\n\n return (\n <svg\n width={config().size}\n height={config().size}\n viewBox={`0 0 ${config().size} ${config().size}`}\n class={renderProps.isIndeterminate ? 'animate-spin' : ''}\n >\n <circle\n cx={center()}\n cy={center()}\n r={radius()}\n fill=\"none\"\n stroke-width={String(config().stroke)}\n class=\"stroke-bg-300\"\n />\n <circle\n cx={center()}\n cy={center()}\n r={radius()}\n fill=\"none\"\n stroke-width={String(config().stroke)}\n stroke-dasharray={String(circumference())}\n stroke-dashoffset={String(offset())}\n stroke-linecap=\"round\"\n class={`transition-all duration-300 ${variantColors[variant()]}`}\n transform={`rotate(-90 ${center()} ${center()})`}\n />\n </svg>\n );\n }}\n </HeadlessProgressBar>\n );\n}\n","/**\n * Separator component for proyecto-viviana-silapse\n *\n * Styled separator component built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, createMemo } from 'solid-js';\nimport {\n Separator as HeadlessSeparator,\n type SeparatorProps as HeadlessSeparatorProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SeparatorVariant = 'default' | 'subtle' | 'strong';\nexport type SeparatorSize = 'sm' | 'md' | 'lg';\n\nexport interface SeparatorProps\n extends Omit<HeadlessSeparatorProps, 'class' | 'style'> {\n /** The visual style variant. @default 'default' */\n variant?: SeparatorVariant;\n /** The size/thickness of the separator. @default 'md' */\n size?: SeparatorSize;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst variantStyles = {\n default: 'bg-bg-100',\n subtle: 'bg-bg-200',\n strong: 'bg-primary-600',\n};\n\nconst horizontalSizeStyles = {\n sm: 'h-px',\n md: 'h-0.5',\n lg: 'h-1',\n};\n\nconst verticalSizeStyles = {\n sm: 'w-px',\n md: 'w-0.5',\n lg: 'w-1',\n};\n\n// ============================================\n// SEPARATOR COMPONENT\n// ============================================\n\n/**\n * A separator is a visual divider between two groups of content,\n * e.g. groups of menu items or sections of a page.\n *\n * @example\n * ```tsx\n * <Separator />\n *\n * // Vertical separator\n * <div class=\"flex items-center gap-4\">\n * <span>Item 1</span>\n * <Separator orientation=\"vertical\" />\n * <span>Item 2</span>\n * </div>\n *\n * // Different variants\n * <Separator variant=\"strong\" />\n * ```\n */\nexport function Separator(props: SeparatorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'orientation',\n 'variant',\n 'size',\n 'class',\n ]);\n\n const orientation = () => local.orientation ?? 'horizontal';\n const variant = () => local.variant ?? 'default';\n const size = () => local.size ?? 'md';\n\n // Build class string\n const className = createMemo(() => {\n const isVertical = orientation() === 'vertical';\n const sizeStyles = isVertical ? verticalSizeStyles : horizontalSizeStyles;\n\n const base = [\n variantStyles[variant()],\n sizeStyles[size()],\n isVertical ? 'h-full self-stretch' : 'w-full',\n 'border-0', // Reset hr default border\n local.class ?? '',\n ];\n\n return base.filter(Boolean).join(' ');\n });\n\n return (\n <HeadlessSeparator\n {...headlessProps}\n orientation={orientation()}\n class={className()}\n />\n );\n}\n","/**\n * Text component for proyecto-viviana-silapse\n *\n * Styling-only wrapper around solidaria-components Text.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Text as HeadlessText,\n type TextProps as HeadlessTextProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport type TextVariant = 'default' | 'muted' | 'success' | 'danger';\nexport type TextSize = 'sm' | 'md' | 'lg';\n\nexport interface TextProps extends Omit<HeadlessTextProps, 'class'> {\n variant?: TextVariant;\n size?: TextSize;\n class?: string;\n}\n\nconst variantStyles: Record<TextVariant, string> = {\n default: 'text-primary-100',\n muted: 'text-primary-400',\n success: 'text-green-500',\n danger: 'text-danger-400',\n};\n\nconst sizeStyles: Record<TextSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n};\n\nexport function Text(props: TextProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['variant', 'size', 'class']);\n const variant = () => local.variant ?? 'default';\n const size = () => local.size ?? 'md';\n return (\n <HeadlessText\n {...headlessProps}\n class={`${variantStyles[variant()]} ${sizeStyles[size()]} ${local.class ?? ''}`}\n />\n );\n}\n\n// Sub-component re-exports\nexport { Heading } from './Heading';\nexport type { HeadingProps, HeadingLevel } from './Heading';\nexport { StyledKeyboard } from './Keyboard';\nexport type { KeyboardProps as StyledKeyboardProps } from './Keyboard';\n\n","/**\n * Heading component for proyecto-viviana-silapse\n *\n * Styled heading (h1-h6) with configurable level and size.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport { Dynamic } from 'solid-js/web';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps {\n /** The heading level (1-6). @default 3 */\n level?: HeadingLevel;\n /** Additional CSS class name. */\n class?: string;\n /** An accessibility id. */\n id?: string;\n /** The content of the heading. */\n children?: JSX.Element;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst levelStyles: Record<HeadingLevel, string> = {\n 1: 'text-4xl font-bold',\n 2: 'text-3xl font-bold',\n 3: 'text-2xl font-semibold',\n 4: 'text-xl font-semibold',\n 5: 'text-lg font-medium',\n 6: 'text-base font-medium',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled heading component with configurable level.\n */\nexport function Heading(props: HeadingProps): JSX.Element {\n const [local, rest] = splitProps(props, ['level', 'class', 'children']);\n const level = () => local.level ?? 3;\n const tag = () => `h${level()}` as keyof JSX.IntrinsicElements;\n\n return (\n <Dynamic\n component={tag()}\n {...rest}\n class={`text-primary-100 ${levelStyles[level()]} ${local.class ?? ''}`}\n >\n {local.children}\n </Dynamic>\n );\n}\n","/**\n * Keyboard component for proyecto-viviana-silapse\n *\n * Styled <kbd> element wrapping the headless Keyboard component.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Keyboard as HeadlessKeyboard,\n type KeyboardProps as HeadlessKeyboardProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface KeyboardProps extends Omit<HeadlessKeyboardProps, 'class'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * Displays a keyboard shortcut or key combination in a styled <kbd> tag.\n */\nexport function StyledKeyboard(props: KeyboardProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class']);\n\n return (\n <HeadlessKeyboard\n {...rest}\n class={`inline-block px-1.5 py-0.5 text-xs font-mono rounded border border-primary-600 bg-bg-300 text-primary-200 ${local.class ?? ''}`}\n />\n );\n}\n","/**\n * Label component for proyecto-viviana-silapse\n *\n * Styling-only wrapper around solidaria-components Label.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Label as HeadlessLabel,\n type LabelProps as HeadlessLabelProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport type LabelSize = 'sm' | 'md' | 'lg';\n\nexport interface LabelProps extends Omit<HeadlessLabelProps, 'class'> {\n size?: LabelSize;\n class?: string;\n}\n\nconst sizeStyles: Record<LabelSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n};\n\nexport function Label(props: LabelProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class']);\n const size = () => local.size ?? 'md';\n return (\n <HeadlessLabel\n {...headlessProps}\n class={`font-medium text-primary-200 ${sizeStyles[size()]} ${local.class ?? ''}`}\n />\n );\n}\n\n","/**\n * Form components for proyecto-viviana-silapse\n *\n * Styling-only wrappers around solidaria-components form primitives.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Form as HeadlessForm,\n FieldError as HeadlessFieldError,\n type FormProps as HeadlessFormProps,\n type FieldErrorProps as HeadlessFieldErrorProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport interface FormProps extends Omit<HeadlessFormProps, 'class'> {\n class?: string;\n}\n\nexport interface FieldErrorProps extends Omit<HeadlessFieldErrorProps, 'class'> {\n class?: string;\n}\n\nexport function Form(props: FormProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class']);\n return (\n <HeadlessForm\n {...headlessProps}\n class={`flex flex-col gap-4 ${local.class ?? ''}`}\n />\n );\n}\n\nexport function FieldError(props: FieldErrorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class']);\n return (\n <HeadlessFieldError\n {...headlessProps}\n class={`text-sm text-danger-400 ${local.class ?? ''}`}\n />\n );\n}\n\n// Sub-component re-exports\nexport { Field } from './Field';\nexport type { FieldProps, FieldSize } from './Field';\nexport { HelpText } from './HelpText';\nexport type { HelpTextProps } from './HelpText';\n\n","/**\n * Field component for proyecto-viviana-silapse\n *\n * A compound field layout with label, input slot, help text, and error message.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type FieldSize = 'sm' | 'md' | 'lg';\n\nexport interface FieldProps {\n /** The label for the field. */\n label?: string;\n /** A description or help text for the field. */\n description?: string;\n /** An error message for the field. */\n errorMessage?: string;\n /** Whether the field is required. */\n isRequired?: boolean;\n /** Whether the field is disabled. */\n isDisabled?: boolean;\n /** Whether the field is invalid. */\n isInvalid?: boolean;\n /** The size of the field. @default 'md' */\n size?: FieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** The field content (input element). */\n children?: JSX.Element;\n /** ID for the label's htmlFor attribute. */\n htmlFor?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<FieldSize, { label: string; text: string; gap: string }> = {\n sm: { label: 'text-xs', text: 'text-xs', gap: 'gap-1' },\n md: { label: 'text-sm', text: 'text-sm', gap: 'gap-1.5' },\n lg: { label: 'text-base', text: 'text-sm', gap: 'gap-2' },\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A field layout component that provides label, help text, and error message\n * around a form input.\n */\nexport function Field(props: FieldProps): JSX.Element {\n const [local] = splitProps(props, [\n 'label', 'description', 'errorMessage', 'isRequired', 'isDisabled',\n 'isInvalid', 'size', 'class', 'children', 'htmlFor',\n ]);\n\n const size = () => sizeStyles[local.size ?? 'md'];\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={`flex flex-col ${size().gap} ${local.isDisabled ? 'opacity-60' : ''} ${local.class ?? ''}`}>\n <Show when={local.label}>\n <label\n for={local.htmlFor}\n class={`font-medium text-primary-200 ${size().label}`}\n >\n {local.label}\n <Show when={local.isRequired}>\n <span class=\"text-red-400 ml-0.5\">*</span>\n </Show>\n </label>\n </Show>\n\n {local.children}\n\n <Show when={showError()}>\n <p class={`text-red-400 ${size().text}`} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n\n <Show when={!showError() && local.description}>\n <p class={`text-primary-400 ${size().text}`}>\n {local.description}\n </p>\n </Show>\n </div>\n );\n}\n","/**\n * HelpText component for proyecto-viviana-silapse\n *\n * Displays description or error text below a form field.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface HelpTextProps {\n /** The description text. */\n description?: string;\n /** The error message text. */\n errorMessage?: string;\n /** Whether the field is in an error state. */\n isInvalid?: boolean;\n /** Whether the help text is disabled (dimmed). */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * Displays description or error text below a form field.\n */\nexport function HelpText(props: HelpTextProps): JSX.Element {\n const [local] = splitProps(props, ['description', 'errorMessage', 'isInvalid', 'isDisabled', 'class']);\n\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={`text-sm ${local.isDisabled ? 'opacity-60' : ''} ${local.class ?? ''}`}>\n <Show when={showError()}>\n <p class=\"text-red-400\" role=\"alert\">{local.errorMessage}</p>\n </Show>\n <Show when={!showError() && local.description}>\n <p class=\"text-primary-400\">{local.description}</p>\n </Show>\n </div>\n );\n}\n","/**\n * Toolbar component for proyecto-viviana-silapse\n *\n * Styled toolbar component built on top of solidaria-components Toolbar.\n */\n\nimport { type JSX, splitProps } from 'solid-js'\nimport {\n Toolbar as HeadlessToolbar,\n type ToolbarProps as HeadlessToolbarProps,\n type ToolbarRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ToolbarSize = 'sm' | 'md' | 'lg'\nexport type ToolbarVariant = 'default' | 'bordered' | 'ghost'\n\nexport interface ToolbarProps extends Omit<HeadlessToolbarProps, 'class' | 'style'> {\n /** The visual variant of the toolbar. @default 'default' */\n variant?: ToolbarVariant\n /** The size of the toolbar. @default 'md' */\n size?: ToolbarSize\n /** Additional CSS class name. */\n class?: string\n /** Inline styles. */\n style?: JSX.CSSProperties\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst baseStyles = 'vui-toolbar inline-flex items-center'\n\nconst variantStyles: Record<ToolbarVariant, string> = {\n default: 'bg-bg-50 rounded-md',\n bordered: 'border border-bg-200 rounded-md',\n ghost: '',\n}\n\nconst sizeStyles: Record<ToolbarSize, string> = {\n sm: 'gap-1 p-1',\n md: 'gap-2 p-2',\n lg: 'gap-3 p-3',\n}\n\nconst orientationStyles = {\n horizontal: 'flex-row',\n vertical: 'flex-col',\n}\n\n// ============================================\n// TOOLBAR COMPONENT\n// ============================================\n\n/**\n * A styled toolbar for grouping interactive controls with keyboard navigation.\n *\n * @example\n * ```tsx\n * <Toolbar aria-label=\"Text formatting\">\n * <Button>Bold</Button>\n * <Button>Italic</Button>\n * <Separator orientation=\"vertical\" />\n * <Button>Align Left</Button>\n * <Button>Align Center</Button>\n * </Toolbar>\n *\n * // Vertical toolbar\n * <Toolbar orientation=\"vertical\" variant=\"bordered\">\n * <Button>Cut</Button>\n * <Button>Copy</Button>\n * <Button>Paste</Button>\n * </Toolbar>\n * ```\n */\nexport function Toolbar(props: ToolbarProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'variant',\n 'size',\n 'class',\n 'style',\n ])\n\n const variant = () => local.variant ?? 'default'\n const size = () => local.size ?? 'md'\n\n const getClassName = (renderProps: ToolbarRenderProps): string => {\n return [\n baseStyles,\n variantStyles[variant()],\n sizeStyles[size()],\n orientationStyles[renderProps.orientation],\n local.class ?? '',\n ].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessToolbar\n {...headlessProps}\n class={getClassName}\n style={local.style}\n />\n )\n}\n","/**\n * ActionBar components for proyecto-viviana-silapse.\n *\n * Styled wrappers around the headless ActionBar component.\n * Shows a selection count, clear button, and action buttons\n * when items are selected in a collection.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ActionBar as HeadlessActionBar,\n ActionBarContainer as HeadlessActionBarContainer,\n ActionBarSelectionCount as HeadlessSelectionCount,\n ActionBarClearButton as HeadlessClearButton,\n type ActionBarRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport type { Key } from '@proyecto-viviana/solid-stately';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ActionBarProps {\n /** The number of selected items. ActionBar is hidden when 0. */\n selectedItemCount: number | 'all';\n /** Callback when the clear button is pressed. */\n onClearSelection: () => void;\n /** Callback when an action is triggered. */\n onAction?: (key: Key) => void;\n /** The action buttons to display. */\n children?: JSX.Element;\n /** Additional CSS class name. */\n class?: string;\n /** Accessible label for the action bar. @default 'Actions' */\n 'aria-label'?: string;\n /** Identifies the element (or elements) that labels the action bar. */\n 'aria-labelledby'?: string;\n /** Optional keydown handler for the action bar root. */\n onKeyDown?: JSX.EventHandlerUnion<HTMLDivElement, KeyboardEvent>;\n}\n\nexport interface ActionBarContainerProps {\n children?: JSX.Element;\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nfunction getBarClassName(renderProps: ActionBarRenderProps, extraClass?: string): string {\n return [\n 'vui-action-bar flex items-center gap-2 rounded-lg border border-primary-600 bg-bg-300 p-2',\n extraClass ?? '',\n ].filter(Boolean).join(' ');\n}\n\n// ============================================\n// COMPONENTS\n// ============================================\n\nexport function ActionBar(props: ActionBarProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'children']);\n\n return (\n <HeadlessActionBar\n {...headlessProps}\n class={(rp: ActionBarRenderProps) => getBarClassName(rp, local.class)}\n >\n <HeadlessClearButton\n class=\"inline-flex items-center justify-center rounded p-1 text-primary-200 hover:bg-bg-400 transition-colors\"\n />\n <HeadlessSelectionCount\n class=\"text-sm text-primary-200 whitespace-nowrap\"\n />\n <div class=\"flex-1\" />\n <div class=\"flex items-center gap-1\">\n {local.children}\n </div>\n </HeadlessActionBar>\n );\n}\n\nexport function ActionBarContainer(props: ActionBarContainerProps): JSX.Element {\n return (\n <HeadlessActionBarContainer\n class={['vui-action-bar-container', props.class].filter(Boolean).join(' ')}\n >\n {props.children}\n </HeadlessActionBarContainer>\n );\n}\n","/**\n * ActionGroup components for proyecto-viviana-silapse.\n *\n * Styling wrappers around the headless ActionGroup component.\n * Uses createActionGroup under the hood for proper dynamic roles\n * (toolbar/radiogroup), keyboard navigation, and ARIA semantics.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n ActionGroup as HeadlessActionGroup,\n type ActionGroupProps as HeadlessActionGroupProps,\n type ActionGroupRenderProps,\n type ActionGroupItemRenderProps,\n type ActionGroupItem,\n} from '@proyecto-viviana/solidaria-components';\nimport type { Key, SelectionMode } from '@proyecto-viviana/solid-stately';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ActionGroupProps<T extends ActionGroupItem = ActionGroupItem> {\n /** The items in the action group. */\n items: T[];\n /** The selection mode. @default 'none' */\n selectionMode?: SelectionMode;\n /** Orientation of the group. @default 'horizontal' */\n orientation?: 'horizontal' | 'vertical';\n /** Whether the entire group is disabled. */\n isDisabled?: boolean;\n /** Accessible label. */\n 'aria-label'?: string;\n /** Labelled-by id. */\n 'aria-labelledby'?: string;\n /** Currently selected keys (controlled). */\n selectedKeys?: Iterable<Key>;\n /** Default selected keys (uncontrolled). */\n defaultSelectedKeys?: Iterable<Key>;\n /** Handler called when selection changes. */\n onSelectionChange?: (keys: 'all' | Set<Key>) => void;\n /** Handler called when an item action is triggered. */\n onAction?: (key: Key) => void;\n /** Keys of disabled items. */\n disabledKeys?: Iterable<Key>;\n /** Optional render function for action items. */\n children?: (item: T, renderProps: ActionGroupItemRenderProps) => JSX.Element;\n /** Custom render function for items. If not provided, uses item.label. */\n renderItem?: (item: T, renderProps: ActionGroupItemRenderProps) => JSX.Element;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nfunction getContainerClassName(renderProps: ActionGroupRenderProps, extraClass?: string): string {\n const orientationClass = renderProps.orientation === 'vertical'\n ? 'flex-col'\n : 'flex-row';\n return [\n 'vui-action-group inline-flex items-center gap-1 rounded-lg border border-primary-600 bg-bg-300 p-1',\n orientationClass,\n extraClass ?? '',\n ].filter(Boolean).join(' ');\n}\n\nfunction getItemClassName(renderProps: ActionGroupItemRenderProps): string {\n const stateClass = renderProps.isSelected\n ? 'bg-accent text-bg-400'\n : 'bg-transparent text-primary-200 hover:bg-bg-400';\n const disabledClass = renderProps.isDisabled\n ? 'cursor-not-allowed opacity-50'\n : 'cursor-pointer';\n return [\n 'inline-flex items-center rounded-md px-3 py-1.5 text-sm transition-colors duration-150',\n stateClass,\n disabledClass,\n ].join(' ');\n}\n\n// ============================================\n// ACTIONGROUP COMPONENT\n// ============================================\n\nexport function ActionGroup<T extends ActionGroupItem = ActionGroupItem>(\n props: ActionGroupProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, ['class', 'renderItem', 'children']);\n\n return (\n <HeadlessActionGroup<T>\n {...headlessProps as HeadlessActionGroupProps<T>}\n class={(rp: ActionGroupRenderProps) => getContainerClassName(rp, local.class)}\n >\n {(item: T, renderProps: ActionGroupItemRenderProps) => (\n <span class={getItemClassName(renderProps)}>\n {local.renderItem\n ? local.renderItem(item, renderProps)\n : local.children\n ? local.children(item, renderProps)\n : item.label}\n </span>\n )}\n </HeadlessActionGroup>\n );\n}\n","/**\n * ButtonGroup component for proyecto-viviana-silapse.\n *\n * Styling-only button grouping primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface ButtonGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n class?: string;\n}\n\nexport function ButtonGroup(props: ButtonGroupProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <div\n {...domProps}\n role={domProps.role ?? 'group'}\n class={`inline-flex items-center gap-2 ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n\n","/**\n * SearchAutocomplete component for proyecto-viviana-silapse\n *\n * Styled autocomplete built on top of headless-backed ComboBox.\n * UI layer owns styling only; behavior lives in solidaria layers.\n */\n\nimport { type JSX, splitProps } from 'solid-js'\nimport {\n ComboBox,\n ComboBoxInput,\n ComboBoxButton,\n ComboBoxListBox,\n ComboBoxOption,\n type FilterFn,\n type Key,\n} from '../combobox'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SearchAutocompleteSize = 'sm' | 'md' | 'lg'\n\nexport interface SearchAutocompleteItem {\n id: string\n name: string\n [key: string]: unknown\n}\n\nexport interface SearchAutocompleteProps<T extends SearchAutocompleteItem = SearchAutocompleteItem> {\n /** The items to display in the dropdown. */\n items: T[]\n /** The size of the autocomplete. @default 'md' */\n size?: SearchAutocompleteSize\n /** Placeholder text for the input. */\n placeholder?: string\n /** Accessible label for the input. */\n 'aria-label'?: string\n /** Label text shown above the input. */\n label?: string\n /** Description text shown below the input. */\n description?: string\n /** The current input value (controlled). */\n inputValue?: string\n /** The default input value (uncontrolled). */\n defaultInputValue?: string\n /** Handler called when the input value changes. */\n onInputChange?: (value: string) => void\n /** Handler called when an item is selected. */\n onSelect?: (item: T) => void\n /** Additional CSS class name. */\n class?: string\n /** Whether the input is disabled. */\n isDisabled?: boolean\n /** Custom filter function. */\n filter?: FilterFn\n /** Custom render function for items. */\n renderItem?: (item: T) => JSX.Element\n /** Key to use for the display text. @default 'name' */\n textKey?: keyof T\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n },\n md: {\n container: 'text-base',\n },\n lg: {\n container: 'text-lg',\n },\n}\n\n// ============================================\n// SEARCH AUTOCOMPLETE COMPONENT\n// ============================================\n\n/**\n * A styled autocomplete component for searching and selecting from a list.\n */\nexport function SearchAutocomplete<T extends SearchAutocompleteItem = SearchAutocompleteItem>(\n props: SearchAutocompleteProps<T>\n): JSX.Element {\n const [local, comboBoxProps] = splitProps(props, [\n 'items',\n 'size',\n 'placeholder',\n 'aria-label',\n 'label',\n 'description',\n 'onSelect',\n 'class',\n 'isDisabled',\n 'renderItem',\n 'textKey',\n ])\n\n const size = () => local.size ?? 'md'\n const textKey = () => (local.textKey ?? 'name') as keyof T\n const styles = () => sizeStyles[size()]\n\n const getTextValue = (item: T): string => {\n const text = item[textKey()] ?? item.name\n return String(text ?? '')\n }\n\n const handleSelectionChange = (key: Key | null) => {\n if (key == null) return\n const selected = local.items.find((item) => String(item.id) === String(key))\n if (selected) {\n local.onSelect?.(selected)\n }\n }\n\n return (\n <div class={['vui-search-autocomplete relative', styles().container, local.class].filter(Boolean).join(' ')}>\n <ComboBox<T>\n {...comboBoxProps}\n items={local.items}\n size={size()}\n label={local.label}\n description={local.description}\n aria-label={local['aria-label']}\n placeholder={local.placeholder}\n isDisabled={local.isDisabled}\n defaultFilter={comboBoxProps.filter}\n getKey={(item) => item.id}\n getTextValue={getTextValue}\n onSelectionChange={handleSelectionChange}\n >\n <ComboBox.InputGroup>\n <ComboBoxInput />\n <ComboBoxButton />\n </ComboBox.InputGroup>\n <ComboBoxListBox>\n {(item: T) => (\n <ComboBoxOption id={item.id}>\n {local.renderItem ? local.renderItem(item) : getTextValue(item)}\n </ComboBoxOption>\n )}\n </ComboBoxListBox>\n </ComboBox>\n </div>\n )\n}\n","/**\n * ComboBox component for proyecto-viviana-silapse\n *\n * Styled combobox component built on top of solidaria-components.\n * Inspired by Spectrum 2's ComboBox component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext, Show } from 'solid-js'\nimport {\n ComboBox as HeadlessComboBox,\n ComboBoxInput as HeadlessComboBoxInput,\n ComboBoxLabel as HeadlessComboBoxLabel,\n ComboBoxDescription as HeadlessComboBoxDescription,\n ComboBoxErrorMessage as HeadlessComboBoxErrorMessage,\n ComboBoxButton as HeadlessComboBoxButton,\n ComboBoxListBox as HeadlessComboBoxListBox,\n ComboBoxOption as HeadlessComboBoxOption,\n defaultContainsFilter,\n type ComboBoxProps as HeadlessComboBoxProps,\n type ComboBoxInputProps as HeadlessComboBoxInputProps,\n type ComboBoxButtonProps as HeadlessComboBoxButtonProps,\n type ComboBoxListBoxProps as HeadlessComboBoxListBoxProps,\n type ComboBoxOptionProps as HeadlessComboBoxOptionProps,\n type ComboBoxRenderProps,\n type ComboBoxInputRenderProps,\n type ComboBoxButtonRenderProps,\n type ComboBoxListBoxRenderProps,\n type ComboBoxOptionRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key, FilterFn, MenuTriggerAction } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type ComboBoxSize = 'sm' | 'md' | 'lg'\n\nconst ComboBoxSizeContext = createContext<ComboBoxSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ComboBoxProps<T> extends Omit<HeadlessComboBoxProps<T>, 'class' | 'style'> {\n /** The size of the combobox. */\n size?: ComboBoxSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the combobox. */\n label?: string\n /** Description for the combobox. */\n description?: string\n /** Error message when invalid. */\n errorMessage?: string\n /** Whether the combobox is invalid. */\n isInvalid?: boolean\n}\n\nexport interface ComboBoxInputProps extends Omit<HeadlessComboBoxInputProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface ComboBoxButtonProps extends Omit<HeadlessComboBoxButtonProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface ComboBoxListBoxProps<T> extends Omit<HeadlessComboBoxListBoxProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface ComboBoxOptionProps<T> extends Omit<HeadlessComboBoxOptionProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n wrapper: 'h-8',\n input: 'h-8 text-sm pl-3 pr-8',\n button: 'h-8 w-8',\n label: 'text-sm',\n option: 'text-sm py-1.5 px-3',\n icon: 'h-4 w-4',\n },\n md: {\n wrapper: 'h-10',\n input: 'h-10 text-base pl-4 pr-10',\n button: 'h-10 w-10',\n label: 'text-base',\n option: 'text-base py-2 px-4',\n icon: 'h-5 w-5',\n },\n lg: {\n wrapper: 'h-12',\n input: 'h-12 text-lg pl-5 pr-12',\n button: 'h-12 w-12',\n label: 'text-lg',\n option: 'text-lg py-2.5 px-5',\n icon: 'h-6 w-6',\n },\n}\n\n// ============================================\n// COMBOBOX COMPONENT\n// ============================================\n\n/**\n * A combobox combines a text input with a listbox, allowing users to filter a list of options.\n *\n * Built on solidaria-components ComboBox for full accessibility support.\n */\nexport function ComboBox<T>(props: ComboBoxProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ])\n\n const size = local.size ?? 'md'\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ComboBoxRenderProps): string => {\n const base = 'relative inline-flex flex-col gap-1.5'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <ComboBoxSizeContext.Provider value={size}>\n <HeadlessComboBox\n {...headlessProps}\n label={local.label}\n description={local.isInvalid ? undefined : local.description}\n errorMessage={local.isInvalid ? local.errorMessage : undefined}\n isInvalid={local.isInvalid}\n class={getClassName}\n >\n <Show when={local.label}>\n <HeadlessComboBoxLabel class={`text-primary-200 font-medium ${sizeStyles[size].label}`}>\n {local.label}\n </HeadlessComboBoxLabel>\n </Show>\n {props.children}\n <Show when={local.description && !local.isInvalid}>\n <HeadlessComboBoxDescription class=\"text-primary-400 text-sm\">\n {local.description}\n </HeadlessComboBoxDescription>\n </Show>\n <Show when={local.errorMessage && local.isInvalid}>\n <HeadlessComboBoxErrorMessage class=\"text-danger-400 text-sm\">\n {local.errorMessage}\n </HeadlessComboBoxErrorMessage>\n </Show>\n </HeadlessComboBox>\n </ComboBoxSizeContext.Provider>\n )\n}\n\n// ============================================\n// COMBOBOX INPUT GROUP COMPONENT\n// ============================================\n\n/**\n * A wrapper for the input and button that provides proper styling.\n */\nexport function ComboBoxInputGroup(props: { children: JSX.Element; class?: string }): JSX.Element {\n const size = useContext(ComboBoxSizeContext)\n const styles = () => sizeStyles[size]\n\n return (\n <div class={`relative flex items-center ${styles().wrapper} ${props.class ?? ''}`}>\n {props.children}\n </div>\n )\n}\n\n// ============================================\n// COMBOBOX INPUT COMPONENT\n// ============================================\n\n/**\n * The text input for a combobox.\n */\nexport function ComboBoxInput(props: ComboBoxInputProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const size = useContext(ComboBoxSizeContext)\n const styles = () => sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ComboBoxInputRenderProps): string => {\n const base = 'w-full rounded-lg border-2 transition-all duration-200 outline-none'\n const sizeClass = styles().input\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'border-bg-300 bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isOpen) {\n colorClass = 'border-accent bg-bg-300 text-primary-100'\n } else if (renderProps.isHovered) {\n colorClass = 'border-accent-300 bg-bg-300 text-primary-100'\n } else {\n colorClass = 'border-primary-600 bg-bg-400 text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessComboBoxInput\n {...headlessProps}\n class={getClassName}\n />\n )\n}\n\n// ============================================\n// COMBOBOX BUTTON COMPONENT\n// ============================================\n\n/**\n * The trigger button for a combobox.\n * SSR-compatible - renders children or chevron icon directly without render props.\n */\nexport function ComboBoxButton(props: ComboBoxButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const size = useContext(ComboBoxSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ComboBoxButtonRenderProps): string => {\n const base = 'absolute right-0 top-0 flex items-center justify-center transition-all duration-200 rounded-r-lg'\n const sizeClass = sizeStyle.button\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (renderProps.isOpen) {\n colorClass = 'text-accent'\n } else if (renderProps.isHovered) {\n colorClass = 'text-accent-300 cursor-pointer'\n } else {\n colorClass = 'text-primary-400 cursor-pointer hover:text-primary-200'\n }\n\n return [base, sizeClass, colorClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessComboBoxButton\n {...headlessProps}\n class={getClassName}\n >\n {props.children || <ChevronIcon class={`${sizeStyle.icon} transition-transform duration-200 data-open:rotate-180`} />}\n </HeadlessComboBoxButton>\n )\n}\n\n// ============================================\n// COMBOBOX LISTBOX COMPONENT\n// ============================================\n\n/**\n * The listbox popup for a combobox.\n */\nexport function ComboBoxListBox<T>(props: ComboBoxListBoxProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const customClass = local.class ?? ''\n\n const getClassName = (_renderProps: ComboBoxListBoxRenderProps): string => {\n const base = 'absolute z-50 mt-1 w-full rounded-lg border-2 border-primary-600 bg-bg-400 py-1 shadow-lg max-h-60 overflow-auto'\n return [base, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessComboBoxListBox\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// COMBOBOX OPTION COMPONENT\n// ============================================\n\n/**\n * An option in a combobox listbox.\n * SSR-compatible - renders check icon and content directly without render props.\n */\nexport function ComboBoxOption<T>(props: ComboBoxOptionProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const size = useContext(ComboBoxSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ComboBoxOptionRenderProps): string => {\n const base = 'flex items-center gap-2 cursor-pointer transition-colors duration-150'\n const sizeClass = sizeStyle.option\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n colorClass = 'bg-accent/20 text-accent'\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100'\n } else {\n colorClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n // Compute padding for non-selected items to align with check icon\n const iconPadding: Record<ComboBoxSize, string> = {\n sm: 'pl-6', // h-4 icon + gap\n md: 'pl-7', // h-5 icon + gap\n lg: 'pl-8', // h-6 icon + gap\n }\n\n return (\n <HeadlessComboBoxOption\n {...headlessProps}\n class={getClassName}\n >\n <CheckIcon class={`${sizeStyle.icon} text-accent shrink-0 hidden data-selected:block`} />\n <span class={`flex-1 data-selected:pl-0 ${iconPadding[size]}`}>\n {props.children as JSX.Element}\n </span>\n </HeadlessComboBoxOption>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n )\n}\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nComboBox.InputGroup = ComboBoxInputGroup\nComboBox.Input = ComboBoxInput\nComboBox.Button = ComboBoxButton\nComboBox.ListBox = ComboBoxListBox\nComboBox.Option = ComboBoxOption\n\n// Re-export types and utilities for convenience\nexport type { Key, FilterFn, MenuTriggerAction }\nexport { defaultContainsFilter }\n","/**\n * Select component for proyecto-viviana-silapse\n *\n * Styled select component built on top of solidaria-components.\n * Inspired by Spectrum 2's Picker component patterns.\n */\n\nimport { type JSX, Show, splitProps, createContext, useContext, createUniqueId } from 'solid-js'\nimport {\n Select as HeadlessSelect,\n SelectTrigger as HeadlessSelectTrigger,\n SelectValue as HeadlessSelectValue,\n SelectListBox as HeadlessSelectListBox,\n SelectOption as HeadlessSelectOption,\n type SelectProps as HeadlessSelectProps,\n type SelectTriggerProps as HeadlessSelectTriggerProps,\n type SelectValueProps as HeadlessSelectValueProps,\n type SelectListBoxProps as HeadlessSelectListBoxProps,\n type SelectOptionProps as HeadlessSelectOptionProps,\n type SelectRenderProps,\n type SelectTriggerRenderProps,\n type SelectValueRenderProps,\n type SelectListBoxRenderProps,\n type SelectOptionRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type SelectSize = 'sm' | 'md' | 'lg'\n\nconst SelectSizeContext = createContext<SelectSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface SelectProps<T> extends Omit<HeadlessSelectProps<T>, 'class' | 'style'> {\n /** The size of the select. */\n size?: SelectSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the select. */\n label?: string\n /** Description for the select. */\n description?: string\n /** Error message when invalid. */\n errorMessage?: string\n /** Whether the select is invalid. */\n isInvalid?: boolean\n}\n\nexport interface SelectTriggerProps extends Omit<HeadlessSelectTriggerProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface SelectValueProps<T> extends Omit<HeadlessSelectValueProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface SelectListBoxProps<T> extends Omit<HeadlessSelectListBoxProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface SelectOptionProps<T> extends Omit<HeadlessSelectOptionProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n trigger: 'h-8 text-sm px-3 gap-2',\n label: 'text-sm',\n option: 'text-sm py-1.5 px-3',\n icon: 'h-4 w-4',\n },\n md: {\n trigger: 'h-10 text-base px-4 gap-2',\n label: 'text-base',\n option: 'text-base py-2 px-4',\n icon: 'h-5 w-5',\n },\n lg: {\n trigger: 'h-12 text-lg px-5 gap-3',\n label: 'text-lg',\n option: 'text-lg py-2.5 px-5',\n icon: 'h-6 w-6',\n },\n}\n\n// ============================================\n// SELECT COMPONENT\n// ============================================\n\n/**\n * A select displays a collapsible list of options and allows a user to select one of them.\n *\n * Built on solidaria-components Select for full accessibility support.\n */\nexport function Select<T>(props: SelectProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const descriptionId = createUniqueId()\n const errorId = createUniqueId()\n\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ])\n\n const size = local.size ?? 'md'\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: SelectRenderProps): string => {\n const base = 'relative inline-flex flex-col gap-1.5'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n const mergedAriaLabel =\n (headlessProps as { 'aria-label'?: string })['aria-label']\n\n const styledLabel = () => local.label\n ? <span class={`text-primary-200 font-medium ${sizeStyles[size].label}`}>{local.label}</span>\n : undefined\n\n const describedByIds = [\n (headlessProps as { 'aria-describedby'?: string })['aria-describedby'],\n local.description && !local.isInvalid ? descriptionId : undefined,\n local.errorMessage && local.isInvalid ? errorId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n return (\n <SelectSizeContext.Provider value={size}>\n <HeadlessSelect\n {...headlessProps}\n label={styledLabel()}\n aria-label={mergedAriaLabel}\n aria-describedby={describedByIds}\n class={getClassName}\n >\n {props.children}\n <Show when={local.description && !local.isInvalid}>\n <span id={descriptionId} class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n <Show when={local.errorMessage && local.isInvalid}>\n <span id={errorId} class=\"text-danger-400 text-sm\">{local.errorMessage}</span>\n </Show>\n </HeadlessSelect>\n </SelectSizeContext.Provider>\n )\n}\n\n// ============================================\n// SELECT TRIGGER COMPONENT\n// ============================================\n\n/**\n * The trigger button for a select.\n * SSR-compatible - renders children and chevron icon directly without render props.\n */\nexport function SelectTrigger(props: SelectTriggerProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const size = useContext(SelectSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: SelectTriggerRenderProps): string => {\n const base = 'inline-flex items-center justify-between rounded-lg border-2 transition-all duration-200 w-full'\n const sizeClass = sizeStyle.trigger\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'border-bg-300 bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isOpen) {\n colorClass = 'border-accent bg-bg-300 text-primary-100'\n } else if (renderProps.isHovered) {\n colorClass = 'border-accent-300 bg-bg-300 text-primary-100 cursor-pointer'\n } else {\n colorClass = 'border-primary-600 bg-bg-400 text-primary-200 cursor-pointer'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessSelectTrigger\n {...headlessProps}\n class={getClassName}\n >\n {props.children as JSX.Element}\n {/* Chevron rotates via CSS based on data-open attribute from headless component */}\n <ChevronIcon class={`${sizeStyle.icon} transition-transform duration-200 data-open:rotate-180`} />\n </HeadlessSelectTrigger>\n )\n}\n\n// ============================================\n// SELECT VALUE COMPONENT\n// ============================================\n\n/**\n * Displays the selected value in a select.\n */\nexport function SelectValue<T>(props: SelectValueProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: SelectValueRenderProps<T>): string => {\n const base = 'truncate flex-1 text-left'\n const placeholderClass = !renderProps.isSelected ? 'text-primary-500' : ''\n return [base, placeholderClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessSelectValue\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// SELECT LISTBOX COMPONENT\n// ============================================\n\n/**\n * The listbox popup for a select.\n */\nexport function SelectListBox<T>(props: SelectListBoxProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const customClass = local.class ?? ''\n\n const getClassName = (_renderProps: SelectListBoxRenderProps): string => {\n const base = 'absolute z-50 mt-1 w-full rounded-lg border-2 border-primary-600 bg-bg-400 py-1 shadow-lg max-h-60 overflow-auto'\n return [base, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessSelectListBox\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// SELECT OPTION COMPONENT\n// ============================================\n\n// Padding classes for when no check icon is shown (to maintain alignment)\nconst paddingStyles = {\n sm: 'pl-6', // h-4 (1rem) + gap-2 (0.5rem) = 1.5rem = pl-6\n md: 'pl-7', // h-5 (1.25rem) + gap-2 (0.5rem) = 1.75rem ≈ pl-7\n lg: 'pl-9', // h-6 (1.5rem) + gap-3 (0.75rem) = 2.25rem = pl-9\n}\n\n/**\n * An option in a select listbox.\n * SSR-compatible - renders check icon and content directly without render props.\n */\nexport function SelectOption<T>(props: SelectOptionProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const size = useContext(SelectSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: SelectOptionRenderProps): string => {\n const base = 'flex items-center gap-2 cursor-pointer transition-colors duration-150'\n const sizeClass = sizeStyle.option\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n colorClass = 'bg-accent/20 text-accent'\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100'\n } else {\n colorClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const iconClass = `${sizeStyle.icon} text-accent shrink-0 hidden data-selected:block`\n const paddingClass = paddingStyles[size]\n\n return (\n <HeadlessSelectOption\n {...headlessProps}\n class={getClassName}\n >\n {/* Check icon shows only when selected via data-selected attribute */}\n <CheckIcon class={iconClass} />\n <span class={`flex-1 data-selected:pl-0 ${paddingClass}`}>\n {props.children as JSX.Element}\n </span>\n </HeadlessSelectOption>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n )\n}\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nSelect.Trigger = SelectTrigger\nSelect.Value = SelectValue\nSelect.ListBox = SelectListBox\nSelect.Option = SelectOption\n\n// Re-export Key type for convenience\nexport type { Key }\n","/**\n * Menu component for proyecto-viviana-silapse\n *\n * Styled menu component built on top of solidaria-components.\n * Inspired by Spectrum 2's Menu component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext } from 'solid-js'\nimport {\n Menu as HeadlessMenu,\n MenuItem as HeadlessMenuItem,\n MenuTrigger as HeadlessMenuTrigger,\n MenuButton as HeadlessMenuButton,\n type MenuProps as HeadlessMenuProps,\n type MenuItemProps as HeadlessMenuItemProps,\n type MenuTriggerProps as HeadlessMenuTriggerProps,\n type MenuButtonProps as HeadlessMenuButtonProps,\n type MenuRenderProps,\n type MenuItemRenderProps,\n type MenuTriggerRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type MenuSize = 'sm' | 'md' | 'lg'\n\nconst MenuSizeContext = createContext<MenuSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface MenuTriggerProps extends Omit<HeadlessMenuTriggerProps, 'class' | 'style'> {\n /** The size of the menu. */\n size?: MenuSize\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface MenuButtonProps extends Omit<HeadlessMenuButtonProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Visual variant of the button. */\n variant?: 'primary' | 'secondary' | 'quiet'\n}\n\nexport interface MenuProps<T> extends Omit<HeadlessMenuProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface MenuItemProps<T> extends Omit<HeadlessMenuItemProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /**\n * Optional icon to display before the label.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n */\n icon?: () => JSX.Element\n /** Optional keyboard shortcut to display. */\n shortcut?: string\n /** Whether this is a destructive action. */\n isDestructive?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n button: 'h-8 text-sm px-3 gap-2',\n menu: 'py-1',\n item: 'text-sm py-1.5 px-3 gap-2',\n icon: 'h-4 w-4',\n },\n md: {\n button: 'h-10 text-base px-4 gap-2',\n menu: 'py-1.5',\n item: 'text-base py-2 px-4 gap-3',\n icon: 'h-5 w-5',\n },\n lg: {\n button: 'h-12 text-lg px-5 gap-3',\n menu: 'py-2',\n item: 'text-lg py-2.5 px-5 gap-3',\n icon: 'h-6 w-6',\n },\n}\n\nconst buttonVariants = {\n primary: 'bg-accent text-bg-400 border-accent hover:bg-accent-300 hover:border-accent-300',\n secondary: 'bg-bg-400 text-primary-200 border-primary-600 hover:bg-bg-300 hover:border-accent-300',\n quiet: 'bg-transparent text-primary-200 border-transparent hover:bg-bg-300',\n}\n\n// ============================================\n// MENU TRIGGER COMPONENT\n// ============================================\n\n/**\n * A menu trigger wraps a button and menu, handling the open/close state.\n */\nexport function MenuTrigger(props: MenuTriggerProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['size', 'class'])\n const size = local.size ?? 'md'\n\n return (\n <MenuSizeContext.Provider value={size}>\n <div class={`relative inline-block ${local.class ?? ''}`}>\n <HeadlessMenuTrigger {...headlessProps}>\n {props.children}\n </HeadlessMenuTrigger>\n </div>\n </MenuSizeContext.Provider>\n )\n}\n\n// ============================================\n// MENU BUTTON COMPONENT\n// ============================================\n\n/**\n * A button that opens a menu.\n * SSR-compatible - renders children and chevron icon directly without render props.\n */\nexport function MenuButton(props: MenuButtonProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class', 'variant'])\n const size = useContext(MenuSizeContext)\n const sizeStyle = sizeStyles[size]\n const variant = local.variant ?? 'secondary'\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: MenuTriggerRenderProps): string => {\n const base = 'inline-flex items-center justify-center rounded-lg border-2 font-medium transition-all duration-200'\n const sizeClass = sizeStyle.button\n const variantClass = buttonVariants[variant]\n\n let stateClass: string\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n } else if (renderProps.isPressed) {\n stateClass = 'scale-95'\n } else {\n stateClass = 'cursor-pointer'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, variantClass, stateClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessMenuButton\n {...headlessProps}\n class={getClassName}\n >\n {props.children as JSX.Element}\n {/* Chevron rotates via CSS based on data-open attribute */}\n <ChevronIcon class={`${sizeStyle.icon} transition-transform duration-200 data-open:rotate-180`} />\n </HeadlessMenuButton>\n )\n}\n\n// ============================================\n// MENU COMPONENT\n// ============================================\n\n/**\n * A menu displays a list of actions or options for the user to choose from.\n */\nexport function Menu<T>(props: MenuProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const size = useContext(MenuSizeContext)\n const styles = () => sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (_renderProps: MenuRenderProps): string => {\n const base = 'absolute z-50 mt-1 min-w-[12rem] rounded-lg border-2 border-primary-600 bg-bg-400 shadow-lg overflow-hidden'\n const sizeClass = styles().menu\n return [base, sizeClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessMenu\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// MENU ITEM COMPONENT\n// ============================================\n\n/**\n * An item in a menu.\n * SSR-compatible - renders icon, content, and shortcut directly without render props.\n */\nexport function MenuItem<T>(props: MenuItemProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'icon', 'shortcut', 'isDestructive'])\n const size = useContext(MenuSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: MenuItemRenderProps): string => {\n const base = 'flex items-center cursor-pointer transition-colors duration-150 outline-none'\n const sizeClass = sizeStyle.item\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (local.isDestructive) {\n if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-danger-400/20 text-danger-400'\n } else {\n colorClass = 'text-danger-400'\n }\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100'\n } else {\n colorClass = 'text-primary-200'\n }\n\n const pressedClass = renderProps.isPressed ? 'bg-bg-200' : ''\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, colorClass, pressedClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessMenuItem\n {...headlessProps}\n class={getClassName}\n >\n {local.icon && <span class={`shrink-0 ${sizeStyle.icon}`}>{local.icon()}</span>}\n <span class=\"flex-1\">{props.children as JSX.Element}</span>\n {local.shortcut && <span class=\"text-primary-500 text-sm ml-auto\">{local.shortcut}</span>}\n </HeadlessMenuItem>\n )\n}\n\n// ============================================\n// MENU SEPARATOR COMPONENT\n// ============================================\n\nexport interface MenuSeparatorProps {\n /** Additional CSS class name. */\n class?: string\n}\n\n/**\n * A visual separator between menu items.\n */\nexport function MenuSeparator(props: MenuSeparatorProps): JSX.Element {\n return (\n <li\n role=\"separator\"\n class={`my-1 border-t border-primary-600 ${props.class ?? ''}`}\n />\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nMenu.Item = MenuItem\nMenu.Separator = MenuSeparator\nMenuTrigger.Button = MenuButton\n\n// Re-export Key type for convenience\nexport type { Key }\n\n// Sub-component re-exports\nexport { ActionMenu } from './ActionMenu';\nexport type { ActionMenuProps } from './ActionMenu';\nexport { SubmenuTrigger } from './SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './SubmenuTrigger';\nexport { ContextualHelpTrigger } from './ContextualHelpTrigger';\nexport type { ContextualHelpTriggerProps } from './ContextualHelpTrigger';\n","/**\n * ActionMenu component for proyecto-viviana-silapse\n *\n * A menu triggered by an action button (three-dot or icon button).\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n MenuTrigger as HeadlessMenuTrigger,\n MenuButton as HeadlessMenuButton,\n Menu as HeadlessMenu,\n MenuItem as HeadlessMenuItem,\n type MenuProps as HeadlessMenuProps,\n type MenuTriggerRenderProps,\n type MenuItemRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ActionMenuProps<T> extends Omit<HeadlessMenuProps<T>, 'class' | 'children'> {\n /** Additional CSS class name for the menu. */\n class?: string;\n /** Label for the trigger button. @default 'Actions' */\n label?: string;\n /** Whether the button is quiet (no visible background). @default true */\n isQuiet?: boolean;\n /** Whether the trigger is disabled. */\n isDisabled?: boolean;\n /** The alignment of the menu relative to the trigger. */\n align?: 'start' | 'end';\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A menu triggered by an action button, typically used for \"more actions\" menus.\n */\nexport function ActionMenu<T>(props: ActionMenuProps<T>): JSX.Element {\n const [local, menuProps] = splitProps(props, ['label', 'isQuiet', 'isDisabled', 'align', 'class']);\n\n return (\n <HeadlessMenuTrigger>\n <HeadlessMenuButton\n isDisabled={local.isDisabled}\n aria-label={local.label ?? 'Actions'}\n class={(renderProps: MenuTriggerRenderProps) => {\n const base = 'inline-flex items-center justify-center rounded-md transition-colors outline-none p-1.5';\n const quietClass = (local.isQuiet ?? true)\n ? 'bg-transparent'\n : 'bg-bg-400 border border-primary-600';\n\n let stateClass: string;\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-200 text-primary-100';\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-200';\n } else {\n stateClass = 'text-primary-300';\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent' : '';\n return [base, quietClass, stateClass, focusClass].filter(Boolean).join(' ');\n }}\n >\n <MoreIcon />\n </HeadlessMenuButton>\n <HeadlessMenu\n {...menuProps}\n aria-label={local.label ?? 'Actions'}\n class={`absolute z-50 mt-1 min-w-[12rem] rounded-lg border-2 border-primary-600 bg-bg-400 shadow-lg overflow-hidden py-1 ${local.class ?? ''}`}\n >\n {(item: T) => {\n const menuItem = item as { id?: string | number; label?: string; textValue?: string };\n const label = menuItem.label ?? menuItem.textValue ?? String(menuItem.id ?? '');\n return (\n <HeadlessMenuItem\n id={menuItem.id ?? label}\n textValue={label}\n class={(renderProps: MenuItemRenderProps) => {\n const base = 'flex items-center cursor-pointer transition-colors duration-150 outline-none text-base py-2 px-4';\n let colorClass: string;\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed';\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100';\n } else {\n colorClass = 'text-primary-200';\n }\n const pressedClass = renderProps.isPressed ? 'bg-bg-200' : '';\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-inset ring-accent-300' : '';\n return [base, colorClass, pressedClass, focusClass].filter(Boolean).join(' ');\n }}\n >\n {label}\n </HeadlessMenuItem>\n );\n }}\n </HeadlessMenu>\n </HeadlessMenuTrigger>\n );\n}\n\nfunction MoreIcon(): JSX.Element {\n return (\n <svg class=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"12\" cy=\"19\" r=\"1.5\" />\n </svg>\n );\n}\n","/**\n * SubmenuTrigger component for proyecto-viviana-silapse\n *\n * Styled wrapper of headless SubmenuTrigger.\n */\n\nimport { type JSX } from 'solid-js';\nimport {\n SubmenuTrigger as HeadlessSubmenuTrigger,\n type SubmenuTriggerProps as HeadlessSubmenuTriggerProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface SubmenuTriggerProps extends HeadlessSubmenuTriggerProps {}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled submenu trigger that opens a nested menu.\n */\nexport function SubmenuTrigger(props: SubmenuTriggerProps): JSX.Element {\n return <HeadlessSubmenuTrigger {...props} />;\n}\n","/**\n * ContextualHelpTrigger UI wrapper for proyecto-viviana-silapse\n *\n * A styled button that opens contextual help in a popover.\n * Accepts either `title`/`content` convenience props or raw children tuple.\n */\n\nimport { type JSX, splitProps } from 'solid-js'\nimport {\n ContextualHelpTrigger as HeadlessContextualHelpTrigger,\n type ContextualHelpTriggerProps as HeadlessContextualHelpTriggerProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ContextualHelpTriggerProps extends Omit<HeadlessContextualHelpTriggerProps, 'class' | 'children'> {\n /** Additional CSS class name. */\n class?: string\n /** Convenience: title rendered as the trigger button label. */\n title?: string\n /** Convenience: text content shown inside the popover. */\n content?: string\n /** Visual variant for the trigger icon. */\n variant?: 'help' | 'info'\n /** Raw children tuple [trigger, content] — overrides title/content props. */\n children?: [JSX.Element, JSX.Element]\n}\n\n// ============================================\n// HELPERS\n// ============================================\n\nconst helpIcon = (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <text x=\"8\" y=\"12\" text-anchor=\"middle\" fill=\"currentColor\" font-size=\"10\" font-weight=\"bold\">?</text>\n </svg>\n)\n\nconst infoIcon = (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <text x=\"8\" y=\"12\" text-anchor=\"middle\" fill=\"currentColor\" font-size=\"10\" font-weight=\"bold\">i</text>\n </svg>\n)\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A button that opens contextual help in a popover.\n *\n * @example\n * ```tsx\n * // Convenience API\n * <ContextualHelpTrigger title=\"What is this?\" content=\"Help text here\" />\n *\n * // Children API\n * <ContextualHelpTrigger>\n * {[<span>Trigger</span>, <div>Content</div>]}\n * </ContextualHelpTrigger>\n * ```\n */\nexport function ContextualHelpTrigger(props: ContextualHelpTriggerProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'title', 'content', 'variant', 'children', 'aria-label'])\n\n const children = (): [JSX.Element, JSX.Element] => {\n if (local.children) return local.children\n const icon = local.variant === 'info' ? infoIcon : helpIcon\n const trigger = (\n <span style={{ display: 'inline-flex', 'align-items': 'center', gap: '4px' }}>\n {icon}\n {local.title && <span>{local.title}</span>}\n </span>\n )\n const content = (\n <div>\n {local.title && <div style={{ 'font-weight': '600', 'margin-bottom': '4px' }}>{local.title}</div>}\n {local.content && <p style={{ margin: '0' }}>{local.content}</p>}\n </div>\n )\n return [trigger, content]\n }\n\n return (\n <HeadlessContextualHelpTrigger\n {...headlessProps}\n aria-label={local['aria-label'] ?? local.title ?? 'Contextual help'}\n class={[\n // Trigger styling\n '[&_.solidaria-ContextualHelpTrigger-trigger]:flex [&_.solidaria-ContextualHelpTrigger-trigger]:items-center',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:py-2 [&_.solidaria-ContextualHelpTrigger-trigger]:px-4',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:cursor-pointer',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:bg-transparent [&_.solidaria-ContextualHelpTrigger-trigger]:border-0',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:text-primary-200',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:outline-none',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:hover:bg-bg-300',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:focus-visible:ring-2',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:focus-visible:ring-inset',\n '[&_.solidaria-ContextualHelpTrigger-trigger]:focus-visible:ring-accent-300',\n // Unavailable state\n '[&_.solidaria-ContextualHelpTrigger-trigger[data-unavailable]]:text-primary-500',\n // Disabled state\n '[&_.solidaria-ContextualHelpTrigger-trigger[data-disabled]]:opacity-50',\n '[&_.solidaria-ContextualHelpTrigger-trigger[data-disabled]]:cursor-not-allowed',\n // Content popover styling\n '[&_.solidaria-ContextualHelpTrigger-content]:bg-bg-400',\n '[&_.solidaria-ContextualHelpTrigger-content]:border [&_.solidaria-ContextualHelpTrigger-content]:border-primary-600',\n '[&_.solidaria-ContextualHelpTrigger-content]:rounded-lg [&_.solidaria-ContextualHelpTrigger-content]:shadow-lg',\n '[&_.solidaria-ContextualHelpTrigger-content]:p-4 [&_.solidaria-ContextualHelpTrigger-content]:min-w-[200px]',\n '[&_.solidaria-ContextualHelpTrigger-content]:outline-none',\n '[&_.solidaria-ContextualHelpTrigger-content]:mt-1',\n local.class ?? '',\n ].join(' ')}\n >\n {children()}\n </HeadlessContextualHelpTrigger>\n )\n}\n","/**\n * ListBox component for proyecto-viviana-silapse\n *\n * Styled listbox component built on top of solidaria-components.\n * Inspired by Spectrum 2's ListBox component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext, Show, createUniqueId } from 'solid-js'\nimport {\n ListBox as HeadlessListBox,\n ListBoxOption as HeadlessListBoxOption,\n type ListBoxProps as HeadlessListBoxProps,\n type ListBoxOptionProps as HeadlessListBoxOptionProps,\n type ListBoxRenderProps,\n type ListBoxOptionRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type ListBoxSize = 'sm' | 'md' | 'lg'\n\nconst ListBoxSizeContext = createContext<ListBoxSize>('md')\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ListBoxProps<T> extends Omit<HeadlessListBoxProps<T>, 'class' | 'style'> {\n /** The size of the listbox. */\n size?: ListBoxSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the listbox. */\n label?: string\n /** Description for the listbox. */\n description?: string\n}\n\nexport interface ListBoxOptionProps<T> extends Omit<HeadlessListBoxOptionProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Optional description text. */\n description?: string\n /**\n * Optional icon to display before the label.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n */\n icon?: () => JSX.Element\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n list: 'py-1',\n option: 'text-sm py-1.5 px-3 gap-2',\n icon: 'h-4 w-4',\n label: 'text-sm',\n description: 'text-xs',\n },\n md: {\n list: 'py-1.5',\n option: 'text-base py-2 px-4 gap-3',\n icon: 'h-5 w-5',\n label: 'text-base',\n description: 'text-sm',\n },\n lg: {\n list: 'py-2',\n option: 'text-lg py-2.5 px-5 gap-3',\n icon: 'h-6 w-6',\n label: 'text-lg',\n description: 'text-base',\n },\n}\n\n// ============================================\n// LISTBOX COMPONENT\n// ============================================\n\n/**\n * A listbox displays a list of options and allows a user to select one or more of them.\n *\n * Built on solidaria-components ListBox for full accessibility support.\n */\nexport function ListBox<T>(props: ListBoxProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const labelId = createUniqueId()\n const descriptionId = createUniqueId()\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'renderEmptyState',\n ])\n\n const size = local.size ?? 'md'\n const styles = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ListBoxRenderProps): string => {\n const base = 'rounded-lg border-2 border-primary-600 bg-bg-400 overflow-auto focus:outline-none'\n const sizeClass = styles.list\n\n let stateClass: string\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n } else {\n stateClass = ''\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, stateClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const defaultEmptyState = () => (\n <li class=\"py-4 px-4 text-center text-primary-500\">\n No items\n </li>\n )\n\n const mergedAriaLabel =\n (headlessProps as { 'aria-label'?: string })['aria-label']\n\n const labelledByIds = [\n (headlessProps as { 'aria-labelledby'?: string })['aria-labelledby'],\n !mergedAriaLabel && local.label ? labelId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n const describedByIds = [\n (headlessProps as { 'aria-describedby'?: string })['aria-describedby'],\n local.description ? descriptionId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n return (\n <ListBoxSizeContext.Provider value={size}>\n <div class=\"flex flex-col gap-1.5\">\n <Show when={local.label}>\n <span id={labelId} class={`text-primary-200 font-medium ${styles.label}`}>\n {local.label}\n </span>\n </Show>\n <HeadlessListBox\n {...headlessProps}\n aria-label={mergedAriaLabel}\n aria-labelledby={labelledByIds}\n aria-describedby={describedByIds}\n class={getClassName}\n renderEmptyState={local.renderEmptyState ?? defaultEmptyState}\n children={props.children}\n />\n <Show when={local.description}>\n <span id={descriptionId} class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n </div>\n </ListBoxSizeContext.Provider>\n )\n}\n\n// ============================================\n// LISTBOX OPTION COMPONENT\n// ============================================\n\n/**\n * An option in a listbox.\n * SSR-compatible - renders icon, check, content, and description directly without render props.\n */\nexport function ListBoxOption<T>(props: ListBoxOptionProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'description', 'icon'])\n const size = useContext(ListBoxSizeContext)\n const sizeStyle = sizeStyles[size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ListBoxOptionRenderProps): string => {\n const base = 'flex items-center cursor-pointer transition-colors duration-150 outline-none'\n const sizeClass = sizeStyle.option\n\n let colorClass: string\n if (renderProps.isDisabled) {\n colorClass = 'text-primary-500 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-accent/30 text-accent'\n } else {\n colorClass = 'bg-accent/20 text-accent'\n }\n } else if (renderProps.isFocused || renderProps.isHovered) {\n colorClass = 'bg-bg-300 text-primary-100'\n } else {\n colorClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, colorClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessListBoxOption\n {...headlessProps}\n class={getClassName}\n >\n {local.icon && <span class={`shrink-0 ${sizeStyle.icon}`}>{local.icon()}</span>}\n <CheckIcon class={`shrink-0 ${sizeStyle.icon} text-accent hidden data-selected:block`} />\n <div class=\"flex flex-col flex-1 min-w-0\">\n <span class=\"truncate\">{props.children as JSX.Element}</span>\n {local.description && (\n <span class={`text-primary-400 truncate ${sizeStyle.description}`}>\n {local.description}\n </span>\n )}\n </div>\n </HeadlessListBoxOption>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nListBox.Option = ListBoxOption\n\n// Re-export Key type for convenience\nexport type { Key }\n","/**\n * GridList component for proyecto-viviana-silapse\n *\n * Styled grid list component built on top of solidaria-components.\n * Inspired by Spectrum 2's GridList component patterns.\n *\n * GridList is similar to ListBox but supports interactive elements within items\n * and uses grid keyboard navigation.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext, Show } from 'solid-js'\nimport {\n GridList as HeadlessGridList,\n GridListItem as HeadlessGridListItem,\n GridListSelectionCheckbox as HeadlessGridListSelectionCheckbox,\n type GridListProps as HeadlessGridListProps,\n type GridListItemProps as HeadlessGridListItemProps,\n type GridListRenderProps,\n type GridListItemRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key } from '@proyecto-viviana/solid-stately'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type GridListSize = 'sm' | 'md' | 'lg'\nexport type GridListVariant = 'default' | 'cards' | 'bordered'\nexport type GridListLayout = 'list' | 'grid'\n\ninterface GridListContextValue {\n size: GridListSize\n variant: GridListVariant\n layout: GridListLayout\n}\n\nconst GridListSizeContext = createContext<GridListContextValue>({\n size: 'md',\n variant: 'default',\n layout: 'list',\n})\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface GridListProps<T extends object>\n extends Omit<HeadlessGridListProps<T>, 'class' | 'style'> {\n /** The size of the grid list. */\n size?: GridListSize\n /** The visual variant of the grid list. */\n variant?: GridListVariant\n /** The layout of the grid list. */\n layout?: GridListLayout\n /** Number of columns for grid layout (default: auto-fit). */\n columns?: number | 'auto'\n /** Additional CSS class name. */\n class?: string\n /** Label for the grid list. */\n label?: string\n /** Description for the grid list. */\n description?: string\n}\n\nexport interface GridListItemProps<T extends object>\n extends Omit<HeadlessGridListItemProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Optional description text. */\n description?: string\n /**\n * Optional icon to display before the content.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n */\n icon?: () => JSX.Element\n /**\n * Optional image to display in the item.\n */\n image?: string\n /** Alt text for the image. */\n imageAlt?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n list: 'gap-1 p-1',\n item: 'text-sm py-2 px-3 gap-2',\n icon: 'h-4 w-4',\n image: 'h-10 w-10',\n label: 'text-sm',\n description: 'text-xs',\n checkbox: 'w-4 h-4',\n },\n md: {\n list: 'gap-2 p-2',\n item: 'text-base py-3 px-4 gap-3',\n icon: 'h-5 w-5',\n image: 'h-12 w-12',\n label: 'text-base',\n description: 'text-sm',\n checkbox: 'w-5 h-5',\n },\n lg: {\n list: 'gap-3 p-3',\n item: 'text-lg py-4 px-5 gap-4',\n icon: 'h-6 w-6',\n image: 'h-16 w-16',\n label: 'text-lg',\n description: 'text-base',\n checkbox: 'w-6 h-6',\n },\n}\n\nconst variantStyles = {\n default: {\n list: 'bg-bg-400 rounded-lg border border-bg-300',\n item: 'rounded-md',\n itemHover: 'hover:bg-bg-200/50',\n itemSelected: 'bg-accent/10 text-accent',\n },\n cards: {\n list: 'bg-transparent',\n item: 'bg-bg-400 rounded-lg border border-bg-300 shadow-sm',\n itemHover: 'hover:shadow-md hover:border-bg-200',\n itemSelected: 'border-accent bg-accent/5 shadow-accent/20',\n },\n bordered: {\n list: 'bg-bg-400 rounded-lg border-2 border-bg-400',\n item: 'border-b border-bg-300 last:border-b-0 rounded-none',\n itemHover: 'hover:bg-bg-200/50',\n itemSelected: 'bg-accent/10',\n },\n}\n\n// ============================================\n// GRID LIST COMPONENT\n// ============================================\n\n/**\n * A grid list displays a list of interactive items, with support for\n * keyboard navigation, single or multiple selection, and row actions.\n *\n * Built on solidaria-components GridList for full accessibility support.\n *\n * @example\n * ```tsx\n * const items = [\n * { id: '1', name: 'Item 1', description: 'Description 1' },\n * { id: '2', name: 'Item 2', description: 'Description 2' },\n * ]\n *\n * <GridList\n * items={items}\n * getKey={(item) => item.id}\n * selectionMode=\"multiple\"\n * >\n * {(item) => (\n * <GridListItem id={item.id} description={item.description}>\n * {item.name}\n * </GridListItem>\n * )}\n * </GridList>\n * ```\n */\nexport function GridList<T extends object>(props: GridListProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'variant',\n 'layout',\n 'columns',\n 'class',\n 'label',\n 'description',\n ])\n\n const size = () => local.size ?? 'md'\n const variant = () => local.variant ?? 'default'\n const layout = () => local.layout ?? 'list'\n const styles = () => sizeStyles[size()]\n const variantStyle = () => variantStyles[variant()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: GridListRenderProps): string => {\n const base = 'overflow-auto focus:outline-none'\n const sizeClass = styles().list\n const variantClass = variantStyle().list\n\n // Layout classes\n let layoutClass = ''\n if (layout() === 'grid') {\n if (local.columns === 'auto' || local.columns === undefined) {\n layoutClass = 'grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))]'\n } else {\n layoutClass = `grid grid-cols-${local.columns}`\n }\n } else {\n layoutClass = 'flex flex-col'\n }\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, variantClass, layoutClass, stateClass, focusClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n const defaultEmptyState = () => (\n <div class=\"py-8 text-center text-primary-400\">\n <div class=\"flex flex-col items-center gap-2\">\n <EmptyIcon class=\"w-12 h-12 text-primary-500\" />\n <span>No items</span>\n </div>\n </div>\n )\n\n const contextValue = createMemo(() => ({ size: size(), variant: variant(), layout: layout() }))\n\n return (\n <GridListSizeContext.Provider value={contextValue()}>\n <div class=\"flex flex-col gap-2\">\n <Show when={local.label}>\n <label class={`text-primary-200 font-medium ${styles().label}`}>\n {local.label}\n </label>\n </Show>\n <HeadlessGridList\n {...headlessProps}\n class={getClassName}\n renderEmptyState={headlessProps.renderEmptyState ?? defaultEmptyState}\n />\n <Show when={local.description}>\n <span class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n </div>\n </GridListSizeContext.Provider>\n )\n}\n\n// ============================================\n// GRID LIST ITEM COMPONENT\n// ============================================\n\n/**\n * An item in a grid list.\n */\nexport function GridListItem<T extends object>(props: GridListItemProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'class',\n 'description',\n 'icon',\n 'image',\n 'imageAlt',\n ])\n\n const context = useContext(GridListSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const variantStyle = variantStyles[context.variant]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: GridListItemRenderProps): string => {\n const base = 'flex items-center cursor-pointer transition-all duration-150 outline-none'\n const sizeClass = sizeStyle.item\n const variantClass = variantStyle.item\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n stateClass = variantStyle.itemSelected\n } else if (renderProps.isHovered) {\n stateClass = variantStyle.itemHover\n }\n\n let textClass = ''\n if (!renderProps.isDisabled && !renderProps.isSelected) {\n textClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n const pressedClass = renderProps.isPressed ? 'scale-[0.98]' : ''\n\n return [base, sizeClass, variantClass, stateClass, textClass, focusClass, pressedClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n return (\n <HeadlessGridListItem {...headlessProps} class={getClassName}>\n {(renderProps: GridListItemRenderProps) => (\n <>\n {/* Image */}\n <Show when={local.image}>\n <img\n src={local.image}\n alt={local.imageAlt ?? ''}\n class={`${sizeStyle.image} rounded object-cover shrink-0`}\n />\n </Show>\n\n {/* Icon */}\n <Show when={local.icon}>\n <span class={`shrink-0 ${sizeStyle.icon}`}>{local.icon!()}</span>\n </Show>\n\n {/* Selection indicator */}\n <Show when={renderProps.isSelected}>\n <CheckIcon class={`shrink-0 ${sizeStyle.icon} text-accent`} />\n </Show>\n\n {/* Content */}\n <div class=\"flex flex-col flex-1 min-w-0\">\n <span class=\"truncate\">\n {typeof props.children === 'function'\n ? props.children(renderProps)\n : props.children}\n </span>\n <Show when={local.description}>\n <span class={`text-primary-400 truncate ${sizeStyle.description}`}>\n {local.description}\n </span>\n </Show>\n </div>\n </>\n )}\n </HeadlessGridListItem>\n )\n}\n\n// ============================================\n// GRID LIST SELECTION CHECKBOX COMPONENT\n// ============================================\n\n/**\n * A styled checkbox for item selection in a grid list.\n */\nexport function GridListSelectionCheckbox(props: { itemKey: Key; class?: string }): JSX.Element {\n const context = useContext(GridListSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const className = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400 ${props.class ?? ''}`\n\n return (\n <span class={className}>\n <HeadlessGridListSelectionCheckbox itemKey={props.itemKey} />\n </span>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\nfunction EmptyIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4\"\n />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nGridList.Item = GridListItem\nGridList.SelectionCheckbox = GridListSelectionCheckbox\n\n// Re-export Key type for convenience\nexport type { Key }\n","/**\n * Tabs component for proyecto-viviana-silapse\n *\n * Styled tabs component built on top of solidaria-components.\n * Inspired by Spectrum 2's Tabs component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext } from 'solid-js'\nimport {\n Tabs as HeadlessTabs,\n TabList as HeadlessTabList,\n Tab as HeadlessTab,\n TabPanel as HeadlessTabPanel,\n type TabsProps as HeadlessTabsProps,\n type TabListProps as HeadlessTabListProps,\n type TabProps as HeadlessTabProps,\n type TabPanelProps as HeadlessTabPanelProps,\n type TabsRenderProps,\n type TabListRenderProps,\n type TabRenderProps,\n type TabPanelRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key, TabOrientation } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type TabsSize = 'sm' | 'md' | 'lg'\nexport type TabsVariant = 'underline' | 'pill' | 'boxed'\n\ninterface TabsContextValue {\n size: TabsSize\n variant: TabsVariant\n}\n\nconst TabsSizeContext = createContext<TabsContextValue>({ size: 'md', variant: 'underline' })\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface TabsProps<T> extends Omit<HeadlessTabsProps<T>, 'class' | 'style'> {\n /** The size of the tabs. */\n size?: TabsSize\n /** The visual variant of the tabs. */\n variant?: TabsVariant\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TabListProps<T> extends Omit<HeadlessTabListProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TabProps extends Omit<HeadlessTabProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TabPanelProps extends Omit<HeadlessTabPanelProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n tab: 'text-sm px-3 py-1.5',\n tabList: 'gap-1',\n panel: 'text-sm p-3',\n },\n md: {\n tab: 'text-base px-4 py-2',\n tabList: 'gap-2',\n panel: 'text-base p-4',\n },\n lg: {\n tab: 'text-lg px-5 py-2.5',\n tabList: 'gap-3',\n panel: 'text-lg p-5',\n },\n}\n\nconst variantStyles = {\n underline: {\n tabList: 'border-b-2 border-primary-600',\n tab: {\n base: 'relative border-b-2 -mb-0.5 transition-colors duration-200',\n default: 'border-transparent text-primary-400 hover:text-primary-200 hover:border-primary-400',\n selected: 'border-accent text-accent',\n disabled: 'border-transparent text-primary-600 cursor-not-allowed',\n },\n },\n pill: {\n tabList: 'bg-bg-300 rounded-lg p-1',\n tab: {\n base: 'rounded-md transition-all duration-200',\n default: 'text-primary-400 hover:text-primary-200 hover:bg-bg-400',\n selected: 'bg-accent text-bg-400 shadow-sm',\n disabled: 'text-primary-600 cursor-not-allowed',\n },\n },\n boxed: {\n tabList: 'border-2 border-primary-600 rounded-lg overflow-hidden',\n tab: {\n base: 'border-r-2 border-primary-600 last:border-r-0 transition-colors duration-200',\n default: 'text-primary-400 bg-bg-400 hover:text-primary-200 hover:bg-bg-300',\n selected: 'bg-accent/20 text-accent',\n disabled: 'text-primary-600 bg-bg-300 cursor-not-allowed',\n },\n },\n}\n\n// ============================================\n// TABS COMPONENT\n// ============================================\n\n/**\n * Tabs organize content into multiple sections and allow users to navigate between them.\n *\n * Built on solidaria-components Tabs for full accessibility support.\n */\nexport function Tabs<T>(props: TabsProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n ])\n\n const size = local.size ?? 'md'\n const variant = local.variant ?? 'underline'\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TabsRenderProps): string => {\n const base = 'flex flex-col'\n const orientationClass = renderProps.orientation === 'vertical' ? 'flex-row' : 'flex-col'\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, orientationClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <TabsSizeContext.Provider value={{ size, variant }}>\n <HeadlessTabs\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n </TabsSizeContext.Provider>\n )\n}\n\n// ============================================\n// TAB LIST COMPONENT\n// ============================================\n\n/**\n * A TabList contains Tab elements that represent the available tabs.\n */\nexport function TabList<T>(props: TabListProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const ctx = useContext(TabsSizeContext)\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TabListRenderProps): string => {\n const base = 'flex'\n const orientationClass = renderProps.orientation === 'vertical' ? 'flex-col' : 'flex-row'\n const sizeClass = sizeStyles[ctx.size].tabList\n const variantClass = variantStyles[ctx.variant].tabList\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, orientationClass, sizeClass, variantClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTabList\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// TAB COMPONENT\n// ============================================\n\n/**\n * A Tab represents an individual tab in a TabList.\n */\nexport function Tab(props: TabProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, ['class'])\n const ctx = useContext(TabsSizeContext)\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TabRenderProps): string => {\n const sizeClass = sizeStyles[ctx.size].tab\n const variantBase = variantStyles[ctx.variant].tab.base\n\n let stateClass: string\n if (renderProps.isDisabled) {\n stateClass = variantStyles[ctx.variant].tab.disabled\n } else if (renderProps.isSelected) {\n stateClass = variantStyles[ctx.variant].tab.selected\n } else {\n stateClass = variantStyles[ctx.variant].tab.default\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-1 ring-offset-bg-400 outline-none'\n : ''\n\n const pressedClass = renderProps.isPressed ? 'scale-95' : ''\n const cursorClass = renderProps.isDisabled ? '' : 'cursor-pointer'\n\n return [variantBase, sizeClass, stateClass, focusClass, pressedClass, cursorClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTab\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// ============================================\n// TAB PANEL COMPONENT\n// ============================================\n\n/**\n * A TabPanel displays the content for a selected Tab.\n */\nexport function TabPanel(props: TabPanelProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const ctx = useContext(TabsSizeContext)\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TabPanelRenderProps): string => {\n const base = 'outline-none'\n const sizeClass = sizeStyles[ctx.size].panel\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTabPanel\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n )\n}\n\n// Attach sub-components for convenience\nTabs.List = TabList\nTabs.Tab = Tab\nTabs.Panel = TabPanel\n\n// Re-export types for convenience\nexport type { Key, TabOrientation }\n","/**\n * Breadcrumbs component for proyecto-viviana-silapse\n *\n * Styled breadcrumbs component built on top of solidaria-components.\n * Inspired by Spectrum 2's Breadcrumbs component patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext } from 'solid-js'\nimport {\n Breadcrumbs as HeadlessBreadcrumbs,\n BreadcrumbItem as HeadlessBreadcrumbItem,\n type BreadcrumbsProps as HeadlessBreadcrumbsProps,\n type BreadcrumbItemProps as HeadlessBreadcrumbItemProps,\n type BreadcrumbsRenderProps,\n type BreadcrumbItemRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type BreadcrumbsSize = 'sm' | 'md' | 'lg'\nexport type BreadcrumbsVariant = 'default' | 'subtle'\n\ninterface BreadcrumbsContextValue {\n size: BreadcrumbsSize\n variant: BreadcrumbsVariant\n showSeparator: boolean\n}\n\nconst BreadcrumbsSizeContext = createContext<BreadcrumbsContextValue>({\n size: 'md',\n variant: 'default',\n showSeparator: true,\n})\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface BreadcrumbsProps<T> extends Omit<HeadlessBreadcrumbsProps<T>, 'class' | 'style'> {\n /** The size of the breadcrumbs. */\n size?: BreadcrumbsSize\n /** The visual variant. */\n variant?: BreadcrumbsVariant\n /** Whether to show separators between items. */\n showSeparator?: boolean\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface BreadcrumbItemProps extends Omit<HeadlessBreadcrumbItemProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n text: 'text-sm',\n icon: 'h-3 w-3',\n gap: 'gap-1',\n },\n md: {\n text: 'text-base',\n icon: 'h-4 w-4',\n gap: 'gap-1.5',\n },\n lg: {\n text: 'text-lg',\n icon: 'h-5 w-5',\n gap: 'gap-2',\n },\n}\n\nconst variantStyles = {\n default: {\n item: 'text-primary-400 hover:text-primary-200',\n current: 'text-primary-100 font-medium',\n separator: 'text-primary-500',\n },\n subtle: {\n item: 'text-primary-500 hover:text-primary-300',\n current: 'text-primary-200',\n separator: 'text-primary-600',\n },\n}\n\n// ============================================\n// BREADCRUMBS COMPONENT\n// ============================================\n\n/**\n * Breadcrumbs show hierarchy and navigational context for a user's location within an application.\n *\n * Built on solidaria-components Breadcrumbs for full accessibility support.\n */\nexport function Breadcrumbs<T>(props: BreadcrumbsProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'showSeparator',\n 'class',\n ])\n\n const size = local.size ?? 'md'\n const variant = local.variant ?? 'default'\n const showSeparator = local.showSeparator ?? true\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: BreadcrumbsRenderProps): string => {\n const base = 'flex items-center'\n const sizeClass = sizeStyles[size].gap\n const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''\n return [base, sizeClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <BreadcrumbsSizeContext.Provider value={{ size, variant, showSeparator }}>\n <HeadlessBreadcrumbs\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n </BreadcrumbsSizeContext.Provider>\n )\n}\n\n// ============================================\n// BREADCRUMB ITEM COMPONENT\n// ============================================\n\n/**\n * A BreadcrumbItem represents an individual breadcrumb in the navigation trail.\n */\nexport function BreadcrumbItem(props: BreadcrumbItemProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'children'])\n const ctx = useContext(BreadcrumbsSizeContext)\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: BreadcrumbItemRenderProps): string => {\n const sizeClass = sizeStyles[ctx.size].text\n const vStyles = variantStyles[ctx.variant]\n\n let stateClass: string\n if (renderProps.isCurrent) {\n stateClass = vStyles.current\n } else if (renderProps.isDisabled) {\n stateClass = 'text-primary-600 cursor-not-allowed'\n } else {\n stateClass = vStyles.item\n }\n\n const cursorClass = renderProps.isCurrent || renderProps.isDisabled ? '' : 'cursor-pointer'\n const transitionClass = 'transition-colors duration-150'\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-1 ring-offset-bg-400 outline-none rounded'\n : ''\n\n return [sizeClass, stateClass, cursorClass, transitionClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const vStyles = variantStyles[ctx.variant]\n // Hide separator on the first breadcrumb item.\n const separatorClass = `${sizeStyles[ctx.size].icon} ${vStyles.separator} mx-1 shrink-0 [li:first-child_&]:hidden`\n\n const renderChildren = (renderProps: BreadcrumbItemRenderProps) => {\n const children = local.children\n return (\n <>\n {/* Separator shows before items except first and current. */}\n {ctx.showSeparator && !renderProps.isCurrent && <ChevronIcon class={separatorClass} />}\n {typeof children === 'function' ? children(renderProps) : children}\n </>\n )\n }\n\n return (\n <HeadlessBreadcrumbItem\n {...headlessProps}\n class={getClassName}\n children={renderChildren}\n />\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n aria-hidden=\"true\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nBreadcrumbs.Item = BreadcrumbItem\n","/**\n * NumberField component for proyecto-viviana-silapse\n *\n * A styled number field component with increment/decrement buttons.\n * Built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, useContext } from 'solid-js'\nimport {\n NumberField as HeadlessNumberField,\n NumberFieldLabel as HeadlessNumberFieldLabel,\n NumberFieldGroup as HeadlessNumberFieldGroup,\n NumberFieldInput as HeadlessNumberFieldInput,\n NumberFieldIncrementButton as HeadlessNumberFieldIncrementButton,\n NumberFieldDecrementButton as HeadlessNumberFieldDecrementButton,\n NumberFieldContext,\n type NumberFieldProps as HeadlessNumberFieldProps,\n type NumberFieldRenderProps,\n type NumberFieldInputRenderProps,\n type NumberFieldButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type NumberFieldSize = 'sm' | 'md' | 'lg'\nexport type NumberFieldVariant = 'outline' | 'filled'\n\nexport interface NumberFieldProps extends Omit<HeadlessNumberFieldProps, 'class' | 'style' | 'children' | 'label'> {\n /** The size of the number field. */\n size?: NumberFieldSize\n /** The visual variant of the number field. */\n variant?: NumberFieldVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the input. */\n label?: string\n /** Description text shown below the input. */\n description?: string\n /** Error message shown when invalid. */\n errorMessage?: string\n /** Whether to hide the stepper buttons. */\n hideStepper?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n input: 'h-8 px-2 text-sm',\n label: 'text-sm',\n description: 'text-xs',\n button: 'w-6 h-6 text-sm',\n buttonGap: 'gap-0.5',\n },\n md: {\n input: 'h-10 px-3 text-base',\n label: 'text-sm',\n description: 'text-sm',\n button: 'w-8 h-8 text-base',\n buttonGap: 'gap-1',\n },\n lg: {\n input: 'h-12 px-4 text-lg',\n label: 'text-base',\n description: 'text-sm',\n button: 'w-10 h-10 text-lg',\n buttonGap: 'gap-1',\n },\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction PlusIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M8 3v10M3 8h10\" />\n </svg>\n )\n}\n\nfunction MinusIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M3 8h10\" />\n </svg>\n )\n}\n\nfunction NumberFieldDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(NumberFieldContext)\n if (!context) return null\n const descriptionProps = () => {\n const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>\n return rest\n }\n\n return (\n <span {...descriptionProps()} class={props.class}>\n {props.children}\n </span>\n )\n}\n\nfunction NumberFieldError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(NumberFieldContext)\n if (!context) return null\n const errorMessageProps = () => {\n const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>\n return rest\n }\n\n return (\n <span {...errorMessageProps()} class={props.class}>\n {props.children}\n </span>\n )\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A number field allows users to enter a numeric value with increment/decrement controls.\n */\nexport function NumberField(props: NumberFieldProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'hideStepper',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n\n const containerClasses = () => {\n const base = 'flex flex-col'\n const disabledClass = headlessProps.isDisabled ? 'opacity-60' : ''\n const custom = local.class || ''\n return [base, disabledClass, custom].filter(Boolean).join(' ')\n }\n\n const groupClasses = () => {\n const base = 'flex items-center'\n const gapClass = size().buttonGap\n return [base, gapClass].filter(Boolean).join(' ')\n }\n\n const inputClasses = (renderProps: NumberFieldInputRenderProps) => {\n const base = 'flex-1 rounded-md transition-all duration-200 outline-none text-center'\n const sizeClass = size().input\n\n const variantClass = local.variant === 'filled'\n ? 'bg-bg-200 border border-transparent'\n : 'bg-transparent border border-bg-400'\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isInvalid) {\n stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'\n } else {\n stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'\n }\n\n const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'\n\n return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')\n }\n\n const buttonClasses = (renderProps: NumberFieldButtonRenderProps) => {\n const base = 'flex items-center justify-center rounded-md transition-all duration-150 select-none'\n const sizeClass = size().button\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-300 text-primary-600 cursor-not-allowed'\n } else if (renderProps.isPressed) {\n stateClass = 'bg-accent-600 text-white scale-95'\n } else if (renderProps.isHovered) {\n stateClass = 'bg-accent-500 text-white'\n } else {\n stateClass = 'bg-bg-300 text-primary-200 hover:bg-accent-500 hover:text-white'\n }\n\n return [base, sizeClass, stateClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'block font-medium text-primary-200 mb-1'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const descriptionClasses = () => {\n const base = 'mt-1 text-primary-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const errorClasses = () => {\n const base = 'mt-1 text-danger-500'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessNumberField\n {...headlessProps}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n class={containerClasses()}\n children={(renderProps: NumberFieldRenderProps) => (\n <>\n <Show when={local.label}>\n <HeadlessNumberFieldLabel class={labelClasses()}>\n {local.label}\n <Show when={renderProps.isRequired}>\n <span class=\"text-danger-500 ml-1\">*</span>\n </Show>\n </HeadlessNumberFieldLabel>\n </Show>\n\n <HeadlessNumberFieldGroup class={groupClasses()}>\n <Show when={!local.hideStepper}>\n <HeadlessNumberFieldDecrementButton class={buttonClasses}>\n <MinusIcon class=\"w-4 h-4\" />\n </HeadlessNumberFieldDecrementButton>\n </Show>\n\n <HeadlessNumberFieldInput class={inputClasses} />\n\n <Show when={!local.hideStepper}>\n <HeadlessNumberFieldIncrementButton class={buttonClasses}>\n <PlusIcon class=\"w-4 h-4\" />\n </HeadlessNumberFieldIncrementButton>\n </Show>\n </HeadlessNumberFieldGroup>\n\n <Show when={local.description && !renderProps.isInvalid}>\n <NumberFieldDescription class={descriptionClasses()}>\n {local.description}\n </NumberFieldDescription>\n </Show>\n\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <NumberFieldError class={errorClasses()}>\n {local.errorMessage}\n </NumberFieldError>\n </Show>\n </>\n )}\n />\n )\n}\n\n// Re-export types\nexport type { NumberFieldState } from '@proyecto-viviana/solid-stately'\n","/**\n * DropZone component for proyecto-viviana-silapse.\n *\n * Styling-only wrapper around solidaria-components DropZone primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n DropZone as HeadlessDropZone,\n type DropZoneProps as HeadlessDropZoneProps,\n type DropZoneRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport interface DropZoneProps extends Omit<HeadlessDropZoneProps, 'class'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\nexport function DropZone(props: DropZoneProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class']);\n\n const getClassName = (renderProps: DropZoneRenderProps): string => {\n const base = [\n 'rounded-lg border-2 border-dashed p-4 transition-colors duration-150 outline-none',\n ].join(' ');\n\n const stateClass = renderProps.isDisabled\n ? 'cursor-not-allowed border-primary-600 bg-bg-300/50 opacity-60'\n : renderProps.isDropTarget\n ? 'border-accent bg-accent/10'\n : renderProps.isHovered || renderProps.isFocused\n ? 'border-accent-300 bg-bg-300'\n : 'border-primary-600 bg-bg-400';\n\n const focusRingClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : '';\n\n return [base, stateClass, focusRingClass, local.class ?? ''].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessDropZone\n {...headlessProps}\n class={getClassName}\n />\n );\n}\n","/**\n * FileTrigger component for proyecto-viviana-silapse.\n *\n * Styling-only wrapper around solidaria-components FileTrigger primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n FileTrigger as HeadlessFileTrigger,\n type FileTriggerProps as HeadlessFileTriggerProps,\n} from '@proyecto-viviana/solidaria-components';\n\nexport interface FileTriggerProps extends HeadlessFileTriggerProps {\n /** Additional CSS class for the trigger wrapper. */\n class?: string;\n}\n\nexport function FileTrigger(props: FileTriggerProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'children']);\n const hasClass = () => !!local.class && local.class.trim().length > 0;\n\n return (\n <HeadlessFileTrigger {...headlessProps}>\n {hasClass() ? <span class={local.class}>{local.children}</span> : local.children}\n </HeadlessFileTrigger>\n );\n}\n\n","/**\n * SearchField component for proyecto-viviana-silapse\n *\n * Styled search field component with clear button and search icon.\n * Built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, useContext } from 'solid-js'\nimport {\n SearchField as HeadlessSearchField,\n SearchFieldLabel as HeadlessSearchFieldLabel,\n SearchFieldInput as HeadlessSearchFieldInput,\n SearchFieldClearButton as HeadlessSearchFieldClearButton,\n SearchFieldContext,\n type SearchFieldProps as HeadlessSearchFieldProps,\n type SearchFieldRenderProps,\n type SearchFieldInputRenderProps,\n type SearchFieldClearButtonRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SearchFieldSize = 'sm' | 'md' | 'lg'\nexport type SearchFieldVariant = 'outline' | 'filled'\n\nexport interface SearchFieldProps extends Omit<HeadlessSearchFieldProps, 'class' | 'style' | 'children' | 'label'> {\n /** The size of the search field. */\n size?: SearchFieldSize\n /** The visual variant of the search field. */\n variant?: SearchFieldVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the input. */\n label?: string\n /** Description text shown below the input. */\n description?: string\n /** Error message shown when invalid. */\n errorMessage?: string\n /** Whether to hide the search icon. */\n hideSearchIcon?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'h-8',\n input: 'text-sm pl-8 pr-8',\n label: 'text-sm',\n description: 'text-xs',\n icon: 'w-4 h-4 left-2',\n clearButton: 'w-5 h-5 right-1.5',\n },\n md: {\n container: 'h-10',\n input: 'text-base pl-10 pr-10',\n label: 'text-sm',\n description: 'text-sm',\n icon: 'w-5 h-5 left-2.5',\n clearButton: 'w-6 h-6 right-2',\n },\n lg: {\n container: 'h-12',\n input: 'text-lg pl-12 pr-12',\n label: 'text-base',\n description: 'text-sm',\n icon: 'w-6 h-6 left-3',\n clearButton: 'w-7 h-7 right-2.5',\n },\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction SearchIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"5\" />\n <path d=\"M12 12L17 17\" stroke-linecap=\"round\" />\n </svg>\n )\n}\n\nfunction ClearIcon(props: { class?: string }) {\n return (\n <svg\n class={props.class}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M4 4L12 12M12 4L4 12\" stroke-linecap=\"round\" />\n </svg>\n )\n}\n\nfunction SearchFieldDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(SearchFieldContext)\n if (!context) return null\n return (\n <span {...context.descriptionProps} class={props.class}>\n {props.children}\n </span>\n )\n}\n\nfunction SearchFieldError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {\n const context = useContext(SearchFieldContext)\n if (!context) return null\n return (\n <span {...context.errorMessageProps} class={props.class}>\n {props.children}\n </span>\n )\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\nexport function SearchField(props: SearchFieldProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'hideSearchIcon',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n\n const containerClasses = () => {\n const base = 'flex flex-col'\n const disabledClass = headlessProps.isDisabled ? 'opacity-60' : ''\n const custom = local.class ?? ''\n return [base, disabledClass, custom].filter(Boolean).join(' ')\n }\n\n const inputWrapperClasses = () => {\n const base = 'relative flex items-center'\n const sizeClass = size().container\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const inputClasses = (renderProps: SearchFieldInputRenderProps) => {\n const base = 'w-full h-full rounded-md transition-all duration-200 outline-none'\n const sizeClass = size().input\n const paddingClass = local.hideSearchIcon ? 'pl-3' : ''\n\n const variantClass = local.variant === 'filled'\n ? 'bg-bg-200 border border-transparent'\n : 'bg-transparent border border-bg-400'\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'\n } else if (renderProps.isInvalid) {\n stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'\n } else {\n stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'\n }\n\n const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'\n\n return [base, sizeClass, paddingClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')\n }\n\n const searchIconClasses = () => {\n const base = 'absolute pointer-events-none text-primary-400'\n const sizeClass = size().icon\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const clearButtonClasses = (renderProps: SearchFieldClearButtonRenderProps) => {\n const base = 'absolute flex items-center justify-center rounded-md transition-all duration-150 select-none'\n const sizeClass = size().clearButton\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'text-primary-600 cursor-not-allowed'\n } else if (renderProps.isPressed) {\n stateClass = 'bg-bg-400 text-primary-100 scale-90'\n } else if (renderProps.isHovered) {\n stateClass = 'bg-bg-300 text-primary-100'\n } else {\n stateClass = 'text-primary-400 hover:bg-bg-300 hover:text-primary-100'\n }\n\n return [base, sizeClass, stateClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'block font-medium text-primary-200 mb-1'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const descriptionClasses = () => {\n const base = 'mt-1 text-primary-400'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const errorClasses = () => {\n const base = 'mt-1 text-danger-500'\n const sizeClass = size().description\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessSearchField\n {...headlessProps}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n class={containerClasses()}\n children={(renderProps: SearchFieldRenderProps) => (\n <>\n <Show when={local.label}>\n <HeadlessSearchFieldLabel class={labelClasses()}>\n {local.label}\n <Show when={renderProps.isRequired}>\n <span class=\"text-danger-500 ml-1\">*</span>\n </Show>\n </HeadlessSearchFieldLabel>\n </Show>\n\n <div class={inputWrapperClasses()}>\n <Show when={!local.hideSearchIcon}>\n <SearchIcon class={searchIconClasses()} />\n </Show>\n\n <HeadlessSearchFieldInput class={inputClasses} />\n\n <HeadlessSearchFieldClearButton class={clearButtonClasses}>\n <ClearIcon class=\"w-3 h-3\" />\n </HeadlessSearchFieldClearButton>\n </div>\n\n <Show when={local.description && !renderProps.isInvalid}>\n <SearchFieldDescription class={descriptionClasses()}>\n {local.description}\n </SearchFieldDescription>\n </Show>\n\n <Show when={local.errorMessage && renderProps.isInvalid}>\n <SearchFieldError class={errorClasses()}>\n {local.errorMessage}\n </SearchFieldError>\n </Show>\n </>\n )}\n />\n )\n}\n\n// Re-export types\nexport type { SearchFieldState } from '@proyecto-viviana/solid-stately'\n","/**\n * ContextualHelp component for proyecto-viviana-silapse.\n *\n * Styling-only composition around tooltip primitives.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js';\nimport { TooltipTrigger, Tooltip } from '../tooltip';\n\nexport interface ContextualHelpProps {\n /** Help trigger content. */\n children?: JSX.Element;\n /** Help text/content rendered in overlay. */\n content: JSX.Element;\n /** Accessible label for the default trigger button. */\n triggerLabel?: string;\n /** Additional CSS class for trigger wrapper. */\n class?: string;\n}\n\nexport function ContextualHelp(props: ContextualHelpProps): JSX.Element {\n const [local] = splitProps(props, ['children', 'content', 'triggerLabel', 'class']);\n return (\n <TooltipTrigger>\n <Show\n when={local.children}\n fallback={(\n <button\n type=\"button\"\n aria-label={local.triggerLabel ?? 'More information'}\n class={`inline-flex h-5 w-5 items-center justify-center rounded-full border border-primary-500 text-xs text-primary-200 hover:bg-bg-300 ${local.class ?? ''}`}\n >\n ?\n </button>\n )}\n >\n {local.children}\n </Show>\n <Tooltip>{local.content}</Tooltip>\n </TooltipTrigger>\n );\n}\n","/**\n * Slider component for proyecto-viviana-silapse\n *\n * A styled slider component with track, thumb, and value display.\n * Built on top of solidaria-components.\n */\n\nimport { type JSX, splitProps, Show, createUniqueId } from 'solid-js'\nimport {\n Slider as HeadlessSlider,\n SliderTrack as HeadlessSliderTrack,\n SliderThumb as HeadlessSliderThumb,\n SliderOutput as HeadlessSliderOutput,\n type SliderProps as HeadlessSliderProps,\n type SliderRenderProps,\n type SliderTrackRenderProps,\n type SliderThumbRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport { type SliderOrientation } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SliderSize = 'sm' | 'md' | 'lg'\nexport type SliderVariant = 'default' | 'accent'\n\nexport interface SliderProps extends Omit<HeadlessSliderProps, 'class' | 'style' | 'children' | 'label'> {\n /** The size of the slider. */\n size?: SliderSize\n /** The visual variant of the slider. */\n variant?: SliderVariant\n /** Additional CSS class name. */\n class?: string\n /** Label text for the slider. */\n label?: string\n /** Whether to show the value output. */\n showOutput?: boolean\n /** Whether to show min/max labels. */\n showMinMax?: boolean\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n trackHorizontal: 'h-1',\n trackVertical: 'w-1',\n thumb: 'w-3 h-3',\n label: 'text-sm',\n output: 'text-xs',\n },\n md: {\n trackHorizontal: 'h-2',\n trackVertical: 'w-2',\n thumb: 'w-4 h-4',\n label: 'text-sm',\n output: 'text-sm',\n },\n lg: {\n trackHorizontal: 'h-3',\n trackVertical: 'w-3',\n thumb: 'w-5 h-5',\n label: 'text-base',\n output: 'text-base',\n },\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A slider allows users to select a value from a range.\n */\nexport function Slider(props: SliderProps): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'showOutput',\n 'showMinMax',\n ])\n\n const size = () => sizeStyles[local.size ?? 'md']\n const orientation = (): SliderOrientation => headlessProps.orientation ?? 'horizontal'\n const labelId = createUniqueId()\n\n const containerClasses = () => {\n const base = orientation() === 'vertical' ? 'flex flex-col w-fit' : 'flex flex-col w-full'\n const custom = local.class || ''\n return [base, custom].filter(Boolean).join(' ')\n }\n\n const labelRowClasses = () => {\n const rowLayout = orientation() === 'vertical' ? 'flex-col items-start gap-1' : 'flex-row justify-between items-center'\n return ['flex mb-2', rowLayout].join(' ')\n }\n\n const trackContainerClasses = () => {\n const base = orientation() === 'vertical' ? 'relative h-40 mx-auto' : 'relative w-full'\n const disabledClass = headlessProps.isDisabled ? 'cursor-not-allowed' : ''\n return [base, disabledClass].filter(Boolean).join(' ')\n }\n\n const trackClasses = (_renderProps: SliderTrackRenderProps) => {\n const base = 'relative rounded-full bg-bg-300'\n const axisClass = orientation() === 'vertical'\n ? [size().trackVertical, 'h-full'].join(' ')\n : [size().trackHorizontal, 'w-full'].join(' ')\n const interactiveClass = headlessProps.isDisabled ? '' : 'cursor-pointer'\n return [base, axisClass, interactiveClass].filter(Boolean).join(' ')\n }\n\n const fillClasses = () => {\n const base = 'absolute rounded-full transition-all'\n const variantClass = local.variant === 'accent' ? 'bg-accent' : 'bg-primary-400'\n return [base, variantClass].filter(Boolean).join(' ')\n }\n\n const fillStyle = (renderProps: SliderTrackRenderProps): JSX.CSSProperties => {\n if (renderProps.orientation === 'vertical') {\n return {\n left: '0',\n bottom: '0',\n width: '100%',\n height: `${renderProps.valuePercent * 100}%`,\n }\n }\n\n return {\n left: '0',\n top: '0',\n height: '100%',\n width: `${renderProps.valuePercent * 100}%`,\n }\n }\n\n const thumbClasses = (renderProps: SliderThumbRenderProps) => {\n const base = 'absolute rounded-full shadow-md transition-all'\n const sizeClass = size().thumb\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'bg-primary-400 cursor-not-allowed'\n } else if (renderProps.isDragging) {\n stateClass = local.variant === 'accent' ? 'bg-accent-400 scale-110 cursor-grabbing' : 'bg-primary-200 scale-110 cursor-grabbing'\n } else if (renderProps.isHovered) {\n stateClass = local.variant === 'accent' ? 'bg-accent-400 scale-105 cursor-grab' : 'bg-primary-200 scale-105 cursor-grab'\n } else {\n stateClass = local.variant === 'accent' ? 'bg-accent cursor-grab' : 'bg-primary-100 cursor-grab'\n }\n\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent ring-offset-2 ring-offset-bg-100' : ''\n\n return [base, sizeClass, stateClass, focusClass].filter(Boolean).join(' ')\n }\n\n const labelClasses = () => {\n const base = 'font-medium text-primary-200'\n const sizeClass = size().label\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const outputClasses = () => {\n const base = 'font-medium text-primary-100'\n const sizeClass = size().output\n return [base, sizeClass].filter(Boolean).join(' ')\n }\n\n const minMaxClasses = () => 'text-xs text-primary-400'\n\n const showOutput = () => local.showOutput ?? true\n const minValue = () => headlessProps.minValue ?? 0\n const maxValue = () => headlessProps.maxValue ?? 100\n\n return (\n <HeadlessSlider\n {...headlessProps}\n aria-labelledby={headlessProps['aria-labelledby'] ?? (!headlessProps['aria-label'] && local.label ? labelId : undefined)}\n aria-label={headlessProps['aria-label']}\n class={containerClasses()}\n children={(_renderProps: SliderRenderProps) => (\n <>\n <Show when={local.label || showOutput()}>\n <div class={labelRowClasses()}>\n <Show when={local.label}>\n <span id={labelId} class={labelClasses()}>{local.label}</span>\n </Show>\n <Show when={showOutput()}>\n <HeadlessSliderOutput class={outputClasses()} />\n </Show>\n </div>\n </Show>\n\n <div class={trackContainerClasses()}>\n <HeadlessSliderTrack class={trackClasses}>\n {(trackRenderProps) => (\n <>\n <div\n class={fillClasses()}\n style={fillStyle(trackRenderProps)}\n />\n <HeadlessSliderThumb class={thumbClasses} />\n </>\n )}\n </HeadlessSliderTrack>\n </div>\n\n <Show when={local.showMinMax}>\n <div class=\"flex justify-between mt-1\">\n <span class={minMaxClasses()}>{minValue()}</span>\n <span class={minMaxClasses()}>{maxValue()}</span>\n </div>\n </Show>\n </>\n )}\n />\n )\n}\n\n// Re-export types\nexport type { SliderState, SliderOrientation } from '@proyecto-viviana/solid-stately'\n\n// Sub-component\nexport { RangeSlider } from './RangeSlider';\nexport type { RangeSliderProps, RangeSliderSize } from './RangeSlider';\n","/**\n * RangeSlider component for proyecto-viviana-silapse\n *\n * A dual-thumb range slider for selecting value ranges.\n * Self-contained component that manages its own dual-value state,\n * since the headless Slider only supports single-value.\n */\n\nimport { type JSX, createSignal, createMemo, Show, onCleanup } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type RangeSliderSize = 'sm' | 'md' | 'lg';\n\nexport interface RangeValue {\n start: number;\n end: number;\n}\n\nexport interface RangeSliderProps {\n /** The current value (controlled). */\n value?: RangeValue;\n /** The default value (uncontrolled). */\n defaultValue?: RangeValue;\n /** Handler called when the value changes. */\n onChange?: (value: RangeValue) => void;\n /** Handler called when the user stops dragging. */\n onChangeEnd?: (value: RangeValue) => void;\n /** The minimum value. @default 0 */\n minValue?: number;\n /** The maximum value. @default 100 */\n maxValue?: number;\n /** The step value. @default 1 */\n step?: number;\n /** The size of the slider. @default 'md' */\n size?: RangeSliderSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label text for the slider. */\n label?: string;\n /** Whether to show the value output. @default true */\n showOutput?: boolean;\n /** Whether the slider is disabled. */\n isDisabled?: boolean;\n /** Number format options for the output. */\n formatOptions?: Intl.NumberFormatOptions;\n /** Accessible label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles: Record<RangeSliderSize, { track: string; thumb: string; label: string }> = {\n sm: { track: 'h-1', thumb: 'w-3 h-3', label: 'text-sm' },\n md: { track: 'h-2', thumb: 'w-4 h-4', label: 'text-sm' },\n lg: { track: 'h-3', thumb: 'w-5 h-5', label: 'text-base' },\n};\n\n// ============================================\n// HELPERS\n// ============================================\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction snapToStep(value: number, min: number, max: number, step: number): number {\n const snapped = Math.round((value - min) / step) * step + min;\n const decimalPlaces = (step.toString().split('.')[1] || '').length;\n const rounded = parseFloat(snapped.toFixed(decimalPlaces));\n return clamp(rounded, min, max);\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A dual-thumb slider for selecting a range of values.\n */\nexport function RangeSlider(props: RangeSliderProps): JSX.Element {\n const minValue = () => props.minValue ?? 0;\n const maxValue = () => props.maxValue ?? 100;\n const step = () => props.step ?? 1;\n const size = () => sizeStyles[props.size ?? 'md'];\n const isDisabled = () => props.isDisabled ?? false;\n\n // Internal state for uncontrolled mode\n const defaultStart = () => props.defaultValue?.start ?? minValue();\n const defaultEnd = () => props.defaultValue?.end ?? maxValue();\n const [internalStart, setInternalStart] = createSignal(\n snapToStep(defaultStart(), minValue(), maxValue(), step())\n );\n const [internalEnd, setInternalEnd] = createSignal(\n snapToStep(defaultEnd(), minValue(), maxValue(), step())\n );\n\n // Controlled vs uncontrolled\n const startValue = createMemo(() => {\n if (props.value !== undefined) {\n return snapToStep(props.value.start, minValue(), maxValue(), step());\n }\n return internalStart();\n });\n\n const endValue = createMemo(() => {\n if (props.value !== undefined) {\n return snapToStep(props.value.end, minValue(), maxValue(), step());\n }\n return internalEnd();\n });\n\n // Percentages for positioning\n const startPercent = createMemo(() =>\n (startValue() - minValue()) / (maxValue() - minValue())\n );\n const endPercent = createMemo(() =>\n (endValue() - minValue()) / (maxValue() - minValue())\n );\n\n // Formatted values\n const formatter = createMemo(() => new Intl.NumberFormat(undefined, props.formatOptions));\n const formattedOutput = createMemo(() => {\n return `${formatter().format(startValue())} – ${formatter().format(endValue())}`;\n });\n\n // Set range value\n const setRange = (start: number, end: number) => {\n if (isDisabled()) return;\n const s = snapToStep(start, minValue(), maxValue(), step());\n const e = snapToStep(end, minValue(), maxValue(), step());\n // Ensure start <= end\n const newStart = Math.min(s, e);\n const newEnd = Math.max(s, e);\n\n if (props.value === undefined) {\n setInternalStart(newStart);\n setInternalEnd(newEnd);\n }\n props.onChange?.({ start: newStart, end: newEnd });\n };\n\n // Dragging state\n const [draggingThumb, setDraggingThumb] = createSignal<'start' | 'end' | null>(null);\n const [focusedThumb, setFocusedThumb] = createSignal<'start' | 'end' | null>(null);\n\n let trackRef: HTMLDivElement | undefined;\n\n // Get value from pointer position\n const getValueFromPointer = (clientX: number): number => {\n if (!trackRef) return minValue();\n const rect = trackRef.getBoundingClientRect();\n const percent = clamp((clientX - rect.left) / rect.width, 0, 1);\n return snapToStep(\n percent * (maxValue() - minValue()) + minValue(),\n minValue(),\n maxValue(),\n step()\n );\n };\n\n // Determine which thumb is closer to a value\n const closerThumb = (value: number): 'start' | 'end' => {\n const distToStart = Math.abs(value - startValue());\n const distToEnd = Math.abs(value - endValue());\n if (distToStart < distToEnd) return 'start';\n if (distToEnd < distToStart) return 'end';\n // Equal distance: prefer the one in the direction of the value\n return value < startValue() ? 'start' : 'end';\n };\n\n // Pointer handlers\n const onPointerDown = (e: PointerEvent) => {\n if (isDisabled()) return;\n e.preventDefault();\n const value = getValueFromPointer(e.clientX);\n const thumb = closerThumb(value);\n setDraggingThumb(thumb);\n\n if (thumb === 'start') {\n setRange(value, endValue());\n } else {\n setRange(startValue(), value);\n }\n\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n };\n\n const onPointerMove = (e: PointerEvent) => {\n const thumb = draggingThumb();\n if (!thumb) return;\n const value = getValueFromPointer(e.clientX);\n if (thumb === 'start') {\n setRange(value, endValue());\n } else {\n setRange(startValue(), value);\n }\n };\n\n const onPointerUp = () => {\n if (draggingThumb()) {\n setDraggingThumb(null);\n props.onChangeEnd?.({ start: startValue(), end: endValue() });\n }\n };\n\n // Keyboard handler for thumbs\n const onKeyDown = (thumb: 'start' | 'end', e: KeyboardEvent) => {\n if (isDisabled()) return;\n const s = step();\n const pageStep = Math.max(s, snapToStep((maxValue() - minValue()) / 10, 0, maxValue() - minValue(), s));\n const current = thumb === 'start' ? startValue() : endValue();\n let newValue = current;\n let handled = true;\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = current + s;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = current - s;\n break;\n case 'PageUp':\n newValue = current + pageStep;\n break;\n case 'PageDown':\n newValue = current - pageStep;\n break;\n case 'Home':\n newValue = minValue();\n break;\n case 'End':\n newValue = maxValue();\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n newValue = snapToStep(newValue, minValue(), maxValue(), s);\n if (thumb === 'start') {\n setRange(newValue, endValue());\n } else {\n setRange(startValue(), newValue);\n }\n }\n };\n\n // Thumb style classes\n const thumbClasses = (isDragging: boolean, isFocused: boolean): string => {\n const base = 'absolute rounded-full shadow-md transition-all top-1/2 -translate-y-1/2 -translate-x-1/2 outline-none';\n const sizeClass = size().thumb;\n\n let stateClass: string;\n if (isDisabled()) {\n stateClass = 'bg-primary-400 cursor-not-allowed';\n } else if (isDragging) {\n stateClass = 'bg-accent-400 scale-110 cursor-grabbing';\n } else {\n stateClass = 'bg-accent cursor-grab hover:bg-accent-400 hover:scale-105';\n }\n\n const focusClass = isFocused ? 'ring-2 ring-accent ring-offset-2 ring-offset-bg-100' : '';\n return [base, sizeClass, stateClass, focusClass].filter(Boolean).join(' ');\n };\n\n return (\n <div\n class={`flex flex-col w-full ${isDisabled() ? 'opacity-60' : ''} ${props.class ?? ''}`}\n role=\"group\"\n aria-label={props['aria-label'] ?? props.label}\n >\n <Show when={props.label || (props.showOutput ?? true)}>\n <div class=\"flex justify-between items-center mb-2\">\n <Show when={props.label}>\n <span class={`font-medium text-primary-200 ${size().label}`}>{props.label}</span>\n </Show>\n <Show when={props.showOutput ?? true}>\n <output class={`font-medium text-primary-100 ${size().label}`} aria-live=\"off\">\n {formattedOutput()}\n </output>\n </Show>\n </div>\n </Show>\n <div class=\"relative w-full\">\n <div\n ref={trackRef!}\n class={`relative rounded-full bg-bg-300 w-full ${size().track} ${isDisabled() ? '' : 'cursor-pointer'}`}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n style={{ 'touch-action': 'none' }}\n >\n {/* Filled range between thumbs */}\n <div\n class=\"absolute h-full rounded-full bg-accent\"\n style={{\n left: `${startPercent() * 100}%`,\n width: `${(endPercent() - startPercent()) * 100}%`,\n }}\n />\n {/* Start thumb */}\n <div\n class={thumbClasses(draggingThumb() === 'start', focusedThumb() === 'start')}\n style={{ left: `${startPercent() * 100}%` }}\n tabIndex={isDisabled() ? undefined : 0}\n role=\"slider\"\n aria-label={`${props.label ?? 'Range'} start`}\n aria-valuemin={minValue()}\n aria-valuemax={endValue()}\n aria-valuenow={startValue()}\n aria-valuetext={formatter().format(startValue())}\n onKeyDown={(e) => onKeyDown('start', e)}\n onFocus={() => setFocusedThumb('start')}\n onBlur={() => setFocusedThumb(null)}\n />\n {/* End thumb */}\n <div\n class={thumbClasses(draggingThumb() === 'end', focusedThumb() === 'end')}\n style={{ left: `${endPercent() * 100}%` }}\n tabIndex={isDisabled() ? undefined : 0}\n role=\"slider\"\n aria-label={`${props.label ?? 'Range'} end`}\n aria-valuemin={startValue()}\n aria-valuemax={maxValue()}\n aria-valuenow={endValue()}\n aria-valuetext={formatter().format(endValue())}\n onKeyDown={(e) => onKeyDown('end', e)}\n onFocus={() => setFocusedThumb('end')}\n onBlur={() => setFocusedThumb(null)}\n />\n </div>\n </div>\n </div>\n );\n}\n","/**\n * Toast components for proyecto-viviana-silapse\n *\n * Toast notifications with auto-dismiss, animations, and variants.\n * Built on top of solidaria-components for accessibility.\n */\n\nimport { type JSX, splitProps, For, Show } from 'solid-js';\nimport {\n Toast as HeadlessToast,\n ToastRegion as HeadlessToastRegion,\n ToastProvider as HeadlessToastProvider,\n ToastContext,\n ToastTitle as HeadlessToastTitle,\n ToastDescription as HeadlessToastDescription,\n ToastCloseButton as HeadlessToastCloseButton,\n globalToastQueue,\n addToast as headlessAddToast,\n useToastContext,\n type ToastContent,\n type ToastProps as HeadlessToastProps,\n type ToastRegionProps as HeadlessToastRegionProps,\n type ToastProviderProps as HeadlessToastProviderProps,\n type ToastRenderProps,\n type ToastRegionRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { type QueuedToast, type ToastOptions } from '@proyecto-viviana/solid-stately';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type ToastPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end';\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error' | 'neutral';\n\nexport interface ToastProviderProps extends HeadlessToastProviderProps {}\n\nexport interface ToastRegionProps extends Omit<HeadlessToastRegionProps, 'class' | 'style' | 'children'> {\n /** The placement of the toast region. */\n placement?: ToastPlacement;\n /** Additional CSS class name. */\n class?: string;\n}\n\nexport interface ToastProps extends Omit<HeadlessToastProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst regionStyles = [\n 'flex flex-col gap-3',\n 'p-4',\n].join(' ');\n\nconst toastBaseStyles = [\n 'flex items-start gap-3',\n 'px-4 py-3',\n 'rounded-lg shadow-lg',\n 'min-w-[300px] max-w-[400px]',\n 'border',\n // Animations\n 'data-[animation=entering]:animate-in data-[animation=entering]:fade-in-0 data-[animation=entering]:slide-in-from-right-5',\n 'data-[animation=exiting]:animate-out data-[animation=exiting]:fade-out-0 data-[animation=exiting]:slide-out-to-right-5',\n].join(' ');\n\nconst variantStyles: Record<ToastVariant, string> = {\n info: 'bg-blue-50 border-blue-200 text-blue-800 dark:bg-blue-950 dark:border-blue-800 dark:text-blue-200',\n success: 'bg-green-50 border-green-200 text-green-800 dark:bg-green-950 dark:border-green-800 dark:text-green-200',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-800 dark:bg-yellow-950 dark:border-yellow-800 dark:text-yellow-200',\n error: 'bg-red-50 border-red-200 text-red-800 dark:bg-red-950 dark:border-red-800 dark:text-red-200',\n neutral: 'bg-neutral-50 border-neutral-200 text-neutral-800 dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-200',\n};\n\nconst iconStyles: Record<ToastVariant, string> = {\n info: 'text-blue-500 dark:text-blue-400',\n success: 'text-green-500 dark:text-green-400',\n warning: 'text-yellow-500 dark:text-yellow-400',\n error: 'text-red-500 dark:text-red-400',\n neutral: 'text-neutral-500 dark:text-neutral-400',\n};\n\nconst closeButtonStyles = [\n 'ml-auto -mr-1 -mt-1',\n 'p-1 rounded-md',\n 'text-current opacity-60 hover:opacity-100',\n 'transition-opacity',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2',\n].join(' ');\n\n// ============================================\n// ICONS\n// ============================================\n\nconst InfoIcon = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n);\n\nconst SuccessIcon = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n);\n\nconst WarningIcon = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n </svg>\n);\n\nconst ErrorIcon = () => (\n <svg class=\"w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n);\n\nconst getVariantIcon = (variant: ToastVariant) => {\n switch (variant) {\n case 'success': return <SuccessIcon />;\n case 'warning': return <WarningIcon />;\n case 'error': return <ErrorIcon />;\n case 'info':\n case 'neutral':\n default: return <InfoIcon />;\n }\n};\n\n// ============================================\n// COMPONENTS\n// ============================================\n\n/**\n * ToastProvider creates a toast queue context for descendant components.\n * Wrap your app or a section that needs toast notifications.\n *\n * @example\n * ```tsx\n * <ToastProvider>\n * <App />\n * <ToastRegion placement=\"bottom-end\" />\n * </ToastProvider>\n * ```\n */\nexport function ToastProvider(props: ToastProviderProps): JSX.Element {\n return <HeadlessToastProvider {...props} />;\n}\n\n/**\n * ToastRegion displays all visible toasts in a fixed position.\n *\n * @example\n * ```tsx\n * <ToastRegion placement=\"bottom-end\" />\n * ```\n */\nexport function ToastRegion(props: ToastRegionProps): JSX.Element {\n const [local, rest] = splitProps(props, ['placement', 'class']);\n\n return (\n <HeadlessToastRegion\n {...rest}\n placement={local.placement ?? 'bottom-end'}\n class={(_renderProps: ToastRegionRenderProps) => {\n return [regionStyles, local.class ?? ''].filter(Boolean).join(' ');\n }}\n >\n {(regionProps: ToastRegionRenderProps) => (\n <For each={regionProps.visibleToasts}>\n {(toast) => <Toast toast={toast} />}\n </For>\n )}\n </HeadlessToastRegion>\n );\n}\n\n/**\n * Toast displays an individual notification with icon, content, and close button.\n *\n * Usually you don't need to use this directly - ToastRegion renders toasts automatically.\n */\nexport function Toast(props: ToastProps): JSX.Element {\n const [local, rest] = splitProps(props, ['toast', 'class']);\n\n const content = () => local.toast.content;\n const variant = (): ToastVariant => content().type ?? 'neutral';\n\n return (\n <HeadlessToast\n {...rest}\n toast={local.toast}\n class={(_renderProps: ToastRenderProps) => {\n return [\n toastBaseStyles,\n variantStyles[variant()],\n local.class ?? '',\n ].filter(Boolean).join(' ');\n }}\n >\n {/* Icon */}\n <div class={`flex-shrink-0 ${iconStyles[variant()]}`}>\n {getVariantIcon(variant())}\n </div>\n\n {/* Content */}\n <div class=\"flex-1 min-w-0\">\n <Show when={content().title}>\n <HeadlessToastTitle class=\"font-semibold text-sm\">{content().title}</HeadlessToastTitle>\n </Show>\n <Show when={content().description}>\n <HeadlessToastDescription class=\"text-sm opacity-90 mt-1\">\n {content().description}\n </HeadlessToastDescription>\n </Show>\n <Show when={content().action}>\n <button\n type=\"button\"\n class=\"mt-2 text-sm font-medium underline hover:no-underline\"\n onClick={content().action?.onAction}\n >\n {content().action?.label}\n </button>\n </Show>\n </div>\n\n {/* Close Button */}\n <HeadlessToastCloseButton\n toast={local.toast}\n class={closeButtonStyles}\n aria-label=\"Dismiss\"\n >\n <CloseIcon />\n </HeadlessToastCloseButton>\n </HeadlessToast>\n );\n}\n\n// ============================================\n// GLOBAL TOAST API\n// ============================================\n\n/**\n * Add a toast to the global queue.\n * Use this to show toasts from anywhere in your app.\n *\n * @example\n * ```tsx\n * // Show a success toast\n * addToast({\n * title: 'Success!',\n * description: 'Your changes have been saved.',\n * type: 'success',\n * });\n *\n * // Show an error toast with auto-dismiss\n * addToast({\n * title: 'Error',\n * description: 'Something went wrong.',\n * type: 'error',\n * }, { timeout: 5000 });\n *\n * // Show a toast with action\n * addToast({\n * title: 'File deleted',\n * type: 'info',\n * action: {\n * label: 'Undo',\n * onAction: () => restoreFile(),\n * },\n * }, { timeout: 10000 });\n * ```\n */\nexport function addToast(\n content: ToastContent,\n options?: ToastOptions\n): string {\n return headlessAddToast(content, options);\n}\n\n/**\n * Convenience function to show a success toast.\n */\nexport function toastSuccess(message: string, options?: Omit<ToastOptions, 'priority'>): string {\n return addToast({ title: message, type: 'success' }, { timeout: 5000, ...options });\n}\n\n/**\n * Convenience function to show an error toast.\n */\nexport function toastError(message: string, options?: Omit<ToastOptions, 'priority'>): string {\n return addToast({ title: message, type: 'error' }, { timeout: 8000, ...options });\n}\n\n/**\n * Convenience function to show a warning toast.\n */\nexport function toastWarning(message: string, options?: Omit<ToastOptions, 'priority'>): string {\n return addToast({ title: message, type: 'warning' }, { timeout: 6000, ...options });\n}\n\n/**\n * Convenience function to show an info toast.\n */\nexport function toastInfo(message: string, options?: Omit<ToastOptions, 'priority'>): string {\n return addToast({ title: message, type: 'info' }, { timeout: 5000, ...options });\n}\n\n// Re-exports\nexport {\n ToastContext,\n globalToastQueue,\n useToastContext,\n type ToastContent,\n type ToastRenderProps,\n type ToastRegionRenderProps,\n type QueuedToast,\n type ToastOptions,\n};\n","/**\n * Disclosure and Accordion components for proyecto-viviana-silapse\n *\n * Styled disclosure/accordion components built on top of solidaria-components.\n * Inspired by Spectrum 2's disclosure patterns.\n */\n\nimport { type JSX, splitProps, createContext, useContext, Show } from 'solid-js';\nimport {\n Disclosure as HeadlessDisclosure,\n DisclosureGroup as HeadlessDisclosureGroup,\n DisclosureTrigger as HeadlessDisclosureTrigger,\n DisclosurePanel as HeadlessDisclosurePanel,\n type DisclosureProps as HeadlessDisclosureProps,\n type DisclosureGroupProps as HeadlessDisclosureGroupProps,\n type DisclosureTriggerProps as HeadlessDisclosureTriggerProps,\n type DisclosurePanelProps as HeadlessDisclosurePanelProps,\n type DisclosureRenderProps,\n type DisclosureGroupRenderProps,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// SIZE AND VARIANT CONTEXT\n// ============================================\n\nexport type DisclosureSize = 'sm' | 'md' | 'lg';\nexport type DisclosureVariant = 'default' | 'bordered' | 'filled' | 'ghost';\n\ninterface DisclosureContextValue {\n size: DisclosureSize;\n variant: DisclosureVariant;\n}\n\nconst DisclosureSizeContext = createContext<DisclosureContextValue>({\n size: 'md',\n variant: 'default',\n});\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface DisclosureGroupProps extends Omit<HeadlessDisclosureGroupProps, 'class' | 'style'> {\n /** The size of all disclosures in the group. */\n size?: DisclosureSize;\n /** The visual variant of all disclosures in the group. */\n variant?: DisclosureVariant;\n /** Additional CSS class name. */\n class?: string;\n}\n\nexport interface DisclosureProps extends Omit<HeadlessDisclosureProps, 'class' | 'style'> {\n /** The size of the disclosure. Overrides group size if set. */\n size?: DisclosureSize;\n /** The visual variant. Overrides group variant if set. */\n variant?: DisclosureVariant;\n /** Additional CSS class name. */\n class?: string;\n}\n\nexport interface DisclosureTriggerProps extends Omit<HeadlessDisclosureTriggerProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string;\n /** Optional icon to show (defaults to chevron). */\n hideIcon?: boolean;\n}\n\nexport interface DisclosurePanelProps extends Omit<HeadlessDisclosurePanelProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n trigger: 'px-3 py-2 text-sm',\n panel: 'px-3 py-2 text-sm',\n icon: 'w-4 h-4',\n gap: 'gap-1',\n },\n md: {\n trigger: 'px-4 py-3 text-base',\n panel: 'px-4 py-3 text-base',\n icon: 'w-5 h-5',\n gap: 'gap-2',\n },\n lg: {\n trigger: 'px-5 py-4 text-lg',\n panel: 'px-5 py-4 text-lg',\n icon: 'w-6 h-6',\n gap: 'gap-3',\n },\n};\n\nconst variantStyles = {\n default: {\n container: 'border-b border-primary-700',\n trigger: {\n base: 'w-full flex items-center justify-between text-left transition-colors duration-200',\n default: 'text-primary-200 hover:text-primary-100 hover:bg-bg-400/50',\n disabled: 'text-primary-500 cursor-not-allowed',\n },\n panel: 'text-primary-300',\n },\n bordered: {\n container: 'border border-primary-600 rounded-lg mb-2 overflow-hidden',\n trigger: {\n base: 'w-full flex items-center justify-between text-left transition-colors duration-200',\n default: 'text-primary-200 hover:bg-bg-400/50',\n disabled: 'text-primary-500 cursor-not-allowed',\n },\n panel: 'text-primary-300 border-t border-primary-600',\n },\n filled: {\n container: 'bg-bg-400 rounded-lg mb-2 overflow-hidden',\n trigger: {\n base: 'w-full flex items-center justify-between text-left transition-colors duration-200',\n default: 'text-primary-200 hover:bg-bg-300',\n disabled: 'text-primary-500 cursor-not-allowed',\n },\n panel: 'text-primary-300 bg-bg-300/50',\n },\n ghost: {\n container: '',\n trigger: {\n base: 'w-full flex items-center justify-between text-left transition-colors duration-200 rounded-md',\n default: 'text-primary-200 hover:bg-bg-400/50',\n disabled: 'text-primary-500 cursor-not-allowed',\n },\n panel: 'text-primary-300',\n },\n};\n\n// ============================================\n// DISCLOSURE GROUP COMPONENT\n// ============================================\n\n/**\n * DisclosureGroup manages a group of Disclosure components.\n * Use this to create an accordion where only one item can be expanded at a time.\n *\n * @example\n * ```tsx\n * <DisclosureGroup>\n * <Disclosure id=\"item1\">\n * <DisclosureTrigger>Section 1</DisclosureTrigger>\n * <DisclosurePanel>Content 1</DisclosurePanel>\n * </Disclosure>\n * <Disclosure id=\"item2\">\n * <DisclosureTrigger>Section 2</DisclosureTrigger>\n * <DisclosurePanel>Content 2</DisclosurePanel>\n * </Disclosure>\n * </DisclosureGroup>\n * ```\n */\nexport function DisclosureGroup(props: DisclosureGroupProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n ]);\n\n const size = local.size ?? 'md';\n const variant = local.variant ?? 'default';\n const customClass = local.class ?? '';\n\n const getClassName = (_renderProps: DisclosureGroupRenderProps): string => {\n const base = 'flex flex-col';\n const gapClass = sizeStyles[size].gap;\n return [base, gapClass, customClass].filter(Boolean).join(' ');\n };\n\n return (\n <DisclosureSizeContext.Provider value={{ size, variant }}>\n <HeadlessDisclosureGroup\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n </DisclosureSizeContext.Provider>\n );\n}\n\n// ============================================\n// DISCLOSURE COMPONENT\n// ============================================\n\n/**\n * Disclosure is a widget that can be toggled to show or hide content.\n *\n * @example\n * ```tsx\n * <Disclosure>\n * <DisclosureTrigger>Show more</DisclosureTrigger>\n * <DisclosurePanel>Hidden content here...</DisclosurePanel>\n * </Disclosure>\n * ```\n */\nexport function Disclosure(props: DisclosureProps): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n ]);\n\n const parentCtx = useContext(DisclosureSizeContext);\n const size = local.size ?? parentCtx.size;\n const variant = local.variant ?? parentCtx.variant;\n const customClass = local.class ?? '';\n\n const getClassName = (_renderProps: DisclosureRenderProps): string => {\n const variantClass = variantStyles[variant].container;\n return [variantClass, customClass].filter(Boolean).join(' ');\n };\n\n return (\n <DisclosureSizeContext.Provider value={{ size, variant }}>\n <HeadlessDisclosure\n {...headlessProps}\n class={getClassName}\n >\n {props.children}\n </HeadlessDisclosure>\n </DisclosureSizeContext.Provider>\n );\n}\n\n// ============================================\n// DISCLOSURE TRIGGER COMPONENT\n// ============================================\n\n/**\n * DisclosureTrigger is the button that toggles the disclosure.\n * The chevron rotates based on the data-expanded attribute using Tailwind's group class.\n */\nexport function DisclosureTrigger(props: DisclosureTriggerProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'hideIcon']);\n const ctx = useContext(DisclosureSizeContext);\n const customClass = local.class ?? '';\n\n return (\n <HeadlessDisclosureTrigger\n {...headlessProps}\n class={[\n 'group', // Enable Tailwind group selector for chevron rotation\n variantStyles[ctx.variant].trigger.base,\n sizeStyles[ctx.size].trigger,\n customClass,\n ].filter(Boolean).join(' ')}\n >\n {props.children}\n <Show when={!local.hideIcon}>\n <svg\n class={[\n sizeStyles[ctx.size].icon,\n 'transition-transform duration-200',\n 'group-data-[expanded=true]:rotate-180', // Rotate when expanded\n ].filter(Boolean).join(' ')}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n style={{ \"flex-shrink\": 0 }}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </Show>\n </HeadlessDisclosureTrigger>\n );\n}\n\n// ============================================\n// DISCLOSURE PANEL COMPONENT\n// ============================================\n\n/**\n * DisclosurePanel contains the content that is shown/hidden.\n */\nexport function DisclosurePanel(props: DisclosurePanelProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class']);\n const ctx = useContext(DisclosureSizeContext);\n const customClass = local.class ?? '';\n\n const getClassName = (_renderProps: DisclosureRenderProps): string => {\n const base = variantStyles[ctx.variant].panel;\n const sizeClass = sizeStyles[ctx.size].panel;\n return [base, sizeClass, customClass].filter(Boolean).join(' ');\n };\n\n return (\n <HeadlessDisclosurePanel\n {...headlessProps}\n class={getClassName}\n children={props.children}\n />\n );\n}\n\n// Attach sub-components for convenience\nDisclosure.Trigger = DisclosureTrigger;\nDisclosure.Panel = DisclosurePanel;\nDisclosureGroup.Item = Disclosure;\n","/**\n * Meter component for proyecto-viviana-silapse\n *\n * Styled meter component built on top of solidaria-components.\n * Meters represent a quantity within a known range (unlike progress bars which show progress toward a goal).\n */\n\nimport { type JSX, splitProps, Show, createUniqueId } from 'solid-js';\nimport {\n Meter as HeadlessMeter,\n type MeterRenderProps as HeadlessMeterRenderProps,\n} from '@proyecto-viviana/solidaria-components';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type MeterSize = 'sm' | 'md' | 'lg';\nexport type MeterVariant = 'primary' | 'accent' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface MeterProps {\n /** The current value (controlled). @default 0 */\n value?: number;\n /** The smallest value allowed. @default 0 */\n minValue?: number;\n /** The largest value allowed. @default 100 */\n maxValue?: number;\n /** The content to display as the value's label (e.g. \"75 GB\"). */\n valueLabel?: string;\n /** The size of the meter. @default 'md' */\n size?: MeterSize;\n /** The visual style variant. @default 'primary' */\n variant?: MeterVariant;\n /** The label to display above the meter. */\n label?: string;\n /** Whether to show the value text. @default true */\n showValueLabel?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** An accessibility label. */\n 'aria-label'?: string;\n /** Reference to external label element. */\n 'aria-labelledby'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n track: 'h-1',\n text: 'text-xs',\n },\n md: {\n track: 'h-2',\n text: 'text-sm',\n },\n lg: {\n track: 'h-3',\n text: 'text-base',\n },\n};\n\nconst variantStyles = {\n primary: 'bg-primary-500',\n accent: 'bg-accent',\n success: 'bg-green-500',\n warning: 'bg-yellow-500',\n danger: 'bg-red-500',\n info: 'bg-blue-500',\n};\n\n// ============================================\n// METER COMPONENT\n// ============================================\n\n/**\n * Meters represent a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n *\n * @example\n * ```tsx\n * // Storage usage meter\n * <Meter value={75} label=\"Storage space\" valueLabel=\"75 GB of 100 GB\" />\n *\n * // Battery level\n * <Meter value={25} variant=\"warning\" label=\"Battery\" />\n *\n * // CPU usage with dynamic color\n * <Meter value={cpuUsage} variant={cpuUsage > 80 ? 'danger' : 'success'} label=\"CPU\" />\n * ```\n */\nexport function Meter(props: MeterProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'variant',\n 'label',\n 'showValueLabel',\n 'class',\n ]);\n\n const size = () => local.size ?? 'md';\n const variant = () => local.variant ?? 'primary';\n const sizeConfig = () => sizeStyles[size()];\n const labelId = createUniqueId();\n const renderChildren = ({ valueText, percentage }: HeadlessMeterRenderProps) => {\n const showValueLabel = local.showValueLabel ?? true;\n return (\n <>\n <Show when={local.label || showValueLabel}>\n <div class={`flex justify-between items-center mb-1 ${sizeConfig().text}`}>\n <Show when={local.label}>\n <span id={labelId} class=\"text-primary-200 font-medium\">{local.label}</span>\n </Show>\n <Show when={showValueLabel}>\n <span class=\"text-primary-300\">{valueText}</span>\n </Show>\n </div>\n </Show>\n\n <div class={`w-full ${sizeConfig().track} bg-bg-300 rounded-full overflow-hidden`}>\n <div\n class={`h-full rounded-full transition-all duration-300 ${variantStyles[variant()]}`}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </>\n );\n };\n\n return (\n <HeadlessMeter\n {...headlessProps}\n aria-labelledby={headlessProps['aria-labelledby'] ?? (!headlessProps['aria-label'] && local.label ? labelId : undefined)}\n aria-label={headlessProps['aria-label']}\n class={`w-full ${local.class ?? ''}`}\n children={renderChildren}\n />\n );\n}\n","/**\n * TagGroup component for proyecto-viviana-silapse\n *\n * Styled tag group component built on top of solidaria-components.\n * A tag group displays a collection of tags that can be selected and/or removed.\n */\n\nimport { type JSX, splitProps, Show, createUniqueId } from 'solid-js';\nimport {\n TagList as HeadlessTagList,\n Tag as HeadlessTag,\n TagRemoveButton as HeadlessTagRemoveButton,\n} from '@proyecto-viviana/solidaria-components';\nimport type { Key, SelectionMode } from '@proyecto-viviana/solid-stately';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TagGroupSize = 'sm' | 'md' | 'lg';\nexport type TagGroupVariant = 'default' | 'outline' | 'solid';\n\nexport interface TagGroupProps<T> {\n /** The label for the tag group. */\n label?: string;\n /** The items to display as tags. */\n items: T[];\n /** Function to render the content of each tag. */\n children: (item: T) => JSX.Element;\n /** Function to get a unique key from an item. */\n getKey?: (item: T) => Key;\n /** Handler called when tags are removed. */\n onRemove?: (keys: Set<Key>) => void;\n /** The size of the tags. @default 'md' */\n size?: TagGroupSize;\n /** The visual variant of the tags. @default 'default' */\n variant?: TagGroupVariant;\n /** The selection mode. @default 'none' */\n selectionMode?: SelectionMode;\n /** The currently selected keys (controlled). */\n selectedKeys?: Iterable<Key>;\n /** The default selected keys (uncontrolled). */\n defaultSelectedKeys?: Iterable<Key>;\n /** Handler called when selection changes. */\n onSelectionChange?: (keys: 'all' | Set<Key>) => void;\n /** Keys that are disabled. */\n disabledKeys?: Iterable<Key>;\n /** Whether all tags are disabled. */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Content to render when empty. */\n renderEmptyState?: () => JSX.Element;\n}\n\nexport interface TagProps {\n /** A unique key for this tag. */\n id: Key;\n /** The content of the tag. */\n children: JSX.Element;\n /** Whether the tag is disabled. */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n tag: 'text-xs px-2 py-0.5 gap-1',\n removeButton: 'w-3 h-3',\n label: 'text-xs',\n },\n md: {\n tag: 'text-sm px-2.5 py-1 gap-1.5',\n removeButton: 'w-4 h-4',\n label: 'text-sm',\n },\n lg: {\n tag: 'text-base px-3 py-1.5 gap-2',\n removeButton: 'w-5 h-5',\n label: 'text-base',\n },\n};\n\nconst variantStyles = {\n default: {\n tag: 'bg-bg-400 text-primary-200 hover:bg-bg-300',\n selected: 'bg-accent text-bg-400',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n outline: {\n tag: 'border border-primary-600 text-primary-200 hover:border-primary-500 hover:bg-bg-400/50',\n selected: 'border-accent bg-accent/10 text-accent',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n solid: {\n tag: 'bg-primary-700 text-primary-100 hover:bg-primary-600',\n selected: 'bg-accent text-bg-400',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n};\n\n// ============================================\n// TAG GROUP COMPONENT\n// ============================================\n\n/**\n * A tag group displays a collection of tags that can be selected and/or removed.\n *\n * @example\n * ```tsx\n * // Simple tag group\n * <TagGroup\n * label=\"Categories\"\n * items={categories}\n * onRemove={(keys) => removeCategories(keys)}\n * >\n * {(item) => item.name}\n * </TagGroup>\n *\n * // With selection\n * <TagGroup\n * label=\"Filters\"\n * items={filters}\n * selectionMode=\"multiple\"\n * selectedKeys={selectedFilters}\n * onSelectionChange={setSelectedFilters}\n * >\n * {(item) => item.label}\n * </TagGroup>\n * ```\n */\nexport function TagGroup<T extends { id?: Key; key?: Key }>(props: TagGroupProps<T>): JSX.Element {\n const [local] = splitProps(props, [\n 'label',\n 'items',\n 'getKey',\n 'onRemove',\n 'size',\n 'variant',\n 'selectionMode',\n 'selectedKeys',\n 'defaultSelectedKeys',\n 'onSelectionChange',\n 'disabledKeys',\n 'isDisabled',\n 'class',\n 'renderEmptyState',\n ]);\n\n const labelId = createUniqueId();\n const size = () => local.size ?? 'md';\n const variant = () => local.variant ?? 'default';\n const sizeConfig = () => sizeStyles[size()];\n const variantConfig = () => variantStyles[variant()];\n\n // Default getKey function\n const getKey = (item: T): Key => {\n if (local.getKey) return local.getKey(item);\n if (item.id !== undefined) return item.id;\n if (item.key !== undefined) return item.key;\n return String(item);\n };\n\n return (\n <div class={`flex flex-col gap-2 ${local.class ?? ''}`}>\n <Show when={local.label}>\n <span id={labelId} class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {local.label}\n </span>\n </Show>\n <HeadlessTagList\n items={local.items}\n getKey={getKey}\n onRemove={local.onRemove}\n selectionMode={local.selectionMode}\n selectedKeys={local.selectedKeys}\n defaultSelectedKeys={local.defaultSelectedKeys}\n onSelectionChange={local.onSelectionChange}\n disabledKeys={local.disabledKeys}\n isDisabled={local.isDisabled}\n aria-labelledby={local.label ? labelId : undefined}\n class=\"flex flex-wrap gap-2\"\n renderEmptyState={local.renderEmptyState ?? (() => (\n <span class=\"text-primary-400 text-sm italic\">No items</span>\n ))}\n >\n {(item) => (\n <HeadlessTag\n id={getKey(item)}\n class={({ isSelected, isDisabled }) => {\n const base = `\n inline-flex items-center rounded-full\n transition-colors duration-150 cursor-pointer\n focus:outline-none focus:ring-2 focus:ring-accent/50\n ${sizeConfig().tag}\n `;\n const variantClass = isSelected\n ? variantConfig().selected\n : variantConfig().tag;\n const disabledClass = isDisabled ? variantConfig().disabled : '';\n return `${base} ${variantClass} ${disabledClass}`.trim();\n }}\n >\n {(renderProps) => (\n <>\n <span>{props.children(item)}</span>\n <Show when={renderProps.allowsRemoving}>\n <HeadlessTagRemoveButton\n buttonProps={renderProps.removeButtonProps}\n class={`\n ${sizeConfig().removeButton}\n rounded-full flex items-center justify-center\n hover:bg-black/20 transition-colors\n focus:outline-none\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-full h-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </HeadlessTagRemoveButton>\n </Show>\n </>\n )}\n </HeadlessTag>\n )}\n </HeadlessTagList>\n </div>\n );\n}\n\n// Re-export types\nexport type { Key, SelectionMode };\n","/**\n * LabeledValue component for proyecto-viviana-silapse.\n *\n * Styling-only presentation primitive for read-only label/value pairs.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js';\nimport { Label as UILabel } from '../label';\nimport { Text as UIText } from '../text';\n\nexport type LabeledValueOrientation = 'vertical' | 'horizontal';\n\nexport interface LabeledValueProps {\n /** Visible label content. */\n label: JSX.Element;\n /** Value content. Prefer this over children for clarity. */\n value?: JSX.Element;\n /** Alternate value content. */\n children?: JSX.Element;\n /** Layout orientation. @default 'vertical' */\n orientation?: LabeledValueOrientation;\n /** Additional class for root container. */\n class?: string;\n /** Additional class for label slot. */\n labelClass?: string;\n /** Additional class for value slot. */\n valueClass?: string;\n}\n\nconst orientationStyles: Record<LabeledValueOrientation, string> = {\n vertical: 'flex-col items-start gap-1',\n horizontal: 'flex-row items-center justify-between gap-3',\n};\n\nexport function LabeledValue(props: LabeledValueProps): JSX.Element {\n const [local] = splitProps(props, [\n 'label',\n 'value',\n 'children',\n 'orientation',\n 'class',\n 'labelClass',\n 'valueClass',\n ]);\n\n const orientation = () => local.orientation ?? 'vertical';\n const resolvedValue = () => local.value ?? local.children;\n\n return (\n <div class={`flex ${orientationStyles[orientation()]} ${local.class ?? ''}`}>\n <UILabel size=\"sm\" class={`text-primary-400 ${local.labelClass ?? ''}`}>\n {local.label}\n </UILabel>\n <Show when={resolvedValue()}>\n <UIText size=\"md\" variant=\"default\" class={local.valueClass}>\n {resolvedValue()}\n </UIText>\n </Show>\n </div>\n );\n}\n\n","/**\n * StatusLight component for proyecto-viviana-silapse.\n *\n * Styling-only status indicator primitive.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js';\n\nexport type StatusLightVariant = 'neutral' | 'positive' | 'notice' | 'negative' | 'info';\nexport type StatusLightSize = 'sm' | 'md' | 'lg';\n\nexport interface StatusLightProps {\n /** Visual status variant. @default 'neutral' */\n variant?: StatusLightVariant;\n /** Indicator size. @default 'md' */\n size?: StatusLightSize;\n /** Optional visible text. */\n children?: JSX.Element;\n /** Additional CSS class for root container. */\n class?: string;\n /** Additional CSS class for the indicator dot. */\n indicatorClass?: string;\n}\n\nconst variantStyles: Record<StatusLightVariant, string> = {\n neutral: 'bg-primary-400',\n positive: 'bg-green-500',\n notice: 'bg-yellow-500',\n negative: 'bg-danger-400',\n info: 'bg-accent',\n};\n\nconst sizeStyles: Record<StatusLightSize, { dot: string; text: string }> = {\n sm: { dot: 'h-2 w-2', text: 'text-xs' },\n md: { dot: 'h-2.5 w-2.5', text: 'text-sm' },\n lg: { dot: 'h-3 w-3', text: 'text-base' },\n};\n\nexport function StatusLight(props: StatusLightProps): JSX.Element {\n const [local] = splitProps(props, ['variant', 'size', 'children', 'class', 'indicatorClass']);\n const variant = () => local.variant ?? 'neutral';\n const size = () => local.size ?? 'md';\n\n return (\n <span class={`inline-flex items-center gap-2 text-primary-200 ${sizeStyles[size()].text} ${local.class ?? ''}`}>\n <span\n aria-hidden=\"true\"\n class={`inline-block rounded-full ${sizeStyles[size()].dot} ${variantStyles[variant()]} ${local.indicatorClass ?? ''}`}\n />\n <Show when={local.children}>{local.children}</Show>\n </span>\n );\n}\n\n","/**\n * Calendar component for proyecto-viviana-silapse\n *\n * Styled calendar component built on top of solidaria-components.\n * A calendar displays a grid of days and allows users to select dates.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n Calendar as HeadlessCalendar,\n CalendarHeading,\n CalendarButton,\n CalendarGrid,\n CalendarCell,\n type CalendarDate,\n type DateValue,\n} from '@proyecto-viviana/solidaria-components';\nimport type { CalendarStateProps } from '@proyecto-viviana/solid-stately';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type CalendarSize = 'sm' | 'md' | 'lg';\n\nexport interface CalendarProps<T extends DateValue = DateValue>\n extends Omit<CalendarStateProps<T>, 'locale'> {\n /** The size of the calendar. @default 'md' */\n size?: CalendarSize;\n /** Additional CSS class name. */\n class?: string;\n /** Whether to show week numbers. */\n showWeekNumbers?: boolean;\n /** The locale to use for formatting. */\n locale?: string;\n /** Custom aria label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'w-64',\n header: 'text-sm',\n cell: 'w-8 h-8 text-xs',\n button: 'w-6 h-6',\n },\n md: {\n container: 'w-80',\n header: 'text-base',\n cell: 'w-10 h-10 text-sm',\n button: 'w-8 h-8',\n },\n lg: {\n container: 'w-96',\n header: 'text-lg',\n cell: 'w-12 h-12 text-base',\n button: 'w-10 h-10',\n },\n};\n\n// ============================================\n// CALENDAR COMPONENT\n// ============================================\n\n/**\n * A calendar displays a grid of days and allows users to select a date.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Calendar\n * aria-label=\"Event date\"\n * onChange={(date) => console.log(date)}\n * />\n *\n * // Controlled\n * const [date, setDate] = createSignal<CalendarDate | null>(null);\n * <Calendar\n * value={date()}\n * onChange={setDate}\n * />\n *\n * // With min/max dates\n * <Calendar\n * minValue={today(getLocalTimeZone())}\n * maxValue={today(getLocalTimeZone()).add({ months: 3 })}\n * />\n * ```\n */\nexport function Calendar<T extends DateValue = CalendarDate>(\n props: CalendarProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'showWeekNumbers',\n 'aria-label',\n ]);\n\n const size = () => local.size ?? 'md';\n const sizeConfig = () => sizeStyles[size()];\n\n return (\n <HeadlessCalendar\n {...rest}\n aria-label={local['aria-label']}\n class={`\n ${sizeConfig().container}\n bg-bg-500 rounded-lg border border-primary-700 p-4\n ${local.class ?? ''}\n `}\n >\n {/* Header with navigation */}\n <header class=\"flex items-center justify-between mb-4\">\n <CalendarButton\n slot=\"previous\"\n class={`\n ${sizeConfig().button}\n flex items-center justify-center\n rounded-md text-primary-200\n hover:bg-bg-400 transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-4 h-4\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </CalendarButton>\n\n <CalendarHeading\n class={`\n font-semibold text-primary-100\n ${sizeConfig().header}\n `}\n />\n\n <CalendarButton\n slot=\"next\"\n class={`\n ${sizeConfig().button}\n flex items-center justify-center\n rounded-md text-primary-200\n hover:bg-bg-400 transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-4 h-4\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </CalendarButton>\n </header>\n\n {/* Calendar grid */}\n <CalendarGrid\n class=\"w-full border-collapse\"\n >\n {(date) => (\n <CalendarCell\n date={date}\n class={({ isSelected, isFocused, isDisabled, isOutsideMonth, isToday, isPressed }) => {\n const base = `\n ${sizeConfig().cell}\n flex items-center justify-center\n rounded-md cursor-pointer\n transition-colors duration-150\n focus:outline-none\n `;\n\n let stateClass = '';\n\n if (isDisabled) {\n stateClass = 'text-primary-600 cursor-not-allowed';\n } else if (isSelected) {\n stateClass = 'bg-accent text-bg-400 font-medium';\n } else if (isOutsideMonth) {\n stateClass = 'text-primary-600';\n } else if (isToday) {\n stateClass = 'ring-1 ring-accent text-primary-100';\n } else {\n stateClass = 'text-primary-200 hover:bg-bg-400';\n }\n\n const focusClass = isFocused && !isSelected\n ? 'ring-2 ring-accent/50'\n : '';\n\n const pressedClass = isPressed && !isDisabled\n ? 'scale-95'\n : '';\n\n return `${base} ${stateClass} ${focusClass} ${pressedClass}`.trim();\n }}\n />\n )}\n </CalendarGrid>\n </HeadlessCalendar>\n );\n}\n\n// Re-export types\nexport type { CalendarDate, DateValue };\n","/**\n * RangeCalendar component for proyecto-viviana-silapse\n *\n * Styled range calendar component built on top of solidaria-components.\n * A range calendar displays a grid of days and allows users to select a date range.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n RangeCalendar as HeadlessRangeCalendar,\n RangeCalendarHeading,\n RangeCalendarButton,\n RangeCalendarGrid,\n RangeCalendarCell,\n type CalendarDate,\n type DateValue,\n type RangeValue,\n} from '@proyecto-viviana/solidaria-components';\nimport type { RangeCalendarStateProps } from '@proyecto-viviana/solid-stately';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type RangeCalendarSize = 'sm' | 'md' | 'lg';\n\nexport interface RangeCalendarProps<T extends DateValue = DateValue>\n extends Omit<RangeCalendarStateProps<T>, 'locale'> {\n /** The size of the calendar. @default 'md' */\n size?: RangeCalendarSize;\n /** Additional CSS class name. */\n class?: string;\n /** The locale to use for formatting. */\n locale?: string;\n /** Custom aria label. */\n 'aria-label'?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'w-64',\n header: 'text-sm',\n cell: 'w-8 h-8 text-xs',\n button: 'w-6 h-6',\n },\n md: {\n container: 'w-80',\n header: 'text-base',\n cell: 'w-10 h-10 text-sm',\n button: 'w-8 h-8',\n },\n lg: {\n container: 'w-96',\n header: 'text-lg',\n cell: 'w-12 h-12 text-base',\n button: 'w-10 h-10',\n },\n};\n\n// ============================================\n// RANGE CALENDAR COMPONENT\n// ============================================\n\n/**\n * A range calendar displays a grid of days and allows users to select a date range.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <RangeCalendar\n * aria-label=\"Trip dates\"\n * onChange={(range) => console.log(range)}\n * />\n *\n * // Controlled\n * const [range, setRange] = createSignal<RangeValue<CalendarDate> | null>(null);\n * <RangeCalendar\n * value={range()}\n * onChange={setRange}\n * />\n * ```\n */\nexport function RangeCalendar<T extends DateValue = CalendarDate>(\n props: RangeCalendarProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'aria-label',\n ]);\n\n const size = () => local.size ?? 'md';\n const sizeConfig = () => sizeStyles[size()];\n\n return (\n <HeadlessRangeCalendar\n {...rest}\n aria-label={local['aria-label']}\n class={`\n ${sizeConfig().container}\n bg-bg-500 rounded-lg border border-primary-700 p-4\n ${local.class ?? ''}\n `}\n >\n {/* Header with navigation */}\n <header class=\"flex items-center justify-between mb-4\">\n <RangeCalendarButton\n slot=\"previous\"\n class={`\n ${sizeConfig().button}\n flex items-center justify-center\n rounded-md text-primary-200\n hover:bg-bg-400 transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-4 h-4\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </RangeCalendarButton>\n\n <RangeCalendarHeading\n class={`\n font-semibold text-primary-100\n ${sizeConfig().header}\n `}\n />\n\n <RangeCalendarButton\n slot=\"next\"\n class={`\n ${sizeConfig().button}\n flex items-center justify-center\n rounded-md text-primary-200\n hover:bg-bg-400 transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-4 h-4\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </RangeCalendarButton>\n </header>\n\n {/* Calendar grid */}\n <RangeCalendarGrid\n class=\"w-full border-collapse [&_.solidaria-RangeCalendarHeaderCell]:text-primary-200\"\n >\n {(date) => (\n <RangeCalendarCell\n date={date}\n class={({\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isFocused,\n isDisabled,\n isOutsideMonth,\n isToday,\n isPressed,\n }) => {\n const base = `\n ${sizeConfig().cell}\n flex items-center justify-center\n cursor-pointer\n transition-colors duration-150\n focus:outline-none\n `;\n\n let stateClass = '';\n let roundedClass = 'rounded-md';\n\n if (isDisabled) {\n stateClass = 'text-primary-600 cursor-not-allowed';\n } else if (isSelectionStart && isSelectionEnd) {\n // Single day selection\n stateClass = 'bg-accent text-bg-400 font-medium';\n roundedClass = 'rounded-md';\n } else if (isSelectionStart) {\n stateClass = 'bg-accent text-bg-400 font-medium';\n roundedClass = 'rounded-l-md rounded-r-none';\n } else if (isSelectionEnd) {\n stateClass = 'bg-accent text-bg-400 font-medium';\n roundedClass = 'rounded-r-md rounded-l-none';\n } else if (isSelected) {\n stateClass = 'bg-accent/20 text-primary-100';\n roundedClass = 'rounded-none';\n } else if (isOutsideMonth) {\n stateClass = 'text-primary-600';\n } else if (isToday) {\n stateClass = 'ring-1 ring-accent text-primary-100';\n } else {\n stateClass = 'text-primary-200 hover:bg-bg-400';\n }\n\n const focusClass = isFocused && !isSelected\n ? 'ring-2 ring-accent/50'\n : '';\n\n const pressedClass = isPressed && !isDisabled\n ? 'scale-95'\n : '';\n\n return `${base} ${stateClass} ${roundedClass} ${focusClass} ${pressedClass}`.trim();\n }}\n />\n )}\n </RangeCalendarGrid>\n </HeadlessRangeCalendar>\n );\n}\n\n// Re-export types\nexport type { RangeValue };\n","/**\n * DateField component for proyecto-viviana-silapse\n *\n * Styled date field component with segment-based editing.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n DateField as HeadlessDateField,\n DateFieldLabel,\n DateFieldDescription,\n DateFieldErrorMessage,\n DateInput,\n DateSegment,\n type DateFieldProps as HeadlessDateFieldProps,\n type CalendarDate,\n type DateValue,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type DateFieldSize = 'sm' | 'md' | 'lg';\n\nexport interface DateFieldProps<T extends DateValue = DateValue>\n extends Omit<HeadlessDateFieldProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the field. @default 'md' */\n size?: DateFieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label for the field. */\n label?: string;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n input: 'px-2 py-1 gap-0.5',\n segment: 'px-0.5',\n label: 'text-xs',\n },\n md: {\n container: 'text-base',\n input: 'px-3 py-2 gap-1',\n segment: 'px-1',\n label: 'text-sm',\n },\n lg: {\n container: 'text-lg',\n input: 'px-4 py-3 gap-1.5',\n segment: 'px-1.5',\n label: 'text-base',\n },\n};\n\n// ============================================\n// DATE FIELD COMPONENT\n// ============================================\n\n/**\n * A date field allows users to enter and edit date values using a keyboard.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <DateField label=\"Birth date\" />\n *\n * // Controlled\n * const [date, setDate] = createSignal<CalendarDate | null>(null);\n * <DateField\n * label=\"Event date\"\n * value={date()}\n * onChange={setDate}\n * />\n *\n * // With validation\n * <DateField\n * label=\"Future date\"\n * minValue={today(getLocalTimeZone())}\n * errorMessage=\"Date must be in the future\"\n * />\n * ```\n */\nexport function DateField<T extends DateValue = CalendarDate>(\n props: DateFieldProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ]);\n\n const size = () => local.size ?? 'md';\n const sizeConfig = () => sizeStyles[size()];\n const isInvalid = () => local.isInvalid || !!local.errorMessage;\n\n return (\n <HeadlessDateField\n {...rest}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={`\n flex flex-col gap-1\n ${sizeConfig().container}\n ${local.class ?? ''}\n `}\n >\n {/* Label */}\n {local.label && (\n <DateFieldLabel class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {local.label}\n {rest.isRequired && <span class=\"text-red-500 ml-0.5\">*</span>}\n </DateFieldLabel>\n )}\n\n {/* Input container */}\n <DateInput\n class={({ isFocused, isDisabled }) => {\n const base = `\n inline-flex items-center\n ${sizeConfig().input}\n bg-bg-400 rounded-md border\n transition-colors duration-150\n `;\n\n let borderClass = 'border-primary-600';\n if (isInvalid()) {\n borderClass = 'border-red-500';\n } else if (isFocused) {\n borderClass = 'border-accent';\n }\n\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : '';\n\n const focusClass = isFocused\n ? 'ring-2 ring-accent/30'\n : '';\n\n return `${base} ${borderClass} ${disabledClass} ${focusClass}`.trim();\n }}\n >\n {(segment) => (\n <DateSegment\n segment={segment}\n class={({ isFocused, isPlaceholder, isEditable }) => {\n const base = `\n ${sizeConfig().segment}\n rounded\n outline-none\n tabular-nums\n `;\n\n let stateClass = '';\n if (segment.type === 'literal') {\n stateClass = 'text-primary-400';\n } else if (isPlaceholder) {\n stateClass = 'text-primary-500 italic';\n } else {\n stateClass = 'text-primary-100';\n }\n\n const focusClass = isFocused && isEditable\n ? 'bg-accent text-bg-400'\n : '';\n\n return `${base} ${stateClass} ${focusClass}`.trim();\n }}\n />\n )}\n </DateInput>\n\n {/* Description */}\n {local.description && !isInvalid() && (\n <DateFieldDescription class={`text-primary-400 ${sizeConfig().label}`}>\n {local.description}\n </DateFieldDescription>\n )}\n\n {/* Error message */}\n {isInvalid() && local.errorMessage && (\n <DateFieldErrorMessage class={`text-red-500 ${sizeConfig().label}`}>\n {local.errorMessage}\n </DateFieldErrorMessage>\n )}\n </HeadlessDateField>\n );\n}\n\n// Re-export types\nexport type { CalendarDate, DateValue };\n","/**\n * TimeField component for proyecto-viviana-silapse\n *\n * Styled time field component with segment-based editing.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\nimport {\n TimeField as HeadlessTimeField,\n TimeFieldLabel,\n TimeFieldDescription,\n TimeFieldErrorMessage,\n TimeInput,\n TimeSegment,\n type TimeFieldProps as HeadlessTimeFieldProps,\n type TimeValue,\n} from '@proyecto-viviana/solidaria-components';\nimport { useProviderProps } from '../provider';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type TimeFieldSize = 'sm' | 'md' | 'lg';\n\nexport interface TimeFieldProps<T extends TimeValue = TimeValue>\n extends Omit<HeadlessTimeFieldProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the field. @default 'md' */\n size?: TimeFieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label for the field. */\n label?: string;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n input: 'px-2 py-1 gap-0.5',\n segment: 'px-0.5',\n label: 'text-xs',\n },\n md: {\n container: 'text-base',\n input: 'px-3 py-2 gap-1',\n segment: 'px-1',\n label: 'text-sm',\n },\n lg: {\n container: 'text-lg',\n input: 'px-4 py-3 gap-1.5',\n segment: 'px-1.5',\n label: 'text-base',\n },\n};\n\n// ============================================\n// TIME FIELD COMPONENT\n// ============================================\n\n/**\n * A time field allows users to enter and edit time values using a keyboard.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TimeField label=\"Start time\" />\n *\n * // With 24-hour format\n * <TimeField\n * label=\"Meeting time\"\n * hourCycle={24}\n * />\n *\n * // With seconds\n * <TimeField\n * label=\"Precise time\"\n * granularity=\"second\"\n * />\n * ```\n */\nexport function TimeField<T extends TimeValue = TimeValue>(\n props: TimeFieldProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props);\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ]);\n\n const size = () => local.size ?? 'md';\n const sizeConfig = () => sizeStyles[size()];\n const isInvalid = () => local.isInvalid || !!local.errorMessage;\n\n return (\n <HeadlessTimeField\n {...rest}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={`\n flex flex-col gap-1\n ${sizeConfig().container}\n ${local.class ?? ''}\n `}\n >\n {/* Label */}\n {local.label && (\n <TimeFieldLabel class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {local.label}\n {rest.isRequired && <span class=\"text-red-500 ml-0.5\">*</span>}\n </TimeFieldLabel>\n )}\n\n {/* Input container */}\n <TimeInput\n class={({ isFocused, isDisabled }) => {\n const base = `\n inline-flex items-center\n ${sizeConfig().input}\n bg-bg-400 rounded-md border\n transition-colors duration-150\n `;\n\n let borderClass = 'border-primary-600';\n if (isInvalid()) {\n borderClass = 'border-red-500';\n } else if (isFocused) {\n borderClass = 'border-accent';\n }\n\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : '';\n\n const focusClass = isFocused\n ? 'ring-2 ring-accent/30'\n : '';\n\n return `${base} ${borderClass} ${disabledClass} ${focusClass}`.trim();\n }}\n >\n {(segment) => (\n <TimeSegment\n segment={segment}\n class={({ isFocused, isPlaceholder, isEditable }) => {\n const base = `\n ${sizeConfig().segment}\n rounded\n outline-none\n tabular-nums\n `;\n\n let stateClass = '';\n if (segment.type === 'literal') {\n stateClass = 'text-primary-400';\n } else if (isPlaceholder) {\n stateClass = 'text-primary-500 italic';\n } else {\n stateClass = 'text-primary-100';\n }\n\n const focusClass = isFocused && isEditable\n ? 'bg-accent text-bg-400'\n : '';\n\n return `${base} ${stateClass} ${focusClass}`.trim();\n }}\n />\n )}\n </TimeInput>\n\n {/* Description */}\n {local.description && !isInvalid() && (\n <TimeFieldDescription class={`text-primary-400 ${sizeConfig().label}`}>\n {local.description}\n </TimeFieldDescription>\n )}\n\n {/* Error message */}\n {isInvalid() && local.errorMessage && (\n <TimeFieldErrorMessage class={`text-red-500 ${sizeConfig().label}`}>\n {local.errorMessage}\n </TimeFieldErrorMessage>\n )}\n </HeadlessTimeField>\n );\n}\n\n// Re-export types\nexport type { TimeValue };\n","/**\n * DatePicker component for proyecto-viviana-silapse\n *\n * Styled date picker component that combines a date field with a calendar popup.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js'\nimport {\n DatePicker as HeadlessDatePicker,\n DatePickerLabel as HeadlessDatePickerLabel,\n DatePickerDescription as HeadlessDatePickerDescription,\n DatePickerErrorMessage as HeadlessDatePickerErrorMessage,\n DatePickerButton,\n DatePickerContent,\n DateInput,\n DateSegment,\n type DatePickerProps as HeadlessDatePickerProps,\n type CalendarDate,\n type DateValue,\n} from '@proyecto-viviana/solidaria-components'\nimport { Calendar } from './index'\nimport { useProviderProps } from '../provider'\n\n// Calendar icon component - use function to ensure consistent hydration\nfunction CalendarIcon(): JSX.Element {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-5 h-5\"\n aria-hidden=\"true\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n )\n}\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type DatePickerSize = 'sm' | 'md' | 'lg'\n\nexport interface DatePickerProps<T extends DateValue = DateValue>\n extends Omit<HeadlessDatePickerProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the picker. @default 'md' */\n size?: DatePickerSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the field. */\n label?: string\n /** Description text. */\n description?: string\n /** Error message. */\n errorMessage?: string\n /** Placeholder text. */\n placeholder?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n input: 'px-2 py-1 gap-0.5',\n segment: 'px-0.5',\n label: 'text-xs',\n button: 'w-7 h-7',\n },\n md: {\n container: 'text-base',\n input: 'px-3 py-2 gap-1',\n segment: 'px-1',\n label: 'text-sm',\n button: 'w-9 h-9',\n },\n lg: {\n container: 'text-lg',\n input: 'px-4 py-3 gap-1.5',\n segment: 'px-1.5',\n label: 'text-base',\n button: 'w-11 h-11',\n },\n}\n\n// ============================================\n// DATE PICKER COMPONENT\n// ============================================\n\n/**\n * A date picker combines a date field and a calendar popup.\n */\nexport function DatePicker<T extends DateValue = CalendarDate>(\n props: DatePickerProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n 'placeholder',\n ])\n\n const size = () => local.size ?? 'md'\n const sizeConfig = () => sizeStyles[size()]\n const isInvalid = () => local.isInvalid || !!local.errorMessage\n\n return (\n <HeadlessDatePicker\n {...rest}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={`flex flex-col gap-1 relative ${sizeConfig().container} ${local.class ?? ''}`}\n >\n <Show when={local.label}>\n <HeadlessDatePickerLabel class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {local.label}\n <Show when={rest.isRequired}>\n <span class=\"text-red-500 ml-0.5\">*</span>\n </Show>\n </HeadlessDatePickerLabel>\n </Show>\n\n <div class=\"relative flex items-center\">\n <DateInput\n class={({ isFocused, isDisabled }) => {\n const base = `\n inline-flex items-center flex-1\n ${sizeConfig().input}\n bg-bg-400 rounded-l-md border-y border-l\n transition-colors duration-150\n `\n\n let borderClass = 'border-primary-600'\n if (isInvalid()) {\n borderClass = 'border-red-500'\n } else if (isFocused) {\n borderClass = 'border-accent'\n }\n\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : ''\n\n const focusClass = isFocused\n ? 'ring-2 ring-accent/30'\n : ''\n\n return `${base} ${borderClass} ${disabledClass} ${focusClass}`.trim()\n }}\n >\n {(segment) => (\n <DateSegment\n segment={segment}\n class={({ isFocused, isPlaceholder, isEditable }) => {\n const base = `\n ${sizeConfig().segment}\n rounded\n outline-none\n tabular-nums\n `\n\n let stateClass = ''\n if (segment.type === 'literal') {\n stateClass = 'text-primary-400'\n } else if (isPlaceholder) {\n stateClass = 'text-primary-500 italic'\n } else {\n stateClass = 'text-primary-100'\n }\n\n const focusClass = isFocused && isEditable\n ? 'bg-accent text-bg-400'\n : ''\n\n return `${base} ${stateClass} ${focusClass}`.trim()\n }}\n />\n )}\n </DateInput>\n\n <DatePickerButton\n class={({ isDisabled, isOpen }) => {\n const base = `\n ${sizeConfig().button}\n flex items-center justify-center\n bg-bg-400 border-y border-r rounded-r-md\n text-primary-200\n transition-colors duration-150\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `\n\n let borderClass = 'border-primary-600'\n if (isInvalid()) {\n borderClass = 'border-red-500'\n } else if (isOpen) {\n borderClass = 'border-accent bg-bg-300'\n }\n\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : 'hover:bg-bg-300 cursor-pointer'\n\n return `${base} ${borderClass} ${disabledClass}`.trim()\n }}\n >\n <CalendarIcon />\n </DatePickerButton>\n\n <DatePickerPopup size={size()} />\n </div>\n\n <Show when={local.description && !isInvalid()}>\n <HeadlessDatePickerDescription class={`text-primary-400 ${sizeConfig().label}`}>\n {local.description}\n </HeadlessDatePickerDescription>\n </Show>\n\n <Show when={isInvalid() && local.errorMessage}>\n <HeadlessDatePickerErrorMessage class={`text-red-500 ${sizeConfig().label}`}>\n {local.errorMessage}\n </HeadlessDatePickerErrorMessage>\n </Show>\n </HeadlessDatePicker>\n )\n}\n\n// ============================================\n// POPUP COMPONENT (uses context)\n// ============================================\n\nfunction DatePickerPopup(props: { size: DatePickerSize }): JSX.Element {\n return (\n <DatePickerContent\n class=\"z-50 shadow-lg rounded-lg\"\n >\n <Calendar size={props.size} />\n </DatePickerContent>\n )\n}\n\n// Re-export types\nexport type { CalendarDate, DateValue }\n","/**\n * DateRangePicker component for proyecto-viviana-silapse\n *\n * Styled date range picker with calendar popup.\n * Uses the range calendar for date selection and displays formatted dates.\n */\n\nimport { type JSX, splitProps, Show, createMemo } from 'solid-js'\nimport {\n DateRangePicker as HeadlessDateRangePicker,\n DateRangePickerLabel as HeadlessDateRangePickerLabel,\n DateRangePickerDescription as HeadlessDateRangePickerDescription,\n DateRangePickerErrorMessage as HeadlessDateRangePickerErrorMessage,\n DateRangePickerButton,\n DateRangePickerContent,\n useDateRangePickerContext,\n type DateRangePickerProps as HeadlessDateRangePickerProps,\n type CalendarDate,\n type DateValue,\n} from '@proyecto-viviana/solidaria-components'\nimport { RangeCalendar } from './RangeCalendar'\nimport { useProviderProps } from '../provider'\n\nfunction CalendarIcon(): JSX.Element {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"w-5 h-5\"\n aria-hidden=\"true\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n )\n}\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type DateRangePickerSize = 'sm' | 'md' | 'lg'\n\nexport interface DateRangePickerProps<T extends DateValue = DateValue>\n extends Omit<HeadlessDateRangePickerProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the picker. @default 'md' */\n size?: DateRangePickerSize\n /** Additional CSS class name. */\n class?: string\n /** Label for the field. */\n label?: string\n /** Description text. */\n description?: string\n /** Error message. */\n errorMessage?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n container: 'text-sm',\n field: 'px-2 py-1',\n label: 'text-xs',\n button: 'w-7 h-7',\n },\n md: {\n container: 'text-base',\n field: 'px-3 py-2',\n label: 'text-sm',\n button: 'w-9 h-9',\n },\n lg: {\n container: 'text-lg',\n field: 'px-4 py-3',\n label: 'text-base',\n button: 'w-11 h-11',\n },\n}\n\n/**\n * Inner component that uses the DateRangePicker context to display formatted dates.\n */\nfunction DateRangeDisplay(props: {\n size: DateRangePickerSize\n isInvalid: boolean\n label?: string\n description?: string\n errorMessage?: string\n isRequired?: boolean\n}): JSX.Element {\n const context = useDateRangePickerContext()\n const sizeConfig = () => sizeStyles[props.size]\n\n const startDisplay = createMemo(() => {\n const state = context.calendarState\n const start = state.value?.()?.start ?? state.anchorDate?.()\n if (!start) return 'Start date'\n return `${start.month}/${start.day}/${start.year}`\n })\n\n const endDisplay = createMemo(() => {\n const state = context.calendarState\n const end = state.value?.()?.end\n if (!end) return 'End date'\n return `${end.month}/${end.day}/${end.year}`\n })\n\n const hasValue = createMemo(() => {\n const state = context.calendarState\n return !!state.value?.()?.start\n })\n\n return (\n <>\n <Show when={props.label}>\n <HeadlessDateRangePickerLabel class={`font-medium text-primary-200 ${sizeConfig().label}`}>\n {props.label}\n <Show when={props.isRequired}>\n <span class=\"text-red-500 ml-0.5\">*</span>\n </Show>\n </HeadlessDateRangePickerLabel>\n </Show>\n\n <div class=\"relative flex items-center\" role=\"group\">\n <div\n {...context.pickerAria.startFieldProps}\n class={`\n inline-flex items-center flex-1\n ${sizeConfig().field}\n bg-bg-400 rounded-l-md border-y border-l\n transition-colors duration-150\n ${props.isInvalid ? 'border-red-500' : 'border-primary-600'}\n ${hasValue() ? 'text-primary-100' : 'text-primary-500 italic'}\n ${context.calendarState.isDisabled() ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer focus:outline-none focus:ring-2 focus:ring-accent/50'}\n `}\n >\n {startDisplay()}\n </div>\n\n <span class=\"px-1 text-primary-400 bg-bg-400 border-y border-primary-600\" aria-hidden=\"true\">–</span>\n\n <div\n {...context.pickerAria.endFieldProps}\n class={`\n inline-flex items-center flex-1\n ${sizeConfig().field}\n bg-bg-400 border-y\n transition-colors duration-150\n ${props.isInvalid ? 'border-red-500' : 'border-primary-600'}\n ${hasValue() ? 'text-primary-100' : 'text-primary-500 italic'}\n ${context.calendarState.isDisabled() ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer focus:outline-none focus:ring-2 focus:ring-accent/50'}\n `}\n >\n {endDisplay()}\n </div>\n\n <DateRangePickerButton\n class={({ isDisabled, isOpen }) => {\n const base = `\n ${sizeConfig().button}\n flex items-center justify-center\n bg-bg-400 border-y border-r rounded-r-md\n text-primary-200\n transition-colors duration-150\n focus:outline-none focus:ring-2 focus:ring-accent/50\n `\n let borderClass = 'border-primary-600'\n if (props.isInvalid) {\n borderClass = 'border-red-500'\n } else if (isOpen) {\n borderClass = 'border-accent bg-bg-300'\n }\n const disabledClass = isDisabled\n ? 'opacity-50 cursor-not-allowed'\n : 'hover:bg-bg-300 cursor-pointer'\n return `${base} ${borderClass} ${disabledClass}`.trim()\n }}\n >\n <CalendarIcon />\n </DateRangePickerButton>\n\n <DateRangePickerContent class=\"z-50 shadow-lg rounded-lg\">\n <RangeCalendar size={props.size} />\n </DateRangePickerContent>\n </div>\n\n <Show when={props.description && !props.isInvalid}>\n <HeadlessDateRangePickerDescription class={`text-primary-400 ${sizeConfig().label}`}>\n {props.description}\n </HeadlessDateRangePickerDescription>\n </Show>\n\n <Show when={props.isInvalid && props.errorMessage}>\n <HeadlessDateRangePickerErrorMessage class={`text-red-500 ${sizeConfig().label}`}>\n {props.errorMessage}\n </HeadlessDateRangePickerErrorMessage>\n </Show>\n </>\n )\n}\n\n// ============================================\n// DATE RANGE PICKER COMPONENT\n// ============================================\n\n/**\n * A date range picker combines two date display fields with a range calendar popup.\n */\nexport function DateRangePicker<T extends DateValue = CalendarDate>(\n props: DateRangePickerProps<T>\n): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, rest] = splitProps(mergedProps, [\n 'size',\n 'class',\n 'label',\n 'description',\n 'errorMessage',\n 'isInvalid',\n ])\n\n const size = () => local.size ?? 'md'\n const sizeConfig = () => sizeStyles[size()]\n const isInvalid = () => local.isInvalid || !!local.errorMessage\n\n return (\n <HeadlessDateRangePicker\n {...rest}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={`flex flex-col gap-1 relative ${sizeConfig().container} ${local.class ?? ''}`}\n >\n <DateRangeDisplay\n size={size()}\n isInvalid={isInvalid()}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isRequired={rest.isRequired}\n />\n </HeadlessDateRangePicker>\n )\n}\n","/**\n * Table component for proyecto-viviana-silapse\n *\n * Styled table component built on top of solidaria-components.\n * Inspired by Spectrum 2's Table component patterns.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext, Show } from 'solid-js'\nimport {\n Table as HeadlessTable,\n TableHeader as HeadlessTableHeader,\n TableColumn as HeadlessTableColumn,\n TableBody as HeadlessTableBody,\n TableRow as HeadlessTableRow,\n TableCell as HeadlessTableCell,\n TableSelectionCheckbox as HeadlessTableSelectionCheckbox,\n TableSelectAllCheckbox as HeadlessTableSelectAllCheckbox,\n type TableProps as HeadlessTableProps,\n type TableHeaderProps as HeadlessTableHeaderProps,\n type TableColumnProps as HeadlessTableColumnProps,\n type TableBodyProps as HeadlessTableBodyProps,\n type TableRowProps as HeadlessTableRowProps,\n type TableCellProps as HeadlessTableCellProps,\n type TableRenderProps,\n type TableColumnRenderProps,\n type TableRowRenderProps,\n type TableCellRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key, SortDescriptor, ColumnDefinition } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type TableSize = 'sm' | 'md' | 'lg'\nexport type TableVariant = 'default' | 'striped' | 'bordered'\n\ninterface TableContextValue {\n size: TableSize\n variant: TableVariant\n}\n\nconst TableSizeContext = createContext<TableContextValue>({ size: 'md', variant: 'default' })\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface TableProps<T extends object>\n extends Omit<HeadlessTableProps<T>, 'class' | 'style' | 'children'> {\n /** The size of the table. */\n size?: TableSize\n /** The visual variant of the table. */\n variant?: TableVariant\n /** Additional CSS class name. */\n class?: string\n /** Title for the table. */\n title?: string\n /** Description for the table. */\n description?: string\n /** Children components (TableHeader, TableBody). */\n children?: JSX.Element | (() => JSX.Element)\n}\n\nexport interface TableHeaderProps extends Omit<HeadlessTableHeaderProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TableColumnProps extends Omit<HeadlessTableColumnProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Text alignment for the column. */\n align?: 'left' | 'center' | 'right'\n /** Width of the column (CSS value). */\n width?: string\n}\n\nexport interface TableBodyProps<T> extends Omit<HeadlessTableBodyProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TableRowProps<T> extends Omit<HeadlessTableRowProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface TableCellProps extends Omit<HeadlessTableCellProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Text alignment for the cell. */\n align?: 'left' | 'center' | 'right'\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n table: 'text-sm',\n headerCell: 'px-3 py-2',\n cell: 'px-3 py-2',\n checkbox: 'w-4 h-4',\n },\n md: {\n table: 'text-base',\n headerCell: 'px-4 py-3',\n cell: 'px-4 py-3',\n checkbox: 'w-5 h-5',\n },\n lg: {\n table: 'text-lg',\n headerCell: 'px-5 py-4',\n cell: 'px-5 py-4',\n checkbox: 'w-6 h-6',\n },\n}\n\nconst variantStyles = {\n default: {\n wrapper: 'rounded-lg border border-bg-300 overflow-hidden',\n header: 'bg-bg-300 border-b border-bg-400',\n row: '',\n rowHover: 'hover:bg-bg-200/50',\n rowSelected: 'bg-accent/10',\n },\n striped: {\n wrapper: 'rounded-lg border border-bg-300 overflow-hidden',\n header: 'bg-bg-300 border-b border-bg-400',\n row: 'even:bg-bg-200/30',\n rowHover: 'hover:bg-bg-200/50',\n rowSelected: 'bg-accent/10',\n },\n bordered: {\n wrapper: 'rounded-lg border-2 border-bg-400 overflow-hidden',\n header: 'bg-bg-300 border-b-2 border-bg-400',\n row: 'border-b border-bg-300 last:border-b-0',\n rowHover: 'hover:bg-bg-200/50',\n rowSelected: 'bg-accent/10',\n },\n}\n\nconst alignStyles = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\n// ============================================\n// TABLE COMPONENT\n// ============================================\n\n/**\n * A table displays data in rows and columns and enables a user to navigate its contents\n * via directional navigation keys, and optionally supports row selection and sorting.\n *\n * Built on solidaria-components Table for full accessibility support.\n *\n * @example\n * ```tsx\n * const columns = [\n * { key: 'name', name: 'Name' },\n * { key: 'role', name: 'Role' },\n * { key: 'status', name: 'Status' },\n * ]\n *\n * const rows = [\n * { id: '1', name: 'John', role: 'Developer', status: 'Active' },\n * { id: '2', name: 'Jane', role: 'Designer', status: 'Active' },\n * ]\n *\n * <Table items={rows} columns={columns} selectionMode=\"multiple\">\n * {() => (\n * <>\n * <TableHeader>\n * {() => (\n * <For each={columns}>\n * {(col) => <TableColumn id={col.key}>{col.name}</TableColumn>}\n * </For>\n * )}\n * </TableHeader>\n * <TableBody>\n * {(row) => (\n * <TableRow id={row.id}>\n * {() => (\n * <>\n * <TableCell>{row.name}</TableCell>\n * <TableCell>{row.role}</TableCell>\n * <TableCell>{row.status}</TableCell>\n * </>\n * )}\n * </TableRow>\n * )}\n * </TableBody>\n * </>\n * )}\n * </Table>\n * ```\n */\nexport function Table<T extends object>(props: TableProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'title',\n 'description',\n 'children',\n ])\n\n const size = () => local.size ?? 'md'\n const variant = () => local.variant ?? 'default'\n const styles = () => sizeStyles[size()]\n const variantStyle = () => variantStyles[variant()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TableRenderProps): string => {\n const base = 'w-full bg-bg-400'\n const sizeClass = styles().table\n\n let stateClass = ''\n if (renderProps.isEmpty) {\n stateClass = ''\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, stateClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size(), variant: variant() }))\n\n return (\n <TableSizeContext.Provider value={contextValue()}>\n <div class=\"flex flex-col gap-2\">\n <Show when={local.title}>\n <h3 class=\"text-lg font-semibold text-primary-100\">{local.title}</h3>\n </Show>\n <Show when={local.description}>\n <p class=\"text-sm text-primary-400\">{local.description}</p>\n </Show>\n <div class={variantStyle().wrapper}>\n <HeadlessTable {...headlessProps} class={getClassName}>\n {props.children}\n </HeadlessTable>\n </div>\n </div>\n </TableSizeContext.Provider>\n )\n}\n\n// ============================================\n// TABLE HEADER COMPONENT\n// ============================================\n\n/**\n * A header row in a table containing column headers.\n */\nexport function TableHeader(props: TableHeaderProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const context = useContext(TableSizeContext)\n const variantStyle = variantStyles[context.variant]\n const customClass = local.class ?? ''\n\n const className = [variantStyle.header, customClass].filter(Boolean).join(' ')\n\n return (\n <HeadlessTableHeader {...headlessProps} class={className}>\n {props.children}\n </HeadlessTableHeader>\n )\n}\n\n// ============================================\n// TABLE COLUMN COMPONENT\n// ============================================\n\n/**\n * A column header in a table.\n */\nexport function TableColumn(props: TableColumnProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'align', 'width'])\n const context = useContext(TableSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TableColumnRenderProps): string => {\n const base = 'font-semibold text-primary-200 select-none'\n const sizeClass = sizeStyle.headerCell\n const alignClass = alignStyles[local.align ?? 'left']\n\n let sortClass = ''\n if (renderProps.isSortable) {\n sortClass = 'cursor-pointer'\n if (renderProps.isHovered) {\n sortClass += ' text-primary-100'\n }\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, alignClass, sortClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n const getStyle = (): JSX.CSSProperties | undefined => {\n if (local.width) {\n return { width: local.width }\n }\n return undefined\n }\n\n return (\n <HeadlessTableColumn {...headlessProps} class={getClassName} style={getStyle()}>\n {(renderProps: TableColumnRenderProps) => (\n <div class=\"flex items-center gap-2\">\n <span class=\"flex-1\">\n {typeof props.children === 'function'\n ? props.children(renderProps)\n : props.children}\n </span>\n <Show when={renderProps.isSortable && renderProps.sortDirection}>\n <SortIcon direction={renderProps.sortDirection!} class=\"w-4 h-4\" />\n </Show>\n </div>\n )}\n </HeadlessTableColumn>\n )\n}\n\n// ============================================\n// TABLE BODY COMPONENT\n// ============================================\n\n/**\n * The body of a table containing data rows.\n */\nexport function TableBody<T extends object>(props: TableBodyProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'renderEmptyState'])\n const customClass = local.class ?? ''\n\n const defaultEmptyState = () => (\n <tr>\n <td colSpan={100} class=\"py-8 text-center text-primary-400\">\n <div class=\"flex flex-col items-center gap-2\">\n <EmptyIcon class=\"w-12 h-12 text-primary-500\" />\n <span>No data available</span>\n </div>\n </td>\n </tr>\n )\n\n return (\n <HeadlessTableBody\n {...headlessProps}\n class={customClass}\n renderEmptyState={local.renderEmptyState ?? defaultEmptyState}\n >\n {props.children}\n </HeadlessTableBody>\n )\n}\n\n// ============================================\n// TABLE ROW COMPONENT\n// ============================================\n\n/**\n * A row in a table.\n */\nexport function TableRow<T extends object>(props: TableRowProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const context = useContext(TableSizeContext)\n const variantStyle = variantStyles[context.variant]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TableRowRenderProps): string => {\n const base = 'transition-colors duration-150 outline-none'\n const variantClass = variantStyle.row\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n stateClass = variantStyle.rowSelected\n } else if (renderProps.isHovered) {\n stateClass = variantStyle.rowHover\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n const pressedClass = renderProps.isPressed ? 'bg-bg-200/70' : ''\n\n return [base, variantClass, stateClass, focusClass, pressedClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n return (\n <HeadlessTableRow {...headlessProps} class={getClassName}>\n {props.children}\n </HeadlessTableRow>\n )\n}\n\n// ============================================\n// TABLE CELL COMPONENT\n// ============================================\n\n/**\n * A cell in a table row.\n */\nexport function TableCell(props: TableCellProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'align'])\n const context = useContext(TableSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TableCellRenderProps): string => {\n const base = 'text-primary-200'\n const sizeClass = sizeStyle.cell\n const alignClass = alignStyles[local.align ?? 'left']\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n return [base, sizeClass, alignClass, focusClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessTableCell {...headlessProps} class={getClassName}>\n {props.children}\n </HeadlessTableCell>\n )\n}\n\n// ============================================\n// TABLE SELECTION CHECKBOX COMPONENT\n// ============================================\n\n/**\n * A styled checkbox cell for row selection.\n */\nexport function TableSelectionCheckbox(props: { rowKey: Key }): JSX.Element {\n const context = useContext(TableSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const checkboxClass = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400`\n\n return (\n <td class={`${sizeStyle.cell} w-px`}>\n <span class={checkboxClass}>\n <HeadlessTableSelectionCheckbox rowKey={props.rowKey} />\n </span>\n </td>\n )\n}\n\n/**\n * A styled checkbox for select-all functionality.\n */\nexport function TableSelectAllCheckbox(): JSX.Element {\n const context = useContext(TableSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const checkboxClass = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400`\n\n return (\n <th class={`${sizeStyle.headerCell} w-px`}>\n <span class={checkboxClass}>\n <HeadlessTableSelectAllCheckbox />\n </span>\n </th>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction SortIcon(props: { direction: 'ascending' | 'descending'; class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n {props.direction === 'ascending' ? (\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 15l7-7 7 7\" />\n ) : (\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n )}\n </svg>\n )\n}\n\nfunction EmptyIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4\"\n />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nTable.Header = TableHeader\nTable.Column = TableColumn\nTable.Body = TableBody\nTable.Row = TableRow\nTable.Cell = TableCell\nTable.SelectionCheckbox = TableSelectionCheckbox\nTable.SelectAllCheckbox = TableSelectAllCheckbox\n\n// Re-export types for convenience\nexport type { Key, SortDescriptor, ColumnDefinition }\n","/**\n * Tree component for proyecto-viviana-silapse\n *\n * Styled tree component built on top of solidaria-components.\n * Inspired by Spectrum 2's Tree component patterns.\n *\n * Tree displays hierarchical data with expandable/collapsible nodes,\n * supporting keyboard navigation and selection.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext, Show } from 'solid-js'\nimport {\n Tree as HeadlessTree,\n TreeItem as HeadlessTreeItem,\n TreeExpandButton as HeadlessTreeExpandButton,\n TreeSelectionCheckbox as HeadlessTreeSelectionCheckbox,\n type TreeProps as HeadlessTreeProps,\n type TreeItemProps as HeadlessTreeItemProps,\n type TreeExpandButtonProps as HeadlessTreeExpandButtonProps,\n type TreeRenderProps,\n type TreeItemRenderProps,\n type TreeRenderItemState,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Key, TreeItemData } from '@proyecto-viviana/solid-stately'\nimport { useProviderProps } from '../provider'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type TreeSize = 'sm' | 'md' | 'lg'\nexport type TreeVariant = 'default' | 'bordered' | 'quiet'\n\ninterface TreeContextValue {\n size: TreeSize\n variant: TreeVariant\n}\n\nconst TreeSizeContext = createContext<TreeContextValue>({ size: 'md', variant: 'default' })\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface TreeProps<T extends object>\n extends Omit<HeadlessTreeProps<T>, 'class' | 'style'> {\n /** The size of the tree. */\n size?: TreeSize\n /** The visual variant of the tree. */\n variant?: TreeVariant\n /** Additional CSS class name. */\n class?: string\n /** Label for the tree. */\n label?: string\n /** Description for the tree. */\n description?: string\n}\n\nexport interface TreeItemProps<T extends object>\n extends Omit<HeadlessTreeItemProps<T>, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Optional description text. */\n description?: string\n /**\n * Optional icon to display before the content.\n * Use a function returning JSX for SSR compatibility: `icon={() => <FolderIcon />}`\n */\n icon?: () => JSX.Element\n}\n\nexport interface TreeExpandButtonProps extends Omit<HeadlessTreeExpandButtonProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n tree: 'text-sm',\n item: 'py-1 px-2 gap-1',\n indent: 16,\n icon: 'h-4 w-4',\n expandButton: 'h-4 w-4',\n label: 'text-sm',\n description: 'text-xs',\n checkbox: 'w-4 h-4',\n },\n md: {\n tree: 'text-base',\n item: 'py-1.5 px-3 gap-2',\n indent: 20,\n icon: 'h-5 w-5',\n expandButton: 'h-5 w-5',\n label: 'text-base',\n description: 'text-sm',\n checkbox: 'w-5 h-5',\n },\n lg: {\n tree: 'text-lg',\n item: 'py-2 px-4 gap-2',\n indent: 24,\n icon: 'h-6 w-6',\n expandButton: 'h-6 w-6',\n label: 'text-lg',\n description: 'text-base',\n checkbox: 'w-6 h-6',\n },\n}\n\nconst variantStyles = {\n default: {\n tree: 'bg-bg-400 rounded-lg border border-bg-300 p-2',\n item: 'rounded-md',\n itemHover: 'hover:bg-bg-200/50',\n itemSelected: 'bg-accent/10 text-accent',\n },\n bordered: {\n tree: 'bg-bg-400 rounded-lg border-2 border-bg-400 p-2',\n item: 'border-b border-bg-300/30 last:border-b-0',\n itemHover: 'hover:bg-bg-200/50',\n itemSelected: 'bg-accent/10 text-accent',\n },\n quiet: {\n tree: 'bg-transparent',\n item: 'rounded-md',\n itemHover: 'hover:bg-bg-300/50',\n itemSelected: 'bg-accent/10 text-accent',\n },\n}\n\n// ============================================\n// TREE COMPONENT\n// ============================================\n\n/**\n * A tree displays hierarchical data with expandable/collapsible nodes,\n * supporting keyboard navigation and selection.\n *\n * Built on solidaria-components Tree for full accessibility support.\n *\n * @example\n * ```tsx\n * const items = [\n * {\n * key: 'documents',\n * value: { name: 'Documents' },\n * children: [\n * { key: 'doc1', value: { name: 'Report.pdf' } },\n * { key: 'doc2', value: { name: 'Notes.txt' } },\n * ],\n * },\n * {\n * key: 'images',\n * value: { name: 'Images' },\n * children: [\n * { key: 'img1', value: { name: 'Photo.jpg' } },\n * ],\n * },\n * ]\n *\n * <Tree items={items} defaultExpandedKeys={['documents']}>\n * {(item, state) => (\n * <TreeItem id={item.key} icon={() => <FolderIcon />}>\n * {item.value.name}\n * </TreeItem>\n * )}\n * </Tree>\n * ```\n */\nexport function Tree<T extends object>(props: TreeProps<T>): JSX.Element {\n const mergedProps = useProviderProps(props)\n const [local, headlessProps] = splitProps(mergedProps, [\n 'size',\n 'variant',\n 'class',\n 'label',\n 'description',\n ])\n\n const size = () => local.size ?? 'md'\n const variant = () => local.variant ?? 'default'\n const styles = () => sizeStyles[size()]\n const variantStyle = () => variantStyles[variant()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TreeRenderProps): string => {\n const base = 'overflow-auto focus:outline-none'\n const sizeClass = styles().tree\n const variantClass = variantStyle().tree\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n\n return [base, sizeClass, variantClass, stateClass, focusClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n const defaultEmptyState = () => (\n <div class=\"py-8 text-center text-primary-400\">\n <div class=\"flex flex-col items-center gap-2\">\n <EmptyTreeIcon class=\"w-12 h-12 text-primary-500\" />\n <span>No items</span>\n </div>\n </div>\n )\n\n const contextValue = createMemo(() => ({ size: size(), variant: variant() }))\n\n return (\n <TreeSizeContext.Provider value={contextValue()}>\n <div class=\"flex flex-col gap-2\">\n <Show when={local.label}>\n <label class={`text-primary-200 font-medium ${styles().label}`}>\n {local.label}\n </label>\n </Show>\n <HeadlessTree\n {...headlessProps}\n class={getClassName}\n renderEmptyState={headlessProps.renderEmptyState ?? defaultEmptyState}\n />\n <Show when={local.description}>\n <span class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n </div>\n </TreeSizeContext.Provider>\n )\n}\n\n// ============================================\n// TREE ITEM COMPONENT\n// ============================================\n\n/**\n * An item in a tree.\n */\nexport function TreeItem<T extends object>(props: TreeItemProps<T>): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'class',\n 'description',\n 'icon',\n ])\n\n const context = useContext(TreeSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const variantStyle = variantStyles[context.variant]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: TreeItemRenderProps): string => {\n const base = 'flex items-center cursor-pointer transition-all duration-150 outline-none'\n const sizeClass = sizeStyle.item\n const variantClass = variantStyle.item\n\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n } else if (renderProps.isSelected) {\n stateClass = variantStyle.itemSelected\n } else if (renderProps.isHovered) {\n stateClass = variantStyle.itemHover\n }\n\n let textClass = ''\n if (!renderProps.isDisabled && !renderProps.isSelected) {\n textClass = 'text-primary-200'\n }\n\n const focusClass = renderProps.isFocusVisible\n ? 'ring-2 ring-inset ring-accent-300'\n : ''\n\n const pressedClass = renderProps.isPressed ? 'scale-[0.99]' : ''\n\n return [base, sizeClass, variantClass, stateClass, textClass, focusClass, pressedClass, customClass]\n .filter(Boolean)\n .join(' ')\n }\n\n const getStyle = (renderProps: TreeItemRenderProps): JSX.CSSProperties => ({\n 'padding-left': `${renderProps.level * sizeStyle.indent + 8}px`,\n })\n\n return (\n <HeadlessTreeItem {...headlessProps} class={getClassName} style={getStyle}>\n {(renderProps: TreeItemRenderProps) => (\n <>\n {/* Expand button */}\n <TreeExpandButton class={`${sizeStyle.expandButton} shrink-0`} />\n\n {/* Icon */}\n <Show when={local.icon}>\n <span class={`shrink-0 ${sizeStyle.icon}`}>\n {local.icon!()}\n </span>\n </Show>\n\n {/* Default folder/file icon if no custom icon */}\n <Show when={!local.icon}>\n {renderProps.isExpandable ? (\n <FolderIcon class={`shrink-0 ${sizeStyle.icon} text-accent-300`} isOpen={renderProps.isExpanded} />\n ) : (\n <FileIcon class={`shrink-0 ${sizeStyle.icon} text-primary-400`} />\n )}\n </Show>\n\n {/* Content */}\n <div class=\"flex flex-col flex-1 min-w-0\">\n <span class=\"truncate\">\n {typeof props.children === 'function'\n ? props.children(renderProps)\n : props.children}\n </span>\n <Show when={local.description}>\n <span class={`text-primary-400 truncate ${sizeStyle.description}`}>\n {local.description}\n </span>\n </Show>\n </div>\n\n {/* Selection indicator */}\n <Show when={renderProps.isSelected}>\n <CheckIcon class={`shrink-0 ${sizeStyle.icon} text-accent`} />\n </Show>\n </>\n )}\n </HeadlessTreeItem>\n )\n}\n\n// ============================================\n// TREE EXPAND BUTTON COMPONENT\n// ============================================\n\n/**\n * A button to expand/collapse a tree item.\n */\nexport function TreeExpandButton(props: TreeExpandButtonProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n const context = useContext(TreeSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const customClass = local.class ?? ''\n\n const className = [\n 'flex items-center justify-center transition-transform duration-150 text-primary-400 hover:text-primary-200',\n customClass,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <HeadlessTreeExpandButton\n {...headlessProps}\n class={className}\n >\n {props.children ?? (({ isExpanded }: { isExpanded: boolean }) => (\n <ChevronIcon\n class={`${sizeStyle.expandButton} transition-transform duration-150 ${\n isExpanded ? 'rotate-90' : ''\n }`}\n />\n ))}\n </HeadlessTreeExpandButton>\n )\n}\n\n// ============================================\n// TREE SELECTION CHECKBOX COMPONENT\n// ============================================\n\n/**\n * A styled checkbox for item selection in a tree.\n */\nexport function TreeSelectionCheckbox(props: { itemKey: Key; class?: string }): JSX.Element {\n const context = useContext(TreeSizeContext)\n const sizeStyle = sizeStyles[context.size]\n const className = `${sizeStyle.checkbox} rounded border-2 border-primary-500 bg-bg-400 text-accent cursor-pointer checked:bg-accent checked:border-accent focus:ring-2 focus:ring-accent-300 focus:ring-offset-1 focus:ring-offset-bg-400 ${props.class ?? ''}`\n\n return (\n <span class={className}>\n <HeadlessTreeSelectionCheckbox itemKey={props.itemKey} />\n </span>\n )\n}\n\n// ============================================\n// ICONS\n// ============================================\n\nfunction ChevronIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n}\n\nfunction FolderIcon(props: { class?: string; isOpen?: boolean }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n {props.isOpen ? (\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776\"\n />\n ) : (\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z\"\n />\n )}\n </svg>\n )\n}\n\nfunction FileIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z\"\n />\n </svg>\n )\n}\n\nfunction CheckIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\nfunction EmptyTreeIcon(props: { class?: string }): JSX.Element {\n return (\n <svg\n class={props.class}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6z\"\n />\n </svg>\n )\n}\n\n// Attach sub-components for convenience\nTree.Item = TreeItem\nTree.ExpandButton = TreeExpandButton\nTree.SelectionCheckbox = TreeSelectionCheckbox\n\n// Re-export types for convenience\nexport type { Key, TreeItemData, TreeRenderItemState }\n","/**\n * Color components for proyecto-viviana-silapse\n *\n * Styled color picker components built on top of solidaria-components.\n * Inspired by Spectrum 2's color picker patterns.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext, Show } from 'solid-js'\nimport {\n ColorSlider as HeadlessColorSlider,\n ColorSliderTrack as HeadlessColorSliderTrack,\n ColorSliderThumb as HeadlessColorSliderThumb,\n ColorArea as HeadlessColorArea,\n ColorAreaGradient as HeadlessColorAreaGradient,\n ColorAreaThumb as HeadlessColorAreaThumb,\n ColorWheel as HeadlessColorWheel,\n ColorWheelTrack as HeadlessColorWheelTrack,\n ColorWheelThumb as HeadlessColorWheelThumb,\n ColorField as HeadlessColorField,\n ColorFieldInput as HeadlessColorFieldInput,\n ColorSwatch as HeadlessColorSwatch,\n type ColorSliderProps as HeadlessColorSliderProps,\n type ColorAreaProps as HeadlessColorAreaProps,\n type ColorWheelProps as HeadlessColorWheelProps,\n type ColorFieldProps as HeadlessColorFieldProps,\n type ColorSwatchProps as HeadlessColorSwatchProps,\n type ColorSliderRenderProps,\n type ColorSliderTrackRenderProps,\n type ColorSliderThumbRenderProps,\n type ColorAreaRenderProps,\n type ColorAreaThumbRenderProps,\n type ColorWheelRenderProps,\n type ColorWheelThumbRenderProps,\n type ColorFieldRenderProps,\n type ColorSwatchRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Color, ColorChannel, ColorFormat } from '@proyecto-viviana/solid-stately'\n\n// ============================================\n// SIZE CONTEXT\n// ============================================\n\nexport type ColorSize = 'sm' | 'md' | 'lg'\n\ninterface ColorContextValue {\n size: ColorSize\n}\n\nconst ColorSizeContext = createContext<ColorContextValue>({ size: 'md' })\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeStyles = {\n sm: {\n slider: {\n track: 'h-4 rounded',\n thumb: 'w-4 h-4',\n label: 'text-sm',\n },\n area: {\n container: 'w-48 h-48',\n thumb: 'w-4 h-4',\n },\n wheel: {\n container: 'w-48 h-48',\n track: 'stroke-[16px]',\n thumb: 'w-4 h-4',\n },\n field: {\n input: 'h-8 text-sm px-2',\n label: 'text-sm',\n },\n swatch: 'w-8 h-8',\n },\n md: {\n slider: {\n track: 'h-6 rounded-md',\n thumb: 'w-5 h-5',\n label: 'text-base',\n },\n area: {\n container: 'w-64 h-64',\n thumb: 'w-5 h-5',\n },\n wheel: {\n container: 'w-64 h-64',\n track: 'stroke-[20px]',\n thumb: 'w-5 h-5',\n },\n field: {\n input: 'h-10 text-base px-3',\n label: 'text-base',\n },\n swatch: 'w-10 h-10',\n },\n lg: {\n slider: {\n track: 'h-8 rounded-lg',\n thumb: 'w-6 h-6',\n label: 'text-lg',\n },\n area: {\n container: 'w-80 h-80',\n thumb: 'w-6 h-6',\n },\n wheel: {\n container: 'w-80 h-80',\n track: 'stroke-[24px]',\n thumb: 'w-6 h-6',\n },\n field: {\n input: 'h-12 text-lg px-4',\n label: 'text-lg',\n },\n swatch: 'w-12 h-12',\n },\n}\n\n// ============================================\n// COLOR SLIDER\n// ============================================\n\nexport interface ColorSliderProps extends Omit<HeadlessColorSliderProps, 'class' | 'style' | 'children'> {\n /** The size of the color slider. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n /** Show the current value. */\n showValue?: boolean\n}\n\n/**\n * A color slider allows users to adjust a single color channel.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('hsl(0, 100%, 50%)'))\n *\n * <ColorSlider\n * channel=\"hue\"\n * value={color()}\n * onChange={setColor}\n * label=\"Hue\"\n * />\n * ```\n */\nexport function ColorSlider(props: ColorSliderProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class', 'showValue'])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ColorSliderRenderProps): string => {\n const base = 'flex flex-col gap-1.5'\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n }\n return [base, stateClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size() }))\n\n return (\n <ColorSizeContext.Provider value={contextValue()}>\n <HeadlessColorSlider {...headlessProps} class={getClassName}>\n {(renderProps: ColorSliderRenderProps) => (\n <>\n <div class=\"flex items-center justify-between\">\n <Show when={headlessProps.label}>\n <span class={`text-primary-200 font-medium ${styles().slider.label}`}>\n {headlessProps.label}\n </span>\n </Show>\n <Show when={local.showValue}>\n <span class={`text-primary-400 ${styles().slider.label}`}>\n {Math.round(renderProps.value)}\n </span>\n </Show>\n </div>\n <ColorSliderTrack>\n {() => <ColorSliderThumb />}\n </ColorSliderTrack>\n </>\n )}\n </HeadlessColorSlider>\n </ColorSizeContext.Provider>\n )\n}\n\n/**\n * The track component for a color slider.\n */\nexport function ColorSliderTrack(props: { children?: JSX.Element | (() => JSX.Element); class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const getClassName = (renderProps: ColorSliderTrackRenderProps): string => {\n const base = `relative ${styles.slider.track} shadow-inner border border-bg-300`\n const dragClass = renderProps.isDragging ? 'cursor-grabbing' : 'cursor-pointer'\n return [base, dragClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessColorSliderTrack class={getClassName}>\n {props.children}\n </HeadlessColorSliderTrack>\n )\n}\n\n/**\n * The thumb component for a color slider.\n */\nexport function ColorSliderThumb(props: { class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const getClassName = (renderProps: ColorSliderThumbRenderProps): string => {\n const base = `${styles.slider.thumb} rounded-full border-2 border-white shadow-md cursor-grab`\n const dragClass = renderProps.isDragging ? 'cursor-grabbing scale-110' : ''\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent-300 ring-offset-2' : ''\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed' : ''\n return [base, dragClass, focusClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return <HeadlessColorSliderThumb class={getClassName} />\n}\n\n// ============================================\n// COLOR AREA\n// ============================================\n\nexport interface ColorAreaProps extends Omit<HeadlessColorAreaProps, 'class' | 'style' | 'children'> {\n /** The size of the color area. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n}\n\n/**\n * A color area allows users to select a color by dragging in a 2D gradient.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('hsl(0, 100%, 50%)'))\n *\n * <ColorArea\n * value={color()}\n * onChange={setColor}\n * xChannel=\"saturation\"\n * yChannel=\"lightness\"\n * />\n * ```\n */\nexport function ColorArea(props: ColorAreaProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class'])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ColorAreaRenderProps): string => {\n const base = `relative ${styles().area.container} rounded-lg overflow-hidden border border-bg-300 shadow-inner`\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n }\n return [base, stateClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size() }))\n\n return (\n <ColorSizeContext.Provider value={contextValue()}>\n <HeadlessColorArea {...headlessProps} class={getClassName}>\n {() => (\n <>\n <ColorAreaGradient />\n <ColorAreaThumb />\n </>\n )}\n </HeadlessColorArea>\n </ColorSizeContext.Provider>\n )\n}\n\n/**\n * The gradient background for a color area.\n */\nexport function ColorAreaGradient(props: { class?: string }): JSX.Element {\n const customClass = props.class ?? ''\n const className = `absolute inset-0 ${customClass}`\n\n return <HeadlessColorAreaGradient class={className} />\n}\n\n/**\n * The thumb component for a color area.\n */\nexport function ColorAreaThumb(props: { class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const getClassName = (renderProps: ColorAreaThumbRenderProps): string => {\n const base = `${styles.area.thumb} rounded-full border-2 border-white shadow-md cursor-grab`\n const dragClass = renderProps.isDragging ? 'cursor-grabbing scale-110' : ''\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent-300 ring-offset-2' : ''\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed' : ''\n return [base, dragClass, focusClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return <HeadlessColorAreaThumb class={getClassName} />\n}\n\n// ============================================\n// COLOR WHEEL\n// ============================================\n\nexport interface ColorWheelProps extends Omit<HeadlessColorWheelProps, 'class' | 'style' | 'children'> {\n /** The size of the color wheel. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n}\n\n/**\n * A color wheel allows users to select a hue by dragging around a circular track.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('hsl(0, 100%, 50%)'))\n *\n * <ColorWheel\n * value={color()}\n * onChange={setColor}\n * />\n * ```\n */\nexport function ColorWheel(props: ColorWheelProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['size', 'class'])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ColorWheelRenderProps): string => {\n const base = `relative ${styles().wheel.container}`\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50 cursor-not-allowed'\n }\n return [base, stateClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size() }))\n\n return (\n <ColorSizeContext.Provider value={contextValue()}>\n <HeadlessColorWheel {...headlessProps} class={getClassName}>\n {() => (\n <>\n <ColorWheelTrack />\n <ColorWheelThumb />\n </>\n )}\n </HeadlessColorWheel>\n </ColorSizeContext.Provider>\n )\n}\n\n/**\n * The circular track for a color wheel.\n */\nexport function ColorWheelTrack(props: { class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const className = `${styles.wheel.track} ${customClass}`\n\n return <HeadlessColorWheelTrack class={className} />\n}\n\n/**\n * The thumb component for a color wheel.\n */\nexport function ColorWheelThumb(props: { class?: string }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const getClassName = (renderProps: ColorWheelThumbRenderProps): string => {\n const base = `${styles.wheel.thumb} rounded-full border-2 border-white shadow-md cursor-grab`\n const dragClass = renderProps.isDragging ? 'cursor-grabbing scale-110' : ''\n const focusClass = renderProps.isFocusVisible ? 'ring-2 ring-accent-300 ring-offset-2' : ''\n const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed' : ''\n return [base, dragClass, focusClass, disabledClass, customClass].filter(Boolean).join(' ')\n }\n\n return <HeadlessColorWheelThumb class={getClassName} />\n}\n\n// ============================================\n// COLOR FIELD\n// ============================================\n\nexport interface ColorFieldProps extends Omit<HeadlessColorFieldProps, 'class' | 'style' | 'children'> {\n /** The size of the color field. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n /** Description text below the input. */\n description?: string\n /** Error message to display. */\n errorMessage?: string\n}\n\n/**\n * A color field allows users to enter a color value as text.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('#ff0000'))\n *\n * <ColorField\n * value={color()}\n * onChange={setColor}\n * label=\"Color\"\n * />\n * ```\n */\nexport function ColorField(props: ColorFieldProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'class',\n 'description',\n 'errorMessage',\n ])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (renderProps: ColorFieldRenderProps): string => {\n const base = 'flex flex-col gap-1.5'\n let stateClass = ''\n if (renderProps.isDisabled) {\n stateClass = 'opacity-50'\n }\n return [base, stateClass, customClass].filter(Boolean).join(' ')\n }\n\n const contextValue = createMemo(() => ({ size: size() }))\n\n return (\n <ColorSizeContext.Provider value={contextValue()}>\n <HeadlessColorField {...headlessProps} class={getClassName}>\n {() => (\n <>\n <Show when={headlessProps.label}>\n <span class={`text-primary-200 font-medium ${styles().field.label}`}>\n {headlessProps.label}\n </span>\n </Show>\n <ColorFieldInput isInvalid={!!local.errorMessage} />\n <Show when={local.description && !local.errorMessage}>\n <span class=\"text-primary-400 text-sm\">{local.description}</span>\n </Show>\n <Show when={local.errorMessage}>\n <span class=\"text-danger-400 text-sm\">{local.errorMessage}</span>\n </Show>\n </>\n )}\n </HeadlessColorField>\n </ColorSizeContext.Provider>\n )\n}\n\n/**\n * The input component for a color field.\n */\nexport function ColorFieldInput(props: { class?: string; isInvalid?: boolean }): JSX.Element {\n const context = useContext(ColorSizeContext)\n const styles = sizeStyles[context.size]\n const customClass = props.class ?? ''\n\n const base = `${styles.field.input} w-full rounded-md border bg-bg-400 text-primary-200 placeholder:text-primary-500 focus:outline-none focus:ring-2 focus:ring-accent-300`\n const borderClass = props.isInvalid\n ? 'border-danger-400'\n : 'border-bg-300 focus:border-accent-300'\n const className = [base, borderClass, customClass].filter(Boolean).join(' ')\n\n return <HeadlessColorFieldInput class={className} />\n}\n\n// ============================================\n// COLOR SWATCH\n// ============================================\n\nexport interface ColorSwatchProps extends Omit<HeadlessColorSwatchProps, 'class' | 'style'> {\n /** The size of the color swatch. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n /** Whether the swatch is selectable. */\n isSelectable?: boolean\n /** Whether the swatch is selected. */\n isSelected?: boolean\n /** Handler called when the swatch is clicked. */\n onClick?: () => void\n}\n\n/**\n * A color swatch displays a color sample.\n *\n * @example\n * ```tsx\n * <ColorSwatch color={parseColor('#ff0000')} />\n *\n * // Selectable swatch\n * <ColorSwatch\n * color={parseColor('#00ff00')}\n * isSelectable\n * isSelected={selectedColor === '#00ff00'}\n * onClick={() => setSelectedColor('#00ff00')}\n * />\n * ```\n */\nexport function ColorSwatch(props: ColorSwatchProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'class',\n 'isSelectable',\n 'isSelected',\n 'onClick',\n 'aria-label',\n ])\n\n const size = () => local.size ?? 'md'\n const styles = () => sizeStyles[size()]\n const customClass = local.class ?? ''\n\n const getClassName = (_renderProps: ColorSwatchRenderProps): string => {\n const base = `${styles().swatch} rounded-md border border-bg-300 shadow-sm`\n const selectableClass = local.isSelectable\n ? 'cursor-pointer hover:scale-105 transition-transform'\n : ''\n const selectedClass = local.isSelected\n ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'\n : ''\n return [base, selectableClass, selectedClass, customClass].filter(Boolean).join(' ')\n }\n\n const handleClick = () => {\n if (local.isSelectable && local.onClick) {\n local.onClick()\n }\n }\n\n if (local.isSelectable && local.onClick) {\n return (\n <button\n type=\"button\"\n class=\"inline-flex bg-transparent border-0 p-0 cursor-pointer\"\n onClick={handleClick}\n aria-pressed={local.isSelected}\n aria-label={local['aria-label']}\n >\n <HeadlessColorSwatch\n {...headlessProps}\n aria-label={local['aria-label']}\n class={getClassName}\n />\n </button>\n )\n }\n\n return (\n <HeadlessColorSwatch\n {...headlessProps}\n aria-label={local['aria-label']}\n class={getClassName}\n />\n )\n}\n\n// ============================================\n// COLOR PICKER (Composite Component)\n// ============================================\n\nexport interface ColorPickerProps {\n /** The current color value (controlled). */\n value?: Color | string\n /** The default color value (uncontrolled). */\n defaultValue?: Color | string\n /** Handler called when the color changes. */\n onChange?: (color: Color) => void\n /** The size of the picker. */\n size?: ColorSize\n /** Additional CSS class name. */\n class?: string\n /** Whether the picker is disabled. */\n isDisabled?: boolean\n /** A label for the picker. */\n label?: string\n /** Whether to show the hex input field. */\n showInput?: boolean\n /** Whether to show channel sliders. */\n showSliders?: boolean\n}\n\n/**\n * A complete color picker component with area, sliders, and input.\n *\n * @example\n * ```tsx\n * const [color, setColor] = createSignal(parseColor('hsl(0, 100%, 50%)'))\n *\n * <ColorPicker\n * value={color()}\n * onChange={setColor}\n * label=\"Pick a color\"\n * showInput\n * showSliders\n * />\n * ```\n */\nexport function ColorPicker(props: ColorPickerProps): JSX.Element {\n const size = () => props.size ?? 'md'\n const styles = () => sizeStyles[size()]\n\n return (\n <div class={`flex flex-col gap-4 ${props.class ?? ''}`}>\n <Show when={props.label}>\n <span class={`text-primary-200 font-medium ${styles().field.label}`}>\n {props.label}\n </span>\n </Show>\n\n <ColorArea\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={props.onChange}\n xChannel=\"saturation\"\n yChannel=\"lightness\"\n size={size()}\n isDisabled={props.isDisabled}\n />\n\n <Show when={props.showSliders !== false}>\n <ColorSlider\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={props.onChange}\n channel=\"hue\"\n label=\"Hue\"\n size={size()}\n showValue\n isDisabled={props.isDisabled}\n />\n\n <ColorSlider\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={props.onChange}\n channel=\"alpha\"\n label=\"Alpha\"\n size={size()}\n showValue\n isDisabled={props.isDisabled}\n />\n </Show>\n\n <Show when={props.showInput}>\n <ColorField\n value={props.value}\n defaultValue={props.defaultValue}\n onChange={(color) => {\n if (color && props.onChange) {\n props.onChange(color)\n }\n }}\n label=\"Hex\"\n size={size()}\n isDisabled={props.isDisabled}\n />\n </Show>\n </div>\n )\n}\n\n// Attach sub-components for convenience\nColorSlider.Track = ColorSliderTrack\nColorSlider.Thumb = ColorSliderThumb\nColorArea.Gradient = ColorAreaGradient\nColorArea.Thumb = ColorAreaThumb\nColorWheel.Track = ColorWheelTrack\nColorWheel.Thumb = ColorWheelThumb\nColorField.Input = ColorFieldInput\n\n// Re-export types for convenience\nexport type { Color, ColorChannel, ColorFormat }\n\n// Re-exports from lower layers\nexport { parseColor, getColorChannels } from '@proyecto-viviana/solid-stately';\n\n// ColorEditor\nexport { ColorEditor } from './ColorEditor';\nexport type { ColorEditorProps } from './ColorEditor';\n\n// ColorSwatchPicker\nexport { ColorSwatchPicker, ColorSwatchPickerItem } from './ColorSwatchPicker';\nexport type {\n ColorSwatchPickerProps,\n ColorSwatchPickerItemProps,\n SwatchPickerSize,\n SwatchPickerDensity,\n SwatchPickerRounding,\n} from './ColorSwatchPicker';\n","/**\n * ColorEditor component for proyecto-viviana-silapse\n *\n * Styled color editor composing ColorArea, ColorSliders, and ColorFields.\n */\n\nimport { type JSX, splitProps } from 'solid-js'\nimport {\n ColorEditor as HeadlessColorEditor,\n type ColorEditorProps as HeadlessColorEditorProps,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface ColorEditorProps extends Omit<HeadlessColorEditorProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A complete color editor with area, hue slider, alpha slider,\n * color space selector, and channel fields.\n */\nexport function ColorEditor(props: ColorEditorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class'])\n\n return (\n <HeadlessColorEditor\n {...headlessProps}\n class={({ colorSpace }) => {\n const base = [\n // Container\n 'flex flex-col gap-3',\n // Ensure readable defaults for nested native form controls\n '[&_label]:text-primary-200 [&_input]:text-primary-100',\n // Top row (area + sliders)\n '[&_.solidaria-ColorEditor-top]:flex [&_.solidaria-ColorEditor-top]:gap-3',\n // Bottom row (format + fields)\n '[&_.solidaria-ColorEditor-bottom]:flex [&_.solidaria-ColorEditor-bottom]:gap-2 [&_.solidaria-ColorEditor-bottom]:items-end',\n // Format selector styling\n '[&_.solidaria-ColorEditor-format]:h-8 [&_.solidaria-ColorEditor-format]:px-2 [&_.solidaria-ColorEditor-format]:text-sm',\n '[&_.solidaria-ColorEditor-format]:rounded-md [&_.solidaria-ColorEditor-format]:border [&_.solidaria-ColorEditor-format]:border-bg-300',\n '[&_.solidaria-ColorEditor-format]:bg-bg-400 [&_.solidaria-ColorEditor-format]:text-primary-200',\n '[&_.solidaria-ColorEditor-format]:outline-none [&_.solidaria-ColorEditor-format]:focus:ring-2 [&_.solidaria-ColorEditor-format]:focus:ring-accent',\n // Channel fields\n '[&_.solidaria-ColorField-input]:bg-bg-400 [&_.solidaria-ColorField-input]:border [&_.solidaria-ColorField-input]:border-bg-300',\n '[&_.solidaria-ColorField-input]:text-primary-100 [&_.solidaria-ColorField-input]:rounded-md',\n ].join(' ')\n\n return `${base} ${local.class ?? ''}`\n }}\n />\n )\n}\n","/**\n * ColorSwatchPicker component for proyecto-viviana-silapse\n *\n * Styled grid of selectable color swatches.\n */\n\nimport { type JSX, splitProps, createContext, createMemo, useContext } from 'solid-js'\nimport {\n ColorSwatchPicker as HeadlessColorSwatchPicker,\n ColorSwatchPickerItem as HeadlessColorSwatchPickerItem,\n ColorSwatch as HeadlessColorSwatch,\n type ColorSwatchPickerProps as HeadlessColorSwatchPickerProps,\n type ColorSwatchPickerItemProps as HeadlessColorSwatchPickerItemProps,\n type ColorSwatchRenderProps,\n} from '@proyecto-viviana/solidaria-components'\nimport type { Color } from '@proyecto-viviana/solid-stately'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport type SwatchPickerSize = 'xs' | 'sm' | 'md' | 'lg' | 'XS' | 'S' | 'M' | 'L'\nexport type SwatchPickerDensity = 'compact' | 'regular' | 'spacious'\nexport type SwatchPickerRounding = 'none' | 'default' | 'full'\n\nexport interface ColorSwatchPickerProps extends Omit<HeadlessColorSwatchPickerProps, 'class' | 'style'> {\n /** The size of the swatches. @default 'md' */\n size?: SwatchPickerSize\n /** The gap between swatches. @default 'regular' */\n density?: SwatchPickerDensity\n /** The corner rounding of swatches. @default 'none' */\n rounding?: SwatchPickerRounding\n /** Additional CSS class name. */\n class?: string\n}\n\nexport interface ColorSwatchPickerItemProps extends Omit<HeadlessColorSwatchPickerItemProps, 'class' | 'style'> {\n /** The color value for this swatch. */\n color: Color | string\n /** Additional CSS class name. */\n class?: string\n}\n\n// ============================================\n// CONTEXT\n// ============================================\n\ninterface SwatchPickerContextValue {\n size: 'xs' | 'sm' | 'md' | 'lg'\n rounding: SwatchPickerRounding\n}\n\nconst SwatchPickerContext = createContext<SwatchPickerContextValue>({\n size: 'md',\n rounding: 'none',\n})\n\n// ============================================\n// STYLES\n// ============================================\n\nconst sizeMap: Record<'xs' | 'sm' | 'md' | 'lg', string> = {\n xs: 'w-5 h-5',\n sm: 'w-6 h-6',\n md: 'w-8 h-8',\n lg: 'w-10 h-10',\n}\n\nconst densityMap: Record<SwatchPickerDensity, string> = {\n compact: 'gap-1',\n regular: 'gap-2',\n spacious: 'gap-4',\n}\n\nconst roundingMap: Record<SwatchPickerRounding, string> = {\n none: 'rounded-none',\n default: 'rounded',\n full: 'rounded-full',\n}\n\n// ============================================\n// COMPONENTS\n// ============================================\n\n/**\n * A ColorSwatchPicker displays a list of color swatches and allows a user to select one.\n */\nexport function ColorSwatchPicker(props: ColorSwatchPickerProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n 'size',\n 'density',\n 'rounding',\n 'class',\n ])\n\n const normalizeSize = (size: SwatchPickerSize | undefined): 'xs' | 'sm' | 'md' | 'lg' => {\n switch (size) {\n case 'XS':\n return 'xs'\n case 'S':\n return 'sm'\n case 'M':\n return 'md'\n case 'L':\n return 'lg'\n default:\n return size ?? 'md'\n }\n }\n\n const size = () => normalizeSize(local.size)\n const density = () => local.density ?? 'regular'\n const rounding = () => local.rounding ?? 'none'\n\n const contextValue = createMemo((): SwatchPickerContextValue => ({\n size: size(),\n rounding: rounding(),\n }))\n\n return (\n <SwatchPickerContext.Provider value={contextValue()}>\n <HeadlessColorSwatchPicker\n {...headlessProps}\n class={`flex flex-wrap ${densityMap[density()]} ${local.class ?? ''}`}\n />\n </SwatchPickerContext.Provider>\n )\n}\n\n/**\n * An item within a ColorSwatchPicker that wraps a color swatch with selection state.\n */\nexport function ColorSwatchPickerItem(props: ColorSwatchPickerItemProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['color', 'class'])\n const context = useContext(SwatchPickerContext)\n\n const sizeClass = () => sizeMap[context.size]\n const roundingClass = () => roundingMap[context.rounding]\n\n return (\n <HeadlessColorSwatchPickerItem\n {...headlessProps}\n color={local.color}\n class={`\n relative inline-flex cursor-pointer\n outline-none transition-all duration-150\n focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2\n ${local.class ?? ''}\n `}\n >\n <HeadlessColorSwatch\n color={local.color}\n class={(_renderProps: ColorSwatchRenderProps) => {\n const base = `${sizeClass()} ${roundingClass()} border border-bg-300 shadow-sm`\n return base\n }}\n />\n <div\n aria-hidden=\"true\"\n class={`\n absolute inset-0 pointer-events-none opacity-0 transition-opacity\n ${roundingClass()}\n ring-2 ring-accent ring-offset-2 ring-offset-bg-400\n [[data-selected]_&]:opacity-100\n `}\n />\n </HeadlessColorSwatchPickerItem>\n )\n}\n","/**\n * Landmark component for proyecto-viviana-silapse\n *\n * Styled landmark component built on top of solidaria-components.\n * Landmarks help screen reader users navigate between major sections of a page.\n * Press F6 to cycle through landmarks, or Shift+F6 to go backwards.\n */\n\nimport { type JSX, splitProps, Show } from 'solid-js'\nimport {\n Landmark as HeadlessLandmark,\n useLandmarkController,\n type LandmarkProps as HeadlessLandmarkProps,\n type AriaLandmarkRole,\n type LandmarkController,\n} from '@proyecto-viviana/solidaria-components'\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface LandmarkProps extends Omit<HeadlessLandmarkProps, 'class' | 'style'> {\n /** Additional CSS class name. */\n class?: string\n /** Whether to show a visual indicator (for development). */\n showLabel?: boolean\n}\n\nexport type { AriaLandmarkRole, LandmarkController }\n\n// ============================================\n// STYLES\n// ============================================\n\nconst roleLabels: Record<AriaLandmarkRole, string> = {\n main: 'Main',\n navigation: 'Navigation',\n search: 'Search',\n banner: 'Banner',\n contentinfo: 'Footer',\n complementary: 'Aside',\n form: 'Form',\n region: 'Region',\n}\n\nconst roleColors: Record<AriaLandmarkRole, string> = {\n main: 'bg-accent/10 border-accent-300',\n navigation: 'bg-primary-500/10 border-primary-400',\n search: 'bg-warning-400/10 border-warning-400',\n banner: 'bg-success-400/10 border-success-400',\n contentinfo: 'bg-danger-400/10 border-danger-400',\n complementary: 'bg-primary-300/10 border-primary-300',\n form: 'bg-accent-200/10 border-accent-200',\n region: 'bg-bg-200/50 border-bg-300',\n}\n\n// ============================================\n// LANDMARK COMPONENT\n// ============================================\n\n/**\n * A landmark is a region of the page that helps screen reader users navigate.\n * Press F6 to cycle through landmarks, or Shift+F6 to go backwards.\n *\n * @example\n * ```tsx\n * // Main content area\n * <Landmark role=\"main\" aria-label=\"Main content\">\n * <h1>Welcome</h1>\n * <p>Page content here...</p>\n * </Landmark>\n *\n * // Navigation\n * <Landmark role=\"navigation\" aria-label=\"Primary navigation\">\n * <nav>...</nav>\n * </Landmark>\n *\n * // With development label visible\n * <Landmark role=\"main\" aria-label=\"Main content\" showLabel>\n * ...\n * </Landmark>\n * ```\n */\nexport function Landmark(props: LandmarkProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, ['class', 'showLabel'])\n const customClass = local.class ?? ''\n\n const role = () => headlessProps.role\n\n const getClassName = (): string => {\n const base = 'relative'\n const debugClass = local.showLabel\n ? `border-2 border-dashed ${roleColors[role()]}`\n : ''\n return [base, debugClass, customClass].filter(Boolean).join(' ')\n }\n\n return (\n <HeadlessLandmark {...headlessProps} class={getClassName()}>\n <Show when={local.showLabel}>\n <div\n class={`absolute -top-3 left-2 px-2 py-0.5 text-xs font-medium rounded ${roleColors[role()]} text-primary-200`}\n >\n {roleLabels[role()]}\n <Show when={headlessProps['aria-label']}>\n <span class=\"text-primary-400\"> - {headlessProps['aria-label']}</span>\n </Show>\n </div>\n </Show>\n {props.children}\n </HeadlessLandmark>\n )\n}\n\n// ============================================\n// SKIP LINK COMPONENT\n// ============================================\n\nexport interface SkipLinkProps {\n /** The ID of the element to skip to (usually the main landmark). */\n href: string\n /** The text to display in the skip link. */\n children?: JSX.Element\n /** Additional CSS class name. */\n class?: string\n}\n\n/**\n * A skip link allows keyboard users to bypass repetitive navigation and jump directly to main content.\n * The link is visually hidden until focused.\n *\n * @example\n * ```tsx\n * <SkipLink href=\"#main-content\">Skip to main content</SkipLink>\n *\n * <Landmark role=\"navigation\">...</Landmark>\n *\n * <Landmark role=\"main\" id=\"main-content\">\n * ...\n * </Landmark>\n * ```\n */\nexport function SkipLink(props: SkipLinkProps): JSX.Element {\n const customClass = props.class ?? ''\n\n const className = [\n // Visually hidden by default\n 'absolute left-0 top-0 -translate-y-full',\n // Show when focused\n 'focus:translate-y-0',\n // Styling\n 'z-50 px-4 py-2 bg-accent text-bg-400 font-medium rounded-br-lg',\n 'transition-transform duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-accent-300 focus:ring-offset-2',\n customClass,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <a href={props.href} class={className}>\n {props.children ?? 'Skip to main content'}\n </a>\n )\n}\n\n// ============================================\n// LANDMARK NAVIGATOR COMPONENT\n// ============================================\n\nexport interface LandmarkNavigatorProps {\n /** Additional CSS class name. */\n class?: string\n /** Whether to show the navigator (for development/accessibility testing). */\n isVisible?: boolean\n}\n\n/**\n * A floating navigator for landmarks, useful for development and accessibility testing.\n * Provides buttons to navigate between landmarks programmatically.\n *\n * @example\n * ```tsx\n * // Show in development only\n * <LandmarkNavigator isVisible={import.meta.env.DEV} />\n * ```\n */\nexport function LandmarkNavigator(props: LandmarkNavigatorProps): JSX.Element {\n const controller = useLandmarkController()\n\n return (\n <Show when={props.isVisible}>\n <div\n class={`fixed bottom-4 right-4 z-50 flex flex-col gap-2 p-3 bg-bg-400 border border-bg-300 rounded-lg shadow-lg ${props.class ?? ''}`}\n >\n <span class=\"text-xs font-medium text-primary-400 uppercase tracking-wider\">\n Landmarks (F6)\n </span>\n <div class=\"flex gap-1\">\n <button\n type=\"button\"\n onClick={() => controller.focusPrevious()}\n class=\"px-2 py-1 text-sm bg-bg-300 hover:bg-bg-200 text-primary-200 rounded transition-colors\"\n title=\"Previous landmark (Shift+F6)\"\n >\n ←\n </button>\n <button\n type=\"button\"\n onClick={() => controller.focusMain()}\n class=\"px-3 py-1 text-sm bg-accent hover:bg-accent-200 text-white rounded transition-colors\"\n title=\"Go to main content\"\n >\n Main\n </button>\n <button\n type=\"button\"\n onClick={() => controller.focusNext()}\n class=\"px-2 py-1 text-sm bg-bg-300 hover:bg-bg-200 text-primary-200 rounded transition-colors\"\n title=\"Next landmark (F6)\"\n >\n →\n </button>\n </div>\n </div>\n </Show>\n )\n}\n\n// Export controller hook for convenience\nexport { useLandmarkController }\n","/**\n * View component for proyecto-viviana-silapse.\n *\n * Styling-only container primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface ViewProps extends JSX.HTMLAttributes<HTMLDivElement> {\n class?: string;\n}\n\nexport function View(props: ViewProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <div\n {...domProps}\n class={`vui-view ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n\n// Sub-component re-exports\nexport { Content, ViewHeader, ViewFooter } from './Content';\nexport type { ContentProps, ViewHeaderProps, ViewFooterProps } from './Content';\n\n","/**\n * Content/Header/Footer view slot components for proyecto-viviana-silapse\n *\n * Simple styled slot components for composing dialog, card, and panel layouts.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// CONTENT\n// ============================================\n\nexport interface ContentProps {\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n/**\n * A content slot component for dialog or panel body.\n */\nexport function Content(props: ContentProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class', 'children']);\n return (\n <div {...rest} class={`text-primary-200 text-sm ${local.class ?? ''}`}>\n {local.children}\n </div>\n );\n}\n\n// ============================================\n// HEADER\n// ============================================\n\nexport interface ViewHeaderProps {\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n/**\n * A header slot component.\n */\nexport function ViewHeader(props: ViewHeaderProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class', 'children']);\n return (\n <header {...rest} class={`text-primary-100 font-semibold text-lg pb-3 border-b border-primary-700 ${local.class ?? ''}`}>\n {local.children}\n </header>\n );\n}\n\n// ============================================\n// FOOTER\n// ============================================\n\nexport interface ViewFooterProps {\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n/**\n * A footer slot component.\n */\nexport function ViewFooter(props: ViewFooterProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class', 'children']);\n return (\n <footer {...rest} class={`pt-3 border-t border-primary-700 flex justify-end gap-3 ${local.class ?? ''}`}>\n {local.children}\n </footer>\n );\n}\n","/**\n * Well component for proyecto-viviana-silapse.\n *\n * Styling-only emphasized container primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface WellProps extends JSX.HTMLAttributes<HTMLDivElement> {\n class?: string;\n}\n\nexport function Well(props: WellProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <div\n {...domProps}\n class={`rounded-lg border border-primary-600 bg-bg-300 p-4 ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n\n","/**\n * Card component for proyecto-viviana-silapse.\n *\n * Styling-only surface container primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {\n class?: string;\n}\n\nexport function Card(props: CardProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <div\n {...domProps}\n class={`rounded-xl border border-primary-600 bg-bg-300 p-4 ${local.class ?? ''}`}\n >\n {local.children}\n </div>\n );\n}\n\n","/**\n * Image component for proyecto-viviana-silapse.\n *\n * Styling-only wrapper for semantic images.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface ImageProps extends JSX.ImgHTMLAttributes<HTMLImageElement> {\n class?: string;\n}\n\nexport function Image(props: ImageProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class']);\n return (\n <img\n {...domProps}\n class={`max-w-full h-auto ${local.class ?? ''}`}\n />\n );\n}\n\n","import { JSX, splitProps } from 'solid-js'\n\nexport interface PageLayoutProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Content of the page */\n children: JSX.Element\n /** Add padding-top to account for fixed header (use for non-landing pages) */\n withHeader?: boolean\n}\n\n/**\n * PageLayout provides consistent page structure with proper background and font styling.\n * Use this as the root wrapper for all pages.\n */\nexport function PageLayout(props: PageLayoutProps) {\n const [local, rest] = splitProps(props, ['class', 'withHeader'])\n\n const classes = () => {\n const base = 'vui-page'\n const header = local.withHeader ? 'vui-page--with-header' : ''\n const custom = local.class ?? ''\n return [base, header, custom].filter(Boolean).join(' ')\n }\n\n return (\n <div class={classes()} {...rest}>\n {props.children}\n </div>\n )\n}\n","/**\n * Flex component for proyecto-viviana-silapse\n *\n * A styled flex container with gap, direction, wrap, align, and justify props.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface FlexProps {\n /** The flex direction. @default 'row' */\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\n /** The gap between items. Accepts Tailwind gap values. @default '0' */\n gap?: string | number;\n /** Whether items should wrap. @default false */\n wrap?: boolean | 'wrap' | 'nowrap' | 'wrap-reverse';\n /** The alignment of items. */\n alignItems?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n /** The justification of items. */\n justifyContent?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n /** Whether the flex container is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n// ============================================\n// HELPERS\n// ============================================\n\nconst directionMap: Record<string, string> = {\n 'row': 'flex-row',\n 'column': 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n};\n\nconst alignMap: Record<string, string> = {\n 'start': 'items-start',\n 'center': 'items-center',\n 'end': 'items-end',\n 'stretch': 'items-stretch',\n 'baseline': 'items-baseline',\n};\n\nconst justifyMap: Record<string, string> = {\n 'start': 'justify-start',\n 'center': 'justify-center',\n 'end': 'justify-end',\n 'between': 'justify-between',\n 'around': 'justify-around',\n 'evenly': 'justify-evenly',\n};\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A flex container layout component.\n */\nexport function Flex(props: FlexProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'direction', 'gap', 'wrap', 'alignItems', 'justifyContent', 'inline', 'class', 'children',\n ]);\n\n const classes = (): string => {\n const parts: string[] = [local.inline ? 'inline-flex' : 'flex'];\n\n if (local.direction) parts.push(directionMap[local.direction] ?? 'flex-row');\n if (local.gap !== undefined) {\n parts.push(typeof local.gap === 'number' ? `gap-${local.gap}` : `gap-${local.gap}`);\n }\n if (local.wrap) {\n parts.push(local.wrap === true || local.wrap === 'wrap' ? 'flex-wrap' : local.wrap === 'wrap-reverse' ? 'flex-wrap-reverse' : 'flex-nowrap');\n }\n if (local.alignItems) parts.push(alignMap[local.alignItems] ?? '');\n if (local.justifyContent) parts.push(justifyMap[local.justifyContent] ?? '');\n if (local.class) parts.push(local.class);\n\n return parts.filter(Boolean).join(' ');\n };\n\n return (\n <div {...rest} class={classes()}>\n {local.children}\n </div>\n );\n}\n","/**\n * Grid component for proyecto-viviana-silapse\n *\n * A styled CSS grid container with columns, rows, gap, and areas props.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface GridProps {\n /** The number of columns, or a grid-template-columns value. */\n columns?: number | string;\n /** The number of rows, or a grid-template-rows value. */\n rows?: number | string;\n /** The gap between items. Accepts Tailwind gap values. */\n gap?: string | number;\n /** The column gap. */\n columnGap?: string | number;\n /** The row gap. */\n rowGap?: string | number;\n /** Named grid areas (grid-template-areas). */\n areas?: string[];\n /** The alignment of items. */\n alignItems?: 'start' | 'center' | 'end' | 'stretch';\n /** The justification of items. */\n justifyItems?: 'start' | 'center' | 'end' | 'stretch';\n /** Whether the grid is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n /** The content. */\n children?: JSX.Element;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A CSS Grid layout component.\n */\nexport function Grid(props: GridProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n 'columns', 'rows', 'gap', 'columnGap', 'rowGap', 'areas',\n 'alignItems', 'justifyItems', 'inline', 'class', 'style', 'children',\n ]);\n\n const gridStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = { ...(local.style ?? {}) };\n\n if (local.columns !== undefined) {\n s['grid-template-columns'] = typeof local.columns === 'number'\n ? `repeat(${local.columns}, 1fr)`\n : local.columns;\n }\n if (local.rows !== undefined) {\n s['grid-template-rows'] = typeof local.rows === 'number'\n ? `repeat(${local.rows}, 1fr)`\n : local.rows;\n }\n if (local.areas) {\n s['grid-template-areas'] = local.areas.map(a => `\"${a}\"`).join(' ');\n }\n\n return s;\n };\n\n const classes = (): string => {\n const parts: string[] = [local.inline ? 'inline-grid' : 'grid'];\n\n if (local.gap !== undefined) parts.push(`gap-${local.gap}`);\n if (local.columnGap !== undefined) parts.push(`gap-x-${local.columnGap}`);\n if (local.rowGap !== undefined) parts.push(`gap-y-${local.rowGap}`);\n\n if (local.alignItems) {\n const map: Record<string, string> = { start: 'items-start', center: 'items-center', end: 'items-end', stretch: 'items-stretch' };\n parts.push(map[local.alignItems] ?? '');\n }\n if (local.justifyItems) {\n const map: Record<string, string> = { start: 'justify-items-start', center: 'justify-items-center', end: 'justify-items-end', stretch: 'justify-items-stretch' };\n parts.push(map[local.justifyItems] ?? '');\n }\n if (local.class) parts.push(local.class);\n\n return parts.filter(Boolean).join(' ');\n };\n\n return (\n <div {...rest} class={classes()} style={gridStyle()}>\n {local.children}\n </div>\n );\n}\n","/**\n * CSS utility functions for proyecto-viviana-silapse\n *\n * Helper functions for common CSS grid/layout values.\n */\n\n/**\n * Creates a CSS `fit-content()` value.\n * @param value - The max content size (e.g., '200px', '50%')\n */\nexport function fitContent(value: string): string {\n return `fit-content(${value})`;\n}\n\n/**\n * Creates a CSS `minmax()` value.\n * @param min - The minimum size\n * @param max - The maximum size\n */\nexport function minmax(min: string, max: string): string {\n return `minmax(${min}, ${max})`;\n}\n\n/**\n * Creates a CSS `repeat()` value.\n * @param count - The repetition count or 'auto-fill' / 'auto-fit'\n * @param track - The track definition\n */\nexport function repeat(count: number | 'auto-fill' | 'auto-fit', track: string): string {\n return `repeat(${count}, ${track})`;\n}\n","/**\n * IllustratedMessage component for proyecto-viviana-silapse.\n *\n * Styling-only empty-state/message primitive.\n */\n\nimport { type JSX, Show, splitProps } from 'solid-js';\n\nexport interface IllustratedMessageProps extends JSX.HTMLAttributes<HTMLDivElement> {\n illustration?: JSX.Element;\n heading?: JSX.Element;\n description?: JSX.Element;\n class?: string;\n}\n\nexport function IllustratedMessage(props: IllustratedMessageProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\n 'illustration',\n 'heading',\n 'description',\n 'class',\n 'children',\n ]);\n\n return (\n <div\n {...domProps}\n class={`flex flex-col items-center justify-center gap-3 rounded-lg border border-primary-600 bg-bg-300 p-6 text-center ${local.class ?? ''}`}\n >\n <Show when={local.illustration}>\n <div class=\"text-primary-300\">{local.illustration}</div>\n </Show>\n <Show when={local.heading}>\n <h3 class=\"text-lg font-semibold text-primary-100\">{local.heading}</h3>\n </Show>\n <Show when={local.description}>\n <p class=\"text-sm text-primary-300\">{local.description}</p>\n </Show>\n <Show when={local.children}>\n <div class=\"mt-1\">{local.children}</div>\n </Show>\n </div>\n );\n}\n","/**\n * StepList component for proyecto-viviana-silapse.\n *\n * Styling-only ordered-step composition primitive.\n */\n\nimport { type JSX, splitProps } from 'solid-js';\n\nexport interface StepListProps extends JSX.HTMLAttributes<HTMLOListElement> {\n class?: string;\n}\n\nexport interface StepProps extends JSX.HTMLAttributes<HTMLLIElement> {\n class?: string;\n}\n\nexport function StepList(props: StepListProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <ol\n {...domProps}\n class={`flex list-decimal flex-col gap-2 pl-5 text-primary-200 ${local.class ?? ''}`}\n >\n {local.children}\n </ol>\n );\n}\n\nexport function Step(props: StepProps): JSX.Element {\n const [local, domProps] = splitProps(props, ['class', 'children']);\n return (\n <li\n {...domProps}\n class={`text-sm leading-6 ${local.class ?? ''}`}\n >\n {local.children}\n </li>\n );\n}\n\n","/**\n * Drag-and-drop module compatibility entrypoint for proyecto-viviana-silapse.\n */\n\nexport {\n DragAndDropContext,\n DropIndicator,\n DropIndicatorContext,\n useDndPersistedKeys,\n useRenderDropIndicator,\n useDragAndDrop,\n} from '@proyecto-viviana/solidaria-components';\nexport type {\n DragAndDropContextValue,\n DropIndicatorProps,\n DropIndicatorRenderProps,\n DropTargetDelegate,\n DragAndDropOptions,\n DragAndDropHooks,\n} from '@proyecto-viviana/solidaria-components';\n\nexport { DIRECTORY_DRAG_TYPE } from '@proyecto-viviana/solid-stately';\n\n","import { splitProps } from 'solid-js';\nimport type { JSX } from 'solid-js';\nimport {\n SharedElement as HeadlessSharedElement,\n SharedElementTransition as HeadlessSharedElementTransition,\n type SharedElementProps as HeadlessSharedElementProps,\n type SharedElementRenderProps,\n type SharedElementTransitionProps as HeadlessSharedElementTransitionProps,\n} from '@proyecto-viviana/solidaria-components';\n\nconst mergeClassName = (custom?: string) =>\n (_renderProps: SharedElementRenderProps) =>\n ['vui-shared-element', custom].filter(Boolean).join(' ');\n\nexport interface SharedElementProps\n extends Omit<HeadlessSharedElementProps, 'class' | 'style'> {\n class?: string;\n style?: JSX.CSSProperties;\n}\n\nexport function SharedElement(props: SharedElementProps): JSX.Element {\n const [local, rest] = splitProps(props, ['class', 'style']);\n return (\n <HeadlessSharedElement\n {...rest}\n class={mergeClassName(local.class)}\n style={local.style}\n />\n );\n}\n\nexport function SharedElementTransition(\n props: HeadlessSharedElementTransitionProps\n): JSX.Element {\n return <HeadlessSharedElementTransition {...props} />;\n}\n\nexport type SharedElementTransitionProps = HeadlessSharedElementTransitionProps;\n","// ============================================\n// SPECTRUM-BASED COMPONENTS\n// ============================================\n\n// Button\nexport { Button } from './button';\nexport type { ButtonProps, ButtonVariant, ButtonStyle, StaticColor } from './button';\n\n// Badge\nexport { Badge } from './badge';\nexport type { BadgeProps, BadgeVariant, BadgeSize } from './badge';\n\n// Alert\nexport { Alert } from './alert';\nexport type { AlertProps, AlertVariant } from './alert';\n\n// InlineAlert\nexport { InlineAlert } from './inlinealert';\nexport type { InlineAlertProps, InlineAlertVariant } from './inlinealert';\n\n// Avatar\nexport { Avatar, AvatarGroup } from './avatar';\nexport type { AvatarProps, AvatarGroupProps, AvatarSize } from './avatar';\n\n// Switch\nexport { TabSwitch, ToggleSwitch, ToggleSwitch as Switch } from './switch';\nexport type { TabSwitchProps, ToggleSwitchProps, ToggleSwitchProps as SwitchProps, SwitchSize } from './switch';\n\n// Checkbox\nexport { Checkbox, CheckboxGroup } from './checkbox';\nexport type { CheckboxProps, CheckboxGroupProps, CheckboxSize } from './checkbox';\n\n// Radio\nexport { RadioGroup, Radio } from './radio';\nexport type { RadioGroupProps, RadioProps, RadioGroupOrientation, RadioGroupSize } from './radio';\n\n// Dialog\nexport { Dialog, DialogTrigger, DialogFooter } from './dialog';\nexport type { DialogProps, DialogTriggerProps, DialogFooterProps, DialogSize } from './dialog';\n\n// Icon\nexport { Icon, GitHubIcon } from './icon';\nexport type { IconProps, GitHubIconProps } from './icon';\n\n// Tooltip\nexport { Tooltip, TooltipTrigger, SimpleTooltip } from './tooltip';\nexport type { TooltipProps, TooltipTriggerProps, TooltipPlacement, TooltipVariant, SimpleTooltipProps } from './tooltip';\n\n// Overlays\nexport {\n Dialog as OverlayDialog,\n DialogTrigger as OverlayDialogTrigger,\n DialogFooter as OverlayDialogFooter,\n Popover as OverlayPopover,\n PopoverTrigger as OverlayPopoverTrigger,\n PopoverHeader as OverlayPopoverHeader,\n PopoverFooter as OverlayPopoverFooter,\n Tooltip as OverlayTooltip,\n TooltipTrigger as OverlayTooltipTrigger,\n SimpleTooltip as OverlaySimpleTooltip,\n} from './overlays';\nexport type {\n DialogProps as OverlayDialogProps,\n DialogTriggerProps as OverlayDialogTriggerProps,\n DialogFooterProps as OverlayDialogFooterProps,\n DialogSize as OverlayDialogSize,\n PopoverProps as OverlayPopoverProps,\n PopoverTriggerProps as OverlayPopoverTriggerProps,\n PopoverHeaderProps as OverlayPopoverHeaderProps,\n PopoverFooterProps as OverlayPopoverFooterProps,\n PopoverPlacement as OverlayPopoverPlacement,\n PopoverSize as OverlayPopoverSize,\n PopoverRenderProps as OverlayPopoverRenderProps,\n TooltipProps as OverlayTooltipProps,\n TooltipTriggerProps as OverlayTooltipTriggerProps,\n TooltipPlacement as OverlayTooltipPlacement,\n TooltipVariant as OverlayTooltipVariant,\n SimpleTooltipProps as OverlaySimpleTooltipProps,\n} from './overlays';\n\n// Popover\nexport { Popover, PopoverTrigger, PopoverHeader, PopoverFooter } from './popover';\nexport type { PopoverProps, PopoverTriggerProps, PopoverHeaderProps, PopoverFooterProps, PopoverPlacement, PopoverSize, PopoverRenderProps } from './popover';\n\n// TextField\nexport { TextField } from './textfield';\nexport type { TextFieldProps, TextFieldSize, TextFieldVariant } from './textfield';\n\n// TextArea\nexport { TextArea } from './textfield/TextArea';\nexport type { TextAreaProps, TextAreaSize, TextAreaVariant } from './textfield/TextArea';\n\n// Link\nexport { Link } from './link';\nexport type { LinkProps, LinkVariant } from './link';\n\n// ProgressBar\nexport { ProgressBar } from './progress-bar';\nexport type { ProgressBarProps, ProgressBarSize, ProgressBarVariant } from './progress-bar';\n\n// Progress\nexport { ProgressBar as Progress } from './progress';\nexport type { ProgressBarProps as ProgressProps, ProgressBarSize as ProgressSize, ProgressBarVariant as ProgressVariant } from './progress';\n\n// Separator\nexport { Separator } from './separator';\nexport type { SeparatorProps, SeparatorVariant, SeparatorSize } from './separator';\n\n// Divider\nexport { Divider } from './divider';\nexport type { DividerProps, DividerVariant, DividerSize } from './divider';\n\n// Text\nexport { Text } from './text';\nexport type { TextProps, TextVariant, TextSize } from './text';\n\n// Label\nexport { Label } from './label';\nexport type { LabelProps, LabelSize } from './label';\n\n// Form\nexport { Form, FieldError as FormFieldError } from './form';\nexport type { FormProps, FieldErrorProps } from './form';\n\n// Toolbar\nexport { Toolbar } from './toolbar';\nexport type { ToolbarProps, ToolbarSize, ToolbarVariant } from './toolbar';\n\n// ActionBar\nexport { ActionBar, ActionBarContainer } from './actionbar';\nexport type { ActionBarProps, ActionBarContainerProps } from './actionbar';\n\n// ActionGroup\nexport { ActionGroup } from './actiongroup';\nexport type { ActionGroupProps } from './actiongroup';\n\n// ButtonGroup\nexport { ButtonGroup } from './buttongroup';\nexport type { ButtonGroupProps } from './buttongroup';\n\n// Autocomplete\nexport { SearchAutocomplete } from './autocomplete';\nexport type { SearchAutocompleteProps, SearchAutocompleteItem, SearchAutocompleteSize } from './autocomplete';\n\n// Select\nexport { Select, SelectTrigger, SelectValue, SelectListBox, SelectOption } from './select';\nexport type { SelectProps, SelectTriggerProps, SelectValueProps, SelectListBoxProps, SelectOptionProps, SelectSize } from './select';\n\n// Picker\nexport { Picker, PickerTrigger, PickerValue, PickerListBox, PickerItem } from './picker';\nexport type {\n PickerProps,\n PickerTriggerProps,\n PickerValueProps,\n PickerListBoxProps,\n PickerItemProps,\n PickerSize,\n} from './picker';\n\n// Menu\nexport { Menu, MenuItem, MenuTrigger, MenuButton, MenuSeparator } from './menu';\nexport type { MenuProps, MenuItemProps, MenuTriggerProps, MenuButtonProps, MenuSeparatorProps, MenuSize } from './menu';\n\n// ListBox\nexport { ListBox, ListBoxOption } from './listbox';\nexport type { ListBoxProps, ListBoxOptionProps, ListBoxSize } from './listbox';\n\n// List\nexport { ListView, ListViewItem, ListViewSelectionCheckbox } from './list';\nexport type {\n ListViewProps,\n ListViewItemProps,\n ListViewSize,\n ListViewVariant,\n ListViewLayout,\n} from './list';\n\n// Tabs\nexport { Tabs, TabList, Tab, TabPanel } from './tabs';\nexport type { TabsProps, TabListProps, TabProps, TabPanelProps, TabsSize, TabsVariant, TabOrientation } from './tabs';\n\n// Breadcrumbs\nexport { Breadcrumbs, BreadcrumbItem } from './breadcrumbs';\nexport type { BreadcrumbsProps, BreadcrumbItemProps, BreadcrumbsSize, BreadcrumbsVariant } from './breadcrumbs';\n\n// NumberField\nexport { NumberField } from './numberfield';\nexport type { NumberFieldProps, NumberFieldSize, NumberFieldVariant } from './numberfield';\n\n// DropZone\nexport { DropZone } from './dropzone';\nexport type { DropZoneProps } from './dropzone';\n\n// FileTrigger\nexport { FileTrigger } from './filetrigger';\nexport type { FileTriggerProps } from './filetrigger';\n\n// SearchField\nexport { SearchField } from './searchfield';\nexport type { SearchFieldProps, SearchFieldSize, SearchFieldVariant } from './searchfield';\n\n// ContextualHelp\nexport { ContextualHelp } from './contextualhelp';\nexport type { ContextualHelpProps } from './contextualhelp';\n\n// Slider\nexport { Slider } from './slider';\nexport type { SliderProps, SliderSize, SliderVariant } from './slider';\n\n// ComboBox\nexport { ComboBox, ComboBoxInputGroup, ComboBoxInput, ComboBoxButton, ComboBoxListBox, ComboBoxOption, defaultContainsFilter } from './combobox';\nexport type { ComboBoxProps, ComboBoxInputProps, ComboBoxButtonProps, ComboBoxListBoxProps, ComboBoxOptionProps, ComboBoxSize, FilterFn, MenuTriggerAction } from './combobox';\n\n// Toast\nexport {\n Toast,\n ToastRegion,\n ToastProvider,\n ToastContext,\n addToast,\n toastSuccess,\n toastError,\n toastWarning,\n toastInfo,\n globalToastQueue,\n useToastContext,\n} from './toast';\nexport type {\n ToastProps,\n ToastRegionProps,\n ToastProviderProps,\n ToastPlacement,\n ToastVariant,\n ToastContent,\n ToastRenderProps,\n ToastRegionRenderProps,\n QueuedToast,\n ToastOptions,\n} from './toast';\n\n// Disclosure\nexport {\n Disclosure,\n DisclosureGroup,\n DisclosureTrigger,\n DisclosurePanel,\n} from './disclosure';\nexport type {\n DisclosureProps,\n DisclosureGroupProps,\n DisclosureTriggerProps,\n DisclosurePanelProps,\n DisclosureSize,\n DisclosureVariant,\n} from './disclosure';\n\n// Accordion\nexport {\n Accordion,\n AccordionItem,\n AccordionHeader,\n AccordionPanel,\n} from './accordion';\nexport type {\n AccordionProps,\n AccordionItemProps,\n AccordionHeaderProps,\n AccordionPanelProps,\n AccordionSize,\n AccordionVariant,\n} from './accordion';\n\n// Meter\nexport { Meter } from './meter';\nexport type { MeterProps, MeterSize, MeterVariant } from './meter';\n\n// TagGroup\nexport { TagGroup } from './tag-group';\nexport type { TagGroupProps, TagProps, TagGroupSize, TagGroupVariant } from './tag-group';\n\n// LabeledValue\nexport { LabeledValue } from './labeledvalue';\nexport type { LabeledValueProps, LabeledValueOrientation } from './labeledvalue';\n\n// StatusLight\nexport { StatusLight } from './statuslight';\nexport type { StatusLightProps, StatusLightSize, StatusLightVariant } from './statuslight';\n\n// Calendar\nexport { Calendar } from './calendar';\nexport type { CalendarProps, CalendarSize, CalendarDate, DateValue } from './calendar';\n\n// RangeCalendar\nexport { RangeCalendar } from './calendar/RangeCalendar';\nexport type { RangeCalendarProps, RangeCalendarSize, RangeValue } from './calendar/RangeCalendar';\n\n// DateField\nexport { DateField } from './calendar/DateField';\nexport type { DateFieldProps, DateFieldSize } from './calendar/DateField';\n\n// TimeField\nexport { TimeField } from './calendar/TimeField';\nexport type { TimeFieldProps, TimeFieldSize, TimeValue } from './calendar/TimeField';\n\n// DatePicker\nexport { DatePicker } from './calendar/DatePicker';\nexport type { DatePickerProps, DatePickerSize } from './calendar/DatePicker';\n\n// DateRangePicker\nexport { DateRangePicker } from './calendar/DateRangePicker';\nexport type { DateRangePickerProps, DateRangePickerSize } from './calendar/DateRangePicker';\n\n// Table\nexport {\n Table,\n TableHeader,\n TableColumn,\n TableBody,\n TableRow,\n TableCell,\n TableSelectionCheckbox,\n TableSelectAllCheckbox,\n} from './table';\nexport type {\n TableProps,\n TableHeaderProps,\n TableColumnProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n TableSize,\n TableVariant,\n} from './table';\n\n// GridList\nexport {\n GridList,\n GridListItem,\n GridListSelectionCheckbox,\n} from './gridlist';\nexport type {\n GridListProps,\n GridListItemProps,\n GridListSize,\n GridListVariant,\n GridListLayout,\n} from './gridlist';\n\n// Tree\nexport {\n Tree,\n TreeItem,\n TreeExpandButton,\n TreeSelectionCheckbox,\n} from './tree';\nexport type {\n TreeProps,\n TreeItemProps,\n TreeExpandButtonProps,\n TreeSize,\n TreeVariant,\n} from './tree';\n\n// Color\nexport {\n ColorSlider,\n ColorSliderTrack,\n ColorSliderThumb,\n ColorArea,\n ColorAreaGradient,\n ColorAreaThumb,\n ColorWheel,\n ColorWheelTrack,\n ColorWheelThumb,\n ColorField,\n ColorFieldInput,\n ColorSwatch,\n ColorPicker,\n} from './color';\nexport type {\n ColorSliderProps,\n ColorAreaProps,\n ColorWheelProps,\n ColorFieldProps,\n ColorSwatchProps,\n ColorPickerProps,\n ColorSize,\n} from './color';\n\n// ColorEditor\nexport { ColorEditor } from './color/ColorEditor';\nexport type { ColorEditorProps } from './color/ColorEditor';\n\n// ColorSwatchPicker\nexport { ColorSwatchPicker, ColorSwatchPickerItem } from './color/ColorSwatchPicker';\nexport type { ColorSwatchPickerProps, ColorSwatchPickerItemProps, SwatchPickerSize, SwatchPickerDensity, SwatchPickerRounding } from './color/ColorSwatchPicker';\n\n// Landmark\nexport {\n Landmark,\n SkipLink,\n LandmarkNavigator,\n useLandmarkController,\n} from './landmark';\nexport type {\n LandmarkProps,\n SkipLinkProps,\n LandmarkNavigatorProps,\n AriaLandmarkRole,\n LandmarkController,\n} from './landmark';\n\n// View\nexport { View } from './view';\nexport type { ViewProps } from './view';\n\n// Well\nexport { Well } from './well';\nexport type { WellProps } from './well';\n\n// Card\nexport { Card } from './card';\nexport type { CardProps } from './card';\n\n// Image\nexport { Image } from './image';\nexport type { ImageProps } from './image';\n\n// Layout\nexport { Layout } from './layout';\nexport type { LayoutProps } from './layout';\n\n// IllustratedMessage\nexport { IllustratedMessage } from './illustratedmessage';\nexport type { IllustratedMessageProps } from './illustratedmessage';\n\n// StepList\nexport { StepList, Step } from './steplist';\nexport type { StepListProps, StepProps } from './steplist';\n\n// Drag and Drop\nexport {\n DragAndDropContext,\n DropIndicator,\n DropIndicatorContext,\n useDndPersistedKeys,\n useRenderDropIndicator,\n useDragAndDrop,\n} from './dnd';\nexport type {\n DragAndDropContextValue,\n DropIndicatorProps,\n DropIndicatorRenderProps,\n DropTargetDelegate,\n DragAndDropOptions,\n DragAndDropHooks,\n} from './dnd';\n\n// Shared Element\nexport { SharedElement, SharedElementTransition } from './shared-element';\nexport type { SharedElementProps, SharedElementTransitionProps } from './shared-element';\n\n// Heading\nexport { Heading } from './text/Heading';\nexport type { HeadingProps, HeadingLevel } from './text/Heading';\n\n// Keyboard\nexport { StyledKeyboard } from './text/Keyboard';\nexport type { KeyboardProps as StyledKeyboardProps } from './text/Keyboard';\n\n// ToggleButton\nexport { ToggleButton } from './button/ToggleButton';\nexport type { ToggleButtonProps, ToggleButtonSize } from './button/ToggleButton';\n\n// ActionButton\nexport { ActionButton } from './button/ActionButton';\nexport type { ActionButtonProps, ActionButtonSize } from './button/ActionButton';\n\n// ClearButton\nexport { ClearButton } from './button/ClearButton';\nexport type { ClearButtonProps, ClearButtonSize } from './button/ClearButton';\n\n// FieldButton\nexport { FieldButton } from './button/FieldButton';\nexport type { FieldButtonProps } from './button/FieldButton';\n\n// LogicButton\nexport { LogicButton } from './button/LogicButton';\nexport type { LogicButtonProps } from './button/LogicButton';\n\n// AlertDialog\nexport { AlertDialog } from './dialog/AlertDialog';\nexport type { AlertDialogProps, AlertDialogVariant } from './dialog/AlertDialog';\n\n// ActionMenu\nexport { ActionMenu } from './menu/ActionMenu';\nexport type { ActionMenuProps } from './menu/ActionMenu';\n\n// SubmenuTrigger\nexport { SubmenuTrigger } from './menu/SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './menu/SubmenuTrigger';\n\n// ContextualHelpTrigger\nexport { ContextualHelpTrigger } from './menu/ContextualHelpTrigger';\nexport type { ContextualHelpTriggerProps } from './menu/ContextualHelpTrigger';\n\n// ProgressCircle\nexport { ProgressCircle } from './progress/ProgressCircle';\nexport type { ProgressCircleProps, ProgressCircleSize, ProgressCircleVariant } from './progress/ProgressCircle';\n\n// RangeSlider\nexport { RangeSlider } from './slider/RangeSlider';\nexport type { RangeSliderProps, RangeSliderSize } from './slider/RangeSlider';\n\n// Field\nexport { Field } from './form/Field';\nexport type { FieldProps, FieldSize } from './form/Field';\n\n// HelpText\nexport { HelpText } from './form/HelpText';\nexport type { HelpTextProps } from './form/HelpText';\n\n// StyledModal\nexport { StyledModal } from './overlays/Modal';\nexport type { StyledModalProps, ModalSize } from './overlays/Modal';\n\n// Overlay\nexport { Overlay } from './overlays/Overlay';\nexport type { OverlayProps } from './overlays/Overlay';\n\n// Tray\nexport { Tray } from './overlays/Tray';\nexport type { TrayProps } from './overlays/Tray';\n\n// OpenTransition\nexport { OpenTransition } from './overlays/OpenTransition';\nexport type { OpenTransitionProps } from './overlays/OpenTransition';\n\n// View Slots\nexport { Content, ViewHeader, ViewFooter } from './view/Content';\nexport type { ContentProps, ViewHeaderProps, ViewFooterProps } from './view/Content';\n\n// Illustration\nexport { Illustration } from './icon/Illustration';\nexport type { IllustrationProps, IllustrationSize } from './icon/Illustration';\n\n// UIIcon\nexport { UIIcon } from './icon/UIIcon';\nexport type { UIIconProps, UIIconSize } from './icon/UIIcon';\n\n// Virtualizer\nexport {\n Virtualizer,\n VirtualizerContext,\n useVirtualizerContext,\n ListLayout,\n GridLayout,\n WaterfallLayout,\n TableLayout,\n} from '@proyecto-viviana/solidaria-components';\nexport type {\n VirtualizerProps,\n VirtualizerLayout,\n VirtualizerLayoutClass,\n VirtualizerContextValue,\n VirtualizerVisibleRange,\n VirtualizerDropTarget,\n VirtualizerDropOperationResolver,\n VirtualizerDropTargetResolver,\n VirtualizerRangeContext,\n DefaultVirtualizerLayoutOptions,\n GridLayoutOptions,\n WaterfallLayoutOptions,\n} from '@proyecto-viviana/solidaria-components';\n\n// Flex Layout\nexport { Flex } from './layout/Flex';\nexport type { FlexProps } from './layout/Flex';\n\n// Grid Layout\nexport { Grid } from './layout/Grid';\nexport type { GridProps } from './layout/Grid';\n\n// CSS Utilities\nexport { fitContent, minmax, repeat } from './layout/css-utils';\n\n// Story utilities\nexport { cx } from './story-utils';\nexport { StoryErrorBoundary } from './story-utils/ErrorBoundary';\nexport type { StoryErrorBoundaryProps } from './story-utils/ErrorBoundary';\nexport { generatePowerset } from './story-utils/generatePowerset';\nexport type { PropValues, PowersetItem } from './story-utils/generatePowerset';\n\n// Style macro compatibility\nexport { s1 } from './style-macro-s1';\n\n// Provider\nexport { Provider, useProvider, useProviderProps, useTheme, ThemeContext } from './provider';\nexport type {\n ProviderProps,\n ProviderContextValue,\n ProviderInheritedProps,\n ThemeContextValue,\n ColorScheme,\n Scale,\n ValidationState,\n} from './provider';\n\n// Theme compatibility\nexport { themeExpressClass } from './theme-express';\nexport { themeLightClass, lightTheme } from './theme-light';\nexport { themeDarkClass, darkTheme } from './theme-dark';\nexport { themeDefaultClass, defaultTheme } from './theme-default';\nexport type { Theme } from './theme/types';\n\n// ============================================\n// CUSTOM COMPONENTS\n// ============================================\n\n// Chip\nexport { Chip } from './custom/chip';\nexport type { ChipProps, ChipVariant } from './custom/chip';\n\n// NavHeader\nexport { NavHeader } from './custom/nav-header';\nexport type { NavHeaderProps } from './custom/nav-header';\n\n// Header\nexport { Header } from './custom/header';\nexport type { HeaderProps } from './custom/header';\n\n// LateralNav\nexport { LateralNav, NavItem, NavLink, NavSection } from './custom/lateral-nav';\nexport type { LateralNavProps, NavItemProps, NavLinkProps, NavSectionProps } from './custom/lateral-nav';\n\n// TimelineItem\nexport { TimelineItem } from './custom/timeline-item';\nexport type { TimelineItemProps, TimelineEventType } from './custom/timeline-item';\n\n// Conversation\nexport { Conversation, ConversationPreview, ConversationBubble } from './custom/conversation';\nexport type { ConversationProps, ConversationPreviewProps, ConversationBubbleProps, Message } from './custom/conversation';\n\n// ProfileCard\nexport { ProfileCard } from './custom/profile-card';\nexport type { ProfileCardProps } from './custom/profile-card';\n\n// EventCard\nexport { EventCard, EventListItem } from './custom/event-card';\nexport type { EventCardProps, EventListItemProps } from './custom/event-card';\n\n// CalendarCard\nexport { CalendarCard } from './custom/calendar-card';\nexport type { CalendarCardProps } from './custom/calendar-card';\n\n// Logo\nexport { Logo } from './custom/logo';\nexport type { LogoProps, LogoSize } from './custom/logo';\n\n// ProjectCard\nexport { ProjectCard } from './custom/project-card';\nexport type { ProjectCardProps, ProjectCardSize } from './custom/project-card';\n\n// PageLayout\nexport { PageLayout } from './custom/page-layout';\nexport type { PageLayoutProps } from './custom/page-layout';\n","/**\n * ErrorBoundary component for proyecto-viviana-silapse\n *\n * A styled error boundary for use in stories and development.\n */\n\nimport { type JSX, ErrorBoundary as SolidErrorBoundary } from 'solid-js';\n\n// ============================================\n// TYPES\n// ============================================\n\nexport interface StoryErrorBoundaryProps {\n /** The content to render. */\n children?: JSX.Element;\n /** Custom fallback component. */\n fallback?: (err: Error, reset: () => void) => JSX.Element;\n}\n\n// ============================================\n// COMPONENT\n// ============================================\n\n/**\n * A styled error boundary that catches and displays errors in stories.\n */\nexport function StoryErrorBoundary(props: StoryErrorBoundaryProps): JSX.Element {\n return (\n <SolidErrorBoundary\n fallback={(err: Error, reset: () => void) =>\n props.fallback\n ? props.fallback(err, reset)\n : (\n <div class=\"rounded-lg border-2 border-red-400 bg-red-400/10 p-4\">\n <h3 class=\"text-red-400 font-semibold mb-2\">Error</h3>\n <pre class=\"text-sm text-red-300 whitespace-pre-wrap mb-3\">{err.message}</pre>\n <button\n class=\"px-3 py-1 text-sm rounded bg-red-400 text-white hover:bg-red-500 transition-colors\"\n onClick={reset}\n >\n Retry\n </button>\n </div>\n )\n }\n >\n {props.children}\n </SolidErrorBoundary>\n );\n}\n","/**\n * generatePowerset - Prop combination generator for component testing\n *\n * Generates all combinations of prop values for visual regression testing.\n */\n\nexport type PropValues<T> = {\n [K in keyof T]?: T[K][];\n};\n\nexport interface PowersetItem<T> {\n /** Human-readable label for this combination. */\n label: string;\n /** The prop values for this combination. */\n props: Partial<T>;\n}\n\n/**\n * Generates all combinations of the given prop values.\n *\n * @param propValues - An object mapping prop names to arrays of possible values.\n * @returns An array of all prop combinations.\n *\n * @example\n * ```ts\n * const combos = generatePowerset({\n * size: ['sm', 'md', 'lg'],\n * variant: ['primary', 'secondary'],\n * isDisabled: [false, true],\n * });\n * // Returns 12 combinations (3 * 2 * 2)\n * ```\n */\nexport function generatePowerset<T extends Record<string, unknown>>(\n propValues: PropValues<T>,\n): PowersetItem<T>[] {\n const keys = Object.keys(propValues) as (keyof T)[];\n const result: PowersetItem<T>[] = [];\n\n function generate(index: number, current: Partial<T>, labels: string[]): void {\n if (index === keys.length) {\n result.push({\n label: labels.join(', '),\n props: { ...current },\n });\n return;\n }\n\n const key = keys[index];\n const values = propValues[key]!;\n\n for (const value of values) {\n generate(\n index + 1,\n { ...current, [key]: value },\n [...labels, `${String(key)}=${String(value)}`],\n );\n }\n }\n\n generate(0, {}, []);\n return result;\n}\n","/**\n * Story utility helpers for local component stories.\n */\n\nexport function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n\nexport { StoryErrorBoundary } from './ErrorBoundary';\nexport type { StoryErrorBoundaryProps } from './ErrorBoundary';\nexport { generatePowerset } from './generatePowerset';\nexport type { PropValues, PowersetItem } from './generatePowerset';\n\n","/**\n * Lightweight style-macro compatibility helpers.\n */\n\nexport function s1(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n\n","/**\n * Theme Express compatibility module.\n */\n\nexport const themeExpressClass = 'vui-theme-express';\n\n","import { type JSX, Show } from 'solid-js'\nimport { Button as HeadlessButton } from '@proyecto-viviana/solidaria-components'\n\nexport type ChipVariant = 'primary' | 'secondary' | 'accent' | 'outline'\n\nexport interface ChipProps {\n text: string\n variant?: ChipVariant\n onClick?: () => void\n /**\n * Icon to display before the text.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n * Or pass a simple string for text-based icons: `icon=\"★\"`\n */\n icon?: string | (() => JSX.Element)\n class?: string\n}\n\nconst variantStyles: Record<ChipVariant, string> = {\n primary: 'bg-primary-700 text-primary-100 shadow-primary-chip',\n secondary: 'bg-primary-700 text-primary-100 hover:bg-primary-600',\n accent: 'bg-accent text-bg-400',\n outline: 'bg-transparent border border-primary-500 text-primary-300',\n}\n\nexport function Chip(props: ChipProps) {\n const variant = () => props.variant ?? 'primary'\n\n const renderIcon = () => {\n const icon = props.icon\n if (!icon) return null\n if (typeof icon === 'string') return icon\n return icon()\n }\n\n return (\n <HeadlessButton\n class={`flex justify-center items-center h-6 w-auto rounded-full px-4 py-1 font-medium text-sm tracking-wide transition-colors ${variantStyles[variant()]} ${props.class ?? ''}`}\n onPress={() => props.onClick?.()}\n >\n <Show when={props.icon}>\n <span class=\"mr-1.5\">{renderIcon()}</span>\n </Show>\n <span>{props.text}</span>\n </HeadlessButton>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\nimport { Button as HeadlessButton } from '@proyecto-viviana/solidaria-components'\n\nexport interface NavHeaderProps {\n logo?: string\n logoAlt?: string\n logoText?: string\n children?: JSX.Element\n menuIcon?: JSX.Element\n onMenuClick?: () => void\n menuAriaLabel?: string\n class?: string\n}\n\nexport function NavHeader(props: NavHeaderProps) {\n return (\n <nav class={`flex items-center bg-bg-400 h-[70px] border-b-4 border-accent-500 ${props.class ?? ''}`}>\n <div class=\"pl-1 md:pl-8 flex items-center\">\n <Show when={props.logo} fallback={\n <Show when={props.logoText}>\n <span class=\"text-[34px] font-light text-primary-700 flex items-center\">\n {props.logoText}\n </span>\n </Show>\n }>\n <img src={props.logo} alt={props.logoAlt ?? 'Logo'} class=\"h-[42px] w-auto\" />\n </Show>\n </div>\n\n <div class=\"flex-1 flex justify-end items-center pr-1 md:pr-8\">\n {props.children}\n <Show when={props.menuIcon}>\n <HeadlessButton\n class=\"md:hidden flex items-center justify-center\"\n onPress={() => props.onMenuClick?.()}\n aria-label={props.menuAriaLabel ?? 'Open menu'}\n >\n {props.menuIcon}\n </HeadlessButton>\n </Show>\n </div>\n </nav>\n )\n}\n","import { JSX } from \"solid-js\";\n\nexport type LogoSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface LogoProps {\n /** First word (light weight, muted color) */\n firstWord?: string;\n /** Second word (bold, with 3D effect) */\n secondWord?: string;\n /** Size variant of the logo */\n size?: LogoSize;\n /** Invert the styles (first word gets 3D effect, second word is muted) */\n inverted?: boolean;\n /** Additional CSS classes */\n class?: string;\n}\n\n/**\n * Two-word logo with retro synthwave 3D effect.\n * First word is light/muted, second word has bold styling with pink 3D shadow.\n *\n * @example\n * // Default usage\n * <Logo />\n *\n * @example\n * // Custom text\n * <Logo firstWord=\"My\" secondWord=\"Brand\" size=\"lg\" />\n */\nexport function Logo(props: LogoProps): JSX.Element {\n const sizeClass = () => {\n switch (props.size) {\n case \"sm\":\n return \"vui-logo--sm\";\n case \"lg\":\n return \"vui-logo--lg\";\n case \"xl\":\n return \"vui-logo--xl\";\n case \"md\":\n default:\n return \"vui-logo--md\";\n }\n };\n\n const firstWord = () => props.firstWord ?? \"Proyecto\";\n const secondWord = () => props.secondWord ?? \"Viviana\";\n\n return (\n <span class={`vui-logo ${sizeClass()} ${props.inverted ? \"vui-logo--inverted\" : \"\"} ${props.class ?? \"\"}`}>\n <span class=\"vui-logo__first\" data-text={props.inverted ? firstWord() : undefined}>\n {firstWord()}\n </span>\n <span class=\"vui-logo__second\" data-text={props.inverted ? undefined : secondWord()}>\n {secondWord()}\n </span>\n </span>\n );\n}\n","import type { JSX } from 'solid-js'\nimport { Logo, type LogoProps } from '../logo'\n\nexport interface HeaderProps {\n /** Image element to show to the left of the text logo */\n logoImage?: JSX.Element\n /** Props to pass to the Logo component (firstWord, secondWord, size, inverted). Pass null to hide the text logo. */\n logoProps?: LogoProps | null\n /** Custom logo element - replaces the default Logo component entirely */\n logo?: JSX.Element\n /** Navigation items to display on the right side */\n children?: JSX.Element\n /** Additional CSS classes */\n class?: string\n}\n\nexport function Header(props: HeaderProps) {\n const showTextLogo = () => props.logo !== undefined || props.logoProps !== null\n\n return (\n <header class={`vui-header ${props.class ?? ''}`}>\n <div class=\"vui-header__container\">\n <div class=\"flex items-center gap-3\">\n {props.logoImage}\n {showTextLogo() && (props.logo ?? <Logo size=\"lg\" {...(props.logoProps ?? {})} />)}\n </div>\n <nav class=\"vui-header__nav\">\n {props.children}\n </nav>\n </div>\n </header>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show, For } from 'solid-js'\n\nexport interface NavItemProps {\n title: string\n children?: JSX.Element\n class?: string\n}\n\nexport function NavItem(props: NavItemProps) {\n return (\n <li class={`flex items-center ${props.class ?? ''}`}>\n <span class=\"text-lg font-bold text-primary-200\">{props.title}</span>\n {props.children}\n </li>\n )\n}\n\nexport interface NavLinkProps {\n href: string\n children: JSX.Element\n active?: boolean\n class?: string\n}\n\nexport function NavLink(props: NavLinkProps) {\n const activeStyles = 'font-medium text-primary-300 underline underline-offset-4'\n const inactiveStyles = 'font-normal text-gray-200 underline-offset-4 hover:text-gray-100 hover:underline'\n\n return (\n <a\n href={props.href}\n class={`${props.active ? activeStyles : inactiveStyles} ${props.class ?? ''}`}\n >\n {props.children}\n </a>\n )\n}\n\nexport interface NavSectionProps {\n title: string\n links?: { href: string; label: string; active?: boolean }[]\n children?: JSX.Element\n class?: string\n}\n\nexport function NavSection(props: NavSectionProps) {\n return (\n <div class={props.class ?? ''}>\n <NavItem title={props.title} />\n <div class=\"flex h-full\">\n <div class=\"h-5 w-1 bg-accent-300\" />\n <ul class=\"flex h-full flex-1 flex-col gap-1 pl-4\">\n <Show when={props.links}>\n <For each={props.links}>\n {(link) => (\n <li>\n <NavLink href={link.href} active={link.active}>\n {link.label}\n </NavLink>\n </li>\n )}\n </For>\n </Show>\n {props.children}\n </ul>\n </div>\n </div>\n )\n}\n\nexport interface LateralNavProps {\n transparent?: boolean\n children?: JSX.Element\n class?: string\n}\n\nexport function LateralNav(props: LateralNavProps) {\n const bgColor = () => (props.transparent ? '' : 'bg-bg-200')\n\n return (\n <div\n class={`hidden w-[300px] md:block ${bgColor()} m-0 border-r border-primary-600 p-3 ${props.class ?? ''}`}\n >\n {props.children}\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\nimport { Avatar } from '../../avatar'\n\nexport type TimelineEventType = 'follow' | 'like' | 'comment' | 'event' | 'custom'\n\nexport interface TimelineItemProps {\n type?: TimelineEventType\n /**\n * Icon to display between the two avatars.\n * Use a function returning JSX for SSR compatibility: `icon={() => <MyIcon />}`\n * Or pass a simple string for text-based icons: `icon=\"👋\"`\n */\n icon?: string | (() => JSX.Element)\n leftUser?: {\n name: string\n avatar?: string\n }\n rightUser?: {\n name: string\n avatar?: string\n }\n /**\n * Custom message content.\n * Use a function returning JSX for SSR compatibility: `message={() => <span>...</span>}`\n * Or pass a simple string.\n */\n message?: string | (() => JSX.Element)\n class?: string\n}\n\nconst eventMessages: Record<TimelineEventType, (left: string, right: string) => JSX.Element> = {\n follow: (left, right) => (\n <>\n <span class=\"font-semibold text-accent-200\">{left}</span>\n {' ha empezado a seguir a '}\n <span class=\"font-semibold text-accent-200\">{right}</span>\n </>\n ),\n like: (left, right) => (\n <>\n <span class=\"font-semibold text-accent-200\">{left}</span>\n {' le ha dado like a '}\n <span class=\"font-semibold text-accent-200\">{right}</span>\n </>\n ),\n comment: (left, right) => (\n <>\n <span class=\"font-semibold text-accent-200\">{left}</span>\n {' ha comentado en '}\n <span class=\"font-semibold text-accent-200\">{right}</span>\n </>\n ),\n event: (left, right) => (\n <>\n <span class=\"font-semibold text-accent-200\">{left}</span>\n {' asistirá al evento de '}\n <span class=\"font-semibold text-accent-200\">{right}</span>\n </>\n ),\n custom: () => null,\n}\n\nexport function TimelineItem(props: TimelineItemProps) {\n const type = () => props.type ?? 'follow'\n const leftName = () => props.leftUser?.name ?? ''\n const rightName = () => props.rightUser?.name ?? ''\n\n const renderIcon = () => {\n const icon = props.icon\n if (!icon) return null\n if (typeof icon === 'string') return icon\n return icon()\n }\n\n const renderMessage = () => {\n const message = props.message\n if (!message) return null\n if (typeof message === 'string') return message\n return message()\n }\n\n return (\n <div class={`inline-flex w-auto flex-col gap-5 rounded-2xl border border-primary-700 bg-bg-200 p-5 hover:bg-bg-300 transition-colors ${props.class ?? ''}`}>\n <div class=\"flex items-center justify-around gap-3\">\n <Show when={props.leftUser}>\n <Avatar src={props.leftUser!.avatar} alt={props.leftUser!.name} />\n </Show>\n <Show when={props.icon}>\n {renderIcon()}\n </Show>\n <Show when={props.rightUser}>\n <Avatar src={props.rightUser!.avatar} alt={props.rightUser!.name} />\n </Show>\n </div>\n <div class=\"flex items-center justify-center gap-3 text-center\">\n <span class=\"font-light text-primary-300\">\n <Show when={props.message} fallback={eventMessages[type()](leftName(), rightName())}>\n {renderMessage()}\n </Show>\n </span>\n </div>\n </div>\n )\n}\n","import { Show, For } from 'solid-js'\nimport { Avatar } from '../../avatar'\nimport { Button as HeadlessButton } from '@proyecto-viviana/solidaria-components'\n\nexport interface Message {\n id: string\n content: string\n sender: 'user' | 'other'\n timestamp?: string\n}\n\nexport interface ConversationPreviewProps {\n user: {\n name: string\n avatar?: string\n online?: boolean\n }\n lastMessage?: string\n unreadCount?: number\n timestamp?: string\n onClick?: () => void\n class?: string\n}\n\nexport function ConversationPreview(props: ConversationPreviewProps) {\n return (\n <HeadlessButton\n type=\"button\"\n class={`flex w-full items-center gap-3 rounded-xl p-3 hover:bg-bg-300 transition-colors text-left ${props.class ?? ''}`}\n onPress={() => props.onClick?.()}\n >\n <Avatar\n src={props.user.avatar}\n alt={props.user.name}\n online={props.user.online}\n size=\"md\"\n />\n <div class=\"flex-1 min-w-0\">\n <div class=\"flex items-center justify-between\">\n <span class=\"font-semibold text-primary-100 truncate\">{props.user.name}</span>\n <Show when={props.timestamp}>\n <span class=\"text-xs text-primary-500\">{props.timestamp}</span>\n </Show>\n </div>\n <Show when={props.lastMessage}>\n <p class=\"text-sm text-primary-400 truncate\">{props.lastMessage}</p>\n </Show>\n </div>\n <Show when={props.unreadCount && props.unreadCount > 0}>\n <span class=\"flex h-5 w-5 items-center justify-center rounded-full bg-accent text-xs font-bold text-white\">\n {props.unreadCount}\n </span>\n </Show>\n </HeadlessButton>\n )\n}\n\nexport interface ConversationBubbleProps {\n content: string\n sender: 'user' | 'other'\n timestamp?: string\n class?: string\n}\n\nexport function ConversationBubble(props: ConversationBubbleProps) {\n const isUser = () => props.sender === 'user'\n\n return (\n <div class={`flex ${isUser() ? 'justify-end' : 'justify-start'} ${props.class ?? ''}`}>\n <div\n class={`max-w-[70%] rounded-2xl px-4 py-2 ${\n isUser()\n ? 'bg-accent text-bg-400 rounded-br-sm'\n : 'bg-bg-300 text-primary-100 rounded-bl-sm'\n }`}\n >\n <p>{props.content}</p>\n <Show when={props.timestamp}>\n <span class={`text-xs ${isUser() ? 'text-bg-300' : 'text-primary-500'}`}>\n {props.timestamp}\n </span>\n </Show>\n </div>\n </div>\n )\n}\n\nexport interface ConversationProps {\n messages: Message[]\n class?: string\n}\n\nexport function Conversation(props: ConversationProps) {\n return (\n <div class={`flex flex-col gap-2 p-4 ${props.class ?? ''}`}>\n <For each={props.messages}>\n {(message) => (\n <ConversationBubble\n content={message.content}\n sender={message.sender}\n timestamp={message.timestamp}\n />\n )}\n </For>\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show } from 'solid-js'\nimport { Avatar } from '../../avatar'\n\nexport interface ProfileCardProps {\n username: string\n avatar?: string\n bio?: string\n followers?: number\n following?: number\n /**\n * Actions to display below the profile.\n * Use a function returning JSX for SSR compatibility: `actions={() => <Button>...</Button>}`\n */\n actions?: JSX.Element | (() => JSX.Element)\n class?: string\n}\n\nexport function ProfileCard(props: ProfileCardProps) {\n const formatNumber = (num: number) => {\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`\n return num.toString()\n }\n\n return (\n <div class={`bg-bg-200 rounded-xl p-4 ${props.class ?? ''}`}>\n <div class=\"flex items-start gap-4\">\n <Avatar src={props.avatar} alt={props.username} size=\"lg\" />\n <div class=\"flex-1 min-w-0\">\n <h3 class=\"font-semibold text-primary-100 text-lg truncate\">\n {props.username}\n </h3>\n <Show when={props.bio}>\n <p class=\"text-primary-300 text-sm mt-1 line-clamp-2\">{props.bio}</p>\n </Show>\n <div class=\"flex gap-4 mt-2 text-sm\">\n <Show when={props.followers !== undefined}>\n <span class=\"text-primary-300\">\n <span class=\"font-semibold text-primary-100\">\n {formatNumber(props.followers!)}\n </span>{' '}\n seguidores\n </span>\n </Show>\n <Show when={props.following !== undefined}>\n <span class=\"text-primary-300\">\n <span class=\"font-semibold text-primary-100\">\n {formatNumber(props.following!)}\n </span>{' '}\n siguiendo\n </span>\n </Show>\n </div>\n </div>\n </div>\n <Show when={props.actions}>\n <div class=\"mt-4 flex gap-2\">\n {typeof props.actions === 'function' ? props.actions() : props.actions}\n </div>\n </Show>\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\nimport { Show, For } from 'solid-js'\nimport { Avatar } from '../../avatar'\nimport { Button as HeadlessButton } from '@proyecto-viviana/solidaria-components'\n\nexport interface EventCardProps {\n title: string\n image?: string\n date?: string\n author?: string\n authorAvatar?: string\n attendees?: { avatar?: string; name: string }[]\n attendeeCount?: number\n decorationImage?: string\n /**\n * Actions to display below the event.\n * Use a function returning JSX for SSR compatibility: `actions={() => <Button>...</Button>}`\n */\n actions?: JSX.Element | (() => JSX.Element)\n class?: string\n}\n\nexport function EventCard(props: EventCardProps) {\n const displayedAttendees = () => props.attendees?.slice(0, 3) ?? []\n const remainingCount = () => {\n const total = props.attendeeCount ?? props.attendees?.length ?? 0\n const displayed = displayedAttendees().length\n return total - displayed\n }\n\n return (\n <div class={`relative bg-bg-200 rounded-3xl overflow-hidden ${props.class ?? ''}`}>\n {/* Decoration image (fire gif, etc) */}\n <Show when={props.decorationImage}>\n <div class=\"absolute -top-2 -right-2 z-10 flex flex-col gap-1\">\n <img src={props.decorationImage} alt=\"\" class=\"w-8 h-8 object-contain\" />\n <img src={props.decorationImage} alt=\"\" class=\"w-6 h-6 object-contain ml-2\" />\n <img src={props.decorationImage} alt=\"\" class=\"w-5 h-5 object-contain\" />\n </div>\n </Show>\n\n <Show when={props.image}>\n <div class=\"relative h-32 w-full\">\n <img\n src={props.image}\n alt={props.title}\n class=\"w-full h-full object-cover\"\n />\n <div class=\"absolute inset-0 bg-gradient-to-t from-bg-200 via-transparent to-transparent\" />\n </div>\n </Show>\n\n <div class=\"p-4 pt-2\">\n <h3 class=\"font-bold text-xl leading-tight bg-gradient-to-r from-accent to-accent-300 bg-clip-text text-transparent\">\n {props.title}\n </h3>\n\n <Show when={props.date || props.author}>\n <div class=\"flex items-center gap-4 mt-3 text-sm text-primary-300\">\n <Show when={props.author}>\n <div class=\"flex items-center gap-1.5\">\n <span class=\"text-accent\">@</span>\n <span>{props.author}</span>\n </div>\n </Show>\n <Show when={props.date}>\n <div class=\"flex items-center gap-1.5\">\n <span class=\"text-accent\">⏱</span>\n <span>{props.date}</span>\n </div>\n </Show>\n </div>\n </Show>\n\n <Show when={displayedAttendees().length > 0}>\n <div class=\"flex items-center mt-3\">\n <div class=\"flex -space-x-2\">\n <For each={displayedAttendees()}>\n {(attendee) => (\n <Avatar src={attendee.avatar} alt={attendee.name} size=\"sm\" />\n )}\n </For>\n </div>\n <Show when={remainingCount() > 0}>\n <span class=\"ml-2 text-sm text-primary-300\">\n +{remainingCount()} más\n </span>\n </Show>\n </div>\n </Show>\n\n <Show when={props.actions}>\n <div class=\"mt-4 flex gap-2\">\n {typeof props.actions === 'function' ? props.actions() : props.actions}\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\nexport interface EventListItemProps {\n title: string\n image?: string\n subtitle?: string\n onClick?: () => void\n class?: string\n}\n\nexport function EventListItem(props: EventListItemProps) {\n return (\n <HeadlessButton\n class={`flex items-center gap-3 w-full p-2 rounded-lg hover:bg-bg-300 transition-colors text-left ${props.class ?? ''}`}\n onPress={() => props.onClick?.()}\n >\n <Show when={props.image}>\n <div class=\"w-12 h-12 rounded-lg overflow-hidden flex-shrink-0\">\n <img\n src={props.image}\n alt={props.title}\n class=\"w-full h-full object-cover\"\n />\n </div>\n </Show>\n <div class=\"flex-1 min-w-0\">\n <h4 class=\"font-medium text-primary-100 truncate\">{props.title}</h4>\n <Show when={props.subtitle}>\n <p class=\"text-sm text-primary-300 truncate\">{props.subtitle}</p>\n </Show>\n </div>\n </HeadlessButton>\n )\n}\n","import { Show, For } from 'solid-js'\nimport { Chip } from '../chip'\n\nexport interface CalendarCardProps {\n title: string\n image?: string\n tags?: string[]\n followers?: { name: string }[]\n followerCount?: number\n class?: string\n}\n\nexport function CalendarCard(props: CalendarCardProps) {\n const displayedFollowers = () => props.followers?.slice(0, 2) ?? []\n const remainingCount = () => {\n const total = props.followerCount ?? props.followers?.length ?? 0\n const displayed = displayedFollowers().length\n return total - displayed\n }\n\n return (\n <div class={`flex h-[100px] w-full max-w-[500px] items-center rounded-xl border border-primary-600 border-b-accent-500 bg-bg-300 p-2 ${props.class ?? ''}`}>\n <Show when={props.image}>\n <div class=\"relative h-[80px] w-[80px] flex-shrink-0 overflow-hidden rounded-xl border-2 border-accent-200\">\n <img src={props.image} alt={props.title} class=\"h-full w-full object-cover\" />\n </div>\n </Show>\n <div class=\"relative h-full flex-1 flex-col pl-3\">\n <Show when={props.tags && props.tags.length > 0}>\n <div class=\"absolute bottom-[-20px] h-[30px] w-full\">\n <div class=\"flex h-full w-full flex-1 justify-end gap-1\">\n <For each={props.tags}>\n {(tag) => <Chip text={tag} variant=\"primary\" />}\n </For>\n </div>\n </div>\n </Show>\n <div class=\"flex h-full flex-col items-end justify-center pb-3 pr-5 pt-2\">\n <div class=\"flex flex-1\">\n <span class=\"text-lg font-semibold text-white drop-shadow-sm\">\n {props.title}\n </span>\n </div>\n <Show when={displayedFollowers().length > 0}>\n <div class=\"flex flex-1\">\n <span class=\"text-base font-normal text-primary-500\">\n seguida por{' '}\n <For each={displayedFollowers()}>\n {(follower, index) => (\n <>\n <span class=\"font-semibold text-accent-200\">{follower.name}</span>\n {index() < displayedFollowers().length - 1 && ', '}\n </>\n )}\n </For>\n <Show when={remainingCount() > 0}>\n {' '}y <span class=\"font-semibold text-accent-200\">{remainingCount()} más</span>\n </Show>\n </span>\n </div>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n","import type { JSX } from 'solid-js'\n\nexport type ProjectCardSize = 'sm' | 'md' | 'lg'\n\nexport interface ProjectCardProps {\n /** Project name shown in tooltip on hover */\n name: string\n /** Image source for the project logo */\n imageSrc: string\n /** Alt text for the image */\n imageAlt?: string\n /** Optional link to the project */\n href?: string\n /** Size of the card */\n size?: ProjectCardSize\n /** Whether the project is inactive/greyed out */\n inactive?: boolean\n /** Additional CSS class */\n class?: string\n}\n\n/**\n * Project card with logo and hover tooltip.\n * Used for showcasing ecosystem projects.\n */\nexport function ProjectCard(props: ProjectCardProps): JSX.Element {\n const size = () => props.size ?? 'sm'\n const inactive = () => props.inactive ?? false\n\n const cardContent = () => (\n <>\n <div class=\"vui-project-card__tooltip\">\n <span>{props.name}</span>\n </div>\n <img\n class=\"vui-project-card__image\"\n src={props.imageSrc}\n alt={props.imageAlt ?? props.name}\n />\n </>\n )\n\n const cardClasses = () =>\n `vui-project-card vui-project-card--${size()} ${inactive() ? 'vui-project-card--inactive' : ''} ${props.class ?? ''}`\n\n if (props.href) {\n return (\n <a href={props.href} target=\"_blank\" rel=\"noopener noreferrer\" class={cardClasses()}>\n {cardContent()}\n </a>\n )\n }\n\n return (\n <div class={cardClasses()}>\n {cardContent()}\n </div>\n )\n}\n"],"mappings":"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","names":["splitProps","mergeProps","solidMergeProps","Button","HeadlessButton","createContext","createMemo","mergeProps","splitProps","useContext","I18nProvider","ModalProvider","isRTL","useLocale","useModalProvider","defaultThemeContext","colorScheme","scale","themeClass","lightTheme","className","theme","ThemeContext","createContext","ProviderContext","useTheme","provider","useContext","useProvider","context","Error","useProviderProps","props","mergeProps","isQuiet","isEmphasized","isDisabled","isRequired","isReadOnly","validationState","getBuiltInTheme","darkTheme","resolveTheme","themeInput","inheritedThemeClass","properties","themeObj","builtIn","ProviderRoot","locale","useLocale","modalProviderProps","useModalProvider","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","rest","class","style","lang","dir","direction","_$insert","children","_$runHydrationEvents","Provider","parentProvider","inheritedLocale","local","splitProps","createMemo","undefined","builtInParentTheme","resolvedTheme","themeSource","providerValue","isRTL","classes","parts","filter","Boolean","join","mergedStyle","isolation","_$createComponent","value","I18nProvider","ModalProvider","Button","props","providerProps","useProviderProps","defaultProps","variant","buttonStyle","size","merged","solidMergeProps","local","headlessProps","splitProps","getClassName","renderProps","classList","isPressed","push","fullWidth","class","join","_$createComponent","HeadlessButton","_$mergeProps","staticColor","undefined","children","splitProps","ToggleButton","HeadlessToggleButton","sizeStyles","sm","md","lg","ToggleButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","getClassName","renderProps","base","sizeClass","size","stateClass","isDisabled","isSelected","isHovered","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessToggleButton","_$mergeProps","splitProps","Button","HeadlessButton","sizeStyles","sm","md","lg","ActionButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","isQuiet","getClassName","renderProps","base","sizeClass","size","stateClass","isDisabled","isPressed","isHovered","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessButton","_$mergeProps","splitProps","Button","HeadlessButton","sizeStyles","sm","button","icon","md","lg","ClearButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","getClassName","renderProps","base","sizeClass","stateClass","isDisabled","isPressed","isHovered","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessButton","_$mergeProps","children","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","splitProps","Button","HeadlessButton","FieldButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","getClassName","renderProps","base","stateClass","isDisabled","isPressed","isHovered","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessButton","_$mergeProps","splitProps","ToggleButton","HeadlessToggleButton","LogicButton","props","mergedProps","useProviderProps","local","headlessProps","splitProps","getClassName","renderProps","base","stateClass","isDisabled","isSelected","focusClass","isFocusVisible","class","filter","Boolean","join","_$createComponent","HeadlessToggleButton","_$mergeProps","children","_el$","_$getNextElement","_tmpl$","_$insert","Show","variantStyles","primary","secondary","accent","success","warning","danger","sizeStyles","sm","md","lg","Badge","props","variant","size","_el$","_$getNextElement","_tmpl$2","_$insert","_$createComponent","when","count","undefined","fallback","children","_el$2","_tmpl$","_$effect","_$className","class","Show","Alert","HeadlessAlert","AlertDismissButton","variantStyles","info","success","warning","error","props","variant","getClassName","_renderProps","class","_$createComponent","isDismissible","dismissible","onDismiss","children","_el$","_$getNextElement","_tmpl$3","_el$5","firstChild","_el$6","_co$","_$getNextMarker","nextSibling","_el$4","_el$7","_el$8","_co$2","_$insert","when","title","_el$2","_tmpl$","_tmpl$2","Show","sizeStyles","xs","container","text","indicator","sm","md","lg","xl","Avatar","props","size","styles","initials","fallback","slice","toUpperCase","alt","_el$","_$getNextElement","_tmpl$3","_el$2","firstChild","_el$5","nextSibling","_el$6","_co$","_$getNextMarker","_$insert","_$createComponent","when","src","_el$7","_tmpl$2","_$effect","_$className","children","_el$3","_tmpl$","_p$","_v$","_v$2","e","_$setAttribute","t","undefined","online","_el$4","_v$3","class","_v$4","AvatarGroup","_el$8","_tmpl$4","createMemo","ToggleButtonGroup","HeadlessToggleButtonGroup","ToggleButton","HeadlessToggleButton","splitProps","mergeProps","solidMergeProps","ToggleSwitch","HeadlessToggleSwitch","sizeStyles","sm","track","thumb","translate","md","lg","ToggleSwitch","props","providerProps","useProviderProps","defaultProps","size","merged","solidMergeProps","local","headlessProps","splitProps","getClassName","renderProps","base","disabledClass","isDisabled","custom","class","filter","Boolean","join","_$createComponent","HeadlessToggleSwitch","_$mergeProps","children","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","isSelected","_v$2","e","_$className","t","undefined","_$memo","_el$3","_tmpl$2","_$insert","TabSwitch","props","options","createMemo","slice","selectedValue","match","find","option","value","selectedIndex","index","findIndex","selectedKeys","Set","textSelected","textUnselected","optionCount","Math","max","length","indicatorStyle","width","transform","layoutStyle","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_co$","_$getNextMarker","_$insert","_$createComponent","HeadlessToggleButtonGroup","selectionMode","style","children","map","HeadlessToggleButton","toggleKey","onClick","onChange","class","_el$5","_tmpl$2","label","_$effect","_p$","_v$","_v$2","e","_$className","t","_$style","undefined","splitProps","mergeProps","solidMergeProps","Show","Checkbox","HeadlessCheckbox","CheckboxGroup","HeadlessCheckboxGroup","sizeStyles","sm","box","icon","label","md","lg","CheckIcon","props","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","class","IndeterminateIcon","_el$2","_tmpl$2","Checkbox","providerProps","useProviderProps","defaultProps","size","merged","solidMergeProps","local","headlessProps","splitProps","getClassName","renderProps","base","disabledClass","isDisabled","custom","filter","Boolean","join","_$createComponent","HeadlessCheckbox","_$mergeProps","children","boxClasses","sizeClass","colorClass","isSelected","isIndeterminate","focusClass","isFocusVisible","cursorClass","iconClasses","visibilityClass","labelClasses","_el$3","_tmpl$3","_$insert","Show","when","fallback","_$className","_el$4","CheckboxGroup","mergedProps","renderChildren","_el$5","_tmpl$4","_el$6","_tmpl$5","_$memo","description","isInvalid","_el$7","_tmpl$6","errorMessage","_el$8","_tmpl$7","HeadlessCheckboxGroup","Show","createContext","useContext","splitProps","createUniqueId","RadioGroup","HeadlessRadioGroup","Radio","HeadlessRadio","RadioSizeContext","createContext","sizeStyles","sm","circle","dot","label","md","lg","RadioGroup","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","customClass","class","idBase","createUniqueId","labelId","descriptionId","errorId","getClassName","renderProps","base","orientationClass","orientation","disabledClass","isDisabled","filter","Boolean","join","ariaDescribedBy","ids","description","undefined","errorMessage","isInvalid","length","_$createComponent","Provider","value","children","HeadlessRadioGroup","_$mergeProps","Show","when","_el$","_$getNextElement","_tmpl$","_$setAttribute","_$insert","_$memo","_el$2","_tmpl$2","_el$3","_tmpl$3","Radio","sizeFromContext","useContext","sizeStyle","cursorClass","circleClass","dotClass","labelClass","HeadlessRadio","_el$4","_tmpl$4","_el$5","firstChild","_$className","_el$6","_tmpl$5","_c$","splitProps","Show","createContext","useContext","Dialog","HeadlessDialog","DialogTrigger","HeadlessDialogTrigger","Heading","HeadlessDialogHeading","Modal","HeadlessModal","ModalOverlay","HeadlessModalOverlay","useDialogTrigger","DialogContext","sizeStyles","sm","md","lg","fullscreen","Dialog","props","local","rest","splitProps","size","className","base","sizeClass","custom","class","filter","Boolean","join","_$createComponent","HeadlessDialog","_$mergeProps","onClose","children","close","DialogContext","Provider","value","Show","when","title","_el$","_$getNextElement","_tmpl$2","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","_$insert","HeadlessDialogHeading","level","isDismissable","_el$2","_tmpl$","_$addEventListener","_$runHydrationEvents","_el$7","_tmpl$3","DialogTriggerContent","triggerContext","useDialogTrigger","state","content","DialogTrigger","HeadlessDialogTrigger","isOpen","onOpenChange","_$memo","trigger","HeadlessModalOverlay","isKeyboardDismissDisabled","_el$8","_tmpl$4","HeadlessModal","DialogFooter","_el$9","_tmpl$5","_$effect","_$className","_$delegateEvents","splitProps","Show","Dialog","HeadlessDialog","DialogTrigger","HeadlessDialogTrigger","Heading","HeadlessHeading","Modal","HeadlessModal","ModalOverlay","HeadlessModalOverlay","variantStyles","confirmation","icon","buttonVariant","information","destructive","error","warning","AlertDialog","props","local","splitProps","variant","styles","_$createComponent","HeadlessDialogTrigger","isOpen","onOpenChange","children","_$memo","trigger","HeadlessModalOverlay","isDismissable","HeadlessModal","HeadlessDialog","role","class","close","HeadlessHeading","slot","title","_el$","_$getNextElement","_tmpl$","_$insert","_el$2","_tmpl$2","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","Show","when","cancelLabel","undefined","onCancel","Button","onPress","autoFocus","autoFocusButton","onPrimaryAction","primaryActionLabel","Icon","HeadlessIcon","GitHubIcon","props","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","class","_v$2","size","_v$3","_v$4","color","e","_$setAttribute","t","a","o","undefined","splitProps","sizeStyles","sm","md","lg","Illustration","props","local","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","role","size","class","_$insert","children","_$runHydrationEvents","splitProps","sizeStyles","xs","sm","md","lg","UIIcon","props","local","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","role","undefined","size","class","_$insert","children","_$runHydrationEvents","Icon","props","size","color","IconComponent","icon","getClassName","_renderProps","classList","withShadow","push","onPress","class","join","_$createComponent","HeadlessIcon","children","_$memo","_el$2","_$getNextElement","_tmpl$2","_$insert","_el$","_tmpl$","Show","splitProps","Tooltip","HeadlessTooltip","TooltipTrigger","HeadlessTooltipTrigger","baseStyles","join","variantStyles","default","neutral","info","arrowStyles","top","bottom","left","right","getArrowBorderColor","variant","colors","props","_$createComponent","local","rest","placement","_$mergeProps","_renderProps","classes","class","filter","Boolean","children","renderProps","_$memo","when","showArrow","_el$","_$getNextElement","_tmpl$","_$effect","_$className","SimpleTooltip","position","_el$2","_tmpl$2","_el$3","firstChild","_el$4","nextSibling","_el$5","_$insert","label","_p$","_v$","_v$2","e","t","undefined","Show","splitProps","Popover","HeadlessPopover","PopoverTrigger","HeadlessPopoverTrigger","OverlayArrow","HeadlessOverlayArrow","baseStyles","join","sizeStyles","sm","md","lg","paddingStyles","none","arrowBaseStyles","getArrowRotation","placement","props","_$createComponent","local","rest","size","padding","_$mergeProps","_renderProps","classes","class","filter","Boolean","children","renderProps","when","showArrow","PopoverArrow","_$memo","style","bottom","left","transform","top","right","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","PopoverHeader","_el$2","_tmpl$3","_el$3","firstChild","_el$5","nextSibling","_el$6","_co$","_$getNextMarker","_$insert","title","description","_el$4","_tmpl$2","_$className","PopoverFooter","_el$7","_tmpl$4","splitProps","Modal","HeadlessModal","ModalOverlay","HeadlessModalOverlay","sizeStyles","sm","md","lg","fullscreen","StyledModal","props","local","headlessProps","_$createComponent","_$mergeProps","children","size","class","splitProps","Show","Portal","useUNSAFE_PortalContext","Overlay","props","local","portalContext","portalContainer","container","getContainer","undefined","_$createComponent","when","isOpen","children","mount","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_$className","class","splitProps","ModalOverlay","HeadlessModalOverlay","Modal","HeadlessModal","Tray","props","local","headlessProps","_$createComponent","_$mergeProps","children","class","_$getNextElement","_tmpl$","_$memo","createSignal","createEffect","on","onCleanup","Show","children","resolveChildren","OpenTransition","props","duration","mounted","setMounted","open","transitionClasses","setTransitionClasses","isOpen","enterFrom","requestAnimationFrame","enterTo","exitFrom","exitTo","timer","setTimeout","onExited","clearTimeout","resolved","_$createComponent","when","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_p$","_v$","class","_v$2","_v$3","undefined","e","_$className","t","_$setStyleProperty","a","_$setAttribute","splitProps","Show","useContext","TextField","HeadlessTextField","Label","HeadlessLabel","Input","HeadlessInput","TextFieldContext","splitProps","Show","useContext","TextField","HeadlessTextField","Label","HeadlessLabel","TextArea","HeadlessTextArea","TextFieldContext","sizeStyles","sm","textarea","label","description","md","lg","TextAreaDescription","props","context","useContext","TextFieldContext","descriptionProps","ref","_ref","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","TextAreaError","errorMessageProps","_el$2","TextArea","mergedProps","useProviderProps","local","headlessProps","splitProps","size","containerClasses","base","custom","filter","Boolean","join","textareaClasses","renderProps","sizeClass","variantClass","variant","stateClass","isDisabled","isInvalid","hoverClass","labelClasses","descriptionClasses","errorClasses","_$createComponent","HeadlessTextField","errorMessage","Show","when","HeadlessLabel","_$memo","isRequired","_tmpl$2","HeadlessTextArea","sizeStyles","sm","input","label","description","md","lg","TextFieldDescription","props","context","useContext","TextFieldContext","descriptionProps","ref","_ref","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","TextFieldError","errorMessageProps","_el$2","TextField","mergedProps","useProviderProps","local","headlessProps","splitProps","size","containerClasses","base","custom","filter","Boolean","join","inputClasses","renderProps","sizeClass","variantClass","variant","stateClass","isDisabled","isInvalid","hoverClass","labelClasses","descriptionClasses","errorClasses","_$createComponent","HeadlessTextField","errorMessage","Show","when","HeadlessLabel","_$memo","isRequired","_tmpl$2","HeadlessInput","splitProps","Link","HeadlessLink","variantStyles","primary","secondary","subtle","Link","props","mergedProps","useProviderProps","local","headlessProps","splitProps","variant","customClass","class","getClassName","renderProps","base","variantClass","underlineClass","isStandalone","isQuiet","isHovered","isFocusVisible","weightClass","focusClass","disabledClass","isDisabled","pressedClass","isPressed","filter","Boolean","join","_$createComponent","HeadlessLink","_$mergeProps","children","splitProps","Show","createUniqueId","ProgressBar","HeadlessProgressBar","sizeStyles","sm","track","text","md","lg","variantStyles","primary","accent","success","warning","danger","props","local","headlessProps","size","variant","sizeConfig","labelId","renderChildren","valueText","percentage","isIndeterminate","showValueLabel","fillWidth","_$createComponent","when","label","children","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","_el$2","_tmpl$","_$setAttribute","_el$3","_tmpl$2","_$effect","_$className","_el$8","_tmpl$4","_el$9","_$setStyleProperty","_p$","_v$","_v$2","e","t","undefined","_$mergeProps","class","splitProps","ProgressBar","HeadlessProgressBar","sizeConfig","sm","size","stroke","md","lg","variantColors","primary","accent","ProgressCircle","props","local","headlessProps","config","variant","radius","circumference","Math","PI","center","_$createComponent","_$mergeProps","class","children","renderProps","offset","isIndeterminate","percentage","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","String","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","e","_$setAttribute","t","a","o","i","n","s","h","r","d","l","u","c","w","m","f","undefined","splitProps","createMemo","Separator","HeadlessSeparator","variantStyles","default","subtle","strong","horizontalSizeStyles","sm","md","lg","verticalSizeStyles","props","local","headlessProps","orientation","variant","size","className","isVertical","sizeStyles","base","class","filter","Boolean","join","_$createComponent","_$mergeProps","splitProps","Text","HeadlessText","splitProps","Dynamic","levelStyles","Heading","props","local","rest","level","tag","_$createComponent","_$mergeProps","component","class","children","splitProps","Keyboard","HeadlessKeyboard","StyledKeyboard","props","local","rest","_$createComponent","_$mergeProps","class","variantStyles","default","muted","success","danger","sizeStyles","sm","md","lg","Text","props","local","headlessProps","splitProps","variant","size","_$createComponent","HeadlessText","_$mergeProps","class","splitProps","Label","HeadlessLabel","sizeStyles","sm","md","lg","props","local","headlessProps","size","_$createComponent","_$mergeProps","class","splitProps","Form","HeadlessForm","FieldError","HeadlessFieldError","splitProps","Show","sizeStyles","sm","label","text","gap","md","lg","Field","props","local","size","showError","isInvalid","errorMessage","_el$","_$getNextElement","_tmpl$5","_el$0","firstChild","_el$1","_co$3","_$getNextMarker","nextSibling","_el$10","_el$11","_co$4","_el$12","_el$13","_co$5","_el$14","_el$15","_co$6","_$insert","_$createComponent","when","children","_el$2","_tmpl$2","_el$4","_el$5","_co$","_el$6","_el$7","_co$2","isRequired","_tmpl$","_$effect","_p$","_v$","htmlFor","_v$2","e","_$setAttribute","t","_$className","undefined","_el$8","_tmpl$3","_$memo","description","_el$9","_tmpl$4","isDisabled","class","splitProps","Show","HelpText","props","local","showError","isInvalid","errorMessage","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","_$createComponent","when","children","_el$2","_tmpl$","_$memo","description","_el$3","_tmpl$2","_$effect","_$className","isDisabled","class","Form","props","local","headlessProps","splitProps","_$createComponent","HeadlessForm","_$mergeProps","class","FieldError","HeadlessFieldError","splitProps","Toolbar","HeadlessToolbar","baseStyles","variantStyles","default","bordered","ghost","sizeStyles","sm","md","lg","orientationStyles","horizontal","vertical","Toolbar","props","mergedProps","useProviderProps","local","headlessProps","splitProps","variant","size","getClassName","renderProps","orientation","class","filter","Boolean","join","_$createComponent","HeadlessToolbar","_$mergeProps","style","splitProps","ActionBar","HeadlessActionBar","ActionBarContainer","HeadlessActionBarContainer","ActionBarSelectionCount","HeadlessSelectionCount","ActionBarClearButton","HeadlessClearButton","getBarClassName","renderProps","extraClass","filter","Boolean","join","props","local","headlessProps","_$createComponent","_$mergeProps","rp","class","children","_$getNextElement","_tmpl$","_el$2","_tmpl$2","_$insert","splitProps","ActionGroup","HeadlessActionGroup","getContainerClassName","renderProps","extraClass","orientationClass","orientation","filter","Boolean","join","getItemClassName","stateClass","isSelected","disabledClass","isDisabled","ActionGroup","props","mergedProps","useProviderProps","local","headlessProps","splitProps","_$createComponent","HeadlessActionGroup","_$mergeProps","rp","class","children","item","_el$","_$getNextElement","_tmpl$","_$insert","_c$","_$memo","renderItem","label","_$effect","_$className","splitProps","ButtonGroup","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","role","class","_$insert","children","_$runHydrationEvents","splitProps","splitProps","createContext","useContext","Show","ComboBox","HeadlessComboBox","ComboBoxInput","HeadlessComboBoxInput","ComboBoxLabel","HeadlessComboBoxLabel","ComboBoxDescription","HeadlessComboBoxDescription","ComboBoxErrorMessage","HeadlessComboBoxErrorMessage","ComboBoxButton","HeadlessComboBoxButton","ComboBoxListBox","HeadlessComboBoxListBox","ComboBoxOption","HeadlessComboBoxOption","defaultContainsFilter","ComboBoxSizeContext","createContext","sizeStyles","sm","wrapper","input","button","label","option","icon","md","lg","ComboBox","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","customClass","class","getClassName","renderProps","base","disabledClass","isDisabled","filter","Boolean","join","_$createComponent","Provider","value","children","HeadlessComboBox","_$mergeProps","description","_$memo","isInvalid","undefined","errorMessage","Show","when","HeadlessComboBoxLabel","HeadlessComboBoxDescription","HeadlessComboBoxErrorMessage","ComboBoxInputGroup","useContext","styles","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_$className","ComboBoxInput","sizeClass","colorClass","isOpen","isHovered","focusClass","isFocusVisible","HeadlessComboBoxInput","ComboBoxButton","sizeStyle","HeadlessComboBoxButton","ChevronIcon","ComboBoxListBox","_renderProps","HeadlessComboBoxListBox","ComboBoxOption","isSelected","isFocused","iconPadding","HeadlessComboBoxOption","CheckIcon","_el$2","_tmpl$2","_el$3","_tmpl$3","_$setAttribute","_el$4","_tmpl$4","InputGroup","Input","Button","ListBox","Option","sizeStyles","sm","container","md","lg","SearchAutocomplete","props","local","comboBoxProps","splitProps","size","textKey","styles","getTextValue","item","text","name","String","handleSelectionChange","key","selected","items","find","id","onSelect","_el$","_$getNextElement","_tmpl$","_$insert","_$createComponent","ComboBox","_$mergeProps","label","description","placeholder","isDisabled","defaultFilter","filter","getKey","onSelectionChange","children","InputGroup","ComboBoxInput","ComboBoxButton","ComboBoxListBox","ComboBoxOption","_$memo","renderItem","_$effect","_$className","class","Boolean","join","Show","splitProps","createContext","useContext","createUniqueId","Select","HeadlessSelect","SelectTrigger","HeadlessSelectTrigger","SelectValue","HeadlessSelectValue","SelectListBox","HeadlessSelectListBox","SelectOption","HeadlessSelectOption","SelectSizeContext","createContext","sizeStyles","sm","trigger","label","option","icon","md","lg","Select","props","mergedProps","useProviderProps","descriptionId","createUniqueId","errorId","local","headlessProps","splitProps","size","customClass","class","getClassName","renderProps","base","disabledClass","isDisabled","filter","Boolean","join","mergedAriaLabel","styledLabel","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_$className","undefined","describedByIds","description","isInvalid","errorMessage","_$createComponent","Provider","value","children","HeadlessSelect","_$mergeProps","_$memo","Show","when","_el$2","_tmpl$2","_$setAttribute","_el$3","_tmpl$3","SelectTrigger","useContext","sizeStyle","sizeClass","colorClass","isOpen","isHovered","focusClass","isFocusVisible","HeadlessSelectTrigger","ChevronIcon","SelectValue","placeholderClass","isSelected","HeadlessSelectValue","SelectListBox","_renderProps","HeadlessSelectListBox","paddingStyles","SelectOption","isFocused","iconClass","paddingClass","HeadlessSelectOption","CheckIcon","_el$4","_el$5","_tmpl$4","_el$6","_tmpl$5","Trigger","Value","ListBox","Option","splitProps","createContext","useContext","Menu","HeadlessMenu","MenuItem","HeadlessMenuItem","MenuTrigger","HeadlessMenuTrigger","MenuButton","HeadlessMenuButton","splitProps","MenuTrigger","HeadlessMenuTrigger","MenuButton","HeadlessMenuButton","Menu","HeadlessMenu","MenuItem","HeadlessMenuItem","ActionMenu","props","local","menuProps","_$createComponent","children","isDisabled","label","renderProps","base","quietClass","isQuiet","stateClass","isPressed","isHovered","focusClass","isFocusVisible","filter","Boolean","join","MoreIcon","_$mergeProps","class","item","menuItem","textValue","String","id","colorClass","isFocused","pressedClass","_$getNextElement","_tmpl$","SubmenuTrigger","HeadlessSubmenuTrigger","props","_$createComponent","splitProps","ContextualHelpTrigger","HeadlessContextualHelpTrigger","helpIcon","_$getNextElement","_tmpl$","infoIcon","_tmpl$2","props","local","headlessProps","children","icon","variant","trigger","_el$3","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","_c$","_$memo","title","_el$8","_tmpl$4","content","_el$9","_tmpl$5","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_c$2","_el$12","_tmpl$6","_c$3","_el$13","_tmpl$7","_$createComponent","_$mergeProps","class","join","MenuSizeContext","createContext","sizeStyles","sm","button","menu","item","icon","md","lg","buttonVariants","primary","secondary","quiet","MenuTrigger","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","_$createComponent","Provider","value","children","_el$","_$getNextElement","_tmpl$","_$insert","HeadlessMenuTrigger","_$mergeProps","_$effect","_$className","class","MenuButton","useContext","sizeStyle","variant","customClass","getClassName","renderProps","base","sizeClass","variantClass","stateClass","isDisabled","isPressed","focusClass","isFocusVisible","filter","Boolean","join","HeadlessMenuButton","_$memo","ChevronIcon","Menu","styles","_renderProps","HeadlessMenu","MenuItem","colorClass","isDestructive","isFocused","isHovered","pressedClass","HeadlessMenuItem","_el$3","_tmpl$3","_el$2","_tmpl$2","shortcut","_el$4","_tmpl$4","MenuSeparator","_el$5","_tmpl$5","_el$6","_tmpl$6","_$setAttribute","Item","Separator","Button","splitProps","createContext","useContext","Show","createUniqueId","ListBox","HeadlessListBox","ListBoxOption","HeadlessListBoxOption","ListBoxSizeContext","createContext","sizeStyles","sm","list","option","icon","label","description","md","lg","ListBox","props","mergedProps","useProviderProps","labelId","createUniqueId","descriptionId","local","headlessProps","splitProps","size","styles","customClass","class","getClassName","renderProps","base","sizeClass","stateClass","isDisabled","focusClass","isFocusVisible","filter","Boolean","join","defaultEmptyState","_$getNextElement","_tmpl$","mergedAriaLabel","labelledByIds","undefined","describedByIds","_$createComponent","Provider","value","children","_el$2","_tmpl$4","_el$5","firstChild","_el$6","_co$","_$getNextMarker","nextSibling","_el$7","_el$8","_co$2","_el$9","_el$0","_co$3","_$insert","Show","when","_el$3","_tmpl$2","_$setAttribute","_$effect","_$className","HeadlessListBox","_$mergeProps","renderEmptyState","_el$4","_tmpl$3","ListBoxOption","useContext","sizeStyle","colorClass","isSelected","isFocused","isHovered","HeadlessListBoxOption","_$memo","_el$13","CheckIcon","_el$1","_tmpl$5","_el$10","_el$11","_el$12","_co$4","_c$","_el$14","_el$15","_tmpl$6","Option","splitProps","createContext","createMemo","useContext","Show","GridList","HeadlessGridList","GridListItem","HeadlessGridListItem","GridListSelectionCheckbox","HeadlessGridListSelectionCheckbox","GridListSizeContext","size","variant","layout","sizeStyles","sm","list","item","icon","image","label","description","checkbox","md","lg","variantStyles","default","itemHover","itemSelected","cards","bordered","props","local","headlessProps","styles","variantStyle","customClass","class","getClassName","renderProps","base","sizeClass","variantClass","layoutClass","columns","undefined","stateClass","isDisabled","focusClass","isFocusVisible","filter","Boolean","join","defaultEmptyState","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$4","_el$5","_co$","_$getNextMarker","nextSibling","_el$3","_$insert","_$createComponent","EmptyIcon","contextValue","Provider","value","children","_el$6","_tmpl$4","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","_el$11","_el$12","_co$4","when","_el$7","_tmpl$2","_$effect","_$className","_$mergeProps","renderEmptyState","_el$8","_tmpl$3","context","sizeStyle","isSelected","isHovered","textClass","pressedClass","isPressed","_el$13","_tmpl$5","_p$","_v$","_v$2","imageAlt","_v$3","e","_$setAttribute","t","a","_el$14","_tmpl$6","CheckIcon","_el$15","_tmpl$7","_el$16","_el$18","_el$19","_co$5","_c$","_$memo","_el$17","className","_el$20","itemKey","_el$21","_tmpl$8","_el$22","_tmpl$9","Item","SelectionCheckbox","splitProps","createContext","useContext","Tabs","HeadlessTabs","TabList","HeadlessTabList","Tab","HeadlessTab","TabPanel","HeadlessTabPanel","TabsSizeContext","createContext","size","variant","sizeStyles","sm","tab","tabList","panel","md","lg","variantStyles","underline","base","default","selected","disabled","pill","boxed","Tabs","props","mergedProps","useProviderProps","local","headlessProps","splitProps","customClass","class","getClassName","renderProps","orientationClass","orientation","disabledClass","isDisabled","filter","Boolean","join","_$createComponent","Provider","value","children","HeadlessTabs","_$mergeProps","TabList","ctx","useContext","sizeClass","variantClass","focusClass","isFocusVisible","HeadlessTabList","Tab","variantBase","stateClass","isSelected","pressedClass","isPressed","cursorClass","HeadlessTab","TabPanel","HeadlessTabPanel","List","Panel","splitProps","createContext","useContext","Breadcrumbs","HeadlessBreadcrumbs","BreadcrumbItem","HeadlessBreadcrumbItem","BreadcrumbsSizeContext","createContext","size","variant","showSeparator","sizeStyles","sm","text","icon","gap","md","lg","variantStyles","default","item","current","separator","subtle","Breadcrumbs","props","mergedProps","useProviderProps","local","headlessProps","splitProps","customClass","class","getClassName","renderProps","base","sizeClass","disabledClass","isDisabled","filter","Boolean","join","_$createComponent","Provider","value","children","HeadlessBreadcrumbs","_$mergeProps","BreadcrumbItem","ctx","useContext","vStyles","stateClass","isCurrent","cursorClass","transitionClass","focusClass","isFocusVisible","separatorClass","renderChildren","_$memo","ChevronIcon","HeadlessBreadcrumbItem","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","Item","splitProps","Show","useContext","NumberField","HeadlessNumberField","NumberFieldLabel","HeadlessNumberFieldLabel","NumberFieldGroup","HeadlessNumberFieldGroup","NumberFieldInput","HeadlessNumberFieldInput","NumberFieldIncrementButton","HeadlessNumberFieldIncrementButton","NumberFieldDecrementButton","HeadlessNumberFieldDecrementButton","NumberFieldContext","sizeStyles","sm","input","label","description","button","buttonGap","md","lg","PlusIcon","props","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","class","MinusIcon","_el$2","_tmpl$2","NumberFieldDescription","context","useContext","NumberFieldContext","descriptionProps","ref","_ref","rest","_el$3","_tmpl$3","_$spread","_$mergeProps","_$insert","children","_$runHydrationEvents","NumberFieldError","errorMessageProps","_el$4","NumberField","mergedProps","useProviderProps","local","headlessProps","splitProps","size","containerClasses","base","disabledClass","isDisabled","custom","filter","Boolean","join","groupClasses","gapClass","inputClasses","renderProps","sizeClass","variantClass","variant","stateClass","isInvalid","hoverClass","buttonClasses","isPressed","isHovered","labelClasses","descriptionClasses","errorClasses","_$createComponent","HeadlessNumberField","errorMessage","Show","when","HeadlessNumberFieldLabel","_$memo","isRequired","_tmpl$4","HeadlessNumberFieldGroup","hideStepper","HeadlessNumberFieldDecrementButton","HeadlessNumberFieldInput","HeadlessNumberFieldIncrementButton","splitProps","DropZone","HeadlessDropZone","props","local","headlessProps","getClassName","renderProps","base","join","stateClass","isDisabled","isDropTarget","isHovered","isFocused","focusRingClass","isFocusVisible","class","filter","Boolean","_$createComponent","_$mergeProps","splitProps","FileTrigger","HeadlessFileTrigger","props","local","headlessProps","hasClass","class","trim","length","_$createComponent","_$mergeProps","children","_$memo","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_$className","splitProps","Show","useContext","SearchField","HeadlessSearchField","SearchFieldLabel","HeadlessSearchFieldLabel","SearchFieldInput","HeadlessSearchFieldInput","SearchFieldClearButton","HeadlessSearchFieldClearButton","SearchFieldContext","sizeStyles","sm","container","input","label","description","icon","clearButton","md","lg","SearchIcon","props","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","class","ClearIcon","_el$2","_tmpl$2","SearchFieldDescription","context","useContext","SearchFieldContext","_el$3","_tmpl$3","_$spread","_$mergeProps","descriptionProps","_$insert","children","_$runHydrationEvents","SearchFieldError","_el$4","errorMessageProps","SearchField","mergedProps","useProviderProps","local","headlessProps","splitProps","size","containerClasses","base","disabledClass","isDisabled","custom","filter","Boolean","join","inputWrapperClasses","sizeClass","inputClasses","renderProps","paddingClass","hideSearchIcon","variantClass","variant","stateClass","isInvalid","hoverClass","searchIconClasses","clearButtonClasses","isPressed","isHovered","labelClasses","descriptionClasses","errorClasses","_$createComponent","HeadlessSearchField","errorMessage","Show","when","HeadlessSearchFieldLabel","_$memo","isRequired","_tmpl$4","_el$6","_tmpl$5","_el$7","firstChild","_el$8","_co$","_$getNextMarker","nextSibling","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","HeadlessSearchFieldInput","HeadlessSearchFieldClearButton","_$className","Show","splitProps","ContextualHelp","props","local","splitProps","_$createComponent","TooltipTrigger","children","Show","when","fallback","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","triggerLabel","_v$2","class","e","_$setAttribute","t","_$className","undefined","Tooltip","content","splitProps","Show","createUniqueId","Slider","HeadlessSlider","SliderTrack","HeadlessSliderTrack","SliderThumb","HeadlessSliderThumb","SliderOutput","HeadlessSliderOutput","createSignal","createMemo","Show","sizeStyles","sm","track","thumb","label","md","lg","clamp","value","min","max","Math","snapToStep","step","snapped","round","decimalPlaces","toString","split","length","rounded","parseFloat","toFixed","RangeSlider","props","minValue","maxValue","size","isDisabled","defaultStart","defaultValue","start","defaultEnd","end","internalStart","setInternalStart","internalEnd","setInternalEnd","startValue","undefined","endValue","startPercent","endPercent","formatter","Intl","NumberFormat","formatOptions","formattedOutput","format","setRange","s","e","newStart","newEnd","onChange","draggingThumb","setDraggingThumb","focusedThumb","setFocusedThumb","trackRef","getValueFromPointer","clientX","rect","getBoundingClientRect","percent","left","width","closerThumb","distToStart","abs","distToEnd","onPointerDown","preventDefault","currentTarget","setPointerCapture","pointerId","onPointerMove","onPointerUp","onChangeEnd","onKeyDown","pageStep","current","newValue","handled","key","stopPropagation","thumbClasses","isDragging","isFocused","base","sizeClass","stateClass","focusClass","filter","Boolean","join","_el$","_$getNextElement","_tmpl$4","_el$12","firstChild","_el$13","_co$3","_$getNextMarker","nextSibling","_el$9","_el$0","_el$1","_el$10","_el$11","_$insert","_$createComponent","when","showOutput","children","_el$2","_tmpl$3","_el$5","_el$6","_co$","_el$7","_el$8","_co$2","_el$3","_tmpl$","_$effect","_$className","_el$4","_tmpl$2","$$pointerup","$$pointermove","$$pointerdown","_ref$","_$use","addEventListener","$$keydown","_p$","_v$","class","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","t","_$setAttribute","a","o","_$setStyleProperty","i","n","h","r","d","l","u","c","w","m","f","y","g","p","b","T","_$runHydrationEvents","_$delegateEvents","sizeStyles","sm","trackHorizontal","trackVertical","thumb","label","output","md","lg","Slider","props","mergedProps","useProviderProps","local","headlessProps","splitProps","size","orientation","labelId","createUniqueId","containerClasses","base","custom","class","filter","Boolean","join","labelRowClasses","rowLayout","trackContainerClasses","disabledClass","isDisabled","trackClasses","_renderProps","axisClass","interactiveClass","fillClasses","variantClass","variant","fillStyle","renderProps","left","bottom","width","height","valuePercent","top","thumbClasses","sizeClass","stateClass","isDragging","isHovered","focusClass","isFocusVisible","labelClasses","outputClasses","minMaxClasses","showOutput","minValue","maxValue","_$createComponent","HeadlessSlider","_$mergeProps","undefined","children","Show","when","_el$","_$getNextElement","_tmpl$2","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","_$insert","_el$2","_tmpl$","_$setAttribute","_$effect","_$className","HeadlessSliderOutput","_el$7","_tmpl$3","HeadlessSliderTrack","trackRenderProps","_el$1","_p$","_v$3","_v$4","e","t","_$style","HeadlessSliderThumb","showMinMax","_el$8","_tmpl$4","_el$9","_el$0","_v$","_v$2","splitProps","For","Show","Toast","HeadlessToast","ToastRegion","HeadlessToastRegion","ToastProvider","HeadlessToastProvider","ToastContext","ToastTitle","HeadlessToastTitle","ToastDescription","HeadlessToastDescription","ToastCloseButton","HeadlessToastCloseButton","globalToastQueue","addToast","headlessAddToast","useToastContext","regionStyles","join","toastBaseStyles","variantStyles","info","success","warning","error","neutral","iconStyles","closeButtonStyles","InfoIcon","_$getNextElement","_tmpl$","SuccessIcon","_tmpl$2","WarningIcon","_tmpl$3","ErrorIcon","_tmpl$4","CloseIcon","_tmpl$5","getVariantIcon","variant","_$createComponent","props","local","rest","_$mergeProps","placement","_renderProps","class","filter","Boolean","children","regionProps","each","visibleToasts","toast","content","type","_el$6","_tmpl$6","_$insert","_$effect","_$className","_el$7","_tmpl$8","_el$9","firstChild","_el$0","_co$","_$getNextMarker","nextSibling","_el$1","_el$10","_co$2","_el$11","_el$12","_co$3","when","title","description","action","_el$8","_tmpl$7","_$addEventListener","onAction","label","_$runHydrationEvents","options","toastSuccess","message","timeout","toastError","toastWarning","toastInfo","_$delegateEvents","splitProps","createContext","useContext","Show","Disclosure","HeadlessDisclosure","DisclosureGroup","HeadlessDisclosureGroup","DisclosureTrigger","HeadlessDisclosureTrigger","DisclosurePanel","HeadlessDisclosurePanel","DisclosureSizeContext","createContext","size","variant","sizeStyles","sm","trigger","panel","icon","gap","md","lg","variantStyles","default","container","base","disabled","bordered","filled","ghost","DisclosureGroup","props","mergedProps","useProviderProps","local","headlessProps","splitProps","customClass","class","getClassName","_renderProps","gapClass","filter","Boolean","join","_$createComponent","Provider","value","children","HeadlessDisclosureGroup","_$mergeProps","Disclosure","parentCtx","useContext","variantClass","HeadlessDisclosure","DisclosureTrigger","ctx","HeadlessDisclosureTrigger","_$memo","Show","when","hideIcon","_el$","_$getNextElement","_tmpl$","_$effect","_$setAttribute","DisclosurePanel","sizeClass","HeadlessDisclosurePanel","Trigger","Panel","Item","splitProps","Show","createUniqueId","Meter","HeadlessMeter","sizeStyles","sm","track","text","md","lg","variantStyles","primary","accent","success","warning","danger","info","props","local","headlessProps","size","variant","sizeConfig","labelId","renderChildren","valueText","percentage","showValueLabel","_$createComponent","when","label","children","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","_el$2","_tmpl$","_$setAttribute","_el$3","_tmpl$2","_$effect","_$className","_el$8","_tmpl$4","_el$9","_$setStyleProperty","_p$","_v$","_v$2","e","t","undefined","_$mergeProps","class","splitProps","Show","createUniqueId","TagList","HeadlessTagList","Tag","HeadlessTag","TagRemoveButton","HeadlessTagRemoveButton","sizeStyles","sm","tag","removeButton","label","md","lg","variantStyles","default","selected","disabled","outline","solid","TagGroup","props","local","labelId","size","variant","sizeConfig","variantConfig","getKey","item","id","undefined","key","String","_el$","_$getNextElement","_tmpl$2","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","_$insert","_$createComponent","when","children","_el$2","_tmpl$","_$setAttribute","_$effect","_$className","items","onRemove","selectionMode","selectedKeys","defaultSelectedKeys","onSelectionChange","disabledKeys","isDisabled","renderEmptyState","_tmpl$3","class","isSelected","base","variantClass","disabledClass","trim","renderProps","_el$8","allowsRemoving","buttonProps","removeButtonProps","_tmpl$4","Show","splitProps","orientationStyles","vertical","horizontal","LabeledValue","props","local","splitProps","orientation","resolvedValue","value","children","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","_co$","_$getNextMarker","nextSibling","_el$4","_el$5","_co$2","_$insert","_$createComponent","UILabel","size","labelClass","label","Show","when","UIText","variant","valueClass","_$effect","_$className","class","Show","splitProps","variantStyles","neutral","positive","notice","negative","info","sizeStyles","sm","dot","text","md","lg","StatusLight","props","local","variant","size","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_co$","_$getNextMarker","_$insert","_$createComponent","when","children","_$effect","_p$","_v$","class","_v$2","indicatorClass","e","_$className","t","undefined","splitProps","Calendar","HeadlessCalendar","CalendarHeading","CalendarButton","CalendarGrid","CalendarCell","sizeStyles","sm","container","header","cell","button","md","lg","Calendar","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","_$createComponent","HeadlessCalendar","_$mergeProps","class","children","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_el$8","_el$9","_co$3","_$insert","CalendarButton","slot","_tmpl$","CalendarHeading","_tmpl$2","CalendarGrid","date","CalendarCell","isSelected","isFocused","isDisabled","isOutsideMonth","isToday","isPressed","base","stateClass","focusClass","pressedClass","trim","splitProps","RangeCalendar","HeadlessRangeCalendar","RangeCalendarHeading","RangeCalendarButton","RangeCalendarGrid","RangeCalendarCell","sizeStyles","sm","container","header","cell","button","md","lg","RangeCalendar","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","_$createComponent","HeadlessRangeCalendar","_$mergeProps","class","children","_el$","_$getNextElement","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_el$8","_el$9","_co$3","_$insert","RangeCalendarButton","slot","_tmpl$","RangeCalendarHeading","_tmpl$2","RangeCalendarGrid","date","RangeCalendarCell","isSelected","isSelectionStart","isSelectionEnd","isFocused","isDisabled","isOutsideMonth","isToday","isPressed","base","stateClass","roundedClass","focusClass","pressedClass","trim","splitProps","DateField","HeadlessDateField","DateFieldLabel","DateFieldDescription","DateFieldErrorMessage","DateInput","DateSegment","sizeStyles","sm","container","input","segment","label","md","lg","DateField","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","isInvalid","errorMessage","_$createComponent","HeadlessDateField","_$mergeProps","description","class","children","_$memo","DateFieldLabel","isRequired","_$getNextElement","_tmpl$","DateInput","isFocused","isDisabled","base","borderClass","disabledClass","focusClass","trim","DateSegment","isPlaceholder","isEditable","stateClass","type","DateFieldDescription","DateFieldErrorMessage","splitProps","TimeField","HeadlessTimeField","TimeFieldLabel","TimeFieldDescription","TimeFieldErrorMessage","TimeInput","TimeSegment","sizeStyles","sm","container","input","segment","label","md","lg","TimeField","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","isInvalid","errorMessage","_$createComponent","HeadlessTimeField","_$mergeProps","description","class","children","_$memo","TimeFieldLabel","isRequired","_$getNextElement","_tmpl$","TimeInput","isFocused","isDisabled","base","borderClass","disabledClass","focusClass","trim","TimeSegment","isPlaceholder","isEditable","stateClass","type","TimeFieldDescription","TimeFieldErrorMessage","splitProps","Show","DatePicker","HeadlessDatePicker","DatePickerLabel","HeadlessDatePickerLabel","DatePickerDescription","HeadlessDatePickerDescription","DatePickerErrorMessage","HeadlessDatePickerErrorMessage","DatePickerButton","DatePickerContent","DateInput","DateSegment","CalendarIcon","_$getNextElement","_tmpl$","sizeStyles","sm","container","input","segment","label","button","md","lg","DatePicker","props","mergedProps","useProviderProps","local","rest","splitProps","size","sizeConfig","isInvalid","errorMessage","_$createComponent","HeadlessDatePicker","_$mergeProps","description","class","children","Show","when","HeadlessDatePickerLabel","_$memo","isRequired","_tmpl$2","_el$3","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_el$8","_el$9","_co$3","_$insert","DateInput","isFocused","isDisabled","base","borderClass","disabledClass","focusClass","trim","DateSegment","isPlaceholder","isEditable","stateClass","type","DatePickerButton","isOpen","DatePickerPopup","HeadlessDatePickerDescription","HeadlessDatePickerErrorMessage","DatePickerContent","Calendar","splitProps","Show","createMemo","DateRangePicker","HeadlessDateRangePicker","DateRangePickerLabel","HeadlessDateRangePickerLabel","DateRangePickerDescription","HeadlessDateRangePickerDescription","DateRangePickerErrorMessage","HeadlessDateRangePickerErrorMessage","DateRangePickerButton","DateRangePickerContent","useDateRangePickerContext","CalendarIcon","_$getNextElement","_tmpl$","sizeStyles","sm","container","field","label","button","md","lg","DateRangeDisplay","props","context","useDateRangePickerContext","sizeConfig","size","startDisplay","createMemo","state","calendarState","start","value","anchorDate","month","day","year","endDisplay","end","hasValue","_$createComponent","Show","when","children","HeadlessDateRangePickerLabel","_$memo","isRequired","_tmpl$2","_el$3","_tmpl$3","_el$4","firstChild","_el$5","nextSibling","_el$6","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_$spread","_$mergeProps","pickerAria","startFieldProps","isInvalid","isDisabled","_$insert","endFieldProps","DateRangePickerButton","class","isOpen","base","borderClass","disabledClass","trim","DateRangePickerContent","RangeCalendar","_$runHydrationEvents","description","HeadlessDateRangePickerDescription","errorMessage","HeadlessDateRangePickerErrorMessage","DateRangePicker","mergedProps","useProviderProps","local","rest","splitProps","HeadlessDateRangePicker","splitProps","createContext","createMemo","useContext","Show","Table","HeadlessTable","TableHeader","HeadlessTableHeader","TableColumn","HeadlessTableColumn","TableBody","HeadlessTableBody","TableRow","HeadlessTableRow","TableCell","HeadlessTableCell","TableSelectionCheckbox","HeadlessTableSelectionCheckbox","TableSelectAllCheckbox","HeadlessTableSelectAllCheckbox","TableSizeContext","createContext","size","variant","sizeStyles","sm","table","headerCell","cell","checkbox","md","lg","variantStyles","default","wrapper","header","row","rowHover","rowSelected","striped","bordered","alignStyles","left","center","right","Table","props","mergedProps","useProviderProps","local","headlessProps","splitProps","styles","variantStyle","customClass","class","getClassName","renderProps","base","sizeClass","stateClass","isEmpty","focusClass","isFocusVisible","filter","Boolean","join","contextValue","createMemo","_$createComponent","Provider","value","children","_el$","_$getNextElement","_tmpl$3","_el$5","firstChild","_el$6","_co$","_$getNextMarker","nextSibling","_el$7","_el$8","_co$2","_el$4","_$insert","Show","when","title","_el$2","_tmpl$","description","_el$3","_tmpl$2","HeadlessTable","_$mergeProps","_$effect","_$className","TableHeader","context","useContext","className","HeadlessTableHeader","TableColumn","sizeStyle","alignClass","align","sortClass","isSortable","isHovered","getStyle","width","undefined","HeadlessTableColumn","style","_el$9","_tmpl$4","_el$0","_el$1","_el$10","_co$3","_c$","_$memo","sortDirection","SortIcon","direction","TableBody","defaultEmptyState","_el$11","_tmpl$5","_el$12","_el$13","_el$15","_el$16","_co$4","_el$14","EmptyIcon","HeadlessTableBody","renderEmptyState","TableRow","variantClass","isDisabled","isSelected","pressedClass","isPressed","HeadlessTableRow","TableCell","HeadlessTableCell","TableSelectionCheckbox","checkboxClass","_el$17","_tmpl$6","_el$18","HeadlessTableSelectionCheckbox","rowKey","TableSelectAllCheckbox","_el$19","_tmpl$7","_el$20","HeadlessTableSelectAllCheckbox","_el$21","_tmpl$8","_c$2","_tmpl$9","_tmpl$0","_$setAttribute","_el$24","_tmpl$1","Header","Column","Body","Row","Cell","SelectionCheckbox","SelectAllCheckbox","splitProps","createContext","createMemo","useContext","Show","Tree","HeadlessTree","TreeItem","HeadlessTreeItem","TreeExpandButton","HeadlessTreeExpandButton","TreeSelectionCheckbox","HeadlessTreeSelectionCheckbox","TreeSizeContext","createContext","size","variant","sizeStyles","sm","tree","item","indent","icon","expandButton","label","description","checkbox","md","lg","variantStyles","default","itemHover","itemSelected","bordered","quiet","Tree","props","mergedProps","useProviderProps","local","headlessProps","splitProps","styles","variantStyle","customClass","class","getClassName","renderProps","base","sizeClass","variantClass","stateClass","isDisabled","focusClass","isFocusVisible","filter","Boolean","join","defaultEmptyState","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$4","_el$5","_co$","_$getNextMarker","nextSibling","_el$3","_$insert","_$createComponent","EmptyTreeIcon","contextValue","createMemo","Provider","value","children","_el$6","_tmpl$4","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","_el$11","_el$12","_co$4","Show","when","_el$7","_tmpl$2","_$effect","_$className","HeadlessTree","_$mergeProps","renderEmptyState","_el$8","_tmpl$3","TreeItem","context","useContext","sizeStyle","isSelected","isHovered","textClass","pressedClass","isPressed","getStyle","level","HeadlessTreeItem","style","TreeExpandButton","_el$13","_tmpl$5","_$memo","isExpandable","FolderIcon","isOpen","isExpanded","FileIcon","_el$14","_tmpl$6","_el$15","_el$17","_el$18","_co$5","_c$","_el$16","CheckIcon","className","HeadlessTreeExpandButton","ChevronIcon","TreeSelectionCheckbox","_el$19","HeadlessTreeSelectionCheckbox","itemKey","_el$20","_tmpl$7","_$setAttribute","_el$21","_tmpl$8","_c$2","_tmpl$9","_tmpl$0","_el$24","_tmpl$1","_el$25","_tmpl$10","_el$26","_tmpl$11","Item","ExpandButton","SelectionCheckbox","splitProps","createContext","createMemo","useContext","Show","ColorSlider","HeadlessColorSlider","ColorSliderTrack","HeadlessColorSliderTrack","ColorSliderThumb","HeadlessColorSliderThumb","ColorArea","HeadlessColorArea","ColorAreaGradient","HeadlessColorAreaGradient","ColorAreaThumb","HeadlessColorAreaThumb","ColorWheel","HeadlessColorWheel","ColorWheelTrack","HeadlessColorWheelTrack","ColorWheelThumb","HeadlessColorWheelThumb","ColorField","HeadlessColorField","ColorFieldInput","HeadlessColorFieldInput","ColorSwatch","HeadlessColorSwatch","parseColor","getColorChannels","splitProps","ColorEditor","HeadlessColorEditor","props","local","headlessProps","_$createComponent","_$mergeProps","class","colorSpace","base","join","splitProps","createContext","createMemo","useContext","ColorSwatchPicker","HeadlessColorSwatchPicker","ColorSwatchPickerItem","HeadlessColorSwatchPickerItem","ColorSwatch","HeadlessColorSwatch","SwatchPickerContext","size","rounding","sizeMap","xs","sm","md","lg","densityMap","compact","regular","spacious","roundingMap","none","default","full","props","local","headlessProps","normalizeSize","density","contextValue","_$createComponent","Provider","value","children","_$mergeProps","class","context","sizeClass","roundingClass","color","_renderProps","base","_el$","_$getNextElement","_tmpl$","_$effect","_$className","ColorSizeContext","createContext","size","sizeStyles","sm","slider","track","thumb","label","area","container","wheel","field","input","swatch","md","lg","ColorSlider","props","local","headlessProps","splitProps","styles","customClass","class","getClassName","renderProps","base","stateClass","isDisabled","filter","Boolean","join","contextValue","createMemo","_$createComponent","Provider","value","children","HeadlessColorSlider","_$mergeProps","_el$","_$getNextElement","_tmpl$2","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","Show","when","_el$2","_tmpl$","_$effect","_$className","showValue","_el$3","Math","round","ColorSliderTrack","ColorSliderThumb","context","useContext","dragClass","isDragging","HeadlessColorSliderTrack","focusClass","isFocusVisible","disabledClass","HeadlessColorSliderThumb","ColorArea","HeadlessColorArea","ColorAreaGradient","ColorAreaThumb","className","HeadlessColorAreaGradient","HeadlessColorAreaThumb","ColorWheel","HeadlessColorWheel","ColorWheelTrack","ColorWheelThumb","HeadlessColorWheelTrack","HeadlessColorWheelThumb","ColorField","HeadlessColorField","_el$8","ColorFieldInput","isInvalid","errorMessage","_$memo","description","_el$9","_tmpl$3","_el$0","_tmpl$4","borderClass","HeadlessColorFieldInput","ColorSwatch","_renderProps","selectableClass","isSelectable","selectedClass","isSelected","handleClick","onClick","_el$1","_tmpl$5","$$click","HeadlessColorSwatch","_p$","_v$","_v$2","e","_$setAttribute","t","undefined","_$runHydrationEvents","ColorPicker","_el$10","_tmpl$6","_el$12","_el$13","_co$3","_el$14","_el$15","_co$4","_el$16","_el$17","_co$5","_el$18","_el$19","_co$6","_el$11","defaultValue","onChange","xChannel","yChannel","showSliders","channel","showInput","color","Track","Thumb","Gradient","Input","_$delegateEvents","splitProps","Show","Landmark","HeadlessLandmark","useLandmarkController","roleLabels","main","navigation","search","banner","contentinfo","complementary","form","region","roleColors","props","local","headlessProps","customClass","class","role","getClassName","base","debugClass","showLabel","filter","Boolean","join","_$createComponent","_$mergeProps","children","when","_el$","_$getNextElement","_tmpl$2","_el$6","firstChild","_el$7","_co$2","_$getNextMarker","nextSibling","_el$8","_el$9","_co$3","_$insert","_el$2","_tmpl$","_el$3","_el$4","_el$5","_co$","_$effect","_$className","_$memo","SkipLink","className","_el$0","_tmpl$3","_$setAttribute","href","LandmarkNavigator","controller","isVisible","_el$1","_tmpl$4","_el$10","_el$11","_el$12","_el$13","_el$14","$$click","focusPrevious","focusMain","focusNext","_$runHydrationEvents","_$delegateEvents","splitProps","splitProps","Content","props","local","rest","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","ViewHeader","_el$2","_tmpl$2","ViewFooter","_el$3","_tmpl$3","View","props","local","domProps","splitProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","splitProps","Well","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","splitProps","Card","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","splitProps","Image","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$runHydrationEvents","splitProps","PageLayout","props","local","rest","classes","base","header","withHeader","custom","class","filter","Boolean","join","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","children","_$runHydrationEvents","splitProps","directionMap","alignMap","justifyMap","Flex","props","local","rest","classes","parts","inline","direction","push","gap","undefined","wrap","alignItems","justifyContent","class","filter","Boolean","join","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","children","_$runHydrationEvents","splitProps","Grid","props","local","rest","gridStyle","s","style","columns","undefined","rows","areas","map","a","join","classes","parts","inline","gap","push","columnGap","rowGap","alignItems","start","center","end","stretch","justifyItems","class","filter","Boolean","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","children","_$runHydrationEvents","Show","splitProps","IllustratedMessage","props","local","domProps","_el$","_$getNextElement","_tmpl$5","_el$6","firstChild","_el$7","_co$","_$getNextMarker","nextSibling","_el$8","_el$9","_co$2","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_$spread","_$mergeProps","class","_$insert","_$createComponent","when","illustration","children","_el$2","_tmpl$","heading","_el$3","_tmpl$2","description","_el$4","_tmpl$3","_el$5","_tmpl$4","_$runHydrationEvents","splitProps","StepList","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","class","_$insert","children","_$runHydrationEvents","Step","_el$2","_tmpl$2","DragAndDropContext","DropIndicator","DropIndicatorContext","useDndPersistedKeys","useRenderDropIndicator","useDragAndDrop","DIRECTORY_DRAG_TYPE","splitProps","SharedElement","HeadlessSharedElement","SharedElementTransition","HeadlessSharedElementTransition","mergeClassName","custom","_renderProps","filter","Boolean","join","props","local","rest","_$createComponent","_$mergeProps","class","style","ErrorBoundary","SolidErrorBoundary","StoryErrorBoundary","props","_$createComponent","fallback","err","reset","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_$insert","message","_$addEventListener","_$runHydrationEvents","children","_$delegateEvents","Show","Button","HeadlessButton","variantStyles","primary","secondary","accent","outline","Chip","props","variant","renderIcon","icon","_$createComponent","class","onPress","onClick","children","when","_el$","_$getNextElement","_tmpl$","_$insert","_el$2","_tmpl$2","text","Show","Button","HeadlessButton","NavHeader","props","_el$","_$getNextElement","_tmpl$2","_el$2","firstChild","_el$4","nextSibling","_el$5","_el$6","_co$","_$getNextMarker","_el$7","_el$8","_co$2","_$insert","_$createComponent","when","logo","fallback","logoText","children","_el$9","_tmpl$3","_el$3","_tmpl$","_$effect","_p$","_v$","_v$2","logoAlt","e","_$setAttribute","t","undefined","menuIcon","onPress","onMenuClick","menuAriaLabel","_$className","class","Logo","props","sizeClass","size","firstWord","secondWord","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$insert","_$effect","_p$","_v$","inverted","class","_v$2","undefined","_v$3","e","_$className","t","_$setAttribute","a","Header","props","showTextLogo","logo","undefined","logoProps","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","_el$4","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_el$8","_$insert","logoImage","_c$","_$memo","_$createComponent","Logo","_$mergeProps","size","children","_$effect","_$className","class","Show","For","NavItem","props","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_co$","_$getNextMarker","_$insert","title","children","_$effect","_$className","class","NavLink","activeStyles","inactiveStyles","_el$5","_tmpl$2","_p$","_v$","href","_v$2","active","e","_$setAttribute","t","undefined","NavSection","_el$6","_tmpl$3","_el$12","_el$13","_co$4","_el$7","_el$8","_el$9","_el$0","_el$1","_co$2","_el$10","_el$11","_co$3","_$createComponent","when","links","each","link","_el$14","_tmpl$4","label","LateralNav","bgColor","transparent","_el$15","_tmpl$5","Show","eventMessages","follow","left","right","_el$","_$getNextElement","_tmpl$","_$insert","_el$2","like","_el$3","_el$4","comment","_el$5","_el$6","event","_el$7","_el$8","custom","TimelineItem","props","type","leftName","leftUser","name","rightName","rightUser","renderIcon","icon","renderMessage","message","_el$9","_tmpl$2","_el$0","firstChild","_el$1","_el$10","_co$","_$getNextMarker","nextSibling","_el$11","_el$12","_co$2","_el$13","_el$14","_co$3","_el$15","_el$16","_$createComponent","Show","when","children","Avatar","src","avatar","alt","fallback","_$effect","_$className","class","Show","For","Button","HeadlessButton","ConversationPreview","props","_$createComponent","type","class","onPress","onClick","children","Avatar","src","user","avatar","alt","name","online","size","_el$","_$getNextElement","_tmpl$3","_el$2","firstChild","_el$3","_el$5","nextSibling","_el$6","_co$","_$getNextMarker","_el$8","_el$9","_co$2","_$insert","Show","when","timestamp","_el$4","_tmpl$","lastMessage","_el$7","_tmpl$2","_$memo","unreadCount","_el$0","_tmpl$4","ConversationBubble","isUser","sender","_el$1","_tmpl$6","_el$10","_el$11","_el$13","_el$14","_co$3","content","_el$12","_tmpl$5","_$effect","_$className","_p$","_v$","_v$2","e","t","undefined","Conversation","_el$15","_tmpl$7","For","each","messages","message","Show","ProfileCard","props","formatNumber","num","toFixed","toString","_el$","_$getNextElement","_tmpl$5","_el$2","firstChild","_el$15","_el$16","_co$4","_$getNextMarker","nextSibling","_el$3","_el$4","_el$13","_el$14","_co$3","_el$6","_el$1","_el$10","_co$","_el$11","_el$12","_co$2","_el$18","_el$19","_co$5","_$insert","_$createComponent","Avatar","src","avatar","alt","username","size","Show","when","bio","children","_el$5","_tmpl$","followers","undefined","_el$7","_tmpl$2","_el$8","following","_el$9","_tmpl$3","_el$0","actions","_el$17","_tmpl$4","_c$","_$memo","_$effect","_$className","class","Show","For","Button","HeadlessButton","EventCard","props","displayedAttendees","attendees","slice","remainingCount","total","attendeeCount","length","displayed","_el$","_$getNextElement","_tmpl$9","_el$35","firstChild","_el$36","_co$8","_$getNextMarker","nextSibling","_el$37","_el$38","_co$9","_el$8","_el$9","_el$29","_el$30","_co$5","_el$31","_el$32","_co$6","_el$33","_el$34","_co$7","_$insert","_$createComponent","Show","when","decorationImage","children","_el$2","_tmpl$","_el$3","_el$4","_el$5","_$effect","_p$","_v$","_v$2","_v$3","e","_$setAttribute","t","a","undefined","image","_el$6","_tmpl$2","_el$7","_v$4","_v$5","title","date","author","_el$0","_tmpl$5","_el$15","_el$16","_co$","_el$17","_el$18","_co$2","_el$1","_tmpl$3","_el$10","_el$11","_el$12","_tmpl$4","_el$13","_el$14","_el$19","_tmpl$7","_el$20","_el$26","_el$27","_co$4","For","each","attendee","Avatar","src","avatar","alt","name","size","_el$21","_tmpl$6","_el$22","_el$24","_el$25","_co$3","_el$23","actions","_el$28","_tmpl$8","_c$","_$memo","_$className","class","EventListItem","onPress","onClick","_el$39","_tmpl$0","_el$40","_v$6","_v$7","_el$41","_tmpl$10","_el$42","_el$44","_el$45","_co$0","subtitle","_el$43","_tmpl$1","Show","For","CalendarCard","props","displayedFollowers","followers","slice","remainingCount","total","followerCount","length","displayed","_el$","_$getNextElement","_tmpl$5","_el$24","firstChild","_el$25","_co$6","_$getNextMarker","nextSibling","_el$4","_el$22","_el$23","_co$5","_el$7","_el$8","_el$9","_el$20","_el$21","_co$4","_$insert","_$createComponent","Show","when","image","children","_el$2","_tmpl$","_el$3","_$effect","_p$","_v$","_v$2","title","e","_$setAttribute","t","undefined","_$memo","tags","_el$5","_tmpl$2","_el$6","For","each","tag","Chip","text","variant","_el$0","_tmpl$4","_el$1","_el$10","_el$16","_el$17","_co$2","_el$18","_el$19","_co$3","follower","index","_el$26","_tmpl$6","name","_el$12","_tmpl$3","_el$14","_el$15","_co$","_el$13","_$className","class","ProjectCard","props","size","inactive","cardContent","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$insert","name","_el$3","_tmpl$2","_$effect","_p$","_v$","imageSrc","_v$2","imageAlt","e","_$setAttribute","t","undefined","cardClasses","class","href","_el$4","_tmpl$3","_v$3","_v$4","_$className","_el$5","_tmpl$4"]}