@newtonedev/components 0.1.19 → 0.1.21
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.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/primitives/useFocusVisible.ts","../src/primitives/Frame/Frame.utils.ts","../src/primitives/Frame/Frame.styles.ts","../src/primitives/Frame/Frame.tsx","../src/primitives/Icon/Icon.tsx","../src/primitives/Text/Text.tsx","../src/primitives/Text/Text.spans.ts","../src/primitives/Text/index.ts","../src/layout/Page/Page.tsx","../src/layout/Viewport/Viewport.tsx","../src/layout/Wrapper/Wrapper.styles.ts","../src/layout/Wrapper/Wrapper.tsx","../src/layout/Section/Section.styles.ts","../src/layout/Section/Section.tsx","../src/composites/actions/Button/Button.styles.ts","../src/composites/actions/Button/Button.tsx","../src/primitives/Card/Card.styles.ts","../src/primitives/Card/Card.tsx","../src/composites/display/Chip/Chip.styles.ts","../src/composites/display/Chip/Chip.tsx","../src/composites/layout/Divider/Divider.styles.ts","../src/composites/layout/Divider/Divider.tsx","../src/composites/layout/ContentCard/ContentCard.styles.ts","../src/composites/layout/ContentCard/ContentCard.tsx","../src/composites/form-controls/TextInput/TextInput.styles.ts","../src/composites/form-controls/TextInput/TextInput.tsx","../src/composites/overlays/Popover/Popover.styles.ts","../src/composites/overlays/Popover/Popover.tsx","../src/composites/overlays/Popover/usePopover.ts","../src/composites/form-controls/Select/Select.types.ts","../src/composites/form-controls/Select/Select.styles.ts","../src/composites/form-controls/Select/useSelect.ts","../src/composites/form-controls/Select/SelectOption.tsx","../src/composites/form-controls/Select/Select.tsx","../src/composites/form-controls/Toggle/Toggle.styles.ts","../src/composites/form-controls/Toggle/Toggle.tsx","../src/composites/range-inputs/Slider/Slider.styles.ts","../src/composites/range-inputs/Slider/Slider.tsx","../src/composites/range-inputs/HueSlider/HueSlider.styles.ts","../src/composites/range-inputs/HueSlider/HueSlider.tsx","../../../../newtone-colors/src/constants.ts","../../../../newtone-colors/src/conversions/oklab.ts","../../../../newtone-colors/src/conversions/linear-p3.ts","../../../../newtone-colors/src/conversions/srgb.ts","../../../../newtone-colors/src/conversions/pipeline.ts","../src/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.styles.ts","../src/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.tsx","../src/composites/layout/AppShell/AppShell.styles.ts","../src/composites/layout/AppShell/AppShell.tsx","../src/composites/layout/Sidebar/Sidebar.styles.ts","../src/composites/layout/Sidebar/Sidebar.tsx","../src/composites/layout/Navbar/Navbar.styles.ts","../src/composites/layout/Navbar/Navbar.tsx","../src/composites/branding/LogoMonogram/LogoMonogram.tsx","../src/composites/branding/LogoWordmark/LogoWordmark.tsx","../src/registry/registry.ts","../src/registry/codegen.ts","../src/registry/icons.ts"],"names":["useState","useEffect","useCallback","StyleSheet","React","Text","useNewtoneTheme","useFrameContext","useMemo","computeTokens","styles","View","_ThemeContext","FrameContext","useTokens","size","createContext","SEMANTIC_WEIGHT_MAP","ROLE_DEFAULT_WEIGHTS","useBreakpoint","BREAKPOINT_ROLE_SCALE","scaleRoleStep","useTypographyCalibrations","useLocalCalibration","resolveResponsiveSize","estimateLineWidths","enqueueObservation","REFERENCE_LINE_HEIGHT_RATIO","buildFontFeatureSettings","RNText","useContext","Platform","ScrollView","Pressable","wrapTextChildren","getSizeConfig","getVariantColors","t","RNTextInput","useRef","TRACK_HEIGHT","THUMB_SIZE","ratio","PanResponder","TextInput","gamutMapToSrgb","srgbToHex","Animated","totalSteps","minNV","maxNV","range"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * useFocusVisible — Keyboard-only focus detection hook.\n *\n * Tracks whether the user's last input was keyboard (Tab, arrows, etc.)\n * or pointer (mouse, touch). When an element receives focus after a\n * keyboard event, `isFocusVisible` is true — matching the browser's\n * native `:focus-visible` pseudo-class behavior.\n *\n * This is the same approach used by the `:focus-visible` polyfill.\n * On native platforms, the document listeners are skipped (guarded by\n * `typeof document`), and the hook returns false for `isFocusVisible`.\n *\n * @example\n * ```tsx\n * const { isFocusVisible, focusProps } = useFocusVisible();\n *\n * <Pressable {...focusProps} style={isFocusVisible ? focusRingStyle : undefined}>\n * <Text>Keyboard-focusable</Text>\n * </Pressable>\n * ```\n */\n\nimport { useState, useEffect, useCallback } from 'react';\n\n// ── Module-level input modality tracking ────────────────────────\n// Shared across all hook instances — a single set of document listeners\n// tracks whether the most recent user input was keyboard or pointer.\n\nlet hadKeyboardEvent = false;\nlet isListenerSetup = false;\n\n/**\n * Attach document-level listeners once. Keyboard events (Tab, arrows,\n * Enter, Space, Escape) set the flag; pointer/mouse events clear it.\n * Capture phase ensures we see the event before any component handler.\n */\nfunction setupModality() {\n // Guard: skip on native platforms and during SSR (no document).\n if (isListenerSetup || typeof document === 'undefined') return;\n isListenerSetup = true;\n\n // Keyboard navigation keys that should trigger focus-visible.\n // We don't flag every keydown (e.g. typing in a TextInput shouldn't\n // make the next focused element show a ring).\n const NAVIGATION_KEYS = new Set([\n 'Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight',\n 'Enter', ' ', 'Escape',\n ]);\n\n document.addEventListener('keydown', (e) => {\n if (NAVIGATION_KEYS.has(e.key)) {\n hadKeyboardEvent = true;\n }\n }, true);\n\n // Any pointer activity means the user is using a mouse/touch,\n // so the next focus should NOT show a visible ring.\n document.addEventListener('pointerdown', () => {\n hadKeyboardEvent = false;\n }, true);\n\n // Fallback for environments without PointerEvent (older browsers).\n document.addEventListener('mousedown', () => {\n hadKeyboardEvent = false;\n }, true);\n}\n\n// ── Hook ────────────────────────────────────────────────────────\n\nexport interface FocusVisibleResult {\n /** True when the element is focused AND focus was keyboard-initiated. */\n readonly isFocusVisible: boolean;\n /** Spread these onto the interactive element (web-only, ignored on native). */\n readonly focusProps: Record<string, unknown>;\n}\n\nexport function useFocusVisible(): FocusVisibleResult {\n const [isFocusVisible, setIsFocusVisible] = useState(false);\n\n // Set up document-level modality tracking on first render.\n useEffect(() => {\n setupModality();\n }, []);\n\n // On focus: show ring only if the last input was keyboard.\n const onFocus = useCallback(() => {\n if (hadKeyboardEvent) {\n setIsFocusVisible(true);\n }\n }, []);\n\n // On blur: always hide the ring.\n const onBlur = useCallback(() => {\n setIsFocusVisible(false);\n }, []);\n\n // Return props as a spreadable object. These are web-only event handlers\n // supported by react-native-web — silently ignored on native.\n const focusProps = { onFocus, onBlur } as Record<string, unknown>; // web-only\n\n return { isFocusVisible, focusProps };\n}\n","import type { ViewStyle } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\nimport type {\n SpacingValue,\n SpacingAxes,\n SpacingSides,\n PaddingProp,\n GapProp,\n RadiusValue,\n RadiusProp,\n SizingMode,\n Direction,\n Alignment,\n Justification,\n} from './Frame.types';\n\n// ── Spacing ──────────────────────────────────────────────────────\n// These functions convert spacing props (token names like 'md' or pixel numbers)\n// into actual pixel values that React Native can use for padding and gap.\n\n/** Convert a spacing token name (like 'md') or raw number into pixels. */\nexport function resolveSpacing(\n value: SpacingValue,\n tokens: ResolvedTokens,\n): number {\n // If already a number, use it directly as pixels.\n if (typeof value === 'number') return value;\n // Otherwise look up the token name in the theme's spacing scale.\n return tokens.spacing[value];\n}\n\n/** Convert a padding prop into pixel values for all four sides. */\nexport function resolvePadding(\n prop: PaddingProp,\n tokens: ResolvedTokens,\n): { readonly top: number; readonly right: number; readonly bottom: number; readonly left: number } {\n // Uniform: same padding on all sides (e.g. padding=\"md\" or padding={16}).\n if (typeof prop === 'string' || typeof prop === 'number') {\n const px = resolveSpacing(prop, tokens);\n return { top: px, right: px, bottom: px, left: px };\n }\n\n // Axis shorthand: separate horizontal (x) and vertical (y) padding.\n // Example: padding={{ x: 'lg', y: 'sm' }}\n if ('x' in prop || 'y' in prop) {\n const axes = prop as SpacingAxes;\n const x = axes.x !== undefined ? resolveSpacing(axes.x, tokens) : 0;\n const y = axes.y !== undefined ? resolveSpacing(axes.y, tokens) : 0;\n return { top: y, right: x, bottom: y, left: x };\n }\n\n // Per-side: different padding on each side.\n // Example: padding={{ top: 8, bottom: 16, left: 'md', right: 'md' }}\n const sides = prop as SpacingSides;\n return {\n top: sides.top !== undefined ? resolveSpacing(sides.top, tokens) : 0,\n right: sides.right !== undefined ? resolveSpacing(sides.right, tokens) : 0,\n bottom: sides.bottom !== undefined ? resolveSpacing(sides.bottom, tokens) : 0,\n left: sides.left !== undefined ? resolveSpacing(sides.left, tokens) : 0,\n };\n}\n\n/** Convert a gap prop into row and column gap pixel values. */\nexport function resolveGap(\n prop: GapProp,\n tokens: ResolvedTokens,\n): { readonly rowGap: number; readonly columnGap: number } {\n // Uniform: same gap in both directions (e.g. gap=\"md\" or gap={12}).\n if (typeof prop === 'string' || typeof prop === 'number') {\n const px = resolveSpacing(prop, tokens);\n return { rowGap: px, columnGap: px };\n }\n\n // Per-axis: different gap for rows vs columns.\n // Example: gap={{ row: 'sm', column: 'lg' }}\n return {\n rowGap: prop.row !== undefined ? resolveSpacing(prop.row, tokens) : 0,\n columnGap: prop.column !== undefined ? resolveSpacing(prop.column, tokens) : 0,\n };\n}\n\n// ── Radius ───────────────────────────────────────────────────────\n// These functions convert radius props (token names like 'lg' or pixel numbers)\n// into actual pixel values for rounding corners.\n\n/** Convert a radius token name (like 'lg') or raw number into pixels. */\nexport function resolveRadius(\n value: RadiusValue,\n tokens: ResolvedTokens,\n): number {\n if (typeof value === 'number') return value;\n return tokens.radius[value];\n}\n\n/** Pixel values for each corner of a rounded rectangle. */\nexport interface ResolvedCorners {\n readonly topLeft: number;\n readonly topRight: number;\n readonly bottomLeft: number;\n readonly bottomRight: number;\n}\n\n/** Convert a radius prop into pixel values for all four corners. */\nexport function resolveRadiusCorners(\n prop: RadiusProp,\n tokens: ResolvedTokens,\n): ResolvedCorners {\n // Uniform: same radius on all corners (e.g. radius=\"lg\" or radius={8}).\n if (typeof prop === 'string' || typeof prop === 'number') {\n const px = resolveRadius(prop, tokens);\n return { topLeft: px, topRight: px, bottomLeft: px, bottomRight: px };\n }\n\n // Per-corner: different radius on each corner.\n // Example: radius={{ topLeft: 'lg', topRight: 'lg', bottomLeft: 0, bottomRight: 0 }}\n return {\n topLeft: prop.topLeft !== undefined ? resolveRadius(prop.topLeft, tokens) : 0,\n topRight: prop.topRight !== undefined ? resolveRadius(prop.topRight, tokens) : 0,\n bottomLeft: prop.bottomLeft !== undefined ? resolveRadius(prop.bottomLeft, tokens) : 0,\n bottomRight: prop.bottomRight !== undefined ? resolveRadius(prop.bottomRight, tokens) : 0,\n };\n}\n\n/** Check if any corner is rounded (used to decide whether to clip overflowing content). */\nexport function hasPositiveRadius(corners: ResolvedCorners): boolean {\n return corners.topLeft > 0\n || corners.topRight > 0\n || corners.bottomLeft > 0\n || corners.bottomRight > 0;\n}\n\n// ── Sizing ───────────────────────────────────────────────────────\n// Converts Figma-like sizing modes into React Native style properties.\n\n/** Convert width/height sizing modes to style properties. */\nexport function resolveSizing(\n width: SizingMode | undefined,\n height: SizingMode | undefined,\n): ViewStyle {\n const style: Record<string, unknown> = {};\n\n if (width !== undefined) {\n if (width === 'fill') {\n // 'fill' = expand to take all available space in the parent.\n // flexGrow tells the layout engine to give this element extra space.\n // width: 100% ensures it spans the full width.\n style.flexGrow = 1;\n style.width = '100%';\n } else if (typeof width === 'number') {\n // Fixed pixel width (e.g. 300).\n style.width = width;\n }\n // 'hug' = shrink to fit the content (React Native's default behavior).\n }\n\n if (height !== undefined) {\n if (height === 'fill') {\n // Same as width 'fill' — expand to fill all available vertical space.\n style.flexGrow = 1;\n style.height = '100%';\n } else if (typeof height === 'number') {\n // Fixed pixel height (e.g. 200).\n style.height = height;\n }\n // 'hug' = shrink to fit the content (React Native's default behavior).\n }\n\n return style as ViewStyle;\n}\n\n// ── Layout ───────────────────────────────────────────────────────\n// These functions convert our friendly prop names (like 'start', 'between')\n// into the actual CSS flexbox values that React Native uses internally.\n\n// Maps our alignment names to flexbox cross-axis values:\n// 'start' → push children to the top/left edge\n// 'center' → center children in the cross direction\n// 'end' → push children to the bottom/right edge\n// 'stretch' → stretch children to fill the cross dimension\n// 'baseline' → align children by their text baseline\nconst ALIGN_MAP: Record<Alignment, ViewStyle['alignItems']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\n// Maps our justification names to flexbox main-axis values:\n// 'start' → pack children at the beginning\n// 'center' → pack children in the middle\n// 'end' → pack children at the end\n// 'between' → spread children with equal space between them\n// 'around' → spread children with equal space around each\n// 'evenly' → spread children with equal space everywhere\nconst JUSTIFY_MAP: Record<Justification, ViewStyle['justifyContent']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\n/** Convert our alignment name to the flexbox value React Native expects. */\nexport function resolveAlignment(align: Alignment): ViewStyle['alignItems'] {\n return ALIGN_MAP[align];\n}\n\n/** Convert our justification name to the flexbox value React Native expects. */\nexport function resolveJustification(justify: Justification): ViewStyle['justifyContent'] {\n return JUSTIFY_MAP[justify];\n}\n\n/** Convert direction ('horizontal'/'vertical') + reverse flag to flexbox direction. */\nexport function resolveFlexDirection(\n direction: Direction,\n reverse: boolean,\n): ViewStyle['flexDirection'] {\n // 'horizontal' → children in a row, 'vertical' → children in a column.\n if (direction === 'horizontal') {\n return reverse ? 'row-reverse' : 'row';\n }\n return reverse ? 'column-reverse' : 'column';\n}\n","import type { ViewStyle } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens } from 'newtone-api';\nimport type { FrameElevation, ThemeName, AppearanceName } from 'newtone-api';\nimport type {\n PaddingProp,\n GapProp,\n SizingMode,\n Direction,\n Alignment,\n Justification,\n RadiusProp,\n LayoutMode,\n PositionType,\n OffsetValue,\n OverflowMode,\n} from './Frame.types';\nimport {\n resolvePadding,\n resolveGap,\n resolveSizing,\n resolveFlexDirection,\n resolveAlignment,\n resolveJustification,\n resolveRadiusCorners,\n hasPositiveRadius,\n} from './Frame.utils';\n\n// ── Input ────────────────────────────────────────────────────────\n\nexport interface FrameStyleInput {\n readonly tokens: ResolvedTokens;\n readonly frameElevation: FrameElevation;\n\n // Theme / Appearance\n readonly theme?: ThemeName;\n readonly appearance?: AppearanceName;\n\n // Layout\n readonly layout?: LayoutMode;\n readonly direction?: Direction;\n readonly wrap?: boolean;\n readonly reverse?: boolean;\n readonly columns?: number;\n readonly rows?: number;\n\n // Alignment\n readonly align?: Alignment;\n readonly justify?: Justification;\n\n // Spacing\n readonly padding?: PaddingProp;\n readonly gap?: GapProp;\n\n // Sizing\n readonly width?: SizingMode;\n readonly height?: SizingMode;\n readonly minWidth?: number;\n readonly maxWidth?: number;\n readonly minHeight?: number;\n readonly maxHeight?: number;\n\n // Positioning\n readonly position?: PositionType;\n readonly top?: OffsetValue;\n readonly right?: OffsetValue;\n readonly bottom?: OffsetValue;\n readonly left?: OffsetValue;\n readonly zIndex?: number;\n readonly overflow?: OverflowMode;\n\n // Appearance\n readonly radius?: RadiusProp;\n}\n\n// ── Output ───────────────────────────────────────────────────────\n\nexport interface FrameStyles {\n /** Main container style (ViewStyle) */\n readonly container: ViewStyle;\n /** Web-only CSS Grid properties (cast to ViewStyle at render) */\n readonly gridWebStyle: React.CSSProperties | null;\n /** Web-only inset box-shadow string for elevation -2 */\n readonly insetBoxShadow: string | null;\n}\n\n// ── Builder ──────────────────────────────────────────────────────\n\n/**\n * Build all visual styles for a Frame.\n *\n * Takes the Frame's props + design tokens and produces:\n * - container: the main style (background, layout, spacing, border, shadow, etc.)\n * - gridWebStyle: CSS Grid properties (only works on web, null otherwise)\n * - insetBoxShadow: inner shadow CSS string for sunken frames (web-only)\n */\nexport function getFrameStyles(input: FrameStyleInput): FrameStyles {\n const {\n tokens,\n frameElevation,\n theme = 'primary',\n appearance = 'main',\n layout = 'flex',\n direction = 'vertical',\n wrap = false,\n reverse = false,\n columns,\n rows,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n radius,\n } = input;\n\n // We build styles as a plain object first, then validate it through\n // StyleSheet.create() at the end. Using Record<string, unknown> lets us\n // set properties conditionally without TypeScript complaining.\n const container: Record<string, unknown> = {};\n\n // ── Background & foreground ──\n // Resolve the appearance tokens for the selected theme + appearance.\n const appearanceTokens: AppearanceTokens = tokens.colors[theme][appearance];\n\n // Set the surface color and default text color from the resolved appearance.\n container.backgroundColor = appearanceTokens.background;\n container.color = appearanceTokens.fontPrimary;\n\n // ── Layout mode ──\n if (layout === 'flex') {\n // Standard flex layout: children arranged in a row or column.\n container.display = 'flex';\n container.flexDirection = resolveFlexDirection(direction, reverse);\n if (wrap) container.flexWrap = 'wrap';\n }\n if (layout === 'grid') {\n // Grid layout: uses CSS Grid on web, but React Native doesn't support grid.\n // So we set flex as a fallback (wrapping row) for native platforms.\n // The actual CSS Grid styles are applied separately via gridWebStyle below.\n container.display = 'flex';\n container.flexDirection = 'row';\n container.flexWrap = 'wrap';\n }\n\n // ── Alignment ──\n // Cross-axis: how children are positioned perpendicular to the main direction.\n if (align) container.alignItems = resolveAlignment(align);\n // Main-axis: how children are distributed along the main direction.\n if (justify) container.justifyContent = resolveJustification(justify);\n\n // ── Padding ──\n // Convert spacing tokens (like 'md') or pixel values into actual padding.\n if (padding !== undefined) {\n const p = resolvePadding(padding, tokens);\n container.paddingTop = p.top;\n container.paddingRight = p.right;\n container.paddingBottom = p.bottom;\n container.paddingLeft = p.left;\n }\n\n // ── Gap ──\n // Space between children (row gap for vertical stacks, column gap for horizontal).\n if (gap !== undefined) {\n const g = resolveGap(gap, tokens);\n container.rowGap = g.rowGap;\n container.columnGap = g.columnGap;\n }\n\n // ── Sizing ──\n // Apply width/height settings: 'hug' (shrink), 'fill' (expand), or fixed pixels.\n const sizing = resolveSizing(width, height);\n Object.assign(container, sizing);\n\n // ── Constraints ──\n // Set min/max boundaries for width and height.\n if (minWidth !== undefined) container.minWidth = minWidth;\n if (maxWidth !== undefined) container.maxWidth = maxWidth;\n if (minHeight !== undefined) container.minHeight = minHeight;\n if (maxHeight !== undefined) container.maxHeight = maxHeight;\n\n // ── Positioning ──\n // Set CSS position mode and offsets for absolute/fixed/sticky positioning.\n if (position) container.position = position;\n if (top !== undefined) container.top = top;\n if (right !== undefined) container.right = right;\n if (bottom !== undefined) container.bottom = bottom;\n if (left !== undefined) container.left = left;\n if (zIndex !== undefined) container.zIndex = zIndex;\n\n // ── Radius ──\n // Round the corners of the Frame (e.g. for cards, buttons, pills).\n if (radius !== undefined) {\n const corners = resolveRadiusCorners(radius, tokens);\n container.borderTopLeftRadius = corners.topLeft;\n container.borderTopRightRadius = corners.topRight;\n container.borderBottomLeftRadius = corners.bottomLeft;\n container.borderBottomRightRadius = corners.bottomRight;\n\n // Clip overflowing content when corners are rounded,\n // otherwise children would visually leak outside the rounded edges.\n if (hasPositiveRadius(corners)) {\n container.overflow = 'hidden';\n }\n }\n\n // ── Overflow ──\n // Explicit overflow prop overrides the auto-overflow from radius.\n if (overflow) container.overflow = overflow;\n\n // ── Outer shadow (elevation 2) ──\n // Add a subtle drop shadow to make the Frame look raised above the surface.\n // These are React Native shadow properties — react-native-web converts them\n // to CSS box-shadow automatically.\n if (frameElevation === 2) {\n container.shadowColor = '#000';\n container.shadowOffset = { width: 0, height: 2 };\n container.shadowOpacity = 0.12;\n container.shadowRadius = 6;\n container.elevation = 4; // Android-specific shadow depth\n }\n\n // ── Grid web style (web-only) ──\n // CSS Grid only works in web browsers. On native platforms this stays null,\n // and the flex fallback (set above) handles the layout instead.\n let gridWebStyle: React.CSSProperties | null = null;\n if (layout === 'grid') {\n gridWebStyle = {\n display: 'grid' as const,\n // Divide into equal-width columns (e.g. 3 columns → \"repeat(3, 1fr)\").\n gridTemplateColumns: columns ? `repeat(${columns}, 1fr)` : undefined,\n gridTemplateRows: rows ? `repeat(${rows}, 1fr)` : undefined,\n };\n }\n\n // ── Inset shadow (elevation -2, web-only) ──\n // Creates an inner shadow effect to make the Frame look sunken/recessed.\n // Only used for the deepest sunken level (-2).\n const insetBoxShadow = frameElevation === -2\n ? 'inset 0 2px 4px rgba(0,0,0,0.12)'\n : null;\n\n return {\n // Validate and optimize the container styles through StyleSheet.create(),\n // then extract the single style object with `.c`.\n container: StyleSheet.create({ c: container as ViewStyle }).c,\n gridWebStyle,\n insetBoxShadow,\n };\n}\n","import React, { useMemo } from 'react';\nimport { View, Text } from 'react-native';\nimport type { ViewStyle, TextStyle } from 'react-native';\nimport type { FrameProps } from './Frame.types';\nimport type { ElevationLevel, FrameElevation, ElevationName, ThemeName, AppearanceName } from 'newtone-api';\nimport { FrameContext, useFrameContext } from 'newtone-api';\nimport { useNewtoneTheme, _ThemeContext } from 'newtone-api';\nimport { computeTokens } from 'newtone-api';\nimport { getFrameStyles } from './Frame.styles';\n\n\n/**\n * Wrap raw string/number children in <Text> so they display correctly.\n */\nfunction wrapTextChildren(\n children: React.ReactNode,\n textStyle: TextStyle,\n): React.ReactNode {\n return React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Text style={textStyle}>{child}</Text>;\n }\n return child;\n });\n}\n\n/** Map numeric elevation levels to named elevations for the swatches layer. */\nconst ELEVATION_MAP: Record<ElevationLevel, ElevationName> = {\n 0: 'sunken',\n 1: 'grounded',\n 2: 'elevated',\n};\n\n/**\n * Convert user-facing FrameElevation (-2..2) to internal ElevationLevel (0..2).\n */\nfunction toElevationLevel(frameElevation: FrameElevation): ElevationLevel {\n if (frameElevation <= -1) return 0;\n if (frameElevation === 0) return 1;\n return 2;\n}\n\n/**\n * Frame — Foundational layout building block.\n *\n * Frame is a container that provides theme and elevation context to all\n * descendants, plus layout (flex/grid), spacing, sizing, appearance,\n * and interactivity capabilities.\n *\n * Frames can be nested. Inner frames override outer frames for their subtree.\n */\nexport function Frame({\n children,\n // Elevation\n elevation,\n // Scheme\n scheme,\n // Theme / Appearance\n theme,\n appearance,\n // Layout\n layout,\n direction,\n wrap,\n reverse,\n columns,\n rows,\n // Alignment\n align,\n justify,\n // Spacing\n padding,\n gap,\n // Sizing\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n // Positioning\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n pointerEvents,\n // Appearance\n radius,\n // Accessibility\n accessibilityLabel,\n accessibilityHint,\n // Testing & platform\n testID,\n nativeID,\n ref,\n // Style override\n style,\n}: FrameProps) {\n const themeCtx = useNewtoneTheme();\n const { mode, gamut } = themeCtx;\n const parentFrameCtx = useFrameContext();\n\n // Resolve which config to use: explicit scheme > inherited from parent > default.\n const resolvedConfig = useMemo(() => {\n if (scheme && themeCtx.schemes) {\n const schemeConfig = themeCtx.schemes[scheme];\n if (schemeConfig) return schemeConfig;\n }\n return themeCtx.config;\n }, [scheme, themeCtx.schemes, themeCtx.config]);\n\n // Track whether this Frame switches the scheme (needs theme context override).\n const isSchemeOverride = resolvedConfig !== themeCtx.config;\n\n // Resolve theme/appearance: explicit prop > parent Frame > defaults.\n const resolvedTheme: ThemeName = theme ?? parentFrameCtx?.theme ?? 'primary';\n const resolvedAppearance: AppearanceName = appearance ?? parentFrameCtx?.appearance ?? 'main';\n\n const resolvedFrameElevation: FrameElevation = elevation ?? 0;\n\n const resolvedElevation: ElevationLevel = elevation !== undefined\n ? toElevationLevel(elevation)\n : parentFrameCtx?.elevation ?? 1;\n\n // Compute tokens with gamut pre-applied (no [gamut] indexing needed downstream).\n const tokens = useMemo(() => {\n return computeTokens(\n resolvedConfig.colorSystem,\n mode,\n gamut,\n ELEVATION_MAP[resolvedElevation],\n resolvedConfig.spacing,\n resolvedConfig.radius,\n resolvedConfig.typography,\n resolvedConfig.icons,\n resolvedConfig.themeMappings,\n resolvedConfig.swatchDefaults,\n resolvedConfig.relativeSwatchDefaults,\n );\n }, [resolvedConfig, mode, gamut, resolvedElevation]);\n\n const styles = useMemo(\n () => getFrameStyles({\n tokens,\n frameElevation: resolvedFrameElevation,\n theme: resolvedTheme,\n appearance: resolvedAppearance,\n layout,\n direction,\n wrap,\n reverse,\n columns,\n rows,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n radius,\n }),\n [\n tokens, resolvedFrameElevation, resolvedTheme, resolvedAppearance,\n layout, direction, wrap, reverse, columns, rows,\n align, justify, padding, gap,\n width, height, minWidth, maxWidth, minHeight, maxHeight,\n position, top, right, bottom, left, zIndex, overflow,\n radius,\n ],\n );\n\n // Resolved scheme name: explicit prop > inherited from parent Frame.\n const resolvedScheme = scheme ?? parentFrameCtx?.scheme;\n\n const contextValue = useMemo(\n () => ({\n elevation: resolvedElevation,\n tokens,\n scheme: resolvedScheme,\n theme: resolvedTheme,\n appearance: resolvedAppearance,\n }),\n [resolvedElevation, tokens, resolvedScheme, resolvedTheme, resolvedAppearance],\n );\n\n // When this Frame switches the scheme, override ThemeContext so that\n // useNewtoneTheme().config returns the scheme's config for descendants.\n const schemeThemeCtx = useMemo(() => {\n if (!isSchemeOverride) return null;\n return {\n ...themeCtx,\n config: resolvedConfig,\n activeScheme: scheme ?? themeCtx.activeScheme,\n };\n }, [isSchemeOverride, themeCtx, resolvedConfig, scheme]);\n\n const webOverrides: ViewStyle[] = [];\n if (styles.gridWebStyle) {\n webOverrides.push(styles.gridWebStyle as unknown as ViewStyle);\n }\n if (styles.insetBoxShadow) {\n webOverrides.push({ boxShadow: styles.insetBoxShadow } as unknown as ViewStyle);\n }\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n const textStyle = useMemo<TextStyle>(\n () => ({\n color: tokens.colors[resolvedTheme][resolvedAppearance].fontPrimary,\n fontSize: tokens.typography.fontSizes['05'],\n fontFamily: tokens.typography.fonts.main.family,\n lineHeight: tokens.typography.lineHeights['06'],\n }),\n [tokens, resolvedTheme, resolvedAppearance],\n );\n const wrappedChildren = useMemo(\n () => wrapTextChildren(children, textStyle),\n [children, textStyle],\n );\n\n const content = (\n <View\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n pointerEvents={pointerEvents}\n accessibilityLabel={accessibilityLabel}\n accessibilityHint={accessibilityHint}\n style={[styles.container, ...webOverrides, ...userStyles]}\n >\n {wrappedChildren}\n </View>\n );\n\n const wrappedContent = schemeThemeCtx ? (\n <_ThemeContext.Provider value={schemeThemeCtx}>\n {content}\n </_ThemeContext.Provider>\n ) : content;\n\n return (\n <FrameContext.Provider value={contextValue}>\n {wrappedContent}\n </FrameContext.Provider>\n );\n}\n","import React, { useMemo } from 'react';\nimport { Text, type TextStyle } from 'react-native';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport type { IconProps } from './Icon.types';\n\n/**\n * Material Symbols icon component with variable font support.\n *\n * Uses global icon configuration (variant, weight, auto-grade) from theme config,\n * with per-instance control over size, fill, and color.\n *\n * @example\n * ```tsx\n * <Icon name=\"home\" />\n * <Icon name=\"settings\" size={24} fill={1} />\n * <Icon name=\"check\" color=\"#00ff00\" />\n * ```\n */\nexport function Icon({\n name = 'add',\n size = 24,\n opticalSize,\n fill = 0,\n color,\n style,\n // Accessibility\n accessibilityLabel,\n // Testing & platform\n testID,\n nativeID,\n ref,\n}: IconProps) {\n // Inherit tokens from nearest parent Frame via FrameContext.\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n const resolvedTheme = frameCtx?.theme ?? 'primary';\n const resolvedAppearance = frameCtx?.appearance ?? 'main';\n\n // Build the icon's style from the theme tokens and props.\n // Wrapped in useMemo so it only recalculates when the inputs change,\n // instead of rebuilding the style object on every render.\n const iconStyle = useMemo<TextStyle>(() => {\n // Use the provided size, or fall back to the theme's default text size.\n const fontSize = size ?? tokens.typography.fontSizes['05'];\n\n // Round to nearest Material Symbols optical size (20, 24, 40, 48)\n // for optimal stroke weight and detail rendering.\n const getOpticalSize = (size: number): number => {\n if (size <= 22) return 20;\n if (size <= 32) return 24;\n if (size <= 44) return 40;\n return 48;\n };\n\n // Optical size adjusts stroke weight for readability at small sizes.\n // Use explicit opticalSize if provided, otherwise auto-calculate from fontSize.\n const opsz = opticalSize ?? getOpticalSize(fontSize);\n\n // Use the provided color, or fall back to the inherited theme/appearance text color.\n const iconColor = color ?? tokens.colors[resolvedTheme][resolvedAppearance].fontPrimary;\n\n // Build the font family name from the theme's icon variant setting.\n // Example: variant 'rounded' → 'Material Symbols Rounded'\n // The charAt(0).toUpperCase() + slice(1) capitalizes the first letter.\n const fontFamily = `Material Symbols ${tokens.icons.variant.charAt(0).toUpperCase() + tokens.icons.variant.slice(1)}`;\n\n // Material Symbols is a variable font with 4 adjustable axes:\n // FILL: 0 = outlined (hollow), 1 = filled (solid)\n // wght: font weight (thinner or bolder strokes)\n // GRAD: grade (fine-tune weight without changing overall size)\n // opsz: optical size (adjusts detail level for the display size)\n const fillValue = typeof fill === 'boolean' ? (fill ? 1 : 0) : fill;\n const fontVariationSettings = `'FILL' ${fillValue}, 'wght' ${tokens.icons.weight}, 'GRAD' ${tokens.icons.grade}, 'opsz' ${opsz}`;\n\n return {\n fontFamily,\n fontSize,\n width: fontSize, // Explicit width ensures square rendering\n height: fontSize, // Explicit height ensures square rendering\n lineHeight: fontSize, // Prevent text line-height from affecting total height\n color: iconColor,\n userSelect: 'none', // web-only: prevents users from selecting the icon as text\n fontVariationSettings, // web-only: controls the variable font axes listed above\n ...style,\n } as TextStyle; // Cast needed because web-only properties aren't in RN's type definitions\n }, [tokens, size, opticalSize, fill, color, style, resolvedTheme, resolvedAppearance]);\n\n // Material Symbols renders icons as text ligatures — the icon name (like \"home\")\n // is passed as text content, and the font renders it as the icon glyph.\n return (\n <Text\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n accessibilityLabel={accessibilityLabel}\n // When no label is provided, the icon is decorative — hide it from screen readers\n // so assistive technology doesn't try to read the ligature text (e.g. \"home\").\n importantForAccessibility={accessibilityLabel ? 'yes' : 'no-hide-descendants'}\n style={iconStyle}\n >\n {name}\n </Text>\n );\n}\n","import React, { createContext, useMemo, useState, useEffect } from 'react';\nimport { Text as RNText, View } from 'react-native';\nimport type { LayoutChangeEvent, TextStyle } from 'react-native';\nimport { resolveResponsiveSize, estimateLineWidths, BREAKPOINT_ROLE_SCALE, scaleRoleStep, REFERENCE_LINE_HEIGHT_RATIO, buildFontFeatureSettings, SEMANTIC_WEIGHT_MAP, ROLE_DEFAULT_WEIGHTS } from '@newtonedev/fonts';\nimport { useTokens } from 'newtone-api';\nimport { useNewtoneTheme } from 'newtone-api';\nimport { useFrameContext } from 'newtone-api';\nimport type { UseTokensResult } from 'newtone-api';\nimport type { ThemeName, AppearanceName } from 'newtone-api';\nimport type { TextProps, TextColor, TextRole } from './Text.types';\nimport { useLocalCalibration } from 'newtone-api';\nimport { useTypographyCalibrations } from 'newtone-api';\nimport { enqueueObservation } from 'newtone-api';\nimport { useBreakpoint } from 'newtone-api';\n\n/**\n * Context to pass the active scope's weight map to span sub-components.\n * Spans inherit font family from the parent RN Text, but need the scope's\n * weight mapping to resolve semantic weight tokens (regular/medium/bold)\n * to numeric CSS values.\n */\nexport const TextScopeContext = createContext<{\n readonly weights: { readonly regular: number; readonly medium: number; readonly bold: number };\n} | null>(null);\n\n/** Roles considered \"large text\" — accent uses accentLarge (lighter). */\nconst LARGE_TEXT_ROLES = new Set<TextRole>(['headline', 'title', 'heading', 'subheading']);\n\n/**\n * Resolve a semantic text color to a hex string from the current tokens.\n * Neutral colors use the inherited theme/appearance from the nearest Frame.\n * Accent uses accentLarge (large text) or accentSmall (small text) from the inherited theme/appearance.\n */\nexport function resolveTextColor(\n color: TextColor,\n tokens: UseTokensResult,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n role: TextRole = 'body',\n): string {\n switch (color) {\n case 'primary': return tokens.colors[theme][appearance].fontPrimary;\n case 'secondary': return tokens.colors[theme][appearance].fontSecondary;\n case 'tertiary': return tokens.colors[theme][appearance].fontTertiary;\n case 'accent': return tokens.colors[theme][appearance][LARGE_TEXT_ROLES.has(role) ? 'accentLarge' : 'accentSmall'];\n case 'disabled': return tokens.colors[theme][appearance].fontDisabled;\n }\n}\n\n/** Adaptive roles that support responsive font sizing. */\nconst ADAPTIVE_ROLES = new Set(['headline', 'title', 'heading', 'subheading']);\n\n/** Maps heading-like roles to HTML heading levels for semantic rendering on web. */\nconst ROLE_HEADING_LEVEL: Readonly<Record<string, number>> = {\n headline: 1,\n title: 2,\n heading: 3,\n};\n\n/** Estimate total character count from potentially nested React children. */\nfunction extractCharacterCount(node: React.ReactNode): number {\n if (typeof node === 'string') return node.length;\n if (typeof node === 'number') return String(node).length;\n if (!node) return 0;\n if (Array.isArray(node)) {\n return node.reduce((sum: number, child) => sum + extractCharacterCount(child), 0);\n }\n if (typeof node === 'object' && 'props' in node) {\n return extractCharacterCount((node as React.ReactElement).props?.children);\n }\n return 0;\n}\n\n/**\n * Token-aware text primitive with semantic scope + role API.\n *\n * - `scope` selects the font family (main, display, mono, currency)\n * - `role` sets default weight; fontSize and lineHeight resolved from config's role mapping\n * - `size` selects within the role's 3-step scale (sm, md, lg)\n * - `responsive` enables container-width-aware font sizing for adaptive roles\n *\n * @example\n * ```tsx\n * <Text>Body text (default)</Text>\n * <Text role=\"headline\" scope=\"display\">Hero title</Text>\n * <Text role=\"label\">Form label</Text>\n * <Text scope=\"mono\" role=\"caption\">const x = 42;</Text>\n * <Text role=\"body\">Regular <Text.Bold>bold</Text.Bold> text</Text>\n * <Text role=\"headline\" responsive>Responsive headline</Text>\n * ```\n */\nfunction TextBase({\n children,\n scope = 'main',\n role = 'body',\n color = 'primary',\n size: sizeOverride,\n weight: weightOverride,\n align,\n numberOfLines,\n elevation,\n style,\n accessibilityRole: accessibilityRoleOverride,\n testID,\n nativeID,\n ref,\n responsive = false,\n centerVertically = false,\n features,\n}: TextProps) {\n const tokens = useTokens(elevation);\n const { config, reportingEndpoint } = useNewtoneTheme();\n const frameCtx = useFrameContext();\n const resolvedTheme: ThemeName = frameCtx?.theme ?? 'primary';\n const resolvedAppearance: AppearanceName = frameCtx?.appearance ?? 'main';\n\n const size = sizeOverride ?? 'md';\n const fontSlot = tokens.typography.fonts[scope];\n // roleWeights from config (user-customized), falling back to canonical defaults\n const resolvedFontWeight = weightOverride\n ? SEMANTIC_WEIGHT_MAP[weightOverride]\n : (config.typography.roleWeights?.[role] ?? ROLE_DEFAULT_WEIGHTS[role]);\n\n // --- Breakpoint-aware step ---\n const breakpoint = useBreakpoint();\n const baseStep = config.typography.roles[role][size];\n const bpScale = BREAKPOINT_ROLE_SCALE[breakpoint][role];\n const step = bpScale === 1.0 ? baseStep : scaleRoleStep(baseStep, bpScale);\n\n // --- Responsive sizing (Layer 2 calibration) ---\n // Hooks are called unconditionally; results are used only when `responsive && isAdaptive`.\n const calibrations = useTypographyCalibrations();\n const fontSlotFull = config.typography.fonts[scope]; // FontSlot with config.fallback\n const localRatio = useLocalCalibration(\n fontSlot.family,\n SEMANTIC_WEIGHT_MAP.regular,\n fontSlotFull.config.fallback,\n calibrations[fontSlot.family],\n );\n\n const isAdaptive = ADAPTIVE_ROLES.has(role);\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n const characterCount = useMemo(() => extractCharacterCount(children), [children]);\n\n const resolvedStep = useMemo(\n () =>\n resolveResponsiveSize(\n {\n role,\n size,\n responsive: responsive && isAdaptive,\n fontFamily: fontSlot.family,\n maxFontSize: step.fontSize,\n minFontSize: Math.max(8, Math.round(step.fontSize * 0.7)),\n },\n config.typography.roles,\n containerWidth != null ? { containerWidth, characterCount } : undefined,\n { [fontSlot.family]: localRatio },\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [role, size, responsive, isAdaptive, fontSlot.family, step.fontSize, config.typography.roles, containerWidth, characterCount, localRatio],\n );\n\n // --- Layer 3: report observations for cross-site rolling averages ---\n useEffect(() => {\n if (!reportingEndpoint || !responsive || !isAdaptive || containerWidth == null) return;\n const lineWidths = estimateLineWidths(characterCount, containerWidth, resolvedStep.fontSize, localRatio);\n const lastLine = lineWidths[lineWidths.length - 1];\n enqueueObservation(reportingEndpoint, {\n fontFamily: fontSlot.family,\n fontWeight: resolvedFontWeight,\n role,\n size,\n fontSize: resolvedStep.fontSize,\n containerWidth,\n characterCount,\n lineCount: lineWidths.length,\n lastLineRatio: containerWidth > 0 ? lastLine / containerWidth : 1,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reportingEndpoint, resolvedStep.fontSize, containerWidth]);\n\n const resolvedStyle = useMemo<TextStyle>(() => {\n const activeStep = responsive && isAdaptive ? resolvedStep : step;\n\n // Font metrics corrections (adjustLineHeight, verticalCenterOffset, features)\n const currentMetrics = config.typography.fontMetrics?.[fontSlot.family];\n\n // Phase 3: Correct line height for font's natural vertical extent (snap to 4px grid)\n const correctedLineHeight = currentMetrics\n ? Math.round((activeStep.lineHeight * currentMetrics.naturalLineHeightRatio / REFERENCE_LINE_HEIGHT_RATIO) / 4) * 4\n : activeStep.lineHeight;\n\n // Phase 4: Visual centering correction (opt-in via centerVertically prop, snap to 0.5px)\n const vcOffset = centerVertically && currentMetrics\n ? Math.round(currentMetrics.verticalCenterOffset * activeStep.fontSize * 2) / 2\n : 0;\n\n // Phase 5: OpenType feature settings\n const activeFeatures = features\n ? (currentMetrics?.features ? features.filter(tag => currentMetrics.features.includes(tag)) : [...features])\n : [];\n const featureSettings = activeFeatures.length > 0 ? buildFontFeatureSettings(activeFeatures) : undefined;\n\n return {\n fontFamily: fontSlot.family,\n fontSize: activeStep.fontSize,\n fontWeight: String(resolvedFontWeight) as TextStyle['fontWeight'],\n color: resolveTextColor(color, tokens, resolvedTheme, resolvedAppearance, role),\n lineHeight: correctedLineHeight,\n textAlign: align,\n ...(vcOffset !== 0 ? { transform: [{ translateY: vcOffset }] } : {}),\n ...(featureSettings ? { fontFeatureSettings: featureSettings } as any : {}),\n };\n }, [tokens, fontSlot, step, resolvedStep, responsive, isAdaptive, resolvedFontWeight, color, align, config.typography.fontMetrics, centerVertically, features, resolvedTheme, resolvedAppearance]);\n\n // Auto-derive accessibility role and heading level for heading-like typography roles.\n // react-native-web uses aria-level to render the correct <h1>/<h2>/<h3> element.\n const inferredA11yRole = (role === 'headline' || role === 'title' || role === 'heading')\n ? 'header' as const\n : undefined;\n const effectiveA11yRole = accessibilityRoleOverride ?? inferredA11yRole;\n const ariaLevel = effectiveA11yRole === 'header' ? ROLE_HEADING_LEVEL[role] : undefined;\n\n // Scope context value for span sub-components (stable reference — weights are constant)\n const scopeCtx = useMemo(() => ({ weights: SEMANTIC_WEIGHT_MAP }), []);\n\n const textNode = (\n <TextScopeContext.Provider value={scopeCtx}>\n <RNText\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n accessibilityRole={effectiveA11yRole}\n aria-level={ariaLevel}\n style={style\n ? [resolvedStyle, ...(Array.isArray(style) ? style : [style])]\n : resolvedStyle\n }\n numberOfLines={numberOfLines}\n >\n {children}\n </RNText>\n </TextScopeContext.Provider>\n );\n\n // Wrap in a View for container measurement when responsive mode is active on an adaptive role.\n // onLayout fires whenever the container's dimensions change, providing the measured width.\n if (responsive && isAdaptive) {\n return (\n <View\n onLayout={(e: LayoutChangeEvent) => {\n const w = e.nativeEvent.layout.width;\n if (w > 0) setContainerWidth(w);\n }}\n style={{ width: '100%' }}\n >\n {textNode}\n </View>\n );\n }\n\n return textNode;\n}\n\nexport { TextBase };\n","import React, { useContext, useMemo } from 'react';\nimport { Text as RNText } from 'react-native';\nimport type { TextStyle } from 'react-native';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport type { ThemeName, AppearanceName } from 'newtone-api';\nimport { TextScopeContext, resolveTextColor } from './Text';\nimport type { TextSpanProps, TextWeight } from './Text.types';\n\n/**\n * Generic inline span — constrained sub-component for inline text formatting.\n * Inherits font family, size, and line height from the parent Text.\n * Only inline formatting properties (color, weight, italic, underline, highlight) are exposed.\n */\nexport function TextSpan({ children, color, weight, italic, underline, highlight, style }: TextSpanProps) {\n const tokens = useTokens();\n const scopeCtx = useContext(TextScopeContext);\n const frameCtx = useFrameContext();\n const resolvedTheme: ThemeName = frameCtx?.theme ?? 'primary';\n const resolvedAppearance: AppearanceName = frameCtx?.appearance ?? 'main';\n\n const spanStyle = useMemo<TextStyle>(() => {\n const s: TextStyle = {};\n if (color) s.color = resolveTextColor(color, tokens, resolvedTheme, resolvedAppearance);\n if (weight && scopeCtx) s.fontWeight = String(scopeCtx.weights[weight]) as TextStyle['fontWeight'];\n if (italic) s.fontStyle = 'italic';\n if (underline) s.textDecorationLine = 'underline';\n if (highlight) s.backgroundColor = resolveTextColor(highlight, tokens, resolvedTheme, resolvedAppearance);\n return s;\n }, [tokens, scopeCtx, color, weight, italic, underline, highlight, resolvedTheme, resolvedAppearance]);\n\n return React.createElement(\n RNText,\n { style: style ? [spanStyle, ...(Array.isArray(style) ? style : [style])] : spanStyle },\n children,\n );\n}\n\n/** Bold span — applies bold weight inline. */\nexport function TextBold(props: Omit<TextSpanProps, 'weight'>) {\n return React.createElement(TextSpan, { ...props, weight: 'bold' as TextWeight });\n}\n\n/** Medium-weight span — applies medium weight inline. */\nexport function TextMedium(props: Omit<TextSpanProps, 'weight'>) {\n return React.createElement(TextSpan, { ...props, weight: 'medium' as TextWeight });\n}\n\n/** Italic span — applies italic style inline. */\nexport function TextItalic(props: Omit<TextSpanProps, 'italic'>) {\n return React.createElement(TextSpan, { ...props, italic: true });\n}\n\n/** Underline span — applies underline decoration inline. */\nexport function TextUnderline(props: Omit<TextSpanProps, 'underline'>) {\n return React.createElement(TextSpan, { ...props, underline: true });\n}\n\n/** Highlight span — applies background highlight using a semantic color token. */\nexport function TextHighlight(props: Omit<TextSpanProps, 'highlight'> & { readonly highlight: TextSpanProps['highlight'] }) {\n return React.createElement(TextSpan, props as TextSpanProps);\n}\n","import { TextBase } from './Text';\nimport { TextSpan, TextBold, TextMedium, TextItalic, TextUnderline, TextHighlight } from './Text.spans';\n\n/**\n * Token-aware text primitive with span sub-components.\n *\n * Primary API: `scope` (font family) + `role` (semantic preset) + `color`.\n *\n * @example\n * ```tsx\n * <Text role=\"headline\" scope=\"display\">Hero</Text>\n * <Text role=\"body\">Regular <Text.Bold>bold</Text.Bold> text</Text>\n * <Text role=\"label\" color=\"secondary\">Field label</Text>\n * ```\n */\nexport const Text = Object.assign(TextBase, {\n Span: TextSpan,\n Bold: TextBold,\n Medium: TextMedium,\n Italic: TextItalic,\n Underline: TextUnderline,\n Highlight: TextHighlight,\n});\n\nexport type {\n TextProps,\n TextSize,\n TextWeight,\n TextColor,\n TextScope,\n TextRole,\n TextAlign,\n TextSpanProps,\n} from './Text.types';\n","import React, { useMemo } from 'react';\nimport { Platform, View, StyleSheet } from 'react-native';\nimport type { PageProps } from './Page.types';\nimport { useNewtoneTheme, _ThemeContext } from 'newtone-api';\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n flexDirection: 'column',\n ...(Platform.OS === 'web' ? { minHeight: '100vh' as unknown as number } : {}),\n },\n body: {\n flex: 1,\n flexDirection: 'row',\n },\n content: {\n flex: 1,\n },\n});\n\n/**\n * Page — Full-viewport layout root with optional navbar and sidebar slots.\n *\n * Page fills the full screen height and arranges layout regions:\n * - Navbar at the top (outside scroll)\n * - Sidebar to the left of the main content\n * - Children fill the remaining space (typically a Viewport)\n *\n * When a `scheme` prop is provided, Page activates that scheme from the\n * parent NewtoneProvider so all descendants receive the scheme's config.\n *\n * Page is invisible — no background, border, or shadow.\n *\n * @example\n * ```tsx\n * <Page navbar={<Nav />}>\n * <Viewport>\n * <Section size=\"sm\" fill>\n * <Frame elevation={1} padding={32}>\n * <Text>Centered content</Text>\n * </Frame>\n * </Section>\n * </Viewport>\n * </Page>\n * ```\n */\nexport function Page({\n children,\n scheme,\n navbar,\n sidebar,\n testID,\n nativeID,\n ref,\n style,\n}: PageProps) {\n const themeCtx = useNewtoneTheme();\n\n // Resolve scheme override: if scheme is specified and exists in the\n // provider's schemes map, override the theme context for descendants.\n const schemeThemeCtx = useMemo(() => {\n if (!scheme || !themeCtx.schemes) return null;\n const schemeConfig = themeCtx.schemes[scheme];\n if (!schemeConfig || schemeConfig === themeCtx.config) return null;\n return {\n ...themeCtx,\n config: schemeConfig,\n activeScheme: scheme,\n };\n }, [scheme, themeCtx]);\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n const content = (\n <View\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n accessibilityRole=\"none\"\n style={[styles.root, ...userStyles]}\n >\n {navbar}\n {sidebar ? (\n <View style={styles.body}>\n {sidebar}\n <View style={styles.content}>{children}</View>\n </View>\n ) : (\n children\n )}\n </View>\n );\n\n if (schemeThemeCtx) {\n return (\n <_ThemeContext.Provider value={schemeThemeCtx}>\n {content}\n </_ThemeContext.Provider>\n );\n }\n\n return content;\n}\n","import React from 'react';\nimport { ScrollView, StyleSheet } from 'react-native';\nimport type { ViewportProps } from './Viewport.types';\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n },\n content: {\n flexGrow: 1,\n },\n});\n\n/**\n * Viewport — Full-height scrollable layout root.\n *\n * Viewport fills all available height (`flex: 1`) and scrolls vertically\n * when content overflows. It stacks children in a column.\n *\n * Viewport is invisible — no background, border, or shadow. It is purely\n * a layout tool for structuring the outermost page container.\n *\n * @example\n * ```tsx\n * <Viewport>\n * <Section size=\"lg\" padding={{ y: 48 }}>\n * <Text role=\"heading\">Welcome</Text>\n * </Section>\n * </Viewport>\n * ```\n */\nexport function Viewport({\n children,\n testID,\n nativeID,\n ref,\n style,\n}: ViewportProps) {\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n return (\n <ScrollView\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n style={styles.root}\n contentContainerStyle={[styles.content, ...userStyles]}\n >\n {children}\n </ScrollView>\n );\n}\n","import type { ViewStyle } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\nimport type {\n Direction,\n Alignment,\n Justification,\n PaddingProp,\n GapProp,\n SizingMode,\n PositionType,\n OffsetValue,\n OverflowMode,\n} from '../../primitives/Frame/Frame.types';\nimport {\n resolvePadding,\n resolveGap,\n resolveSizing,\n resolveFlexDirection,\n resolveAlignment,\n resolveJustification,\n} from '../../primitives/Frame/Frame.utils';\n\nexport interface WrapperStyleInput {\n readonly tokens: ResolvedTokens;\n readonly direction?: Direction;\n readonly wrap?: boolean;\n readonly reverse?: boolean;\n readonly align?: Alignment;\n readonly justify?: Justification;\n readonly padding?: PaddingProp;\n readonly gap?: GapProp;\n readonly width?: SizingMode;\n readonly height?: SizingMode;\n readonly minWidth?: number;\n readonly maxWidth?: number;\n readonly minHeight?: number;\n readonly maxHeight?: number;\n\n // Positioning\n readonly position?: PositionType;\n readonly top?: OffsetValue;\n readonly right?: OffsetValue;\n readonly bottom?: OffsetValue;\n readonly left?: OffsetValue;\n readonly zIndex?: number;\n readonly overflow?: OverflowMode;\n}\n\n/**\n * Build the layout styles for a Wrapper.\n *\n * Unlike Frame, this only handles structure (direction, spacing, sizing).\n * No background, border, shadow, or radius — Wrapper is always invisible.\n * Reuses the same helper functions that Frame uses for layout.\n */\nexport function getWrapperStyles(input: WrapperStyleInput): ViewStyle {\n const {\n tokens,\n direction = 'vertical',\n wrap = false,\n reverse = false,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n } = input;\n\n const container: Record<string, unknown> = {};\n\n // ── Layout ──\n container.flexDirection = resolveFlexDirection(direction, reverse);\n if (wrap) container.flexWrap = 'wrap';\n\n // ── Alignment ──\n if (align) container.alignItems = resolveAlignment(align);\n if (justify) container.justifyContent = resolveJustification(justify);\n\n // ── Padding ──\n if (padding !== undefined) {\n const p = resolvePadding(padding, tokens);\n container.paddingTop = p.top;\n container.paddingRight = p.right;\n container.paddingBottom = p.bottom;\n container.paddingLeft = p.left;\n }\n\n // ── Gap ──\n if (gap !== undefined) {\n const g = resolveGap(gap, tokens);\n container.rowGap = g.rowGap;\n container.columnGap = g.columnGap;\n }\n\n // ── Sizing ──\n Object.assign(container, resolveSizing(width, height));\n\n // ── Constraints ──\n if (minWidth !== undefined) container.minWidth = minWidth;\n if (maxWidth !== undefined) container.maxWidth = maxWidth;\n if (minHeight !== undefined) container.minHeight = minHeight;\n if (maxHeight !== undefined) container.maxHeight = maxHeight;\n\n // ── Positioning ──\n if (position) container.position = position;\n if (top !== undefined) container.top = top;\n if (right !== undefined) container.right = right;\n if (bottom !== undefined) container.bottom = bottom;\n if (left !== undefined) container.left = left;\n if (zIndex !== undefined) container.zIndex = zIndex;\n if (overflow) container.overflow = overflow;\n\n return StyleSheet.create({ c: container as ViewStyle }).c;\n}\n","import React, { useMemo } from 'react';\nimport { View } from 'react-native';\nimport type { WrapperProps } from './Wrapper.types';\nimport { getWrapperStyles } from './Wrapper.styles';\nimport { useTokens } from 'newtone-api';\n\n/**\n * Wrapper — Lightweight, invisible layout container.\n *\n * Same layout API as Frame (direction, spacing, alignment, sizing)\n * but with zero appearance overhead. No background, border, shadow,\n * theme context, or interactivity. Always renders a plain View.\n *\n * Use Wrapper for structural layout. Use Frame when you need visual\n * appearance or theme/elevation context.\n */\nexport function Wrapper({\n children,\n direction,\n wrap,\n reverse,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n pointerEvents,\n style,\n testID,\n nativeID,\n ref,\n}: WrapperProps) {\n const tokens = useTokens();\n\n const containerStyle = useMemo(\n () => getWrapperStyles({\n tokens,\n direction,\n wrap,\n reverse,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n }),\n [\n tokens, direction, wrap, reverse,\n align, justify, padding, gap,\n width, height, minWidth, maxWidth, minHeight, maxHeight,\n position, top, right, bottom, left, zIndex, overflow,\n ],\n );\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n return (\n <View\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n pointerEvents={pointerEvents}\n accessibilityRole=\"none\"\n style={[containerStyle, ...userStyles]}\n >\n {children}\n </View>\n );\n}\n","import type { ViewStyle } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\nimport type { GapProp, PaddingProp } from '../../primitives/Frame/Frame.types';\nimport type { SectionSize } from './Section.types';\nimport { resolveGap, resolvePadding } from '../../primitives/Frame/Frame.utils';\n\n// ── Size Presets ─────────────────────────────────────────────────\n\ninterface SizePreset {\n readonly maxWidth: number | undefined;\n readonly paddingHorizontal: number;\n}\n\nconst SIZE_PRESETS: Record<SectionSize, SizePreset> = {\n xs: { maxWidth: 480, paddingHorizontal: 24 },\n sm: { maxWidth: 640, paddingHorizontal: 24 },\n md: { maxWidth: 768, paddingHorizontal: 24 },\n lg: { maxWidth: 1024, paddingHorizontal: 32 },\n xl: { maxWidth: 1280, paddingHorizontal: 40 },\n full: { maxWidth: undefined, paddingHorizontal: 0 },\n};\n\n// ── Input ────────────────────────────────────────────────────────\n\nexport interface SectionStyleInput {\n readonly tokens: ResolvedTokens;\n readonly size?: SectionSize;\n readonly fill?: boolean;\n readonly gap?: GapProp;\n readonly padding?: PaddingProp;\n}\n\n// ── Builder ──────────────────────────────────────────────────────\n\n/**\n * Build layout styles for a Section.\n *\n * Section fills all horizontal space, centers content within a max width,\n * and applies horizontal padding from the size preset. Vertical padding\n * can be specified via the padding prop.\n */\nexport function getSectionStyles(input: SectionStyleInput): ViewStyle {\n const {\n tokens,\n size = 'lg',\n fill,\n gap,\n padding,\n } = input;\n\n const preset = SIZE_PRESETS[size];\n const container: Record<string, unknown> = {};\n\n // Section always fills horizontal space and stacks children vertically.\n container.width = '100%';\n container.flexDirection = 'column';\n\n // Fill available vertical space when requested.\n if (fill) {\n container.flex = 1;\n }\n\n // Center the content area by capping its width and using auto margins.\n if (preset.maxWidth !== undefined) {\n container.maxWidth = preset.maxWidth;\n container.marginLeft = 'auto';\n container.marginRight = 'auto';\n }\n\n // Horizontal padding from the size preset (so content doesn't touch edges).\n container.paddingLeft = preset.paddingHorizontal;\n container.paddingRight = preset.paddingHorizontal;\n\n // Vertical padding from the user's padding prop.\n if (padding !== undefined) {\n const p = resolvePadding(padding, tokens);\n container.paddingTop = p.top;\n container.paddingBottom = p.bottom;\n }\n\n // Gap between children.\n if (gap !== undefined) {\n const g = resolveGap(gap, tokens);\n container.rowGap = g.rowGap;\n container.columnGap = g.columnGap;\n }\n\n return StyleSheet.create({ c: container as ViewStyle }).c;\n}\n","import React, { useMemo } from 'react';\nimport { View } from 'react-native';\nimport type { SectionProps } from './Section.types';\nimport { getSectionStyles } from './Section.styles';\nimport { useTokens } from 'newtone-api';\n\n/**\n * Section — Full-width layout container that constrains content width.\n *\n * Section fills all available horizontal space and centers its content\n * within a maximum width determined by the `size` preset. It provides\n * horizontal padding so content doesn't touch the viewport edges when\n * the screen is narrower than the max width.\n *\n * Section is invisible — no background, border, or shadow. It is purely\n * a layout tool for structuring page-level content regions.\n *\n * @example\n * ```tsx\n * <Section size=\"md\" gap={24} padding={{ y: 48 }}>\n * <Text role=\"heading\">Documentation</Text>\n * <Text role=\"body\">Content constrained to 768px max width.</Text>\n * </Section>\n * ```\n */\nexport function Section({\n children,\n size,\n fill,\n gap,\n padding,\n testID,\n nativeID,\n ref,\n style,\n}: SectionProps) {\n const tokens = useTokens();\n\n const containerStyle = useMemo(\n () => getSectionStyles({ tokens, size, fill, gap, padding }),\n [tokens, size, fill, gap, padding],\n );\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n return (\n <View\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n accessibilityRole=\"none\"\n style={[containerStyle, ...userStyles]}\n >\n {children}\n </View>\n );\n}\n","import type { UseTokensResult } from 'newtone-api';\nimport type { ThemeName } from 'newtone-api';\nimport type { ButtonVariant, ButtonSize } from './Button.types';\nimport type { TextSize } from '../../../primitives/Text/Text.types';\n\n/**\n * Fixed heights per size (px)\n */\nexport const BUTTON_HEIGHTS: Record<ButtonSize, number> = {\n sm: 40,\n md: 48,\n lg: 56,\n xl: 64,\n};\n\n/**\n * Configuration returned by getButtonConfig\n */\nexport interface ButtonConfig {\n variantColors: {\n bg: string;\n hoveredBg: string;\n pressedBg: string;\n textColor: string;\n iconColor: string;\n borderWidth: number;\n borderColor?: string;\n textDecoration?: 'underline' | 'none';\n };\n sizeTokens: {\n height: number;\n padding: number;\n gap: number;\n borderRadius: number;\n textSize: TextSize;\n iconSize: number;\n };\n}\n\n/**\n * Padding object for asymmetric horizontal padding\n */\nexport interface ButtonPadding {\n paddingLeft: number;\n paddingRight: number;\n}\n\n/**\n * Compute asymmetric button padding based on icon/text presence.\n *\n * Text appears visually closer to borders than icons, so we add 8px extra\n * horizontal padding on the text side for optical balance.\n */\nexport function computeButtonPadding(\n size: ButtonSize,\n hasIcon: boolean,\n hasText: boolean,\n iconPosition: 'left' | 'right'\n): ButtonPadding {\n const basePadding: Record<ButtonSize, number> = {\n sm: 12,\n md: 16,\n lg: 20,\n xl: 24,\n };\n\n const base = basePadding[size];\n const textExtra = 8;\n\n // Icon-only: symmetric\n if (!hasText && hasIcon) {\n return { paddingLeft: base, paddingRight: base };\n }\n\n // Text-only: extra padding on both sides\n if (hasText && !hasIcon) {\n return { paddingLeft: base + textExtra, paddingRight: base + textExtra };\n }\n\n // Icon + text: extra padding on text side only\n if (hasText && hasIcon) {\n if (iconPosition === 'left') {\n return { paddingLeft: base, paddingRight: base + textExtra };\n } else {\n return { paddingLeft: base + textExtra, paddingRight: base };\n }\n }\n\n return { paddingLeft: base, paddingRight: base };\n}\n\n/**\n * Compute button configuration based on variant, size, and state.\n *\n * Colors are derived from the inherited theme (via FrameContext) rather than\n * hardcoded to the primary palette. The `theme` parameter comes from the\n * nearest Frame's `theme` prop, defaulting to 'primary'.\n */\nexport function getButtonConfig(\n variant: ButtonVariant,\n size: ButtonSize,\n disabled: boolean,\n tokens: UseTokensResult,\n theme: ThemeName,\n): ButtonConfig {\n const sizeConfig = getSizeConfig(size, tokens);\n const variantColors = getVariantColors(variant, disabled, tokens, theme);\n\n return {\n variantColors,\n sizeTokens: {\n height: sizeConfig.height,\n padding: sizeConfig.padding,\n gap: sizeConfig.gap,\n borderRadius: sizeConfig.borderRadius,\n textSize: sizeConfig.textSize,\n iconSize: sizeConfig.iconSize,\n },\n };\n}\n\n/**\n * Get size configuration. Heights are fixed per size.\n * Only padding and radius scale with size.\n */\nfunction getSizeConfig(size: ButtonSize, tokens: UseTokensResult) {\n const configs: Record<ButtonSize, {\n height: number;\n padding: number;\n gap: number;\n borderRadius: number;\n textSize: TextSize;\n iconSize: number;\n }> = {\n sm: {\n height: BUTTON_HEIGHTS.sm,\n padding: 12,\n gap: tokens.spacing['08'],\n borderRadius: 8,\n textSize: 'md',\n iconSize: 20,\n },\n md: {\n height: BUTTON_HEIGHTS.md,\n padding: 16,\n gap: tokens.spacing['08'],\n borderRadius: 12,\n textSize: 'md',\n iconSize: 24,\n },\n lg: {\n height: BUTTON_HEIGHTS.lg,\n padding: 20,\n gap: tokens.spacing['08'],\n borderRadius: 14,\n textSize: 'md',\n iconSize: 24,\n },\n xl: {\n height: BUTTON_HEIGHTS.xl,\n padding: 24,\n gap: tokens.spacing['08'],\n borderRadius: 16,\n textSize: 'lg',\n iconSize: 24,\n },\n };\n\n return configs[size];\n}\n\n/**\n * Get variant-specific colors from the inherited theme's tokens.\n * Handles disabled state override for all variants.\n */\nfunction getVariantColors(\n variant: ButtonVariant,\n disabled: boolean,\n tokens: UseTokensResult,\n theme: ThemeName,\n) {\n if (disabled) {\n return getDisabledVariantColors(variant, tokens, theme);\n }\n\n return getVariantColorsForState(variant, tokens, theme);\n}\n\n/**\n * Get variant colors for non-disabled state.\n * Uses the inherited theme's tokens — no semantic prop needed.\n */\nfunction getVariantColorsForState(\n variant: ButtonVariant,\n tokens: UseTokensResult,\n theme: ThemeName,\n) {\n const t = tokens.colors[theme];\n\n // PRIMARY: Filled background using emphasis appearance\n if (variant === 'primary') {\n return {\n bg: t.emphasis.actionEnabled,\n hoveredBg: t.emphasis.actionHovered,\n pressedBg: t.emphasis.actionPressed,\n textColor: t.emphasis.accentSmall,\n iconColor: t.emphasis.accentSmall,\n borderWidth: 0,\n borderColor: 'transparent',\n };\n }\n\n // SECONDARY: Outlined with subtle hover\n if (variant === 'secondary') {\n return {\n bg: t.tinted.actionEnabled,\n hoveredBg: t.tinted.actionHovered,\n pressedBg: t.tinted.actionPressed,\n textColor: t.tinted.fontPrimary,\n iconColor: t.tinted.fontPrimary,\n borderWidth: 0,\n borderColor: 'transparent',\n };\n }\n\n // GHOST: No border, transparent background, subtle hover, underlined text\n return {\n bg: 'transparent',\n hoveredBg: t.main.actionEnabled,\n pressedBg: t.main.actionHovered,\n textColor: t.main.fontSecondary,\n iconColor: t.main.fontSecondary,\n borderWidth: 0,\n borderColor: 'transparent',\n textDecoration: 'underline' as const,\n };\n}\n\n/**\n * Get variant-specific disabled colors.\n * Each variant has its own disabled treatment using mapped disabled tokens.\n */\nfunction getDisabledVariantColors(\n variant: ButtonVariant,\n tokens: UseTokensResult,\n theme: ThemeName,\n) {\n const t = tokens.colors[theme];\n\n // PRIMARY DISABLED: keeps emphasis appearance, muted text\n if (variant === 'primary') {\n return {\n bg: t.main.actionEnabled,\n hoveredBg: t.main.actionEnabled,\n pressedBg: t.main.actionEnabled,\n textColor: t.main.fontDisabled,\n iconColor: t.main.fontDisabled,\n borderWidth: 0,\n borderColor: 'transparent',\n };\n }\n\n // SECONDARY DISABLED: keeps main appearance bg, muted text\n if (variant === 'secondary') {\n return {\n bg: 'transparent',\n hoveredBg: 'transparent',\n pressedBg: 'transparent',\n textColor: t.main.fontDisabled,\n iconColor: t.main.fontDisabled,\n borderWidth: 1,\n borderColor: t.main.divider,\n };\n }\n\n // GHOST DISABLED: transparent, muted text only, underlined\n return {\n bg: 'transparent',\n hoveredBg: 'transparent',\n pressedBg: 'transparent',\n textColor: t.main.fontDisabled,\n iconColor: t.main.fontDisabled,\n borderWidth: 0,\n borderColor: 'transparent'\n };\n}\n","import React from 'react';\nimport { Pressable } from 'react-native';\nimport type { ButtonProps } from './Button.types';\nimport { getButtonConfig, computeButtonPadding } from './Button.styles';\nimport { useTokens } from 'newtone-api';\nimport { useFrameContext } from 'newtone-api';\nimport { Icon } from '../../../primitives/Icon/Icon';\nimport { Text } from '../../../primitives/Text';\nimport { Wrapper } from '../../../layout/Wrapper/Wrapper';\n\n/**\n * Button — A composite component that inherits its color theme from the\n * nearest parent Frame's `theme` prop (defaults to 'primary').\n *\n * **Variants:**\n * - `primary` — Filled background (highest visual weight)\n * - `secondary` — Outlined with subtle hover\n * - `ghost` — No border, transparent, subtle hover\n *\n * **Sizes (fixed heights):**\n * - `sm` — 40px\n * - `md` — 48px\n * - `lg` — 56px\n * - `xl` — 64px\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\" onPress={() => console.log('Pressed')}>\n * Click me\n * </Button>\n * ```\n *\n * @example\n * ```tsx\n * // Inherits theme from parent Frame\n * <Frame theme=\"error\">\n * <Button variant=\"primary\">Delete</Button>\n * </Frame>\n * ```\n */\nexport function Button({\n children,\n icon,\n iconPosition = 'left',\n variant = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n fullWidth = false,\n style,\n textStyle,\n ...pressableProps\n}: ButtonProps) {\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n\n // Inherit theme from nearest Frame, default to 'primary'\n const theme = frameCtx?.theme ?? 'primary';\n\n // DEBUG: trace Button token resolution\n if (typeof window !== 'undefined') {\n console.log('[Button]', { theme, variant, frameCtxTheme: frameCtx?.theme, hasFrameCtx: !!frameCtx });\n if (tokens.colors[theme]) {\n const t = tokens.colors[theme];\n console.log('[Button tokens]', {\n 'emphasis.actionEnabled': t.emphasis.actionEnabled,\n 'main.actionEnabled': t.main.actionEnabled,\n 'main.background': t.main.background,\n });\n } else {\n console.log('[Button] NO tokens for theme:', theme, 'available themes:', Object.keys(tokens.colors));\n }\n }\n\n const isDisabled = disabled || loading;\n\n const { variantColors, sizeTokens } = React.useMemo(\n () => getButtonConfig(variant, size, isDisabled, tokens, theme),\n [variant, size, isDisabled, tokens, theme]\n );\n\n // Compute asymmetric padding (+8px on text side for optical balance)\n // Ghost variant with no icon uses standard padding\n const padding = React.useMemo(\n () => computeButtonPadding(size, !!icon, !!children, iconPosition),\n [size, icon, children, iconPosition]\n );\n\n return (\n <Pressable disabled={isDisabled} {...pressableProps}>\n {({ pressed, hovered }: { pressed: boolean; hovered?: boolean }) => (\n <Wrapper\n direction=\"horizontal\"\n align=\"center\"\n justify=\"center\"\n gap={sizeTokens.gap}\n style={[\n {\n height: sizeTokens.height,\n paddingLeft: padding.paddingLeft,\n paddingRight: padding.paddingRight,\n backgroundColor: pressed && !isDisabled\n ? variantColors.pressedBg\n : hovered && !isDisabled\n ? variantColors.hoveredBg\n : variantColors.bg,\n borderRadius: sizeTokens.borderRadius,\n borderWidth: variantColors.borderWidth,\n borderColor: variantColors.borderColor || 'transparent',\n opacity: loading ? 0.6 : 1,\n ...(fullWidth && { width: '100%' as any, alignSelf: 'stretch' as any }),\n },\n ...(Array.isArray(style) ? style : style ? [style] : []),\n ]}\n >\n {icon && iconPosition === 'left' && (\n <Icon name={icon} size={sizeTokens.iconSize} color={variantColors.iconColor} />\n )}\n {children && (\n <Text\n role=\"label\"\n size={sizeTokens.textSize}\n centerVertically\n style={[\n { color: variantColors.textColor, textDecorationLine: variantColors.textDecoration },\n ...(Array.isArray(textStyle) ? textStyle : textStyle ? [textStyle] : []),\n ]}\n >\n {children}\n </Text>\n )}\n {icon && iconPosition === 'right' && (\n <Icon name={icon} size={sizeTokens.iconSize} color={variantColors.iconColor} />\n )}\n </Wrapper>\n )}\n </Pressable>\n );\n}\n","import type { ViewStyle } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens } from 'newtone-api';\nimport type { ThemeName, AppearanceName } from 'newtone-api';\nimport type {\n PaddingProp,\n GapProp,\n SizingMode,\n Direction,\n Alignment,\n Justification,\n RadiusProp,\n} from '../Frame/Frame.types';\nimport {\n resolvePadding,\n resolveGap,\n resolveSizing,\n resolveFlexDirection,\n resolveAlignment,\n resolveJustification,\n resolveRadiusCorners,\n hasPositiveRadius,\n} from '../Frame/Frame.utils';\n\n// ── Input ────────────────────────────────────────────────────────\n\nexport interface CardStyleInput {\n readonly tokens: ResolvedTokens;\n\n // Theme / Appearance (theme is inherited, not user-supplied)\n readonly theme: ThemeName;\n readonly appearance?: AppearanceName;\n\n // Layout\n readonly direction?: Direction;\n readonly wrap?: boolean;\n readonly reverse?: boolean;\n\n // Alignment\n readonly align?: Alignment;\n readonly justify?: Justification;\n\n // Spacing\n readonly padding?: PaddingProp;\n readonly gap?: GapProp;\n\n // Sizing\n readonly width?: SizingMode;\n readonly height?: SizingMode;\n readonly minWidth?: number;\n readonly maxWidth?: number;\n readonly minHeight?: number;\n readonly maxHeight?: number;\n\n // Appearance\n readonly radius?: RadiusProp;\n\n // Interactivity\n readonly disabled?: boolean;\n}\n\n// ── Output ───────────────────────────────────────────────────────\n\nexport interface CardStyles {\n /** Main container style */\n readonly container: ViewStyle;\n /** Style applied when pressed (background shift) */\n readonly pressed: ViewStyle;\n}\n\n// ── Builder ──────────────────────────────────────────────────────\n\n/**\n * Build all visual styles for a Card.\n *\n * Cards are always elevated with a border and drop shadow.\n * Takes the Card's props + design tokens and produces:\n * - container: the main style (background, border, shadow, layout, spacing, etc.)\n * - pressed: style override applied when the user is pressing\n */\nexport function getCardStyles(input: CardStyleInput): CardStyles {\n const {\n tokens,\n theme,\n appearance = 'main',\n direction = 'vertical',\n wrap = false,\n reverse = false,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n radius,\n disabled = false,\n } = input;\n\n const container: Record<string, unknown> = {};\n\n // ── Background & foreground ──\n const appearanceTokens: AppearanceTokens = tokens.colors[theme][appearance];\n container.backgroundColor = appearanceTokens.background;\n container.color = appearanceTokens.fontPrimary;\n\n // ── Layout ──\n container.display = 'flex';\n container.flexDirection = resolveFlexDirection(direction, reverse);\n if (wrap) container.flexWrap = 'wrap';\n\n // ── Alignment ──\n if (align) container.alignItems = resolveAlignment(align);\n if (justify) container.justifyContent = resolveJustification(justify);\n\n // ── Padding ──\n if (padding !== undefined) {\n const p = resolvePadding(padding, tokens);\n container.paddingTop = p.top;\n container.paddingRight = p.right;\n container.paddingBottom = p.bottom;\n container.paddingLeft = p.left;\n }\n\n // ── Gap ──\n if (gap !== undefined) {\n const g = resolveGap(gap, tokens);\n container.rowGap = g.rowGap;\n container.columnGap = g.columnGap;\n }\n\n // ── Sizing ──\n Object.assign(container, resolveSizing(width, height));\n\n // ── Constraints ──\n if (minWidth !== undefined) container.minWidth = minWidth;\n if (maxWidth !== undefined) container.maxWidth = maxWidth;\n if (minHeight !== undefined) container.minHeight = minHeight;\n if (maxHeight !== undefined) container.maxHeight = maxHeight;\n\n // ── Radius ──\n if (radius !== undefined) {\n const corners = resolveRadiusCorners(radius, tokens);\n container.borderTopLeftRadius = corners.topLeft;\n container.borderTopRightRadius = corners.topRight;\n container.borderBottomLeftRadius = corners.bottomLeft;\n container.borderBottomRightRadius = corners.bottomRight;\n\n if (hasPositiveRadius(corners)) {\n container.overflow = 'hidden';\n }\n }\n\n // ── Border (always on) ──\n container.borderWidth = 1;\n container.borderColor = appearanceTokens.divider;\n\n // ── Shadow (always elevated) ──\n container.shadowColor = '#000';\n container.shadowOffset = { width: 0, height: 2 };\n container.shadowOpacity = 0.12;\n container.shadowRadius = 6;\n container.elevation = 4; // Android-specific shadow depth\n\n // ── Disabled ──\n if (disabled) {\n container.opacity = 0.5;\n }\n\n // ── Pressed state ──\n const pressed = StyleSheet.create({\n s: { backgroundColor: appearanceTokens.fontSecondary },\n }).s;\n\n return {\n container: StyleSheet.create({ c: container as ViewStyle }).c,\n pressed,\n };\n}\n","import React, { useMemo } from 'react';\nimport { Pressable, Text } from 'react-native';\nimport type { TextStyle } from 'react-native';\nimport type { CardProps } from './Card.types';\nimport type { ElevationLevel, ElevationName, ThemeName, AppearanceName } from 'newtone-api';\nimport { FrameContext, useFrameContext } from 'newtone-api';\nimport { useNewtoneTheme } from 'newtone-api';\nimport { computeTokens } from 'newtone-api';\nimport { getCardStyles } from './Card.styles';\nimport { useFocusVisible } from '../useFocusVisible';\n\n/**\n * Wrap raw string/number children in <Text> so they display correctly.\n */\nfunction wrapTextChildren(\n children: React.ReactNode,\n textStyle: TextStyle,\n): React.ReactNode {\n return React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Text style={textStyle}>{child}</Text>;\n }\n return child;\n });\n}\n\n/** Cards are always elevated. */\nconst CARD_ELEVATION: ElevationLevel = 2;\nconst CARD_ELEVATION_NAME: ElevationName = 'elevated';\n\n/**\n * Card — An elevated, bordered, pressable surface.\n *\n * Card inherits its theme from the parent Frame context. It is always\n * rendered at the elevated level with a border and drop shadow.\n * It handles press and navigation interactions, making it ideal for\n * clickable content tiles, list items, and action surfaces.\n *\n * Cards can be nested inside Frames. They inherit the theme but provide\n * their own elevated FrameContext to descendants.\n */\nexport function Card({\n children,\n // Appearance\n appearance,\n radius,\n // Layout\n direction,\n wrap,\n reverse,\n // Alignment\n align,\n justify,\n // Spacing\n padding,\n gap,\n // Sizing\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n // Positioning\n pointerEvents,\n // Interactivity\n onPress,\n href,\n disabled = false,\n // Accessibility\n accessibilityLabel,\n accessibilityHint,\n // Testing & platform\n testID,\n nativeID,\n ref,\n // Style override\n style,\n}: CardProps) {\n const themeCtx = useNewtoneTheme();\n const { mode, gamut } = themeCtx;\n const parentFrameCtx = useFrameContext();\n\n // Inherit theme from parent Frame context (Card never overrides theme).\n const resolvedTheme: ThemeName = parentFrameCtx?.theme ?? 'primary';\n const resolvedAppearance: AppearanceName = appearance ?? parentFrameCtx?.appearance ?? 'main';\n\n // Compute tokens at the elevated level.\n const tokens = useMemo(() => {\n return computeTokens(\n themeCtx.config.colorSystem,\n mode,\n gamut,\n CARD_ELEVATION_NAME,\n themeCtx.config.spacing,\n themeCtx.config.radius,\n themeCtx.config.typography,\n themeCtx.config.icons,\n themeCtx.config.themeMappings,\n themeCtx.config.swatchDefaults,\n themeCtx.config.relativeSwatchDefaults,\n );\n }, [themeCtx.config, mode, gamut]);\n\n const styles = useMemo(\n () => getCardStyles({\n tokens,\n theme: resolvedTheme,\n appearance: resolvedAppearance,\n direction,\n wrap,\n reverse,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n radius,\n disabled,\n }),\n [\n tokens, resolvedTheme, resolvedAppearance,\n direction, wrap, reverse,\n align, justify, padding, gap,\n width, height, minWidth, maxWidth, minHeight, maxHeight,\n radius, disabled,\n ],\n );\n\n const contextValue = useMemo(\n () => ({\n elevation: CARD_ELEVATION,\n tokens,\n scheme: parentFrameCtx?.scheme,\n theme: resolvedTheme,\n appearance: resolvedAppearance,\n }),\n [tokens, parentFrameCtx?.scheme, resolvedTheme, resolvedAppearance],\n );\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n const { isFocusVisible, focusProps } = useFocusVisible();\n\n // Focus ring: uses the emphasis background of the inherited theme as the outline color.\n const focusRingStyle = isFocusVisible && !disabled ? {\n outlineWidth: 2,\n outlineStyle: 'solid',\n outlineColor: tokens.colors[resolvedTheme].emphasis.background,\n outlineOffset: 2,\n } as unknown as import('react-native').ViewStyle : undefined;\n\n const textStyle = useMemo<TextStyle>(\n () => ({\n color: tokens.colors[resolvedTheme][resolvedAppearance].fontPrimary,\n fontSize: tokens.typography.fontSizes['05'],\n fontFamily: tokens.typography.fonts.main.family,\n lineHeight: tokens.typography.lineHeights['06'],\n }),\n [tokens, resolvedTheme, resolvedAppearance],\n );\n const wrappedChildren = useMemo(\n () => wrapTextChildren(children, textStyle),\n [children, textStyle],\n );\n\n return (\n <FrameContext.Provider value={contextValue}>\n <Pressable\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n pointerEvents={pointerEvents}\n accessibilityLabel={accessibilityLabel}\n accessibilityHint={accessibilityHint}\n accessibilityState={disabled ? { disabled: true } : undefined}\n onPress={onPress}\n disabled={disabled}\n {...(href ? { href, accessibilityRole: 'link' as const } : { accessibilityRole: 'button' as const })}\n {...(focusProps as any)}\n style={({ pressed }) => [\n styles.container,\n pressed && !disabled && styles.pressed,\n focusRingStyle,\n ...userStyles,\n ]}\n >\n {wrappedChildren}\n </Pressable>\n </FrameContext.Provider>\n );\n}\n","import type { UseTokensResult } from 'newtone-api';\nimport type { ChipVariant, ChipSemantic, ChipSize } from './Chip.types';\nimport type { TextRole } from '../../../primitives/Text';\n\n/**\n * Configuration returned by getChipConfig\n */\nexport interface ChipConfig {\n colors: {\n bg: string;\n hoveredBg: string;\n pressedBg: string;\n textColor: string;\n iconColor: string;\n borderWidth: number;\n borderColor: string;\n };\n sizeTokens: {\n paddingX: number;\n paddingY: number;\n gap: number;\n textRole: TextRole;\n iconSize: number;\n };\n}\n\n/**\n * Map chip semantic to theme name.\n * 'accent' maps to 'primary'; others map directly.\n */\nfunction semanticToTheme(semantic: ChipSemantic): 'primary' | 'success' | 'error' | 'warning' {\n if (semantic === 'accent') return 'primary';\n return semantic as 'success' | 'error' | 'warning';\n}\n\n/**\n * Get size configuration for the chip.\n */\nfunction getSizeConfig(size: ChipSize): {\n paddingX: number;\n paddingY: number;\n gap: number;\n textRole: TextRole;\n iconSize: number;\n} {\n if (size === 'sm') {\n return { paddingX: 10, paddingY: 3, gap: 4, textRole: 'caption', iconSize: 16 };\n }\n return { paddingX: 16, paddingY: 8, gap: 6, textRole: 'label', iconSize: 20 };\n}\n\n/**\n * Get variant colors for the chip.\n */\nfunction getVariantColors(\n variant: ChipVariant,\n semantic: ChipSemantic,\n selected: boolean,\n disabled: boolean,\n tokens: UseTokensResult\n) {\n // Selected state overrides to strong appearance\n if (selected) {\n if (semantic === 'neutral') {\n return {\n bg: tokens.colors.primary.strong.background,\n hoveredBg: tokens.colors.primary.strong.fontPrimary,\n pressedBg: tokens.colors.primary.strong.background,\n textColor: tokens.colors.primary.strong.fontPrimary,\n iconColor: tokens.colors.primary.strong.fontPrimary,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n const t = tokens.colors[semanticToTheme(semantic)];\n return {\n bg: t.emphasis.background,\n hoveredBg: t.emphasis.fontPrimary,\n pressedBg: t.emphasis.background,\n textColor: t.main.background,\n iconColor: t.main.background,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n\n // Disabled state\n if (disabled) {\n return {\n bg: 'transparent',\n hoveredBg: 'transparent',\n pressedBg: 'transparent',\n textColor: tokens.colors.primary.main.fontTertiary,\n iconColor: tokens.colors.primary.main.fontTertiary,\n borderWidth: 1,\n borderColor: tokens.colors.primary.main.divider,\n };\n }\n\n // Filled variant\n if (variant === 'filled') {\n if (semantic === 'neutral') {\n return {\n bg: tokens.colors.primary.main.fontPrimary,\n hoveredBg: tokens.colors.primary.main.fontSecondary,\n pressedBg: tokens.colors.primary.main.fontPrimary,\n textColor: tokens.colors.primary.main.divider,\n iconColor: tokens.colors.primary.main.divider,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n const t = tokens.colors[semanticToTheme(semantic)];\n return {\n bg: t.emphasis.background,\n hoveredBg: t.emphasis.fontPrimary,\n pressedBg: t.emphasis.fontSecondary,\n textColor: t.main.background,\n iconColor: t.main.background,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n\n // Tinted variant\n if (variant === 'tinted') {\n if (semantic === 'neutral') {\n return {\n bg: tokens.colors.primary.tinted.background,\n hoveredBg: tokens.colors.primary.tinted.fontPrimary,\n pressedBg: tokens.colors.primary.tinted.fontSecondary,\n textColor: tokens.colors.primary.main.fontPrimary,\n iconColor: tokens.colors.primary.main.fontPrimary,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n const t = tokens.colors[semanticToTheme(semantic)];\n return {\n bg: t.tinted.background,\n hoveredBg: t.tinted.fontPrimary,\n pressedBg: t.tinted.fontSecondary,\n textColor: t.emphasis.divider,\n iconColor: t.emphasis.divider,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n\n // Outlined variant\n if (semantic === 'neutral') {\n return {\n bg: 'transparent',\n hoveredBg: tokens.colors.primary.tinted.background,\n pressedBg: tokens.colors.primary.tinted.fontPrimary,\n textColor: tokens.colors.primary.main.fontPrimary,\n iconColor: tokens.colors.primary.main.fontPrimary,\n borderWidth: 1,\n borderColor: tokens.colors.primary.main.divider,\n };\n }\n const t = tokens.colors[semanticToTheme(semantic)];\n return {\n bg: 'transparent',\n hoveredBg: t.tinted.background,\n pressedBg: t.tinted.fontPrimary,\n textColor: t.emphasis.divider,\n iconColor: t.emphasis.divider,\n borderWidth: 1,\n borderColor: t.tinted.fontSecondary,\n };\n}\n\n/**\n * Compute chip configuration based on variant, semantic, size, and state.\n */\nexport function getChipConfig(\n variant: ChipVariant,\n semantic: ChipSemantic,\n size: ChipSize,\n selected: boolean,\n disabled: boolean,\n tokens: UseTokensResult\n): ChipConfig {\n return {\n colors: getVariantColors(variant, semantic, selected, disabled, tokens),\n sizeTokens: getSizeConfig(size),\n };\n}\n","import React from 'react';\nimport { Pressable } from 'react-native';\nimport type { ChipProps } from './Chip.types';\nimport { getChipConfig } from './Chip.styles';\nimport { useTokens } from 'newtone-api';\nimport { Icon } from '../../../primitives/Icon/Icon';\nimport { Text } from '../../../primitives/Text';\nimport { Wrapper } from '../../../layout/Wrapper/Wrapper';\n\n/**\n * Chip — A pill-shaped label for tags, filters, badges, and status indicators.\n *\n * **Composition Architecture:**\n * - Pressable (RN primitive) — handles interaction (when onPress is provided)\n * - Wrapper (primitive) — handles layout (direction, gap, padding, alignment)\n * - Icon (primitive) — handles optional leading icon\n * - Text (primitive) — handles typography with theme tokens\n *\n * @example\n * ```tsx\n * // Static label\n * <Chip>Design Systems</Chip>\n *\n * // Interactive filter chip\n * <Chip selected={isActive} onPress={() => toggle()}>Color Science</Chip>\n *\n * // With icon\n * <Chip icon=\"check\" semantic=\"success\">Verified</Chip>\n * ```\n */\nexport function Chip({\n children,\n variant = 'tinted',\n size = 'md',\n semantic = 'neutral',\n selected = false,\n onPress,\n disabled = false,\n icon,\n style,\n}: ChipProps) {\n const tokens = useTokens();\n\n const { colors, sizeTokens } = React.useMemo(\n () => getChipConfig(variant, semantic, size, selected, disabled, tokens),\n [variant, semantic, size, selected, disabled, tokens]\n );\n\n const content = (state?: { pressed: boolean; hovered?: boolean }) => (\n <Wrapper\n direction=\"horizontal\"\n align=\"center\"\n gap={sizeTokens.gap}\n style={[\n {\n paddingLeft: sizeTokens.paddingX,\n paddingRight: sizeTokens.paddingX,\n paddingTop: sizeTokens.paddingY,\n paddingBottom: sizeTokens.paddingY,\n backgroundColor: state?.pressed && !disabled\n ? colors.pressedBg\n : state?.hovered && !disabled\n ? colors.hoveredBg\n : colors.bg,\n borderRadius: 99,\n borderWidth: colors.borderWidth,\n borderColor: colors.borderColor || 'transparent',\n opacity: disabled ? 0.4 : 1,\n },\n ...(Array.isArray(style) ? style : style ? [style] : []),\n ]}\n >\n {icon && (\n <Icon name={icon} size={sizeTokens.iconSize} color={colors.iconColor} />\n )}\n <Text\n role={sizeTokens.textRole}\n weight={selected ? 'bold' : 'medium'}\n style={{ color: colors.textColor }}\n >\n {children}\n </Text>\n </Wrapper>\n );\n\n if (onPress) {\n return (\n <Pressable onPress={onPress} disabled={disabled}>\n {({ pressed, hovered }: { pressed: boolean; hovered?: boolean }) =>\n content({ pressed, hovered })\n }\n </Pressable>\n );\n }\n\n return content();\n}\n","import type { ViewStyle } from 'react-native';\nimport type { UseTokensResult } from 'newtone-api';\nimport type { DividerOrientation } from './Divider.types';\n\n/**\n * Compute divider styles based on orientation, spacing, and tokens.\n */\nexport function getDividerStyles(\n orientation: DividerOrientation,\n spacing: number | undefined,\n tokens: UseTokensResult\n): ViewStyle {\n const color = tokens.colors.primary.main.divider;\n\n if (orientation === 'vertical') {\n return {\n width: 1,\n height: '100%' as any,\n backgroundColor: color,\n ...(spacing != null && { marginLeft: spacing, marginRight: spacing }),\n };\n }\n\n return {\n height: 1,\n width: '100%' as any,\n backgroundColor: color,\n ...(spacing != null && { marginTop: spacing, marginBottom: spacing }),\n };\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport type { DividerProps } from './Divider.types';\nimport { getDividerStyles } from './Divider.styles';\nimport { useTokens } from 'newtone-api';\n\n/**\n * Divider — A horizontal or vertical separator line.\n *\n * Uses the theme's divider color from tokens automatically.\n *\n * @example\n * ```tsx\n * // Horizontal divider\n * <Divider />\n *\n * // With spacing\n * <Divider spacing={16} />\n *\n * // Vertical divider (inside a horizontal Wrapper)\n * <Wrapper direction=\"horizontal\" align=\"center\">\n * <Text>Left</Text>\n * <Divider orientation=\"vertical\" spacing={12} />\n * <Text>Right</Text>\n * </Wrapper>\n * ```\n */\nexport function Divider({\n orientation = 'horizontal',\n spacing,\n style,\n}: DividerProps) {\n const tokens = useTokens();\n\n const dividerStyle = React.useMemo(\n () => getDividerStyles(orientation, spacing, tokens),\n [orientation, spacing, tokens]\n );\n\n return (\n <View\n style={[dividerStyle, ...(Array.isArray(style) ? style : style ? [style] : [])]}\n accessibilityRole=\"none\"\n />\n );\n}\n","import type { ViewStyle } from 'react-native';\nimport type { UseTokensResult } from 'newtone-api';\nimport type { ContentCardVariant } from './ContentCard.types';\n\n/**\n * Compute variant-specific styles for ContentCard.\n * Uses `as ViewStyle` for web-only properties (cursor, borderBottomStyle)\n * that react-native-web supports but RN types don't include.\n */\nexport function getContentCardStyles(\n variant: ContentCardVariant,\n isInteractive: boolean,\n tokens: UseTokensResult\n): ViewStyle {\n const dividerColor = tokens.colors.primary.main.divider;\n\n const interactiveStyles = isInteractive\n ? { cursor: 'pointer', textDecorationLine: 'none' } as ViewStyle\n : {} as ViewStyle;\n\n if (variant === 'elevated') {\n return {\n borderRadius: 12,\n ...interactiveStyles,\n } as ViewStyle;\n }\n\n if (variant === 'bordered') {\n return {\n borderWidth: 1,\n borderColor: dividerColor,\n borderStyle: 'solid',\n borderRadius: 12,\n ...interactiveStyles,\n } as ViewStyle;\n }\n\n // flat variant — bottom border only\n return {\n borderBottomWidth: 1,\n borderBottomColor: dividerColor,\n ...interactiveStyles,\n } as ViewStyle;\n}\n","import React from 'react';\nimport type { ContentCardProps } from './ContentCard.types';\nimport { getContentCardStyles } from './ContentCard.styles';\nimport { useTokens } from 'newtone-api';\nimport { Frame } from '../../../primitives/Frame/Frame';\n\n/**\n * ContentCard — A content container with three visual treatments.\n *\n * **Variants:**\n * - `elevated` — raised surface with tinted background (hero cards, featured content)\n * - `bordered` — outlined container (related items, previews)\n * - `flat` — bottom-border only (list rows, compact items)\n *\n * Delegates to Frame for layout, elevation, appearance, and interactivity.\n *\n * @example\n * ```tsx\n * // Elevated hero card\n * <ContentCard variant=\"elevated\" href=\"/articles/intro\">\n * <Text role=\"heading\" weight=\"bold\">Featured Article</Text>\n * <Text role=\"body\" color=\"secondary\">Article excerpt...</Text>\n * </ContentCard>\n *\n * // Bordered card\n * <ContentCard variant=\"bordered\" onPress={() => navigate(slug)}>\n * <Text role=\"body\" weight=\"bold\">Related Article</Text>\n * </ContentCard>\n *\n * // Flat list item\n * <ContentCard variant=\"flat\" href={`/articles/${slug}`}>\n * <Text role=\"body\" weight=\"bold\">{title}</Text>\n * </ContentCard>\n * ```\n */\nexport function ContentCard({\n children,\n variant = 'bordered',\n href,\n onPress,\n padding = 20,\n gap = 8,\n disabled = false,\n style,\n}: ContentCardProps) {\n const tokens = useTokens();\n const isInteractive = !!(href || onPress);\n\n const variantStyles = React.useMemo(\n () => getContentCardStyles(variant, isInteractive, tokens),\n [variant, isInteractive, tokens]\n );\n\n return (\n <Frame\n elevation={variant === 'elevated' ? 2 : undefined}\n appearance={variant === 'elevated' ? 'tinted' : undefined}\n href={href}\n onPress={onPress}\n disabled={disabled}\n padding={padding}\n gap={gap}\n style={[\n variantStyles,\n ...(Array.isArray(style) ? style : style ? [style] : []),\n ]}\n >\n {children}\n </Frame>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nexport function getTextInputStyles(\n tokens: ResolvedTokens,\n disabled: boolean,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: at.fontSecondary,\n },\n input: {\n fontFamily: tokens.typography.fonts.main.family,\n backgroundColor: at.background,\n borderWidth: 1,\n borderColor: at.divider,\n borderRadius: tokens.radius.md,\n paddingVertical: tokens.spacing['08'],\n paddingHorizontal: tokens.spacing['12'],\n fontSize: tokens.typography.fontSizes['05'],\n color: disabled ? at.fontDisabled : at.fontPrimary,\n opacity: disabled ? 0.5 : 1,\n },\n });\n}\n","import React from 'react';\nimport { View, Text, TextInput as RNTextInput } from 'react-native';\nimport type { TextInputProps } from './TextInput.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getTextInputStyles } from './TextInput.styles';\n\nexport function TextInput({\n label,\n disabled = false,\n style,\n ...textInputProps\n}: TextInputProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n const theme = frameCtx?.theme ?? 'primary';\n const appearance = frameCtx?.appearance ?? 'main';\n\n const styles = React.useMemo(\n () => getTextInputStyles(tokens, disabled, theme, appearance),\n [tokens, disabled, theme, appearance]\n );\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <RNTextInput\n style={styles.input}\n editable={!disabled}\n placeholderTextColor={tokens.colors[theme][appearance].fontTertiary}\n {...textInputProps}\n />\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nexport function getPopoverStyles(\n tokens: ResolvedTokens,\n triggerHeight: number,\n offset: number,\n maxHeight: number,\n width: 'trigger' | 'auto' | number,\n isOpen: boolean,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const widthStyle =\n width === 'trigger'\n ? { left: 0 as const, right: 0 as const }\n : typeof width === 'number'\n ? { width, left: 0 as const }\n : { left: 0 as const };\n\n return StyleSheet.create({\n container: {\n position: 'relative',\n zIndex: isOpen ? 999 : 1,\n },\n content: {\n position: 'absolute',\n top: triggerHeight + offset,\n ...widthStyle,\n backgroundColor: at.fontPrimary,\n borderWidth: 1,\n borderColor: at.fontSecondary,\n borderRadius: tokens.radius.md,\n maxHeight,\n zIndex: 1000,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.15,\n shadowRadius: 12,\n elevation: 8,\n },\n });\n}\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { View } from 'react-native';\nimport type { PopoverProps } from './Popover.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getPopoverStyles } from './Popover.styles';\n\n// Module-level: set of close callbacks for all open Popovers.\n// Opening one Popover automatically closes all others.\nconst openPopovers = new Set<() => void>();\n\nexport function Popover({\n isOpen,\n onClose,\n trigger,\n children,\n width = 'trigger',\n maxHeight = 240,\n offset = 4,\n closeOnEscape = true,\n style,\n contentStyle,\n}: PopoverProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n const containerRef = useRef<View>(null);\n const [triggerHeight, setTriggerHeight] = useState(0);\n\n const onTriggerLayout = useCallback(\n (e: { nativeEvent: { layout: { height: number } } }) => {\n setTriggerHeight(e.nativeEvent.layout.height);\n },\n []\n );\n\n // Mutual exclusion: opening this Popover closes all others\n useEffect(() => {\n if (!isOpen) return;\n openPopovers.forEach((closeFn) => closeFn());\n openPopovers.clear();\n openPopovers.add(onClose);\n return () => {\n openPopovers.delete(onClose);\n };\n }, [isOpen, onClose]);\n\n // Click-outside: capture phase so RNW Pressable can't swallow the event.\n // Web-only: on native, document is undefined (click-outside needs a portal/Modal rearchitecture).\n useEffect(() => {\n if (!isOpen) return;\n if (typeof document === 'undefined') return;\n const handleMouseDown = (e: MouseEvent) => {\n const node = containerRef.current as unknown as HTMLElement;\n if (node && !node.contains(e.target as Node)) {\n onClose();\n }\n };\n document.addEventListener('mousedown', handleMouseDown, true);\n return () => document.removeEventListener('mousedown', handleMouseDown, true);\n }, [isOpen, onClose]);\n\n const handleKeyDown = useCallback(\n (e: any) => {\n if (closeOnEscape && e.key === 'Escape') {\n e.stopPropagation();\n onClose();\n }\n },\n [closeOnEscape, onClose]\n );\n\n const styles = useMemo(\n () => getPopoverStyles(tokens, triggerHeight, offset, maxHeight, width, isOpen, frameCtx?.theme, frameCtx?.appearance),\n [tokens, triggerHeight, offset, maxHeight, width, isOpen, frameCtx?.theme, frameCtx?.appearance]\n );\n\n const containerStyles = useMemo(\n () => [styles.container, ...(Array.isArray(style) ? style : style ? [style] : [])],\n [styles.container, style]\n );\n\n const mergedContentStyles = useMemo(\n () => [styles.content, ...(Array.isArray(contentStyle) ? contentStyle : contentStyle ? [contentStyle] : [])],\n [styles.content, contentStyle]\n );\n\n // onKeyDown is a web-only prop supported by react-native-web but not in RN types\n const webProps = { onKeyDown: handleKeyDown } as any;\n\n return (\n <View\n ref={containerRef}\n style={containerStyles}\n {...webProps}\n >\n <View onLayout={onTriggerLayout}>\n {trigger}\n </View>\n\n {isOpen && (\n <View style={mergedContentStyles}>\n {children}\n </View>\n )}\n </View>\n );\n}\n","import { useCallback, useState } from 'react';\nimport type { UsePopoverOptions, UsePopoverReturn } from './Popover.types';\n\nexport function usePopover(options?: UsePopoverOptions): UsePopoverReturn {\n const [isOpen, setIsOpen] = useState(options?.initialOpen ?? false);\n\n const open = useCallback(() => {\n setIsOpen(true);\n options?.onOpenChange?.(true);\n }, [options]);\n\n const close = useCallback(() => {\n setIsOpen(false);\n options?.onOpenChange?.(false);\n }, [options]);\n\n const toggle = useCallback(() => {\n setIsOpen((prev) => {\n const next = !prev;\n options?.onOpenChange?.(next);\n return next;\n });\n }, [options]);\n\n return { isOpen, open, close, toggle };\n}\n","import type { ViewStyle } from 'react-native';\n\nexport interface SelectOption {\n readonly label: string;\n readonly value: string;\n readonly disabled?: boolean;\n}\n\nexport interface SelectOptionGroup {\n readonly label: string;\n readonly options: readonly SelectOption[];\n}\n\nexport type SelectItem = SelectOption | SelectOptionGroup;\n\nexport function isOptionGroup(item: SelectItem): item is SelectOptionGroup {\n return 'options' in item;\n}\n\nexport interface SelectProps {\n /** Flat options or grouped options */\n readonly options: readonly SelectItem[];\n /** Currently selected value */\n readonly value: string;\n /** Callback when selection changes */\n readonly onValueChange: (value: string) => void;\n /** Field label displayed above the trigger */\n readonly label?: string;\n /** Placeholder text when no value is selected */\n readonly placeholder?: string;\n /** Disabled state */\n readonly disabled?: boolean;\n /** Custom render for each option row */\n readonly renderOption?: (\n option: SelectOption,\n state: { readonly isSelected: boolean; readonly isFocused: boolean }\n ) => React.ReactNode;\n /** Custom render for the trigger display text */\n readonly renderValue?: (option: SelectOption | undefined) => React.ReactNode;\n /** Size variant. @default 'md' */\n readonly size?: 'sm' | 'md';\n /** Container style override */\n readonly style?: ViewStyle | ViewStyle[];\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nexport function getSelectStyles(\n tokens: ResolvedTokens,\n disabled: boolean,\n size: 'sm' | 'md',\n isOpen: boolean,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const isSm = size === 'sm';\n const fontSize = isSm ? tokens.typography.fontSizes['04'] : tokens.typography.fontSizes['05'];\n const iconSize = fontSize + 2;\n const iconSpace = iconSize + tokens.spacing['08'];\n const paddingVertical = isSm ? tokens.spacing['04'] : tokens.spacing['08'];\n const paddingHorizontal = isSm ? tokens.spacing['08'] : tokens.spacing['12'];\n\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n zIndex: isOpen ? 999 : 0,\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: at.fontTertiary,\n },\n trigger: {\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: at.fontSecondary,\n borderWidth: 1,\n borderColor: at.fontSecondary,\n borderRadius: tokens.radius.md,\n paddingVertical,\n paddingLeft: paddingHorizontal,\n paddingRight: iconSpace + (isSm ? tokens.spacing['04'] : tokens.spacing['08']),\n opacity: disabled ? 0.5 : 1,\n },\n triggerText: {\n flex: 1,\n fontFamily: tokens.typography.fonts.main.family,\n fontSize,\n color: disabled ? at.fontTertiary : at.divider,\n },\n iconWrapper: {\n position: 'absolute',\n right: isSm ? tokens.spacing['04'] : tokens.spacing['08'],\n top: 0,\n bottom: 0,\n justifyContent: 'center',\n },\n groupLabel: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['01'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: at.fontTertiary,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n paddingVertical: tokens.spacing['04'],\n paddingHorizontal: isSm ? tokens.spacing['08'] : tokens.spacing['12'],\n paddingTop: tokens.spacing['08'],\n },\n });\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport type { SelectOption } from './Select.types';\n\ninterface UseSelectOptions {\n readonly flatOptions: readonly SelectOption[];\n readonly value: string;\n readonly isOpen: boolean;\n readonly onSelect: (value: string) => void;\n readonly onClose: () => void;\n readonly onOpen: () => void;\n}\n\nfunction findNextEnabled(\n options: readonly SelectOption[],\n startIndex: number,\n direction: 1 | -1\n): number {\n const len = options.length;\n if (len === 0) return -1;\n\n for (let i = 1; i <= len; i++) {\n const idx = (startIndex + i * direction + len) % len;\n if (!options[idx].disabled) return idx;\n }\n return -1;\n}\n\nexport function useSelect({\n flatOptions,\n value,\n isOpen,\n onSelect,\n onClose,\n onOpen,\n}: UseSelectOptions) {\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const typeAheadRef = useRef('');\n const typeAheadTimerRef = useRef<ReturnType<typeof setTimeout>>();\n\n // When opening, focus the selected option or first enabled option\n useEffect(() => {\n if (isOpen) {\n const selectedIdx = flatOptions.findIndex((o) => o.value === value);\n if (selectedIdx >= 0 && !flatOptions[selectedIdx].disabled) {\n setFocusedIndex(selectedIdx);\n } else {\n const firstEnabled = flatOptions.findIndex((o) => !o.disabled);\n setFocusedIndex(firstEnabled >= 0 ? firstEnabled : -1);\n }\n } else {\n setFocusedIndex(-1);\n }\n }, [isOpen, flatOptions, value]);\n\n const handleKeyDown = useCallback(\n (e: any) => {\n const key: string = e.key;\n\n // When closed, open on ArrowDown/ArrowUp/Enter/Space\n if (!isOpen) {\n if (key === 'ArrowDown' || key === 'ArrowUp' || key === 'Enter' || key === ' ') {\n e.preventDefault();\n onOpen();\n }\n return;\n }\n\n switch (key) {\n case 'ArrowDown': {\n e.preventDefault();\n const next = findNextEnabled(flatOptions, focusedIndex, 1);\n if (next >= 0) setFocusedIndex(next);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const prev = findNextEnabled(flatOptions, focusedIndex, -1);\n if (prev >= 0) setFocusedIndex(prev);\n break;\n }\n case 'Enter':\n case ' ': {\n e.preventDefault();\n if (focusedIndex >= 0 && !flatOptions[focusedIndex].disabled) {\n onSelect(flatOptions[focusedIndex].value);\n }\n break;\n }\n case 'Escape': {\n e.preventDefault();\n onClose();\n break;\n }\n case 'Home': {\n e.preventDefault();\n const first = flatOptions.findIndex((o) => !o.disabled);\n if (first >= 0) setFocusedIndex(first);\n break;\n }\n case 'End': {\n e.preventDefault();\n const lastEnabled = [...flatOptions].reverse().findIndex((o) => !o.disabled);\n if (lastEnabled >= 0) setFocusedIndex(flatOptions.length - 1 - lastEnabled);\n break;\n }\n default: {\n // Type-ahead: single character matching\n if (key.length === 1 && !e.ctrlKey && !e.metaKey) {\n clearTimeout(typeAheadTimerRef.current);\n typeAheadRef.current += key.toLowerCase();\n\n const match = flatOptions.findIndex(\n (o) => !o.disabled && o.label.toLowerCase().startsWith(typeAheadRef.current)\n );\n if (match >= 0) setFocusedIndex(match);\n\n typeAheadTimerRef.current = setTimeout(() => {\n typeAheadRef.current = '';\n }, 500);\n }\n break;\n }\n }\n },\n [isOpen, focusedIndex, flatOptions, onSelect, onClose, onOpen]\n );\n\n return { focusedIndex, handleKeyDown };\n}\n","import React from 'react';\nimport { Pressable, Text, View } from 'react-native';\nimport type { SelectOption as SelectOptionType, SelectProps } from './Select.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { Icon } from '../../../primitives/Icon/Icon';\n\ninterface SelectOptionRowProps {\n readonly option: SelectOptionType;\n readonly isSelected: boolean;\n readonly isFocused: boolean;\n readonly onSelect: () => void;\n readonly renderOption?: SelectProps['renderOption'];\n readonly size: 'sm' | 'md';\n}\n\nexport function SelectOptionRow({\n option,\n isSelected,\n isFocused,\n onSelect,\n renderOption,\n size,\n}: SelectOptionRowProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n const at = tokens.colors[frameCtx?.theme ?? 'primary'][frameCtx?.appearance ?? 'main'];\n const emphasisAt = tokens.colors[frameCtx?.theme ?? 'primary'].emphasis;\n\n const paddingVertical = size === 'sm' ? tokens.spacing['04'] : tokens.spacing['08'];\n const paddingHorizontal = size === 'sm' ? tokens.spacing['08'] : tokens.spacing['12'];\n const fontSize = size === 'sm' ? tokens.typography.fontSizes['04'] : tokens.typography.fontSizes['05'];\n\n if (renderOption) {\n return (\n <Pressable\n onPress={option.disabled ? undefined : onSelect}\n disabled={option.disabled}\n role=\"option\"\n accessibilityState={{ selected: isSelected }}\n >\n {renderOption(option, { isSelected, isFocused })}\n </Pressable>\n );\n }\n\n return (\n <Pressable\n onPress={option.disabled ? undefined : onSelect}\n disabled={option.disabled}\n role=\"option\"\n accessibilityState={{ selected: isSelected }}\n style={({ pressed }) => [\n {\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n justifyContent: 'space-between' as const,\n paddingVertical,\n paddingHorizontal,\n },\n isSelected && {\n backgroundColor: at.fontSecondary,\n },\n isFocused &&\n !isSelected && {\n backgroundColor: `${at.fontSecondary}20`,\n },\n option.disabled && {\n opacity: 0.5,\n },\n pressed && {\n opacity: 0.7,\n },\n ]}\n >\n <Text\n style={[\n {\n flex: 1,\n fontFamily: tokens.typography.fonts.main.family,\n fontSize,\n color: at.divider,\n },\n isSelected && {\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: emphasisAt.divider,\n },\n option.disabled && {\n color: at.fontTertiary,\n },\n ]}\n numberOfLines={1}\n >\n {option.label}\n </Text>\n {isSelected && (\n <View style={{ marginLeft: tokens.spacing['08'] }}>\n <Icon\n name=\"check\"\n size={fontSize}\n color={emphasisAt.divider}\n />\n </View>\n )}\n </Pressable>\n );\n}\n","import React, { useMemo } from 'react';\nimport { View, Text, Pressable, ScrollView } from 'react-native';\nimport type { SelectProps, SelectOption } from './Select.types';\nimport { isOptionGroup } from './Select.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getSelectStyles } from './Select.styles';\nimport { Icon } from '../../../primitives/Icon/Icon';\nimport { Popover } from '../../overlays/Popover/Popover';\nimport { usePopover } from '../../overlays/Popover/usePopover';\nimport { useSelect } from './useSelect';\nimport { SelectOptionRow } from './SelectOption';\n\nfunction flattenOptions(items: readonly (SelectOption | { readonly label: string; readonly options: readonly SelectOption[] })[]): SelectOption[] {\n const result: SelectOption[] = [];\n for (const item of items) {\n if ('options' in item) {\n result.push(...item.options);\n } else {\n result.push(item);\n }\n }\n return result;\n}\n\nexport function Select({\n options,\n value,\n onValueChange,\n label,\n placeholder,\n disabled = false,\n renderOption,\n renderValue,\n size = 'md',\n style,\n}: SelectProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n const { isOpen, open, close, toggle } = usePopover();\n\n const flatOptions = useMemo(() => flattenOptions(options), [options]);\n\n const { focusedIndex, handleKeyDown } = useSelect({\n flatOptions,\n value,\n isOpen,\n onSelect: (v) => {\n onValueChange(v);\n close();\n },\n onClose: close,\n onOpen: open,\n });\n\n const inheritedTheme = frameCtx?.theme;\n const inheritedAppearance = frameCtx?.appearance;\n\n const styles = useMemo(\n () => getSelectStyles(tokens, disabled, size, isOpen, inheritedTheme, inheritedAppearance),\n [tokens, disabled, size, isOpen, inheritedTheme, inheritedAppearance]\n );\n\n const selectedOption = flatOptions.find((o) => o.value === value);\n const displayLabel = selectedOption?.label ?? placeholder ?? value;\n\n const at = tokens.colors[inheritedTheme ?? 'primary'][inheritedAppearance ?? 'main'];\n const iconColor = disabled ? at.fontTertiary : at.divider;\n\n // onKeyDown is a web-only prop supported by react-native-web but not in RN types\n const triggerWebProps = { onKeyDown: handleKeyDown } as any;\n\n const trigger = (\n <Pressable\n onPress={disabled ? undefined : toggle}\n disabled={disabled}\n role=\"combobox\"\n accessibilityState={{ expanded: isOpen }}\n {...triggerWebProps}\n style={styles.trigger}\n >\n {renderValue ? (\n renderValue(selectedOption)\n ) : (\n <Text style={styles.triggerText} numberOfLines={1}>\n {displayLabel}\n </Text>\n )}\n <View style={styles.iconWrapper} pointerEvents=\"none\">\n <Icon\n name={isOpen ? 'expand_less' : 'expand_more'}\n size={size === 'sm' ? tokens.typography.fontSizes['04'] + 2 : tokens.typography.fontSizes['05'] + 2}\n color={iconColor}\n />\n </View>\n </Pressable>\n );\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : style ? [style] : [])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <Popover\n isOpen={isOpen && !disabled}\n onClose={close}\n trigger={trigger}\n >\n <ScrollView\n bounces={false}\n keyboardShouldPersistTaps=\"handled\"\n role={'listbox' as any}\n >\n {options.map((item) => {\n if (isOptionGroup(item)) {\n return (\n <View key={item.label}>\n <Text style={styles.groupLabel}>{item.label}</Text>\n {item.options.map((opt) => (\n <SelectOptionRow\n key={opt.value}\n option={opt}\n isSelected={opt.value === value}\n isFocused={flatOptions[focusedIndex]?.value === opt.value}\n onSelect={() => {\n onValueChange(opt.value);\n close();\n }}\n renderOption={renderOption}\n size={size}\n />\n ))}\n </View>\n );\n }\n return (\n <SelectOptionRow\n key={item.value}\n option={item}\n isSelected={item.value === value}\n isFocused={flatOptions[focusedIndex]?.value === item.value}\n onSelect={() => {\n onValueChange(item.value);\n close();\n }}\n renderOption={renderOption}\n size={size}\n />\n );\n })}\n </ScrollView>\n </Popover>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nconst TRACK_WIDTH = 40;\nconst TRACK_HEIGHT = 22;\nconst THUMB_SIZE = 18;\nconst THUMB_OFFSET = 2;\n\nexport function getToggleStyles(\n tokens: ResolvedTokens,\n value: boolean,\n disabled: boolean,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const emphasisAt: AppearanceTokens = tokens.colors[theme].emphasis;\n return StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: tokens.spacing['08'],\n opacity: disabled ? 0.5 : 1,\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: at.fontTertiary,\n },\n track: {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n backgroundColor: value\n ? emphasisAt.divider\n : at.fontSecondary,\n justifyContent: 'center',\n paddingHorizontal: THUMB_OFFSET,\n },\n thumb: {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: at.background,\n alignSelf: value ? 'flex-end' : 'flex-start',\n },\n });\n}\n","import React from 'react';\nimport { View, Text, Pressable } from 'react-native';\nimport type { ToggleProps } from './Toggle.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getToggleStyles } from './Toggle.styles';\n\nexport function Toggle({\n value,\n onValueChange,\n label,\n disabled = false,\n style,\n}: ToggleProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n\n const styles = React.useMemo(\n () => getToggleStyles(tokens, value, disabled, frameCtx?.theme, frameCtx?.appearance),\n [tokens, value, disabled, frameCtx?.theme, frameCtx?.appearance]\n );\n\n const handlePress = React.useCallback(() => {\n if (!disabled) {\n onValueChange(!value);\n }\n }, [disabled, value, onValueChange]);\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <Pressable\n onPress={handlePress}\n disabled={disabled}\n accessibilityRole=\"switch\"\n accessibilityState={{ checked: value, disabled }}\n >\n <View style={styles.track}>\n <View style={styles.thumb} />\n </View>\n </Pressable>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\n\nconst TRACK_HEIGHT = 6;\nexport const THUMB_SIZE = 16;\n\nexport function getSliderStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n opacity: disabled ? 0.5 : 1,\n },\n labelRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.fontTertiary,\n },\n value: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.divider,\n },\n valueInput: {\n width: 48,\n paddingVertical: 0,\n paddingHorizontal: 4,\n borderWidth: 1,\n borderColor: tokens.colors.primary.main.fontSecondary,\n borderRadius: 4,\n backgroundColor: 'transparent',\n color: tokens.colors.primary.main.divider,\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n textAlign: 'right',\n },\n trackContainer: {\n height: TRACK_HEIGHT + THUMB_SIZE,\n justifyContent: 'center',\n position: 'relative',\n },\n trackRail: {\n position: 'absolute',\n left: 0,\n right: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n backgroundColor: tokens.colors.primary.main.fontSecondary,\n },\n trackFill: {\n position: 'absolute',\n left: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n backgroundColor: tokens.colors.primary.emphasis.divider,\n },\n thumb: {\n position: 'absolute',\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: tokens.colors.primary.emphasis.divider,\n },\n });\n}\n","import React from 'react';\nimport { View, Text, TextInput, PanResponder } from 'react-native';\nimport type { SliderProps } from './Slider.types';\nimport { useTokens } from 'newtone-api';\nimport { getSliderStyles, THUMB_SIZE } from './Slider.styles';\n\nexport function Slider({\n value,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n label,\n showValue = false,\n editableValue = false,\n disabled = false,\n style,\n}: SliderProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getSliderStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n const trackRef = React.useRef<View>(null);\n const trackWidth = React.useRef(0);\n const trackPageX = React.useRef(0);\n const [layoutWidth, setLayoutWidth] = React.useState(0);\n\n // Mutable refs to avoid stale closures in PanResponder\n const onValueChangeRef = React.useRef(onValueChange);\n const minRef = React.useRef(min);\n const maxRef = React.useRef(max);\n const stepRef = React.useRef(step);\n const disabledRef = React.useRef(disabled);\n\n React.useEffect(() => { onValueChangeRef.current = onValueChange; }, [onValueChange]);\n React.useEffect(() => { minRef.current = min; }, [min]);\n React.useEffect(() => { maxRef.current = max; }, [max]);\n React.useEffect(() => { stepRef.current = step; }, [step]);\n React.useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n\n const computeValue = React.useCallback((pageX: number) => {\n const localX = pageX - trackPageX.current;\n const ratio = Math.min(1, Math.max(0, localX / trackWidth.current));\n const raw = minRef.current + ratio * (maxRef.current - minRef.current);\n const stepped = Math.round(raw / stepRef.current) * stepRef.current;\n return Math.min(maxRef.current, Math.max(minRef.current, stepped));\n }, []);\n\n const panResponder = React.useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabledRef.current,\n onMoveShouldSetPanResponder: () => !disabledRef.current,\n onPanResponderGrant: (evt) => {\n onValueChangeRef.current(computeValue(evt.nativeEvent.pageX));\n },\n onPanResponderMove: (_evt, gestureState) => {\n onValueChangeRef.current(computeValue(gestureState.moveX));\n },\n })\n ).current;\n\n const ratio = max > min ? (value - min) / (max - min) : 0;\n const usableWidth = Math.max(0, layoutWidth - THUMB_SIZE);\n const thumbLeft = ratio * usableWidth;\n\n // Center-origin fill: when range spans zero, fill extends from center to thumb\n const isCenterOrigin = min < 0 && max > 0;\n let fillLeft: number;\n let fillWidth: number;\n if (isCenterOrigin) {\n const centerRatio = (0 - min) / (max - min);\n const centerX = centerRatio * usableWidth + THUMB_SIZE / 2;\n const thumbCenterX = thumbLeft + THUMB_SIZE / 2;\n fillLeft = Math.min(centerX, thumbCenterX);\n fillWidth = Math.abs(thumbCenterX - centerX);\n } else {\n fillLeft = 0;\n fillWidth = thumbLeft + THUMB_SIZE / 2;\n }\n\n const handleValueTextSubmit = React.useCallback(\n (text: string) => {\n const raw = Number(text);\n if (!Number.isNaN(raw)) {\n onValueChange(Math.min(max, Math.max(min, raw)));\n }\n },\n [onValueChange, min, max]\n );\n\n const [editText, setEditText] = React.useState(String(value));\n React.useEffect(() => { setEditText(String(value)); }, [value]);\n\n const showLabel = label || showValue || editableValue;\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {showLabel && (\n <View style={styles.labelRow}>\n {label && <Text style={styles.label}>{label}</Text>}\n {editableValue ? (\n <TextInput\n style={styles.valueInput}\n value={editText}\n keyboardType=\"numeric\"\n onChangeText={setEditText}\n onSubmitEditing={(e) => handleValueTextSubmit(e.nativeEvent.text)}\n onBlur={() => handleValueTextSubmit(editText)}\n selectTextOnFocus\n editable={!disabled}\n />\n ) : (\n showValue && <Text style={styles.value}>{value}</Text>\n )}\n </View>\n )}\n <View\n ref={trackRef}\n style={styles.trackContainer}\n onLayout={(e) => {\n const w = e.nativeEvent.layout.width;\n trackWidth.current = w;\n setLayoutWidth(w);\n trackRef.current?.measure((_x, _y, _w, _h, pageX) => {\n if (pageX != null) trackPageX.current = pageX;\n });\n }}\n {...panResponder.panHandlers}\n >\n <View style={styles.trackRail} />\n <View style={[styles.trackFill, { left: fillLeft, width: fillWidth }]} />\n <View style={[styles.thumb, { left: thumbLeft }]} />\n </View>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex, gamutMapToSrgb } from 'newtone';\nimport type { ResolvedTokens } from 'newtone-api';\n\nconst TRACK_HEIGHT = 22;\nexport const THUMB_SIZE = 18;\nconst SEGMENT_COUNT = 48;\nconst OKLCH_L = 0.7;\nconst OKLCH_C = 0.4;\n\n/** Convert an OKLCH hue [0, 360) to a hex string via gamut-mapped rendering. */\nexport function hueToHex(oklchHue: number): string {\n const { color } = gamutMapToSrgb({ L: OKLCH_L, C: OKLCH_C, h: oklchHue });\n return srgbToHex(color);\n}\n\n/** Build an array of hex colors for the gradient track segments. */\nexport function buildHueSegments(min: number, max: number): string[] {\n return Array.from({ length: SEGMENT_COUNT }, (_, i) => {\n const hue = min + (max - min) * (i / (SEGMENT_COUNT - 1));\n return hueToHex(hue);\n });\n}\n\nexport function getHueSliderStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n opacity: disabled ? 0.5 : 1,\n },\n labelRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.fontTertiary,\n },\n value: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.divider,\n },\n valueInput: {\n width: 48,\n paddingVertical: 0,\n paddingHorizontal: 4,\n borderWidth: 1,\n borderColor: tokens.colors.primary.main.fontSecondary,\n borderRadius: 4,\n backgroundColor: 'transparent',\n color: tokens.colors.primary.main.divider,\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n textAlign: 'right',\n },\n trackContainer: {\n height: TRACK_HEIGHT + THUMB_SIZE,\n justifyContent: 'center',\n position: 'relative',\n },\n gradientTrack: {\n position: 'absolute',\n left: 0,\n right: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n flexDirection: 'row',\n overflow: 'hidden',\n },\n segment: {\n flex: 1,\n },\n thumb: {\n position: 'absolute',\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: '#ffffff',\n borderWidth: 2,\n borderColor: tokens.colors.primary.main.fontSecondary,\n },\n });\n}\n","import React from 'react';\nimport { View, Text, TextInput, PanResponder } from 'react-native';\nimport type { HueSliderProps } from './HueSlider.types';\nimport { useTokens } from 'newtone-api';\nimport {\n getHueSliderStyles,\n buildHueSegments,\n THUMB_SIZE,\n} from './HueSlider.styles';\n\n/**\n * Hue slider with rainbow gradient track.\n *\n * Value range: OKLCH hue [0, 360).\n *\n * Optional min/max constrain the selectable range.\n * For wrapping ranges, max may exceed 360;\n * the returned value is always normalized to [0, 360).\n */\nexport function HueSlider({\n value,\n onValueChange,\n min = 0,\n max = 360,\n label,\n showValue = false,\n editableValue = false,\n disabled = false,\n style,\n}: HueSliderProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getHueSliderStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n const segments = React.useMemo(\n () => buildHueSegments(min, max),\n [min, max]\n );\n\n const trackRef = React.useRef<View>(null);\n const trackWidth = React.useRef(0);\n const trackPageX = React.useRef(0);\n const [layoutWidth, setLayoutWidth] = React.useState(0);\n\n // Mutable refs to avoid stale closures in PanResponder\n const onValueChangeRef = React.useRef(onValueChange);\n const minRef = React.useRef(min);\n const maxRef = React.useRef(max);\n const disabledRef = React.useRef(disabled);\n\n React.useEffect(() => { onValueChangeRef.current = onValueChange; }, [onValueChange]);\n React.useEffect(() => { minRef.current = min; }, [min]);\n React.useEffect(() => { maxRef.current = max; }, [max]);\n React.useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n\n const computeHue = React.useCallback((pageX: number) => {\n const localX = pageX - trackPageX.current;\n const ratio = Math.min(1, Math.max(0, localX / trackWidth.current));\n const raw = minRef.current + ratio * (maxRef.current - minRef.current);\n const stepped = Math.round(raw);\n return ((stepped % 360) + 360) % 360;\n }, []);\n\n const panResponder = React.useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabledRef.current,\n onMoveShouldSetPanResponder: () => !disabledRef.current,\n onPanResponderGrant: (evt) => {\n onValueChangeRef.current(computeHue(evt.nativeEvent.pageX));\n },\n onPanResponderMove: (_evt, gestureState) => {\n onValueChangeRef.current(computeHue(gestureState.moveX));\n },\n })\n ).current;\n\n // For wrapping ranges (max > 360), convert stored value to slider range\n const sliderValue = max > 360 && value < min ? value + 360 : value;\n const ratio = max > min ? (sliderValue - min) / (max - min) : 0;\n const usableWidth = Math.max(0, layoutWidth - THUMB_SIZE);\n const thumbLeft = ratio * usableWidth;\n\n const handleValueTextSubmit = React.useCallback(\n (text: string) => {\n const raw = Number(text);\n if (!Number.isNaN(raw)) {\n onValueChange(((raw % 360) + 360) % 360);\n }\n },\n [onValueChange]\n );\n\n const [editText, setEditText] = React.useState(String(value));\n React.useEffect(() => { setEditText(String(value)); }, [value]);\n\n const showLabel = label || showValue || editableValue;\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {showLabel && (\n <View style={styles.labelRow}>\n {label && <Text style={styles.label}>{label}</Text>}\n {editableValue ? (\n <TextInput\n style={styles.valueInput}\n value={editText}\n keyboardType=\"numeric\"\n onChangeText={setEditText}\n onSubmitEditing={(e) => handleValueTextSubmit(e.nativeEvent.text)}\n onBlur={() => handleValueTextSubmit(editText)}\n selectTextOnFocus\n editable={!disabled}\n />\n ) : (\n showValue && <Text style={styles.value}>{value}°</Text>\n )}\n </View>\n )}\n <View\n ref={trackRef}\n style={styles.trackContainer}\n onLayout={(e) => {\n const w = e.nativeEvent.layout.width;\n trackWidth.current = w;\n setLayoutWidth(w);\n trackRef.current?.measure((_x, _y, _w, _h, pageX) => {\n if (pageX != null) trackPageX.current = pageX;\n });\n }}\n {...panResponder.panHandlers}\n >\n <View style={styles.gradientTrack}>\n {segments.map((color, i) => (\n <View key={i} style={[styles.segment, { backgroundColor: color }]} />\n ))}\n </View>\n <View style={[styles.thumb, { left: thumbLeft }]} />\n </View>\n </View>\n );\n}\n","// ── sRGB Gamma Transfer (IEC 61966-2-1) ──\n\nexport const SRGB_GAMMA_THRESHOLD = 0.04045;\nexport const SRGB_GAMMA_THRESHOLD_LINEAR = 0.0031308;\nexport const SRGB_GAMMA_SLOPE = 12.92;\nexport const SRGB_GAMMA_EXPONENT = 2.4;\nexport const SRGB_GAMMA_OFFSET = 0.055;\nexport const SRGB_GAMMA_SCALE = 1.055;\n\n// ── Ottosson M1: Linear sRGB → LMS ──\n\nexport const LINEAR_SRGB_TO_LMS = [\n [0.4122214708, 0.5363325363, 0.0514459929],\n [0.2119034982, 0.6806995451, 0.1073969566],\n [0.0883024619, 0.2817188376, 0.6299787005],\n] as const;\n\n// ── Ottosson M2: LMS′ (cube-root) → OKLAB ──\n\nexport const LMS_PRIME_TO_OKLAB = [\n [+0.2104542553, +0.7936177850, -0.0040720468],\n [+1.9779984951, -2.4285922050, +0.4505937099],\n [+0.0259040371, +0.7827717662, -0.8086757660],\n] as const;\n\n// ── Inverse M2: OKLAB → LMS′ ──\n\nexport const OKLAB_TO_LMS_PRIME = [\n [1.0000000000, +0.3963377774, +0.2158037573],\n [1.0000000000, -0.1055613458, -0.0638541728],\n [1.0000000000, -0.0894841775, -1.2914855480],\n] as const;\n\n// ── Inverse M1: LMS → Linear sRGB ──\n\nexport const LMS_TO_LINEAR_SRGB = [\n [+4.0767416621, -3.3077115913, +0.2309699292],\n [-1.2684380046, +2.6097574011, -0.3413193965],\n [-0.0041960863, -0.7034186147, +1.7076147010],\n] as const;\n\n// ── Display P3 M1: Linear Display P3 → LMS ──\n// Derived: XYZ_to_LMS × P3_to_XYZ, where XYZ_to_LMS = M1_srgb × inv(sRGB_to_XYZ)\n\nexport const LINEAR_P3_TO_LMS = [\n [+0.4813791595, +0.4621155872, +0.0565406381],\n [+0.2288319169, +0.6532167007, +0.1179528072],\n [+0.0839457149, +0.2241651052, +0.6918912614],\n] as const;\n\n// ── Inverse P3 M1: LMS → Linear Display P3 ──\n\nexport const LMS_TO_LINEAR_P3 = [\n [+3.1277694390, -2.2570600176, +0.1291828502],\n [-1.0910091977, +2.4133065499, -0.3222615148],\n [-0.0260108068, -0.5080402362, +1.5340494942],\n] as const;\n\n// ── Gamut Mapping ──\n\nexport const GAMUT_EPSILON = 1e-6;\nexport const GAMUT_MAP_JND = 0.02;\nexport const GAMUT_MAP_EPSILON = 1e-4;\nexport const GAMUT_MAP_MAX_ITERATIONS = 50;\n\n// ── Achromatic Threshold ──\n\nexport const ACHROMATIC_THRESHOLD = 1e-10;\n\n// ── WCAG 2.x Luminance Coefficients ──\n\nexport const WCAG_R = 0.2126;\nexport const WCAG_G = 0.7152;\nexport const WCAG_B = 0.0722;\n\n// ── APCA-W3 (SA98G) Constants ──\n\nexport const APCA_MAIN_TRC = 2.4;\nexport const APCA_SRGB_R = 0.2126729;\nexport const APCA_SRGB_G = 0.7151522;\nexport const APCA_SRGB_B = 0.0721750;\nexport const APCA_NORM_BG = 0.56;\nexport const APCA_NORM_TXT = 0.57;\nexport const APCA_REV_TXT = 0.62;\nexport const APCA_REV_BG = 0.65;\nexport const APCA_BLK_THRS = 0.022;\nexport const APCA_BLK_CLMP = 1.414;\nexport const APCA_SCALE_BOW = 1.14;\nexport const APCA_SCALE_WOB = 1.14;\nexport const APCA_LO_BOW_OFFSET = 0.027;\nexport const APCA_LO_WOB_OFFSET = 0.027;\nexport const APCA_DELTA_Y_MIN = 0.0005;\nexport const APCA_LO_CLIP = 0.1;\n\n// ── Angle Math ──\n\nexport const DEG_TO_RAD = Math.PI / 180;\nexport const RAD_TO_DEG = 180 / Math.PI;\n","import type { Oklab, Oklch } from \"../types.js\";\nimport { ACHROMATIC_THRESHOLD, DEG_TO_RAD, RAD_TO_DEG } from \"../constants.js\";\n\n/** Convert OKLAB (cartesian) to OKLCH (cylindrical). Achromatic colors get h=0. */\nexport function oklabToOklch(lab: Oklab): Oklch {\n const C = Math.sqrt(lab.a * lab.a + lab.b * lab.b);\n\n if (C < ACHROMATIC_THRESHOLD) {\n return { L: lab.L, C: 0, h: 0 };\n }\n\n let h = Math.atan2(lab.b, lab.a) * RAD_TO_DEG;\n if (h < 0) h += 360;\n\n return { L: lab.L, C, h };\n}\n\n/** Convert OKLCH (cylindrical) to OKLAB (cartesian). */\nexport function oklchToOklab(lch: Oklch): Oklab {\n const hRad = lch.h * DEG_TO_RAD;\n return {\n L: lch.L,\n a: lch.C * Math.cos(hRad),\n b: lch.C * Math.sin(hRad),\n };\n}\n","import type { LinearSrgb, Oklab } from \"../types.js\";\nimport {\n LINEAR_P3_TO_LMS,\n LMS_PRIME_TO_OKLAB,\n LMS_TO_LINEAR_P3,\n OKLAB_TO_LMS_PRIME,\n} from \"../constants.js\";\n\n/** Convert Linear Display P3 to OKLAB via P3-specific M1 + shared M2. */\nexport function linearP3ToOklab(color: LinearSrgb): Oklab {\n // Step 1: Linear P3 → LMS\n const l =\n LINEAR_P3_TO_LMS[0][0] * color.r +\n LINEAR_P3_TO_LMS[0][1] * color.g +\n LINEAR_P3_TO_LMS[0][2] * color.b;\n const m =\n LINEAR_P3_TO_LMS[1][0] * color.r +\n LINEAR_P3_TO_LMS[1][1] * color.g +\n LINEAR_P3_TO_LMS[1][2] * color.b;\n const s =\n LINEAR_P3_TO_LMS[2][0] * color.r +\n LINEAR_P3_TO_LMS[2][1] * color.g +\n LINEAR_P3_TO_LMS[2][2] * color.b;\n\n // Step 2: Cube root\n const lp = Math.cbrt(l);\n const mp = Math.cbrt(m);\n const sp = Math.cbrt(s);\n\n // Step 3: LMS′ → OKLAB (shared M2)\n return {\n L:\n LMS_PRIME_TO_OKLAB[0][0] * lp +\n LMS_PRIME_TO_OKLAB[0][1] * mp +\n LMS_PRIME_TO_OKLAB[0][2] * sp,\n a:\n LMS_PRIME_TO_OKLAB[1][0] * lp +\n LMS_PRIME_TO_OKLAB[1][1] * mp +\n LMS_PRIME_TO_OKLAB[1][2] * sp,\n b:\n LMS_PRIME_TO_OKLAB[2][0] * lp +\n LMS_PRIME_TO_OKLAB[2][1] * mp +\n LMS_PRIME_TO_OKLAB[2][2] * sp,\n };\n}\n\n/** Convert OKLAB to Linear Display P3 via shared inverse M2 + P3-specific inverse M1. */\nexport function oklabToLinearP3(color: Oklab): LinearSrgb {\n // Step 1: OKLAB → LMS′ (shared inverse M2)\n const lp =\n OKLAB_TO_LMS_PRIME[0][0] * color.L +\n OKLAB_TO_LMS_PRIME[0][1] * color.a +\n OKLAB_TO_LMS_PRIME[0][2] * color.b;\n const mp =\n OKLAB_TO_LMS_PRIME[1][0] * color.L +\n OKLAB_TO_LMS_PRIME[1][1] * color.a +\n OKLAB_TO_LMS_PRIME[1][2] * color.b;\n const sp =\n OKLAB_TO_LMS_PRIME[2][0] * color.L +\n OKLAB_TO_LMS_PRIME[2][1] * color.a +\n OKLAB_TO_LMS_PRIME[2][2] * color.b;\n\n // Step 2: Cube\n const l = lp * lp * lp;\n const m = mp * mp * mp;\n const s = sp * sp * sp;\n\n // Step 3: LMS → Linear P3\n return {\n r:\n LMS_TO_LINEAR_P3[0][0] * l +\n LMS_TO_LINEAR_P3[0][1] * m +\n LMS_TO_LINEAR_P3[0][2] * s,\n g:\n LMS_TO_LINEAR_P3[1][0] * l +\n LMS_TO_LINEAR_P3[1][1] * m +\n LMS_TO_LINEAR_P3[1][2] * s,\n b:\n LMS_TO_LINEAR_P3[2][0] * l +\n LMS_TO_LINEAR_P3[2][1] * m +\n LMS_TO_LINEAR_P3[2][2] * s,\n };\n}\n","import type { LinearSrgb, Srgb } from \"../types.js\";\nimport {\n SRGB_GAMMA_EXPONENT,\n SRGB_GAMMA_OFFSET,\n SRGB_GAMMA_SCALE,\n SRGB_GAMMA_SLOPE,\n SRGB_GAMMA_THRESHOLD,\n SRGB_GAMMA_THRESHOLD_LINEAR,\n} from \"../constants.js\";\n\n/** Decode a single sRGB gamma-encoded channel to linear light. */\nexport function srgbChannelToLinear(value: number): number {\n return value <= SRGB_GAMMA_THRESHOLD\n ? value / SRGB_GAMMA_SLOPE\n : ((value + SRGB_GAMMA_OFFSET) / SRGB_GAMMA_SCALE) ** SRGB_GAMMA_EXPONENT;\n}\n\n/** Encode a single linear light channel to sRGB gamma. */\nexport function linearChannelToSrgb(value: number): number {\n return value <= SRGB_GAMMA_THRESHOLD_LINEAR\n ? value * SRGB_GAMMA_SLOPE\n : SRGB_GAMMA_SCALE * value ** (1 / SRGB_GAMMA_EXPONENT) - SRGB_GAMMA_OFFSET;\n}\n\n/** Convert an sRGB color to Linear sRGB. */\nexport function srgbToLinearSrgb(color: Srgb): LinearSrgb {\n return {\n r: srgbChannelToLinear(color.r),\n g: srgbChannelToLinear(color.g),\n b: srgbChannelToLinear(color.b),\n };\n}\n\n/** Convert a Linear sRGB color to sRGB. */\nexport function linearSrgbToSrgb(color: LinearSrgb): Srgb {\n return {\n r: linearChannelToSrgb(color.r),\n g: linearChannelToSrgb(color.g),\n b: linearChannelToSrgb(color.b),\n };\n}\n","import type { Hex, Oklab, Oklch, Srgb } from \"../types.js\";\nimport { oklabToOklch, oklchToOklab } from \"./oklab.js\";\nimport { linearSrgbToOklab, oklabToLinearSrgb } from \"./linear-srgb.js\";\nimport { linearP3ToOklab, oklabToLinearP3 } from \"./linear-p3.js\";\nimport { linearSrgbToSrgb, srgbToLinearSrgb } from \"./srgb.js\";\nimport { hexToSrgb, srgbToHex } from \"./hex.js\";\n\n/** Convert sRGB to OKLCH. */\nexport function srgbToOklch(color: Srgb): Oklch {\n return oklabToOklch(linearSrgbToOklab(srgbToLinearSrgb(color)));\n}\n\n/** Convert OKLCH to sRGB. May produce out-of-gamut values (channels outside [0,1]). */\nexport function oklchToSrgb(color: Oklch): Srgb {\n return linearSrgbToSrgb(oklabToLinearSrgb(oklchToOklab(color)));\n}\n\n/** Convert sRGB to OKLAB. */\nexport function srgbToOklab(color: Srgb): Oklab {\n return linearSrgbToOklab(srgbToLinearSrgb(color));\n}\n\n/** Convert OKLAB to sRGB. May produce out-of-gamut values. */\nexport function oklabToSrgb(color: Oklab): Srgb {\n return linearSrgbToSrgb(oklabToLinearSrgb(color));\n}\n\n/** Convert hex to OKLCH. */\nexport function hexToOklch(hex: string): Oklch {\n return srgbToOklch(hexToSrgb(hex));\n}\n\n/** Convert OKLCH to hex. Clamps to sRGB gamut before hex encoding. */\nexport function oklchToHex(color: Oklch): Hex {\n const srgb = oklchToSrgb(color);\n return srgbToHex({\n r: Math.max(0, Math.min(1, srgb.r)),\n g: Math.max(0, Math.min(1, srgb.g)),\n b: Math.max(0, Math.min(1, srgb.b)),\n });\n}\n\n/** Convert Display P3 to OKLCH. */\nexport function p3ToOklch(color: Srgb): Oklch {\n return oklabToOklch(linearP3ToOklab(srgbToLinearSrgb(color)));\n}\n\n/** Convert OKLCH to Display P3. May produce out-of-gamut values (channels outside [0,1]). */\nexport function oklchToP3(color: Oklch): Srgb {\n return linearSrgbToSrgb(oklabToLinearP3(oklchToOklab(color)));\n}\n\n/** Convert OKLCH to a CSS `color(display-p3 r g b)` string. Clamps channels to [0,1]. */\nexport function oklchToP3Css(color: Oklch): string {\n const p3 = oklchToP3(color);\n const r = Math.max(0, Math.min(1, p3.r)).toFixed(4);\n const g = Math.max(0, Math.min(1, p3.g)).toFixed(4);\n const b = Math.max(0, Math.min(1, p3.b)).toFixed(4);\n return `color(display-p3 ${r} ${g} ${b})`;\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\n\nconst TRACK_HEIGHT = 22;\nexport const THUMB_SIZE = 18;\n\nexport function getColorScaleSliderStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n opacity: disabled ? 0.5 : 1,\n },\n labelRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.fontTertiary,\n },\n trackContainer: {\n height: TRACK_HEIGHT + THUMB_SIZE,\n justifyContent: 'center',\n position: 'relative',\n },\n gradientTrack: {\n position: 'absolute',\n left: 0,\n right: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n flexDirection: 'row',\n overflow: 'hidden',\n },\n segment: {\n flex: 1,\n },\n thumb: {\n position: 'absolute',\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: '#ffffff',\n borderWidth: 2,\n borderColor: tokens.colors.primary.main.fontSecondary,\n },\n warning: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['01'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.error.emphasis.divider,\n },\n });\n}\n\nexport { TRACK_HEIGHT };\n","import React from 'react';\nimport { View, Text, PanResponder, Animated } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport { oklchToP3Css } from '@newtonedev/colors';\nimport type { Oklch } from '@newtonedev/colors';\nimport type { ColorScaleSliderProps } from './ColorScaleSlider.types';\nimport { useTokens, useNewtoneTheme } from 'newtone-api';\nimport { getColorScaleSliderStyles, THUMB_SIZE } from './ColorScaleSlider.styles';\n\n/**\n * Interactive color scale slider.\n *\n * Renders an array of colors as the track (lightest on left, darkest on right)\n * with a draggable thumb. The value is a normalizedValue [0, 1] where\n * 0 = darkest (right) and 1 = lightest (left).\n *\n * Used by PalettePanel for key color selection on non-neutral palettes.\n */\nexport function ColorScaleSlider({\n colors,\n value,\n onValueChange,\n label,\n warning,\n trimEnds = false,\n snap = false,\n disabled = false,\n animateValue = false,\n useP3: _useP3,\n style,\n}: ColorScaleSliderProps) {\n const tokens = useTokens(1);\n const { gamut } = useNewtoneTheme();\n\n const styles = React.useMemo(\n () => getColorScaleSliderStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n const trackRef = React.useRef<View>(null);\n const trackWidth = React.useRef(0);\n const trackPageX = React.useRef(0);\n const isDragging = React.useRef(false);\n const thumbAnim = React.useRef(new Animated.Value(0)).current;\n const [layoutWidth, setLayoutWidth] = React.useState(0);\n\n // Mutable refs to avoid stale closures in PanResponder\n const onValueChangeRef = React.useRef(onValueChange);\n const disabledRef = React.useRef(disabled);\n const colorsLengthRef = React.useRef(colors.length);\n const trimEndsRef = React.useRef(trimEnds);\n const snapRef = React.useRef(snap);\n\n React.useEffect(() => { onValueChangeRef.current = onValueChange; }, [onValueChange]);\n React.useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n React.useEffect(() => { colorsLengthRef.current = colors.length; }, [colors.length]);\n React.useEffect(() => { trimEndsRef.current = trimEnds; }, [trimEnds]);\n React.useEffect(() => { snapRef.current = snap; }, [snap]);\n\n const computeNv = React.useCallback((pageX: number) => {\n const localX = pageX - trackPageX.current;\n const ratio = Math.min(1, Math.max(0, localX / trackWidth.current));\n const totalSteps = colorsLengthRef.current - 1;\n const minNV = trimEndsRef.current ? 1 / totalSteps : 0;\n const maxNV = trimEndsRef.current ? 1 - 1 / totalSteps : 1;\n const range = maxNV - minNV;\n\n // Left = lightest (maxNV), right = darkest (minNV)\n let nv = maxNV - ratio * range;\n\n if (snapRef.current && totalSteps > 0) {\n const stepNv = 1 / totalSteps;\n nv = Math.round(nv / stepNv) * stepNv;\n nv = Math.min(maxNV, Math.max(minNV, nv));\n }\n\n return nv;\n }, []);\n\n const panResponder = React.useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabledRef.current,\n onMoveShouldSetPanResponder: () => !disabledRef.current,\n onPanResponderGrant: (evt) => {\n isDragging.current = true;\n onValueChangeRef.current(computeNv(evt.nativeEvent.pageX));\n },\n onPanResponderMove: (_evt, gestureState) => {\n onValueChangeRef.current(computeNv(gestureState.moveX));\n },\n onPanResponderRelease: () => {\n isDragging.current = false;\n },\n onPanResponderTerminate: () => {\n isDragging.current = false;\n },\n })\n ).current;\n\n // Visible colors: trim interpolation endpoints if requested\n const visibleColors = trimEnds ? colors.slice(1, -1) : colors;\n\n // Thumb position mapped to the visible range\n const totalSteps = colors.length - 1;\n const minNV = trimEnds ? 1 / totalSteps : 0;\n const maxNV = trimEnds ? 1 - 1 / totalSteps : 1;\n const range = maxNV - minNV;\n const clampedValue = value !== undefined\n ? Math.min(maxNV, Math.max(minNV, value))\n : (maxNV + minNV) / 2;\n const ratio = range > 0 ? (maxNV - clampedValue) / range : 0.5;\n const usableWidth = Math.max(0, layoutWidth - THUMB_SIZE);\n const thumbLeft = ratio * usableWidth;\n\n // Sync animated thumb position: animate on prop-driven changes, instant during drag\n React.useEffect(() => {\n if (isDragging.current || !animateValue) {\n thumbAnim.setValue(thumbLeft);\n } else {\n Animated.timing(thumbAnim, {\n toValue: thumbLeft,\n duration: 300,\n useNativeDriver: false,\n }).start();\n }\n }, [thumbLeft, animateValue, thumbAnim]);\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && (\n <View style={styles.labelRow}>\n <Text style={styles.label}>{label}</Text>\n </View>\n )}\n <View\n ref={trackRef}\n style={styles.trackContainer}\n onLayout={(e) => {\n const w = e.nativeEvent.layout.width;\n trackWidth.current = w;\n setLayoutWidth(w);\n trackRef.current?.measure((_x, _y, _w, _h, pageX) => {\n if (pageX != null) trackPageX.current = pageX;\n });\n }}\n {...panResponder.panHandlers}\n >\n <View style={styles.gradientTrack}>\n {visibleColors.map((color, i) => (\n <View key={i} style={[styles.segment, { backgroundColor: gamut === 'p3' ? oklchToP3Css(color.oklch) : srgbToHex(color.srgb) }]} />\n ))}\n </View>\n <Animated.View style={[styles.thumb, { left: thumbAnim }]} />\n </View>\n {warning && (\n <Text style={styles.warning}>{warning}</Text>\n )}\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nexport function getAppShellStyles(\n tokens: ResolvedTokens,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n return StyleSheet.create({\n container: {\n flex: 1,\n flexDirection: 'row',\n overflow: 'hidden',\n backgroundColor: at.background,\n },\n main: {\n flex: 1,\n flexDirection: 'column',\n minWidth: 0,\n overflow: 'hidden',\n },\n });\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport type { AppShellProps } from './AppShell.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getAppShellStyles } from './AppShell.styles';\n\nexport function AppShell({ sidebar, children }: AppShellProps) {\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n const styles = React.useMemo(\n () => getAppShellStyles(tokens, frameCtx?.theme, frameCtx?.appearance),\n [tokens, frameCtx?.theme, frameCtx?.appearance]\n );\n\n return (\n <View style={styles.container}>\n {sidebar}\n <View style={styles.main}>{children}</View>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\ninterface SidebarStyleInput {\n readonly tokens: ResolvedTokens;\n readonly width: number;\n readonly bordered: boolean;\n readonly theme?: ThemeName;\n readonly appearance?: AppearanceName;\n}\n\nexport function getSidebarStyles({ tokens, width, bordered, theme = 'primary', appearance = 'main' }: SidebarStyleInput) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const borderColor = at.fontSecondary;\n\n return StyleSheet.create({\n container: {\n width,\n flexShrink: 0,\n flexDirection: 'column',\n backgroundColor: at.background,\n borderRightWidth: bordered ? 1 : 0,\n borderRightColor: borderColor,\n },\n header: {\n flexShrink: 0,\n borderBottomWidth: 1,\n borderBottomColor: borderColor,\n },\n body: {\n flex: 1,\n },\n footer: {\n flexShrink: 0,\n borderTopWidth: 1,\n borderTopColor: borderColor,\n },\n });\n}\n","import React from 'react';\nimport { View, ScrollView } from 'react-native';\nimport type { SidebarProps } from './Sidebar.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getSidebarStyles } from './Sidebar.styles';\n\nexport function Sidebar({\n children,\n header,\n footer,\n width = 260,\n bordered = true,\n}: SidebarProps) {\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n const styles = React.useMemo(\n () => getSidebarStyles({ tokens, width, bordered, theme: frameCtx?.theme, appearance: frameCtx?.appearance }),\n [tokens, width, bordered, frameCtx?.theme, frameCtx?.appearance]\n );\n\n return (\n <View style={styles.container}>\n {header && <View style={styles.header}>{header}</View>}\n <ScrollView style={styles.body}>{children}</ScrollView>\n {footer && <View style={styles.footer}>{footer}</View>}\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\ninterface NavbarStyleInput {\n readonly tokens: ResolvedTokens;\n readonly height: number;\n readonly bordered: boolean;\n readonly theme?: ThemeName;\n readonly appearance?: AppearanceName;\n}\n\nexport function getNavbarStyles({ tokens, height, bordered, theme = 'primary', appearance = 'main' }: NavbarStyleInput) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const borderColor = at.fontSecondary;\n\n return StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n height,\n flexShrink: 0,\n paddingHorizontal: 24,\n backgroundColor: at.background,\n borderBottomWidth: bordered ? 1 : 0,\n borderBottomColor: borderColor,\n },\n left: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n },\n right: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n });\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport type { NavbarProps } from './Navbar.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getNavbarStyles } from './Navbar.styles';\n\nexport function Navbar({\n children,\n left,\n right,\n height = 56,\n bordered = true,\n}: NavbarProps) {\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n const styles = React.useMemo(\n () => getNavbarStyles({ tokens, height, bordered, theme: frameCtx?.theme, appearance: frameCtx?.appearance }),\n [tokens, height, bordered, frameCtx?.theme, frameCtx?.appearance]\n );\n\n return (\n <View style={styles.container}>\n {children ? (\n children\n ) : (\n <>\n <View style={styles.left}>{left}</View>\n <View style={styles.right}>{right}</View>\n </>\n )}\n </View>\n );\n}\n","import React from 'react';\nimport type { LogoMonogramProps } from './LogoMonogram.types';\n\n/**\n * Newtone monogram — the \"N\" symbol mark rendered as an SVG.\n *\n * The fill color is derived from `colorValue` (0 = black, 255 = white),\n * allowing smooth animated transitions between light and dark contexts.\n */\nexport function LogoMonogram({ colorValue = 0, size = 32 }: LogoMonogramProps) {\n // Convert the 0–255 grayscale value to an rgb() string.\n const fg = `rgb(${colorValue}, ${colorValue}, ${colorValue})`;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 168 168\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M39.3574 70H12L20 84H36L30.2681 94.0309C28.8627 96.4903 28.8627 99.5096 30.2681 101.969L36 112L49.7319 87.9691C51.1373 85.5097 51.1373 82.4903 49.7319 80.0309L46.3034 74.0309C44.879 71.5383 42.2283 70 39.3574 70Z\" fill={fg} />\n <path d=\"M84 112H36L41.6966 121.969C43.121 124.462 45.7717 126 48.6426 126H79.3574C82.2283 126 84.879 124.462 86.3034 121.969L93.7319 108.969C95.1373 106.51 95.1373 103.49 93.7319 101.031L84 84L76 98L84 112Z\" fill={fg} />\n <path d=\"M76 70L84 84H64.6426C61.7717 84 59.121 82.4617 57.6966 79.9691L50.268 66.9691C48.8626 64.5097 48.8626 61.4903 50.268 59.0309L65.6966 32.0309C67.121 29.5383 69.7717 28 72.6426 28H84L60 70H76Z\" fill={fg} />\n <path d=\"M95.3574 28H84L132 112L137.732 101.969C139.137 99.5097 139.137 96.4903 137.732 94.0309L102.303 32.0309C100.879 29.5383 98.2283 28 95.3574 28Z\" fill={fg} />\n <path d=\"M104.643 112H132L126.303 121.969C124.879 124.462 122.228 126 119.357 126H108L116 140L108 154L94.268 129.969C92.8626 127.51 92.8626 124.49 94.268 122.031L97.6966 116.031C99.121 113.538 101.772 112 104.643 112Z\" fill={fg} />\n </svg>\n );\n}\n","import React from 'react';\nimport type { LogoWordmarkProps } from './LogoWordmark.types';\n\n/**\n * Newtone wordmark — the full \"NEWTONE\" text rendered as an SVG.\n *\n * Fixed height of 32px with proportional width derived from the viewBox.\n */\nexport function LogoWordmark({ fill = 'black' }: LogoWordmarkProps) {\n return (\n <svg\n height={32}\n viewBox=\"0 0 504 168\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M8 126H22V42H14.4C12.1598 42 11.0397 42 10.184 42.436C9.43139 42.8195 8.81947 43.4314 8.43597 44.184C8 45.0397 8 46.1598 8 48.4V126Z\" fill={fill} />\n <path d=\"M76 108.5V42H90V119.6C90 121.84 90 122.96 89.564 123.816C89.1805 124.569 88.5686 125.181 87.816 125.564C86.9603 126 85.8402 126 83.6 126H77.4281C74.7227 126 73.37 126 72.1603 125.605C71.0899 125.256 70.1054 124.684 69.271 123.928C68.328 123.074 67.6569 121.9 66.3146 119.551L22 42H30.5719C33.2773 42 34.63 42 35.8397 42.3949C36.9101 42.7442 37.8946 43.3156 38.729 44.0716C39.672 44.926 40.3431 46.1005 41.6854 48.4494L76 108.5Z\" fill={fill} />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M152.208 68.2077C153.395 69.3951 153.989 69.9888 154.439 70.6738C154.838 71.2814 155.152 71.9406 155.374 72.6332C155.623 73.4139 155.711 74.2489 155.886 75.9189L156.884 85.3951C157.27 89.0678 157.464 90.9042 156.867 92.3245C156.343 93.5721 155.412 94.6057 154.226 95.2577C152.876 96 151.03 96 147.337 96H112V114H154V126H115.302C113.345 126 112.367 126 111.446 125.779C110.63 125.583 109.849 125.26 109.134 124.821C108.326 124.326 107.635 123.635 106.251 122.251L101.749 117.749C100.365 116.365 99.6736 115.674 99.1789 114.866C98.7402 114.151 98.417 113.37 98.221 112.554C98 111.633 98 110.655 98 108.698V75.3019C98 73.3452 98 72.3668 98.221 71.4461C98.417 70.6299 98.7402 69.8495 99.1789 69.1337C99.6736 68.3264 100.365 67.6346 101.749 66.251L106.251 61.749C107.635 60.3654 108.326 59.6736 109.134 59.1789C109.849 58.7402 110.63 58.417 111.446 58.221C112.367 58 113.345 58 115.302 58H136.698C138.655 58 139.633 58 140.554 58.221C141.37 58.417 142.151 58.7402 142.866 59.1789C143.674 59.6736 144.365 60.3654 145.749 61.749L152.208 68.2077ZM112 70V87.5332L144.492 86.4502L141.895 70H112Z\" fill={fill} />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M492.208 68.2077C493.395 69.3951 493.989 69.9888 494.439 70.6738C494.838 71.2814 495.152 71.9406 495.374 72.6332C495.623 73.4139 495.711 74.2489 495.886 75.9189L496.884 85.3951C497.27 89.0678 497.464 90.9042 496.867 92.3245C496.343 93.5721 495.412 94.6057 494.226 95.2577C492.876 96 491.03 96 487.337 96H452V114H494V126H455.302C453.345 126 452.367 126 451.446 125.779C450.63 125.583 449.849 125.26 449.134 124.821C448.326 124.326 447.635 123.635 446.251 122.251L441.749 117.749C440.365 116.365 439.674 115.674 439.179 114.866C438.74 114.151 438.417 113.37 438.221 112.554C438 111.633 438 110.655 438 108.698V75.3019C438 73.3452 438 72.3668 438.221 71.4461C438.417 70.6299 438.74 69.8495 439.179 69.1337C439.674 68.3264 440.365 67.6346 441.749 66.251L446.251 61.749C447.635 60.3654 448.326 59.6736 449.134 59.1789C449.849 58.7402 450.63 58.417 451.446 58.221C452.367 58 453.345 58 455.302 58H476.698C478.655 58 479.633 58 480.554 58.221C481.37 58.417 482.151 58.7402 482.866 59.1789C483.674 59.6736 484.365 60.3654 485.749 61.749L492.208 68.2077ZM452 70V87.5332L484.492 86.4502L481.895 70H452Z\" fill={fill} />\n <path d=\"M168.794 117.797L160 58H174L184 126H178.291C175.35 126 173.88 126 172.695 125.46C171.651 124.984 170.765 124.219 170.142 123.255C169.435 122.161 169.222 120.706 168.794 117.797Z\" fill={fill} />\n <path d=\"M192.794 66.2033L184 126H187.674C190.626 126 192.102 126 193.29 125.457C194.337 124.979 195.224 124.209 195.846 123.241C196.551 122.141 196.76 120.68 197.177 117.758L204 70L210.823 117.758C211.24 120.68 211.449 122.141 212.154 123.241C212.776 124.209 213.663 124.979 214.71 125.457C215.898 126 217.374 126 220.326 126H224L215.206 66.2033C214.778 63.2936 214.565 61.8387 213.858 60.7448C213.235 59.7808 212.349 59.0155 211.305 58.5398C210.12 58 208.65 58 205.709 58H202.291C199.35 58 197.88 58 196.695 58.5398C195.651 59.0155 194.765 59.7808 194.142 60.7448C193.435 61.8387 193.222 63.2936 192.794 66.2033Z\" fill={fill} />\n <path d=\"M224 126H229.709C232.65 126 234.12 126 235.305 125.46C236.349 124.984 237.235 124.219 237.858 123.255C238.565 122.161 238.778 120.706 239.206 117.797L246.235 70H298V58H251.302C249.345 58 248.367 58 247.446 58.221C246.63 58.417 245.849 58.7402 245.134 59.1789C244.326 59.6736 243.635 60.3654 242.251 61.749L234.927 69.0727C233.815 70.1845 233.26 70.7405 232.829 71.3785C232.447 71.9446 232.139 72.5573 231.913 73.2016C231.658 73.9277 231.543 74.7056 231.315 76.2613L224 126Z\" fill={fill} />\n <path d=\"M264.251 122.251L259.749 117.749C258.365 116.365 257.674 115.674 257.179 114.866C256.74 114.151 256.417 113.37 256.221 112.554C256 111.633 256 110.655 256 108.698V69.2L260 42H270V114H298V126H273.302C271.345 126 270.367 126 269.446 125.779C268.63 125.583 267.849 125.26 267.134 124.821C266.326 124.326 265.635 123.635 264.251 122.251Z\" fill={fill} />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M358.251 66.251C359.635 67.6346 360.326 68.3264 360.821 69.1337C361.26 69.8495 361.583 70.6299 361.779 71.4461C362 72.3668 362 73.3452 362 75.3019V108.698C362 110.655 362 111.633 361.779 112.554C361.583 113.37 361.26 114.151 360.821 114.866C360.326 115.674 359.635 116.365 358.251 117.749L353.749 122.251C352.365 123.635 351.674 124.326 350.866 124.821C350.151 125.26 349.37 125.583 348.554 125.779C347.633 126 346.655 126 344.698 126H319.302C317.345 126 316.367 126 315.446 125.779C314.63 125.583 313.849 125.26 313.134 124.821C312.326 124.326 311.635 123.635 310.251 122.251L305.749 117.749C304.365 116.365 303.674 115.674 303.179 114.866C302.74 114.151 302.417 113.37 302.221 112.554C302 111.633 302 110.655 302 108.698V75.3019C302 73.3452 302 72.3668 302.221 71.4461C302.417 70.6299 302.74 69.8495 303.179 69.1337C303.674 68.3264 304.365 67.6346 305.749 66.251L310.224 61.7757C311.606 60.3937 312.297 59.7027 313.104 59.2083C313.818 58.77 314.598 58.4468 315.413 58.2506C316.333 58.0292 317.31 58.0284 319.264 58.0267L344.692 58.0046C346.651 58.0029 347.63 58.0021 348.552 58.2228C349.369 58.4185 350.151 58.7417 350.867 59.1807C351.676 59.6757 352.368 60.3684 353.754 61.7536L358.251 66.251ZM316 70V114H348V70H316Z\" fill={fill} />\n <path d=\"M370 64.4V126H384V70H416V126H430V75.3019C430 73.3452 430 72.3668 429.779 71.4461C429.583 70.6299 429.26 69.8495 428.821 69.1337C428.326 68.3264 427.635 67.6346 426.251 66.251L421.749 61.749C420.365 60.3654 419.674 59.6736 418.866 59.1789C418.151 58.7402 417.37 58.417 416.554 58.221C415.633 58 414.655 58 412.698 58H376.4C374.16 58 373.04 58 372.184 58.436C371.431 58.8195 370.819 59.4314 370.436 60.184C370 61.0397 370 62.1598 370 64.4Z\" fill={fill} />\n </svg>\n );\n}\n","import type { CategoryMeta, ComponentMeta } from './types';\n\nexport const CATEGORIES: readonly CategoryMeta[] = [\n { id: 'colors', name: 'Colors', description: 'Color palettes and token visualization', icon: 'palette' },\n { id: 'typography', name: 'Typography', description: 'Text roles, scopes, and weight control', icon: 'text_fields' },\n { id: 'symbols', name: 'Symbols', description: 'Material Symbols icon browser', icon: 'grid_view' },\n { id: 'layout', name: 'Layout', description: 'Structural containers — Frame and Wrapper', icon: 'grid_on' },\n { id: 'components', name: 'Components', description: 'Interactive UI components', icon: 'widgets' },\n];\n\nexport const COMPONENTS: readonly ComponentMeta[] = [\n {\n id: 'button',\n name: 'Button',\n importName: 'Button',\n categoryId: 'components',\n description: 'Interactive button with multiple variants, sizes, and optional icon',\n hasChildren: true,\n variants: [\n { id: 'primary-md', label: 'Primary', props: { variant: 'primary', size: 'md' } },\n { id: 'secondary-md', label: 'Secondary', props: { variant: 'secondary', size: 'md' } },\n { id: 'ghost-md', label: 'Ghost', props: { variant: 'ghost', size: 'md' } },\n { id: 'primary-sm', label: 'Primary Small', props: { variant: 'primary', size: 'sm' } },\n { id: 'primary-lg', label: 'Primary Large', props: { variant: 'primary', size: 'lg' } },\n { id: 'primary-xl', label: 'Primary XL', props: { variant: 'primary', size: 'xl' } },\n { id: 'icon-left', label: 'Icon Left', props: { variant: 'primary', size: 'md', icon: 'add' } },\n { id: 'icon-right', label: 'Icon Right', props: { variant: 'primary', size: 'md', icon: 'arrow_forward', iconPosition: 'right' } },\n { id: 'icon-only', label: 'Icon Only', props: { variant: 'ghost', size: 'md', icon: 'settings' } },\n ],\n editableProps: [\n {\n name: 'variant',\n label: 'Variant',\n control: 'select',\n options: [\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n { label: 'Ghost', value: 'ghost' },\n ],\n defaultValue: 'primary',\n },\n {\n name: 'size',\n label: 'Size',\n control: 'select',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n { label: 'Extra Large', value: 'xl' },\n ],\n defaultValue: 'md',\n },\n {\n name: 'icon',\n label: 'Icon',\n control: 'text',\n defaultValue: '',\n },\n {\n name: 'iconPosition',\n label: 'Icon Position',\n control: 'select',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Right', value: 'right' },\n ],\n defaultValue: 'left',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'text-input',\n name: 'TextInput',\n importName: 'TextInput',\n categoryId: 'components',\n description: 'Text input field with label support',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { label: 'Label', value: 'Sample text' } },\n { id: 'empty', label: 'Empty', props: { label: 'Email', value: '' } },\n { id: 'disabled', label: 'Disabled', props: { label: 'Disabled', value: 'Read only', disabled: true } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Label',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'select',\n name: 'Select',\n importName: 'Select',\n categoryId: 'components',\n description: 'Dropdown selector with options',\n hasChildren: false,\n variants: [\n {\n id: 'default',\n label: 'Default',\n props: {\n label: 'Choose an option',\n value: 'option-1',\n options: [\n { label: 'Option 1', value: 'option-1' },\n { label: 'Option 2', value: 'option-2' },\n { label: 'Option 3', value: 'option-3' },\n ],\n },\n },\n {\n id: 'disabled',\n label: 'Disabled',\n props: {\n label: 'Disabled select',\n value: 'option-1',\n disabled: true,\n options: [{ label: 'Option 1', value: 'option-1' }],\n },\n },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Choose an option',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'toggle',\n name: 'Toggle',\n importName: 'Toggle',\n categoryId: 'components',\n description: 'Binary switch component',\n hasChildren: false,\n variants: [\n { id: 'on', label: 'On', props: { label: 'Enabled', value: true } },\n { id: 'off', label: 'Off', props: { label: 'Disabled', value: false } },\n { id: 'disabled', label: 'Disabled', props: { label: 'Locked', value: true, disabled: true } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Toggle',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'slider',\n name: 'Slider',\n importName: 'Slider',\n categoryId: 'components',\n description: 'Numeric range slider',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { label: 'Volume', value: 50, min: 0, max: 100 } },\n { id: 'with-step', label: 'With Step', props: { label: 'Steps', value: 3, min: 0, max: 10, step: 1, showValue: true } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Slider',\n },\n {\n name: 'min',\n label: 'Min',\n control: 'number',\n defaultValue: 0,\n },\n {\n name: 'max',\n label: 'Max',\n control: 'number',\n defaultValue: 100,\n },\n {\n name: 'showValue',\n label: 'Show Value',\n control: 'toggle',\n defaultValue: false,\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'hue-slider',\n name: 'HueSlider',\n importName: 'HueSlider',\n categoryId: 'components',\n description: 'Specialized slider for hue selection (0-360\\u00b0)',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { label: 'Hue', value: 180 } },\n { id: 'red', label: 'Red', props: { label: 'Warm Hue', value: 0 } },\n { id: 'blue', label: 'Blue', props: { label: 'Cool Hue', value: 240 } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Hue',\n },\n {\n name: 'showValue',\n label: 'Show Value',\n control: 'toggle',\n defaultValue: false,\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'frame',\n name: 'Frame',\n importName: 'Frame',\n categoryId: 'layout',\n description: 'Foundational layout container with theme, elevation, spacing, and interactivity',\n hasChildren: true,\n variants: [\n { id: 'default', label: 'Default', props: {} },\n { id: 'primary', label: 'Primary', props: { theme: 'primary' } },\n { id: 'secondary', label: 'Secondary', props: { theme: 'secondary' } },\n { id: 'strong', label: 'Strong', props: { theme: 'strong' } },\n { id: 'deeply-sunken', label: 'Deeply Sunken', props: { elevation: -2, radius: 'md' } },\n { id: 'sunken', label: 'Sunken', props: { elevation: -1 } },\n { id: 'elevated', label: 'Elevated', props: { elevation: 1 } },\n { id: 'prominent', label: 'Prominent', props: { elevation: 2, radius: 'lg' } },\n { id: 'padded', label: 'Padded', props: { padding: 'lg', gap: 'md' } },\n { id: 'horizontal', label: 'Horizontal', props: { direction: 'horizontal', gap: 'md', align: 'center' } },\n { id: 'grid-3col', label: '3-Column Grid', props: { layout: 'grid', columns: 3, gap: 'md' } },\n { id: 'card-like', label: 'Card-like', props: { radius: 'lg', padding: 'lg', bordered: true, elevation: 1 } },\n ],\n editableProps: [\n {\n name: 'theme',\n label: 'Theme',\n control: 'select',\n options: [\n { label: 'Neutral', value: 'neutral' },\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n { label: 'Strong', value: 'strong' },\n ],\n defaultValue: 'neutral',\n },\n {\n name: 'elevation',\n label: 'Elevation',\n control: 'select',\n options: [\n { label: 'Deeply Sunken (-2)', value: -2 },\n { label: 'Sunken (-1)', value: -1 },\n { label: 'Default (0)', value: 0 },\n { label: 'Elevated (1)', value: 1 },\n { label: 'Prominent (2)', value: 2 },\n ],\n defaultValue: 0,\n },\n {\n name: 'direction',\n label: 'Direction',\n control: 'select',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n defaultValue: 'vertical',\n },\n {\n name: 'padding',\n label: 'Padding',\n control: 'select',\n options: [\n { label: 'None', value: '' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n { label: 'Extra Large', value: 'xl' },\n ],\n defaultValue: '',\n },\n {\n name: 'gap',\n label: 'Gap',\n control: 'select',\n options: [\n { label: 'None', value: '' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n defaultValue: '',\n },\n {\n name: 'radius',\n label: 'Radius',\n control: 'select',\n options: [\n { label: 'None', value: 'none' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n { label: 'Pill', value: 'pill' },\n ],\n defaultValue: 'none',\n },\n {\n name: 'bordered',\n label: 'Bordered',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'card',\n name: 'Card',\n importName: 'Card',\n categoryId: 'components',\n description: 'Surface container with elevation levels',\n hasChildren: true,\n variants: [\n { id: 'elevation-0', label: 'Elevation 0', props: { elevation: 0 } },\n { id: 'elevation-1', label: 'Elevation 1', props: { elevation: 1 } },\n { id: 'elevation-2', label: 'Elevation 2', props: { elevation: 2 } },\n ],\n editableProps: [\n {\n name: 'elevation',\n label: 'Elevation',\n control: 'select',\n options: [\n { label: 'Level 0', value: 0 },\n { label: 'Level 1', value: 1 },\n { label: 'Level 2', value: 2 },\n ],\n defaultValue: 0,\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n // ── Design Primitives ──\n {\n id: 'text',\n name: 'Text',\n importName: 'Text',\n categoryId: 'typography',\n description: 'Typography primitive with semantic scope (font family) and role (purpose)',\n hasChildren: true,\n previewLayout: 'list',\n variants: [\n { id: 'body', label: 'Body', props: { role: 'body' } },\n { id: 'headline', label: 'Headline', props: { role: 'headline', scope: 'display' } },\n { id: 'title', label: 'Title', props: { role: 'title', scope: 'display' } },\n { id: 'heading', label: 'Heading', props: { role: 'heading' } },\n { id: 'subheading', label: 'Subheading', props: { role: 'subheading' } },\n { id: 'label', label: 'Label', props: { role: 'label' } },\n { id: 'caption', label: 'Caption', props: { role: 'caption', color: 'secondary' } },\n { id: 'mono', label: 'Monospace', props: { scope: 'mono', role: 'body' } },\n { id: 'currency', label: 'Currency', props: { scope: 'currency', role: 'body' } },\n ],\n editableProps: [\n {\n name: 'scope',\n label: 'Scope',\n control: 'select',\n options: [\n { label: 'Main', value: 'main' },\n { label: 'Display', value: 'display' },\n { label: 'Mono', value: 'mono' },\n { label: 'Currency', value: 'currency' },\n ],\n defaultValue: 'main',\n },\n {\n name: 'role',\n label: 'Role',\n control: 'select',\n options: [\n { label: 'Headline', value: 'headline' },\n { label: 'Title', value: 'title' },\n { label: 'Heading', value: 'heading' },\n { label: 'Subheading', value: 'subheading' },\n { label: 'Body', value: 'body' },\n { label: 'Label', value: 'label' },\n { label: 'Caption', value: 'caption' },\n ],\n defaultValue: 'body',\n },\n {\n name: 'size',\n label: 'Size',\n control: 'select',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n defaultValue: 'md',\n },\n {\n name: 'color',\n label: 'Color',\n control: 'select',\n options: [\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n { label: 'Tertiary', value: 'tertiary' },\n { label: 'Disabled', value: 'disabled' },\n { label: 'Accent', value: 'accent' },\n { label: 'Success', value: 'success' },\n { label: 'Warning', value: 'warning' },\n { label: 'Error', value: 'error' },\n ],\n defaultValue: 'primary',\n },\n ],\n },\n {\n id: 'icon',\n name: 'Icon',\n importName: 'Icon',\n categoryId: 'symbols',\n description: 'Material Symbols icon with size and fill',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { name: 'add' } },\n ],\n editableProps: [\n {\n name: 'name',\n label: 'Icon Name',\n control: 'text',\n defaultValue: 'add',\n },\n {\n name: 'size',\n label: 'Size',\n control: 'discrete-slider',\n options: [\n { label: '20', value: 20 },\n { label: '24', value: 24 },\n { label: '40', value: 40 },\n { label: '48', value: 48 },\n ],\n defaultValue: 24,\n },\n {\n name: 'fill',\n label: 'Fill',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'wrapper',\n name: 'Wrapper',\n importName: 'Wrapper',\n categoryId: 'layout',\n description: 'Lightweight layout container with direction, spacing, and alignment (no theming)',\n hasChildren: true,\n variants: [\n { id: 'vertical', label: 'Vertical Stack', props: { direction: 'vertical', gap: 'md' } },\n { id: 'horizontal', label: 'Horizontal Row', props: { direction: 'horizontal', gap: 'md', align: 'center' } },\n { id: 'padded', label: 'Padded', props: { padding: 'lg', gap: 'md' } },\n { id: 'centered', label: 'Centered', props: { align: 'center', justify: 'center', padding: 'xl' } },\n ],\n editableProps: [\n {\n name: 'direction',\n label: 'Direction',\n control: 'select',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n defaultValue: 'vertical',\n },\n {\n name: 'gap',\n label: 'Gap',\n control: 'select',\n options: [\n { label: 'None', value: '' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n defaultValue: '',\n },\n {\n name: 'padding',\n label: 'Padding',\n control: 'select',\n options: [\n { label: 'None', value: '' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n defaultValue: '',\n },\n {\n name: 'align',\n label: 'Align',\n control: 'select',\n options: [\n { label: 'Start', value: 'start' },\n { label: 'Center', value: 'center' },\n { label: 'End', value: 'end' },\n ],\n defaultValue: 'start',\n },\n {\n name: 'justify',\n label: 'Justify',\n control: 'select',\n options: [\n { label: 'Start', value: 'start' },\n { label: 'Center', value: 'center' },\n { label: 'End', value: 'end' },\n { label: 'Space Between', value: 'space-between' },\n ],\n defaultValue: 'start',\n },\n ],\n },\n // ── Range Inputs (Addition: ColorScaleSlider) ──\n {\n id: 'color-scale-slider',\n name: 'ColorScaleSlider',\n importName: 'ColorScaleSlider',\n categoryId: 'components',\n description: 'Interactive palette preview slider with color segments',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { label: 'Key Color' } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Key Color',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n];\n\nexport function getComponent(id: string): ComponentMeta | undefined {\n return COMPONENTS.find((c) => c.id === id);\n}\n\nexport function getCategory(id: string): CategoryMeta | undefined {\n return CATEGORIES.find((c) => c.id === id);\n}\n\nexport function getComponentsByCategory(categoryId: string): readonly ComponentMeta[] {\n return COMPONENTS.filter((c) => c.categoryId === categoryId);\n}\n","import type { ComponentMeta } from './types';\n\n/**\n * Handler props that should be included as placeholders in generated code.\n * Maps component ID to the handler props it needs.\n */\nconst HANDLER_PROPS: Record<string, readonly string[]> = {\n button: ['onPress={() => {}}'],\n 'text-input': ['value={value}', 'onChangeText={setValue}'],\n select: ['value={value}', 'onValueChange={setValue}'],\n toggle: ['value={value}', 'onValueChange={setValue}'],\n slider: ['value={value}', 'onValueChange={setValue}'],\n 'hue-slider': ['value={value}', 'onValueChange={setValue}'],\n};\n\n/**\n * Default children content for components with children.\n */\nconst CHILDREN_CONTENT: Record<string, string> = {\n button: 'Button',\n text: 'The quick brown fox',\n card: '{/* content */}',\n frame: '{/* content */}',\n};\n\n/**\n * Generates a ready-to-paste JSX code snippet for a component with the given prop overrides.\n *\n * - Includes the import statement\n * - Omits props that match their default values\n * - Adds placeholder handlers for interactive props\n * - Formats Select's options as a const declaration\n */\nexport function generateComponentCode(\n component: ComponentMeta,\n propOverrides: Record<string, unknown>,\n): string {\n const lines: string[] = [];\n\n // Import line\n lines.push(`import { ${component.importName} } from '@newtonedev/components';`);\n\n // Select needs options declaration above JSX\n if (component.id === 'select') {\n lines.push('');\n lines.push('const options = [');\n lines.push(\" { label: 'Option 1', value: 'option-1' },\");\n lines.push(\" { label: 'Option 2', value: 'option-2' },\");\n lines.push(\" { label: 'Option 3', value: 'option-3' },\");\n lines.push('];');\n }\n\n lines.push('');\n\n // Build props string\n const propEntries: string[] = [];\n\n // Add editable props (only non-default values)\n for (const prop of component.editableProps) {\n const value = propOverrides[prop.name] ?? prop.defaultValue;\n if (value === prop.defaultValue) continue;\n\n propEntries.push(formatProp(prop.name, value));\n }\n\n // Add handler/runtime props\n const handlers = HANDLER_PROPS[component.id];\n if (handlers) {\n for (const handler of handlers) {\n propEntries.push(handler);\n }\n }\n\n // Special case: Select gets options={options} reference\n if (component.id === 'select') {\n propEntries.push('options={options}');\n }\n\n // Build the JSX\n const children = CHILDREN_CONTENT[component.id];\n const hasProps = propEntries.length > 0;\n const tag = component.importName;\n\n if (component.hasChildren && children) {\n if (hasProps && propEntries.length <= 3) {\n // Single-line opening tag\n lines.push(`<${tag} ${propEntries.join(' ')}>`);\n lines.push(` ${children}`);\n lines.push(`</${tag}>`);\n } else if (hasProps) {\n // Multi-line opening tag\n lines.push(`<${tag}`);\n for (const entry of propEntries) {\n lines.push(` ${entry}`);\n }\n lines.push('>');\n lines.push(` ${children}`);\n lines.push(`</${tag}>`);\n } else {\n lines.push(`<${tag}>`);\n lines.push(` ${children}`);\n lines.push(`</${tag}>`);\n }\n } else {\n // Self-closing tag\n if (hasProps && propEntries.length <= 3) {\n lines.push(`<${tag} ${propEntries.join(' ')} />`);\n } else if (hasProps) {\n lines.push(`<${tag}`);\n for (const entry of propEntries) {\n lines.push(` ${entry}`);\n }\n lines.push('/>');\n } else {\n lines.push(`<${tag} />`);\n }\n }\n\n return lines.join('\\n');\n}\n\nfunction formatProp(name: string, value: unknown): string {\n if (typeof value === 'string') {\n return `${name}=\"${value}\"`;\n }\n if (typeof value === 'boolean') {\n return value ? name : `${name}={false}`;\n }\n if (typeof value === 'number') {\n return `${name}={${value}}`;\n }\n return `${name}={${JSON.stringify(value)}}`;\n}\n","export interface IconCatalogCategory {\n readonly id: string;\n readonly label: string;\n readonly icons: readonly string[];\n}\n\nexport const ICON_CATALOG: readonly IconCatalogCategory[] = [\n {\n id: 'navigation',\n label: 'Navigation',\n icons: [\n 'home', 'menu', 'close', 'arrow_back', 'arrow_forward',\n 'arrow_upward', 'arrow_downward', 'chevron_left', 'chevron_right',\n 'expand_more', 'expand_less', 'first_page', 'last_page',\n 'more_vert', 'more_horiz', 'unfold_more', 'unfold_less',\n 'subdirectory_arrow_right',\n ],\n },\n {\n id: 'actions',\n label: 'Actions',\n icons: [\n 'search', 'settings', 'done', 'add', 'remove',\n 'delete', 'edit', 'save', 'refresh', 'undo',\n 'redo', 'download', 'upload', 'share', 'print',\n 'content_copy', 'content_paste', 'open_in_new', 'launch',\n 'drag_indicator', 'tune', 'sort', 'filter_list',\n ],\n },\n {\n id: 'communication',\n label: 'Communication',\n icons: [\n 'mail', 'chat', 'call', 'notifications', 'forum',\n 'send', 'inbox', 'drafts', 'mark_email_read',\n 'contact_mail', 'alternate_email', 'comment',\n 'chat_bubble', 'sms', 'voicemail',\n ],\n },\n {\n id: 'content',\n label: 'Content',\n icons: [\n 'add_circle', 'remove_circle', 'check_circle', 'cancel',\n 'flag', 'bookmark', 'star', 'favorite',\n 'thumb_up', 'thumb_down', 'push_pin', 'link',\n 'link_off', 'bolt', 'label', 'inventory_2',\n 'visibility', 'visibility_off',\n ],\n },\n {\n id: 'media',\n label: 'Media',\n icons: [\n 'play_arrow', 'pause', 'stop', 'skip_next', 'skip_previous',\n 'fast_forward', 'fast_rewind', 'replay', 'shuffle',\n 'repeat', 'volume_up', 'volume_off', 'music_note',\n 'image', 'photo_camera', 'videocam', 'mic',\n ],\n },\n {\n id: 'file',\n label: 'File & Folder',\n icons: [\n 'folder', 'folder_open', 'create_new_folder', 'description',\n 'file_copy', 'attach_file', 'cloud', 'cloud_upload',\n 'cloud_download', 'cloud_off', 'storage', 'snippet_folder',\n ],\n },\n {\n id: 'social',\n label: 'Social & People',\n icons: [\n 'person', 'group', 'person_add', 'person_remove',\n 'people', 'face', 'sentiment_satisfied', 'sentiment_dissatisfied',\n 'public', 'workspace_premium', 'emoji_events', 'military_tech',\n ],\n },\n {\n id: 'alerts',\n label: 'Alerts & Status',\n icons: [\n 'error', 'warning', 'info', 'help',\n 'check_circle', 'report', 'new_releases',\n 'notification_important', 'priority_high',\n 'verified', 'shield', 'security',\n 'lock', 'lock_open',\n ],\n },\n {\n id: 'device',\n label: 'Device & Hardware',\n icons: [\n 'phone_android', 'computer', 'tablet_mac', 'watch',\n 'keyboard', 'mouse', 'headphones', 'speaker',\n 'monitor', 'devices', 'memory', 'battery_full',\n 'wifi', 'bluetooth', 'usb', 'dark_mode', 'light_mode',\n ],\n },\n {\n id: 'editor',\n label: 'Editor & Formatting',\n icons: [\n 'format_bold', 'format_italic', 'format_underlined',\n 'format_list_bulleted', 'format_list_numbered', 'format_quote',\n 'format_align_left', 'format_align_center', 'format_align_right',\n 'title', 'text_fields', 'code', 'palette',\n 'color_lens', 'brush', 'auto_fix_high',\n ],\n },\n];\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/primitives/useFocusVisible.ts","../src/primitives/Frame/Frame.utils.ts","../src/primitives/Frame/Frame.styles.ts","../src/primitives/Frame/Frame.tsx","../src/primitives/Icon/Icon.tsx","../src/primitives/Text/Text.tsx","../src/primitives/Text/Text.spans.ts","../src/primitives/Text/index.ts","../src/layout/Page/Page.tsx","../src/layout/Viewport/Viewport.tsx","../src/layout/Wrapper/Wrapper.styles.ts","../src/layout/Wrapper/Wrapper.tsx","../src/layout/Section/Section.styles.ts","../src/layout/Section/Section.tsx","../src/composites/actions/Button/Button.styles.ts","../src/composites/actions/Button/Button.tsx","../src/primitives/Card/Card.styles.ts","../src/primitives/Card/Card.tsx","../src/composites/display/Chip/Chip.styles.ts","../src/composites/display/Chip/Chip.tsx","../src/composites/layout/Divider/Divider.styles.ts","../src/composites/layout/Divider/Divider.tsx","../src/composites/layout/ContentCard/ContentCard.styles.ts","../src/composites/layout/ContentCard/ContentCard.tsx","../src/composites/form-controls/TextInput/TextInput.styles.ts","../src/composites/form-controls/TextInput/TextInput.tsx","../src/composites/overlays/Popover/Popover.styles.ts","../src/composites/overlays/Popover/Popover.tsx","../src/composites/overlays/Popover/usePopover.ts","../src/composites/form-controls/Select/Select.types.ts","../src/composites/form-controls/Select/Select.styles.ts","../src/composites/form-controls/Select/useSelect.ts","../src/composites/form-controls/Select/SelectOption.tsx","../src/composites/form-controls/Select/Select.tsx","../src/composites/form-controls/Toggle/Toggle.styles.ts","../src/composites/form-controls/Toggle/Toggle.tsx","../src/composites/range-inputs/Slider/Slider.styles.ts","../src/composites/range-inputs/Slider/Slider.tsx","../src/composites/range-inputs/HueSlider/HueSlider.styles.ts","../src/composites/range-inputs/HueSlider/HueSlider.tsx","../node_modules/@newtonedev/colors/src/constants.ts","../node_modules/@newtonedev/colors/src/conversions/oklab.ts","../node_modules/@newtonedev/colors/src/conversions/linear-p3.ts","../node_modules/@newtonedev/colors/src/conversions/srgb.ts","../node_modules/@newtonedev/colors/src/conversions/pipeline.ts","../src/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.styles.ts","../src/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.tsx","../src/composites/layout/AppShell/AppShell.styles.ts","../src/composites/layout/AppShell/AppShell.tsx","../src/composites/layout/Sidebar/Sidebar.styles.ts","../src/composites/layout/Sidebar/Sidebar.tsx","../src/composites/layout/Navbar/Navbar.styles.ts","../src/composites/layout/Navbar/Navbar.tsx","../src/composites/branding/LogoMonogram/LogoMonogram.tsx","../src/composites/branding/LogoWordmark/LogoWordmark.tsx","../src/registry/registry.ts","../src/registry/codegen.ts","../src/registry/icons.ts"],"names":["useState","useEffect","useCallback","StyleSheet","React","Text","useNewtoneTheme","useFrameContext","useMemo","computeTokens","styles","View","_ThemeContext","FrameContext","useTokens","size","createContext","SEMANTIC_WEIGHT_MAP","ROLE_DEFAULT_WEIGHTS","useBreakpoint","BREAKPOINT_ROLE_SCALE","scaleRoleStep","useTypographyCalibrations","useLocalCalibration","resolveResponsiveSize","estimateLineWidths","enqueueObservation","REFERENCE_LINE_HEIGHT_RATIO","buildFontFeatureSettings","RNText","useContext","Platform","ScrollView","Pressable","wrapTextChildren","getSizeConfig","getVariantColors","t","RNTextInput","useRef","TRACK_HEIGHT","THUMB_SIZE","ratio","PanResponder","TextInput","gamutMapToSrgb","srgbToHex","Animated","totalSteps","minNV","maxNV","range"],"mappings":";;;;;;;;;;;;;AA4BA,IAAI,gBAAA,GAAmB,KAAA;AACvB,IAAI,eAAA,GAAkB,KAAA;AAOtB,SAAS,aAAA,GAAgB;AAEvB,EAAA,IAAI,eAAA,IAAmB,OAAO,QAAA,KAAa,WAAA,EAAa;AACxD,EAAA,eAAA,GAAkB,IAAA;AAKlB,EAAA,MAAM,eAAA,uBAAsB,GAAA,CAAI;AAAA,IAC9B,KAAA;AAAA,IAAO,SAAA;AAAA,IAAW,WAAA;AAAA,IAAa,WAAA;AAAA,IAAa,YAAA;AAAA,IAC5C,OAAA;AAAA,IAAS,GAAA;AAAA,IAAK;AAAA,GACf,CAAA;AAED,EAAA,QAAA,CAAS,gBAAA,CAAiB,SAAA,EAAW,CAAC,CAAA,KAAM;AAC1C,IAAA,IAAI,eAAA,CAAgB,GAAA,CAAI,CAAA,CAAE,GAAG,CAAA,EAAG;AAC9B,MAAA,gBAAA,GAAmB,IAAA;AAAA,IACrB;AAAA,EACF,GAAG,IAAI,CAAA;AAIP,EAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,MAAM;AAC7C,IAAA,gBAAA,GAAmB,KAAA;AAAA,EACrB,GAAG,IAAI,CAAA;AAGP,EAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,MAAM;AAC3C,IAAA,gBAAA,GAAmB,KAAA;AAAA,EACrB,GAAG,IAAI,CAAA;AACT;AAWO,SAAS,eAAA,GAAsC;AACpD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAG1D,EAAAC,iBAAA,CAAU,MAAM;AACd,IAAA,aAAA,EAAc;AAAA,EAChB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,OAAA,GAAUC,oBAAY,MAAM;AAChC,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,IACxB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,MAAA,GAASA,oBAAY,MAAM;AAC/B,IAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,EACzB,CAAA,EAAG,EAAE,CAAA;AAIL,EAAA,MAAM,UAAA,GAAa,EAAE,OAAA,EAAS,MAAA,EAAO;AAErC,EAAA,OAAO,EAAE,gBAAgB,UAAA,EAAW;AACtC;;;AChFO,SAAS,cAAA,CACd,OACA,MAAA,EACQ;AAER,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AAEtC,EAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC7B;AAGO,SAAS,cAAA,CACd,MACA,MAAA,EACkG;AAElG,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU;AACxD,IAAA,MAAM,EAAA,GAAK,cAAA,CAAe,IAAA,EAAM,MAAM,CAAA;AACtC,IAAA,OAAO,EAAE,KAAK,EAAA,EAAI,KAAA,EAAO,IAAI,MAAA,EAAQ,EAAA,EAAI,MAAM,EAAA,EAAG;AAAA,EACpD;AAIA,EAAA,IAAI,GAAA,IAAO,IAAA,IAAQ,GAAA,IAAO,IAAA,EAAM;AAC9B,IAAA,MAAM,IAAA,GAAO,IAAA;AACb,IAAA,MAAM,CAAA,GAAI,KAAK,CAAA,KAAM,MAAA,GAAY,eAAe,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,GAAI,CAAA;AAClE,IAAA,MAAM,CAAA,GAAI,KAAK,CAAA,KAAM,MAAA,GAAY,eAAe,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,GAAI,CAAA;AAClE,IAAA,OAAO,EAAE,KAAK,CAAA,EAAG,KAAA,EAAO,GAAG,MAAA,EAAQ,CAAA,EAAG,MAAM,CAAA,EAAE;AAAA,EAChD;AAIA,EAAA,MAAM,KAAA,GAAQ,IAAA;AACd,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,MAAM,GAAA,KAAQ,MAAA,GAAY,eAAe,KAAA,CAAM,GAAA,EAAK,MAAM,CAAA,GAAI,CAAA;AAAA,IACnE,KAAA,EAAO,MAAM,KAAA,KAAU,MAAA,GAAY,eAAe,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA;AAAA,IACzE,MAAA,EAAQ,MAAM,MAAA,KAAW,MAAA,GAAY,eAAe,KAAA,CAAM,MAAA,EAAQ,MAAM,CAAA,GAAI,CAAA;AAAA,IAC5E,IAAA,EAAM,MAAM,IAAA,KAAS,MAAA,GAAY,eAAe,KAAA,CAAM,IAAA,EAAM,MAAM,CAAA,GAAI;AAAA,GACxE;AACF;AAGO,SAAS,UAAA,CACd,MACA,MAAA,EACyD;AAEzD,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU;AACxD,IAAA,MAAM,EAAA,GAAK,cAAA,CAAe,IAAA,EAAM,MAAM,CAAA;AACtC,IAAA,OAAO,EAAE,MAAA,EAAQ,EAAA,EAAI,SAAA,EAAW,EAAA,EAAG;AAAA,EACrC;AAIA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,KAAK,GAAA,KAAQ,MAAA,GAAY,eAAe,IAAA,CAAK,GAAA,EAAK,MAAM,CAAA,GAAI,CAAA;AAAA,IACpE,SAAA,EAAW,KAAK,MAAA,KAAW,MAAA,GAAY,eAAe,IAAA,CAAK,MAAA,EAAQ,MAAM,CAAA,GAAI;AAAA,GAC/E;AACF;AAOO,SAAS,aAAA,CACd,OACA,MAAA,EACQ;AACR,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,OAAO,MAAA,CAAO,OAAO,KAAK,CAAA;AAC5B;AAWO,SAAS,oBAAA,CACd,MACA,MAAA,EACiB;AAEjB,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU;AACxD,IAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,MAAM,CAAA;AACrC,IAAA,OAAO,EAAE,SAAS,EAAA,EAAI,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,aAAa,EAAA,EAAG;AAAA,EACtE;AAIA,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,KAAK,OAAA,KAAY,MAAA,GAAY,cAAc,IAAA,CAAK,OAAA,EAAS,MAAM,CAAA,GAAI,CAAA;AAAA,IAC5E,QAAA,EAAU,KAAK,QAAA,KAAa,MAAA,GAAY,cAAc,IAAA,CAAK,QAAA,EAAU,MAAM,CAAA,GAAI,CAAA;AAAA,IAC/E,UAAA,EAAY,KAAK,UAAA,KAAe,MAAA,GAAY,cAAc,IAAA,CAAK,UAAA,EAAY,MAAM,CAAA,GAAI,CAAA;AAAA,IACrF,WAAA,EAAa,KAAK,WAAA,KAAgB,MAAA,GAAY,cAAc,IAAA,CAAK,WAAA,EAAa,MAAM,CAAA,GAAI;AAAA,GAC1F;AACF;AAGO,SAAS,kBAAkB,OAAA,EAAmC;AACnE,EAAA,OAAO,OAAA,CAAQ,OAAA,GAAU,CAAA,IACpB,OAAA,CAAQ,QAAA,GAAW,KACnB,OAAA,CAAQ,UAAA,GAAa,CAAA,IACrB,OAAA,CAAQ,WAAA,GAAc,CAAA;AAC7B;AAMO,SAAS,aAAA,CACd,OACA,MAAA,EACW;AACX,EAAA,MAAM,QAAiC,EAAC;AAExC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA,IAAI,UAAU,MAAA,EAAQ;AAIpB,MAAA,KAAA,CAAM,QAAA,GAAW,CAAA;AACjB,MAAA,KAAA,CAAM,KAAA,GAAQ,MAAA;AAAA,IAChB,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AAEpC,MAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AAAA,IAChB;AAAA,EAEF;AAEA,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,IAAI,WAAW,MAAA,EAAQ;AAErB,MAAA,KAAA,CAAM,QAAA,GAAW,CAAA;AACjB,MAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AAAA,IACjB,CAAA,MAAA,IAAW,OAAO,MAAA,KAAW,QAAA,EAAU;AAErC,MAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AAAA,IACjB;AAAA,EAEF;AAEA,EAAA,OAAO,KAAA;AACT;AAYA,IAAM,SAAA,GAAwD;AAAA,EAC5D,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU;AACZ,CAAA;AASA,IAAM,WAAA,GAAkE;AAAA,EACtE,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ;AACV,CAAA;AAGO,SAAS,iBAAiB,KAAA,EAA2C;AAC1E,EAAA,OAAO,UAAU,KAAK,CAAA;AACxB;AAGO,SAAS,qBAAqB,OAAA,EAAqD;AACxF,EAAA,OAAO,YAAY,OAAO,CAAA;AAC5B;AAGO,SAAS,oBAAA,CACd,WACA,OAAA,EAC4B;AAE5B,EAAA,IAAI,cAAc,YAAA,EAAc;AAC9B,IAAA,OAAO,UAAU,aAAA,GAAgB,KAAA;AAAA,EACnC;AACA,EAAA,OAAO,UAAU,gBAAA,GAAmB,QAAA;AACtC;;;AChIO,SAAS,eAAe,KAAA,EAAqC;AAClE,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,cAAA;AAAA,IACA,KAAA,GAAQ,SAAA;AAAA,IACR,UAAA,GAAa,MAAA;AAAA,IACb,MAAA,GAAS,MAAA;AAAA,IACT,SAAA,GAAY,UAAA;AAAA,IACZ,IAAA,GAAO,KAAA;AAAA,IACP,OAAA,GAAU,KAAA;AAAA,IACV,OAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAKJ,EAAA,MAAM,YAAqC,EAAC;AAI5C,EAAA,MAAM,gBAAA,GAAqC,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAG1E,EAAA,SAAA,CAAU,kBAAkB,gBAAA,CAAiB,UAAA;AAC7C,EAAA,SAAA,CAAU,QAAQ,gBAAA,CAAiB,WAAA;AAGnC,EAAA,IAAI,WAAW,MAAA,EAAQ;AAErB,IAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AACpB,IAAA,SAAA,CAAU,aAAA,GAAgB,oBAAA,CAAqB,SAAA,EAAW,OAAO,CAAA;AACjE,IAAA,IAAI,IAAA,YAAgB,QAAA,GAAW,MAAA;AAAA,EACjC;AACA,EAAA,IAAI,WAAW,MAAA,EAAQ;AAIrB,IAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AACpB,IAAA,SAAA,CAAU,aAAA,GAAgB,KAAA;AAC1B,IAAA,SAAA,CAAU,QAAA,GAAW,MAAA;AAAA,EACvB;AAIA,EAAA,IAAI,KAAA,EAAO,SAAA,CAAU,UAAA,GAAa,gBAAA,CAAiB,KAAK,CAAA;AAExD,EAAA,IAAI,OAAA,EAAS,SAAA,CAAU,cAAA,GAAiB,oBAAA,CAAqB,OAAO,CAAA;AAIpE,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAM,CAAA,GAAI,cAAA,CAAe,OAAA,EAAS,MAAM,CAAA;AACxC,IAAA,SAAA,CAAU,aAAa,CAAA,CAAE,GAAA;AACzB,IAAA,SAAA,CAAU,eAAe,CAAA,CAAE,KAAA;AAC3B,IAAA,SAAA,CAAU,gBAAgB,CAAA,CAAE,MAAA;AAC5B,IAAA,SAAA,CAAU,cAAc,CAAA,CAAE,IAAA;AAAA,EAC5B;AAIA,EAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,GAAA,EAAK,MAAM,CAAA;AAChC,IAAA,SAAA,CAAU,SAAS,CAAA,CAAE,MAAA;AACrB,IAAA,SAAA,CAAU,YAAY,CAAA,CAAE,SAAA;AAAA,EAC1B;AAIA,EAAA,MAAM,MAAA,GAAS,aAAA,CAAc,KAAA,EAAO,MAAM,CAAA;AAC1C,EAAA,MAAA,CAAO,MAAA,CAAO,WAAW,MAAM,CAAA;AAI/B,EAAA,IAAI,QAAA,KAAa,MAAA,EAAW,SAAA,CAAU,QAAA,GAAW,QAAA;AACjD,EAAA,IAAI,QAAA,KAAa,MAAA,EAAW,SAAA,CAAU,QAAA,GAAW,QAAA;AACjD,EAAA,IAAI,SAAA,KAAc,MAAA,EAAW,SAAA,CAAU,SAAA,GAAY,SAAA;AACnD,EAAA,IAAI,SAAA,KAAc,MAAA,EAAW,SAAA,CAAU,SAAA,GAAY,SAAA;AAInD,EAAA,IAAI,QAAA,YAAoB,QAAA,GAAW,QAAA;AACnC,EAAA,IAAI,GAAA,KAAQ,MAAA,EAAW,SAAA,CAAU,GAAA,GAAM,GAAA;AACvC,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,SAAA,CAAU,KAAA,GAAQ,KAAA;AAC3C,EAAA,IAAI,MAAA,KAAW,MAAA,EAAW,SAAA,CAAU,MAAA,GAAS,MAAA;AAC7C,EAAA,IAAI,IAAA,KAAS,MAAA,EAAW,SAAA,CAAU,IAAA,GAAO,IAAA;AACzC,EAAA,IAAI,MAAA,KAAW,MAAA,EAAW,SAAA,CAAU,MAAA,GAAS,MAAA;AAI7C,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA;AACnD,IAAA,SAAA,CAAU,sBAAsB,OAAA,CAAQ,OAAA;AACxC,IAAA,SAAA,CAAU,uBAAuB,OAAA,CAAQ,QAAA;AACzC,IAAA,SAAA,CAAU,yBAAyB,OAAA,CAAQ,UAAA;AAC3C,IAAA,SAAA,CAAU,0BAA0B,OAAA,CAAQ,WAAA;AAI5C,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,EAAG;AAC9B,MAAA,SAAA,CAAU,QAAA,GAAW,QAAA;AAAA,IACvB;AAAA,EACF;AAIA,EAAA,IAAI,QAAA,YAAoB,QAAA,GAAW,QAAA;AAMnC,EAAA,IAAI,mBAAmB,CAAA,EAAG;AACxB,IAAA,SAAA,CAAU,WAAA,GAAc,MAAA;AACxB,IAAA,SAAA,CAAU,YAAA,GAAe,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAC/C,IAAA,SAAA,CAAU,aAAA,GAAgB,IAAA;AAC1B,IAAA,SAAA,CAAU,YAAA,GAAe,CAAA;AACzB,IAAA,SAAA,CAAU,SAAA,GAAY,CAAA;AAAA,EACxB;AAKA,EAAA,IAAI,YAAA,GAA2C,IAAA;AAC/C,EAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,IAAA,YAAA,GAAe;AAAA,MACb,OAAA,EAAS,MAAA;AAAA;AAAA,MAET,mBAAA,EAAqB,OAAA,GAAU,CAAA,OAAA,EAAU,OAAO,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,MAC3D,gBAAA,EAAkB,IAAA,GAAO,CAAA,OAAA,EAAU,IAAI,CAAA,MAAA,CAAA,GAAW;AAAA,KACpD;AAAA,EACF;AAKA,EAAA,MAAM,cAAA,GAAiB,cAAA,KAAmB,EAAA,GACtC,kCAAA,GACA,IAAA;AAEJ,EAAA,OAAO;AAAA;AAAA;AAAA,IAGL,WAAWC,sBAAA,CAAW,MAAA,CAAO,EAAE,CAAA,EAAG,SAAA,EAAwB,CAAA,CAAE,CAAA;AAAA,IAC5D,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACvPA,SAAS,gBAAA,CACP,UACA,SAAA,EACiB;AACjB,EAAA,OAAOC,wBAAA,CAAM,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AAC7C,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AAC1D,MAAA,uBAAOA,wBAAA,CAAA,aAAA,CAACC,gBAAA,EAAA,EAAK,KAAA,EAAO,SAAA,EAAA,EAAY,KAAM,CAAA;AAAA,IACxC;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AACH;AAGA,IAAM,aAAA,GAAuD;AAAA,EAC3D,CAAA,EAAG,QAAA;AAAA,EACH,CAAA,EAAG,UAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAKA,SAAS,iBAAiB,cAAA,EAAgD;AACxE,EAAA,IAAI,cAAA,IAAkB,IAAI,OAAO,CAAA;AACjC,EAAA,IAAI,cAAA,KAAmB,GAAG,OAAO,CAAA;AACjC,EAAA,OAAO,CAAA;AACT;AAWO,SAAS,KAAA,CAAM;AAAA,EACpB,QAAA;AAAA;AAAA,EAEA,SAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,KAAA;AAAA,EACA,UAAA;AAAA;AAAA,EAEA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA;AAAA,EAEA,KAAA;AAAA,EACA,OAAA;AAAA;AAAA,EAEA,OAAA;AAAA,EACA,GAAA;AAAA;AAAA,EAEA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA;AAAA,EAEA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,kBAAA;AAAA,EACA,iBAAA;AAAA;AAAA,EAEA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA;AAAA,EAEA;AACF,CAAA,EAAe;AACb,EAAA,MAAM,WAAWC,0BAAA,EAAgB;AACjC,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,QAAA;AACxB,EAAA,MAAM,iBAAiBC,0BAAA,EAAgB;AAGvC,EAAA,MAAM,cAAA,GAAiBC,gBAAQ,MAAM;AACnC,IAAA,IAAI,MAAA,IAAU,SAAS,OAAA,EAAS;AAC9B,MAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA;AAC5C,MAAA,IAAI,cAAc,OAAO,YAAA;AAAA,IAC3B;AACA,IAAA,OAAO,QAAA,CAAS,MAAA;AAAA,EAClB,GAAG,CAAC,MAAA,EAAQ,SAAS,OAAA,EAAS,QAAA,CAAS,MAAM,CAAC,CAAA;AAG9C,EAAA,MAAM,gBAAA,GAAmB,mBAAmB,QAAA,CAAS,MAAA;AAGrD,EAAA,MAAM,aAAA,GAA2B,KAAA,IAAS,cAAA,EAAgB,KAAA,IAAS,SAAA;AACnE,EAAA,MAAM,kBAAA,GAAqC,UAAA,IAAc,cAAA,EAAgB,UAAA,IAAc,MAAA;AAEvF,EAAA,MAAM,yBAAyC,SAAA,IAAa,CAAA;AAE5D,EAAA,MAAM,oBAAoC,SAAA,KAAc,MAAA,GACpD,iBAAiB,SAAS,CAAA,GAC1B,gBAAgB,SAAA,IAAa,CAAA;AAGjC,EAAA,MAAM,MAAA,GAASA,gBAAQ,MAAM;AAC3B,IAAA,OAAOC,wBAAA;AAAA,MACL,cAAA,CAAe,WAAA;AAAA,MACf,IAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAc,iBAAiB,CAAA;AAAA,MAC/B,cAAA,CAAe,OAAA;AAAA,MACf,cAAA,CAAe,MAAA;AAAA,MACf,cAAA,CAAe,UAAA;AAAA,MACf,cAAA,CAAe,KAAA;AAAA,MACf,cAAA,CAAe,aAAA;AAAA,MACf,cAAA,CAAe,cAAA;AAAA,MACf,cAAA,CAAe;AAAA,KACjB;AAAA,EACF,GAAG,CAAC,cAAA,EAAgB,IAAA,EAAM,KAAA,EAAO,iBAAiB,CAAC,CAAA;AAEnD,EAAA,MAAMC,OAAAA,GAASF,eAAA;AAAA,IACb,MAAM,cAAA,CAAe;AAAA,MACnB,MAAA;AAAA,MACA,cAAA,EAAgB,sBAAA;AAAA,MAChB,KAAA,EAAO,aAAA;AAAA,MACP,UAAA,EAAY,kBAAA;AAAA,MACZ,MAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACD;AAAA,MACE,MAAA;AAAA,MAAQ,sBAAA;AAAA,MAAwB,aAAA;AAAA,MAAe,kBAAA;AAAA,MAC/C,MAAA;AAAA,MAAQ,SAAA;AAAA,MAAW,IAAA;AAAA,MAAM,OAAA;AAAA,MAAS,OAAA;AAAA,MAAS,IAAA;AAAA,MAC3C,KAAA;AAAA,MAAO,OAAA;AAAA,MAAS,OAAA;AAAA,MAAS,GAAA;AAAA,MACzB,KAAA;AAAA,MAAO,MAAA;AAAA,MAAQ,QAAA;AAAA,MAAU,QAAA;AAAA,MAAU,SAAA;AAAA,MAAW,SAAA;AAAA,MAC9C,QAAA;AAAA,MAAU,GAAA;AAAA,MAAK,KAAA;AAAA,MAAO,MAAA;AAAA,MAAQ,IAAA;AAAA,MAAM,MAAA;AAAA,MAAQ,QAAA;AAAA,MAC5C;AAAA;AACF,GACF;AAGA,EAAA,MAAM,cAAA,GAAiB,UAAU,cAAA,EAAgB,MAAA;AAEjD,EAAA,MAAM,YAAA,GAAeA,eAAA;AAAA,IACnB,OAAO;AAAA,MACL,SAAA,EAAW,iBAAA;AAAA,MACX,MAAA;AAAA,MACA,MAAA,EAAQ,cAAA;AAAA,MACR,KAAA,EAAO,aAAA;AAAA,MACP,UAAA,EAAY;AAAA,KACd,CAAA;AAAA,IACA,CAAC,iBAAA,EAAmB,MAAA,EAAQ,cAAA,EAAgB,eAAe,kBAAkB;AAAA,GAC/E;AAIA,EAAA,MAAM,cAAA,GAAiBA,gBAAQ,MAAM;AACnC,IAAA,IAAI,CAAC,kBAAkB,OAAO,IAAA;AAC9B,IAAA,OAAO;AAAA,MACL,GAAG,QAAA;AAAA,MACH,MAAA,EAAQ,cAAA;AAAA,MACR,YAAA,EAAc,UAAU,QAAA,CAAS;AAAA,KACnC;AAAA,EACF,GAAG,CAAC,gBAAA,EAAkB,QAAA,EAAU,cAAA,EAAgB,MAAM,CAAC,CAAA;AAEvD,EAAA,MAAM,eAA4B,EAAC;AACnC,EAAA,IAAIE,QAAO,YAAA,EAAc;AACvB,IAAA,YAAA,CAAa,IAAA,CAAKA,QAAO,YAAoC,CAAA;AAAA,EAC/D;AACA,EAAA,IAAIA,QAAO,cAAA,EAAgB;AACzB,IAAA,YAAA,CAAa,IAAA,CAAK,EAAE,SAAA,EAAWA,OAAAA,CAAO,gBAAwC,CAAA;AAAA,EAChF;AAEA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAErE,EAAA,MAAM,SAAA,GAAYF,eAAA;AAAA,IAChB,OAAO;AAAA,MACL,OAAO,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CAAE,kBAAkB,CAAA,CAAE,WAAA;AAAA,MACxD,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,IAAI;AAAA,KAChD,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,aAAA,EAAe,kBAAkB;AAAA,GAC5C;AACA,EAAA,MAAM,eAAA,GAAkBA,eAAA;AAAA,IACtB,MAAM,gBAAA,CAAiB,QAAA,EAAU,SAAS,CAAA;AAAA,IAC1C,CAAC,UAAU,SAAS;AAAA,GACtB;AAEA,EAAA,MAAM,OAAA,mBACJJ,wBAAA,CAAA,aAAA;AAAA,IAACO,gBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,OAAO,CAACD,OAAAA,CAAO,WAAW,GAAG,YAAA,EAAc,GAAG,UAAU;AAAA,KAAA;AAAA,IAEvD;AAAA,GACH;AAGF,EAAA,MAAM,cAAA,GAAiB,iCACrBN,wBAAA,CAAA,aAAA,CAACQ,wBAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,cAAA,EAAA,EAC5B,OACH,CAAA,GACE,OAAA;AAEJ,EAAA,8DACGC,uBAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,gBAC3B,cACH,CAAA;AAEJ;ACjPO,SAAS,IAAA,CAAK;AAAA,EACnB,IAAA,GAAO,KAAA;AAAA,EACP,IAAA,GAAO,EAAA;AAAA,EACP,WAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA;AAAA;AAAA,EAEA,kBAAA;AAAA;AAAA,EAEA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAAc;AAEZ,EAAA,MAAM,SAASC,oBAAA,EAAU;AACzB,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AACjC,EAAA,MAAM,aAAA,GAAgB,UAAU,KAAA,IAAS,SAAA;AACzC,EAAA,MAAM,kBAAA,GAAqB,UAAU,UAAA,IAAc,MAAA;AAKnD,EAAA,MAAM,SAAA,GAAYC,gBAAmB,MAAM;AAEzC,IAAA,MAAM,QAAA,GAAW,IAAA,IAAQ,MAAA,CAAO,UAAA,CAAW,UAAU,IAAI,CAAA;AAIzD,IAAA,MAAM,cAAA,GAAiB,CAACO,KAAAA,KAAyB;AAC/C,MAAA,IAAIA,KAAAA,IAAQ,IAAI,OAAO,EAAA;AACvB,MAAA,IAAIA,KAAAA,IAAQ,IAAI,OAAO,EAAA;AACvB,MAAA,IAAIA,KAAAA,IAAQ,IAAI,OAAO,EAAA;AACvB,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAIA,IAAA,MAAM,IAAA,GAAO,WAAA,IAAe,cAAA,CAAe,QAAQ,CAAA;AAGnD,IAAA,MAAM,YAAY,KAAA,IAAS,MAAA,CAAO,OAAO,aAAa,CAAA,CAAE,kBAAkB,CAAA,CAAE,WAAA;AAK5E,IAAA,MAAM,UAAA,GAAa,CAAA,iBAAA,EAAoB,MAAA,CAAO,KAAA,CAAM,QAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAOnH,IAAA,MAAM,YAAY,OAAO,IAAA,KAAS,SAAA,GAAa,IAAA,GAAO,IAAI,CAAA,GAAK,IAAA;AAC/D,IAAA,MAAM,qBAAA,GAAwB,CAAA,OAAA,EAAU,SAAS,CAAA,SAAA,EAAY,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,SAAA,EAAY,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,SAAA,EAAY,IAAI,CAAA,CAAA;AAE9H,IAAA,OAAO;AAAA,MACL,UAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA,EAAO,QAAA;AAAA;AAAA,MACP,MAAA,EAAQ,QAAA;AAAA;AAAA,MACR,UAAA,EAAY,QAAA;AAAA;AAAA,MACZ,KAAA,EAAO,SAAA;AAAA,MACP,UAAA,EAAY,MAAA;AAAA;AAAA,MACZ,qBAAA;AAAA;AAAA,MACA,GAAG;AAAA,KACL;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,IAAA,EAAM,WAAA,EAAa,MAAM,KAAA,EAAO,KAAA,EAAO,aAAA,EAAe,kBAAkB,CAAC,CAAA;AAIrF,EAAA,uBACEX,wBAAAA,CAAA,aAAA;AAAA,IAACC,gBAAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,kBAAA;AAAA,MAGA,yBAAA,EAA2B,qBAAqB,KAAA,GAAQ,qBAAA;AAAA,MACxD,KAAA,EAAO;AAAA,KAAA;AAAA,IAEN;AAAA,GACH;AAEJ;AClFO,IAAM,gBAAA,GAAmBW,sBAEtB,IAAI,CAAA;AAGd,IAAM,gBAAA,uBAAuB,GAAA,CAAc,CAAC,YAAY,OAAA,EAAS,SAAA,EAAW,YAAY,CAAC,CAAA;AAOlF,SAAS,gBAAA,CACd,OACA,MAAA,EACA,KAAA,GAAmB,WACnB,UAAA,GAA6B,MAAA,EAC7B,OAAiB,MAAA,EACT;AACR,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,SAAA;AAAW,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,UAAU,CAAA,CAAE,WAAA;AAAA,IACxD,KAAK,WAAA;AAAa,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,UAAU,CAAA,CAAE,aAAA;AAAA,IAC1D,KAAK,UAAA;AAAY,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,UAAU,CAAA,CAAE,YAAA;AAAA,IACzD,KAAK,QAAA;AAAU,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,UAAU,CAAA,CAAE,gBAAA,CAAiB,GAAA,CAAI,IAAI,CAAA,GAAI,aAAA,GAAgB,aAAa,CAAA;AAAA,IACjH,KAAK,UAAA;AAAY,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,UAAU,CAAA,CAAE,YAAA;AAAA;AAE7D;AAGA,IAAM,cAAA,uBAAqB,GAAA,CAAI,CAAC,YAAY,OAAA,EAAS,SAAA,EAAW,YAAY,CAAC,CAAA;AAG7E,IAAM,kBAAA,GAAuD;AAAA,EAC3D,QAAA,EAAU,CAAA;AAAA,EACV,KAAA,EAAO,CAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAGA,SAAS,sBAAsB,IAAA,EAA+B;AAC5D,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA,CAAK,MAAA;AAC1C,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,MAAA,CAAO,IAAI,CAAA,CAAE,MAAA;AAClD,EAAA,IAAI,CAAC,MAAM,OAAO,CAAA;AAClB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,IAAA,OAAO,IAAA,CAAK,OAAO,CAAC,GAAA,EAAa,UAAU,GAAA,GAAM,qBAAA,CAAsB,KAAK,CAAA,EAAG,CAAC,CAAA;AAAA,EAClF;AACA,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAA,IAAW,IAAA,EAAM;AAC/C,IAAA,OAAO,qBAAA,CAAuB,IAAA,CAA4B,KAAA,EAAO,QAAQ,CAAA;AAAA,EAC3E;AACA,EAAA,OAAO,CAAA;AACT;AAoBA,SAAS,QAAA,CAAS;AAAA,EAChB,QAAA;AAAA,EACA,KAAA,GAAQ,MAAA;AAAA,EACR,IAAA,GAAO,MAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,IAAA,EAAM,YAAA;AAAA,EACN,MAAA,EAAQ,cAAA;AAAA,EACR,KAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,iBAAA,EAAmB,yBAAA;AAAA,EACnB,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,gBAAA,GAAmB,KAAA;AAAA,EACnB;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,MAAA,GAASF,qBAAU,SAAS,CAAA;AAClC,EAAA,MAAM,EAAE,MAAA,EAAQ,iBAAA,EAAkB,GAAIR,0BAAAA,EAAgB;AACtD,EAAA,MAAM,WAAWC,0BAAAA,EAAgB;AACjC,EAAA,MAAM,aAAA,GAA2B,UAAU,KAAA,IAAS,SAAA;AACpD,EAAA,MAAM,kBAAA,GAAqC,UAAU,UAAA,IAAc,MAAA;AAEnE,EAAA,MAAM,OAAO,YAAA,IAAgB,IAAA;AAC7B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAE9C,EAAA,MAAM,kBAAA,GAAqB,cAAA,GACvBU,yBAAA,CAAoB,cAAc,CAAA,GACjC,MAAA,CAAO,UAAA,CAAW,WAAA,GAAc,IAAI,CAAA,IAAKC,0BAAA,CAAqB,IAAI,CAAA;AAGvE,EAAA,MAAM,aAAaC,wBAAA,EAAc;AACjC,EAAA,MAAM,WAAW,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAI,EAAE,IAAI,CAAA;AACnD,EAAA,MAAM,OAAA,GAAUC,2BAAA,CAAsB,UAAU,CAAA,CAAE,IAAI,CAAA;AACtD,EAAA,MAAM,OAAO,OAAA,KAAY,CAAA,GAAM,QAAA,GAAWC,mBAAA,CAAc,UAAU,OAAO,CAAA;AAIzE,EAAA,MAAM,eAAeC,oCAAA,EAA0B;AAC/C,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAClD,EAAA,MAAM,UAAA,GAAaC,8BAAA;AAAA,IACjB,QAAA,CAAS,MAAA;AAAA,IACTN,yBAAA,CAAoB,OAAA;AAAA,IACpB,aAAa,MAAA,CAAO,QAAA;AAAA,IACpB,YAAA,CAAa,SAAS,MAAM;AAAA,GAC9B;AAEA,EAAA,MAAM,UAAA,GAAa,cAAA,CAAe,GAAA,CAAI,IAAI,CAAA;AAC1C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIjB,iBAAwB,IAAI,CAAA;AACxE,EAAA,MAAM,cAAA,GAAiBQ,gBAAQ,MAAM,qBAAA,CAAsB,QAAQ,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEhF,EAAA,MAAM,YAAA,GAAeA,eAAAA;AAAA,IACnB,MACEgB,2BAAA;AAAA,MACE;AAAA,QACE,IAAA;AAAA,QACA,IAAA;AAAA,QACA,YAAY,UAAA,IAAc,UAAA;AAAA,QAC1B,YAAY,QAAA,CAAS,MAAA;AAAA,QACrB,aAAa,IAAA,CAAK,QAAA;AAAA,QAClB,WAAA,EAAa,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,CAAK,QAAA,GAAW,GAAG,CAAC;AAAA,OAC1D;AAAA,MACA,OAAO,UAAA,CAAW,KAAA;AAAA,MAClB,cAAA,IAAkB,IAAA,GAAO,EAAE,cAAA,EAAgB,gBAAe,GAAI,MAAA;AAAA,MAC9D,EAAE,CAAC,QAAA,CAAS,MAAM,GAAG,UAAA;AAAW,KAClC;AAAA;AAAA,IAEF,CAAC,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,YAAY,QAAA,CAAS,MAAA,EAAQ,IAAA,CAAK,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,KAAA,EAAO,cAAA,EAAgB,gBAAgB,UAAU;AAAA,GAC1I;AAGA,EAAAvB,kBAAU,MAAM;AACd,IAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,cAAc,CAAC,UAAA,IAAc,kBAAkB,IAAA,EAAM;AAChF,IAAA,MAAM,aAAawB,wBAAA,CAAmB,cAAA,EAAgB,cAAA,EAAgB,YAAA,CAAa,UAAU,UAAU,CAAA;AACvG,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AACjD,IAAAC,6BAAA,CAAmB,iBAAA,EAAmB;AAAA,MACpC,YAAY,QAAA,CAAS,MAAA;AAAA,MACrB,UAAA,EAAY,kBAAA;AAAA,MACZ,IAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAU,YAAA,CAAa,QAAA;AAAA,MACvB,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAW,UAAA,CAAW,MAAA;AAAA,MACtB,aAAA,EAAe,cAAA,GAAiB,CAAA,GAAI,QAAA,GAAW,cAAA,GAAiB;AAAA,KACjE,CAAA;AAAA,EAEH,GAAG,CAAC,iBAAA,EAAmB,YAAA,CAAa,QAAA,EAAU,cAAc,CAAC,CAAA;AAE7D,EAAA,MAAM,aAAA,GAAgBlB,gBAAmB,MAAM;AAC7C,IAAA,MAAM,UAAA,GAAa,UAAA,IAAc,UAAA,GAAa,YAAA,GAAe,IAAA;AAG7D,IAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,UAAA,CAAW,WAAA,GAAc,SAAS,MAAM,CAAA;AAGtE,IAAA,MAAM,mBAAA,GAAsB,cAAA,GACxB,IAAA,CAAK,KAAA,CAAO,UAAA,CAAW,UAAA,GAAa,cAAA,CAAe,sBAAA,GAAyBmB,iCAAA,GAA+B,CAAC,CAAA,GAAI,CAAA,GAChH,UAAA,CAAW,UAAA;AAGf,IAAA,MAAM,QAAA,GAAW,gBAAA,IAAoB,cAAA,GACjC,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,oBAAA,GAAuB,UAAA,CAAW,QAAA,GAAW,CAAC,CAAA,GAAI,CAAA,GAC5E,CAAA;AAGJ,IAAA,MAAM,iBAAiB,QAAA,GAClB,cAAA,EAAgB,QAAA,GAAW,QAAA,CAAS,OAAO,CAAA,GAAA,KAAO,cAAA,CAAe,QAAA,CAAS,QAAA,CAAS,GAAG,CAAC,CAAA,GAAI,CAAC,GAAG,QAAQ,IACxG,EAAC;AACL,IAAA,MAAM,kBAAkB,cAAA,CAAe,MAAA,GAAS,CAAA,GAAIC,8BAAA,CAAyB,cAAc,CAAA,GAAI,MAAA;AAE/F,IAAA,OAAO;AAAA,MACL,YAAY,QAAA,CAAS,MAAA;AAAA,MACrB,UAAU,UAAA,CAAW,QAAA;AAAA,MACrB,UAAA,EAAY,OAAO,kBAAkB,CAAA;AAAA,MACrC,OAAO,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ,aAAA,EAAe,oBAAoB,IAAI,CAAA;AAAA,MAC9E,UAAA,EAAY,mBAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,GAAI,QAAA,KAAa,CAAA,GAAI,EAAE,SAAA,EAAW,CAAC,EAAE,UAAA,EAAY,QAAA,EAAU,CAAA,EAAE,GAAI,EAAC;AAAA,MAClE,GAAI,eAAA,GAAkB,EAAE,mBAAA,EAAqB,eAAA,KAA2B;AAAC,KAC3E;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,UAAU,IAAA,EAAM,YAAA,EAAc,YAAY,UAAA,EAAY,kBAAA,EAAoB,KAAA,EAAO,KAAA,EAAO,OAAO,UAAA,CAAW,WAAA,EAAa,kBAAkB,QAAA,EAAU,aAAA,EAAe,kBAAkB,CAAC,CAAA;AAIjM,EAAA,MAAM,mBAAoB,IAAA,KAAS,UAAA,IAAc,SAAS,OAAA,IAAW,IAAA,KAAS,YAC1E,QAAA,GACA,MAAA;AACJ,EAAA,MAAM,oBAAoB,yBAAA,IAA6B,gBAAA;AACvD,EAAA,MAAM,SAAA,GAAY,iBAAA,KAAsB,QAAA,GAAW,kBAAA,CAAmB,IAAI,CAAA,GAAI,MAAA;AAG9E,EAAA,MAAM,QAAA,GAAWpB,gBAAQ,OAAO,EAAE,SAASS,yBAAA,EAAoB,CAAA,EAAI,EAAE,CAAA;AAErE,EAAA,MAAM,QAAA,mBACJb,wBAAAA,CAAA,aAAA,CAAC,gBAAA,CAAiB,UAAjB,EAA0B,KAAA,EAAO,QAAA,EAAA,kBAChCA,wBAAAA,CAAA,aAAA;AAAA,IAACyB,gBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAA,EAAmB,iBAAA;AAAA,MACnB,YAAA,EAAY,SAAA;AAAA,MACZ,KAAA,EAAO,KAAA,GACH,CAAC,aAAA,EAAe,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAE,CAAA,GAC3D,aAAA;AAAA,MAEJ;AAAA,KAAA;AAAA,IAEC;AAAA,GAEL,CAAA;AAKF,EAAA,IAAI,cAAc,UAAA,EAAY;AAC5B,IAAA,uBACEzB,wBAAAA,CAAA,aAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,CAAC,CAAA,KAAyB;AAClC,UAAA,MAAM,CAAA,GAAI,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,KAAA;AAC/B,UAAA,IAAI,CAAA,GAAI,CAAA,EAAG,iBAAA,CAAkB,CAAC,CAAA;AAAA,QAChC,CAAA;AAAA,QACA,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA;AAAO,OAAA;AAAA,MAEtB;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,OAAO,QAAA;AACT;AC1PO,SAAS,QAAA,CAAS,EAAE,QAAA,EAAU,KAAA,EAAO,QAAQ,MAAA,EAAQ,SAAA,EAAW,SAAA,EAAW,KAAA,EAAM,EAAkB;AACxG,EAAA,MAAM,SAASG,oBAAAA,EAAU;AACzB,EAAA,MAAM,QAAA,GAAWgB,mBAAW,gBAAgB,CAAA;AAC5C,EAAA,MAAM,WAAWvB,0BAAAA,EAAgB;AACjC,EAAA,MAAM,aAAA,GAA2B,UAAU,KAAA,IAAS,SAAA;AACpD,EAAA,MAAM,kBAAA,GAAqC,UAAU,UAAA,IAAc,MAAA;AAEnE,EAAA,MAAM,SAAA,GAAYC,gBAAmB,MAAM;AACzC,IAAA,MAAM,IAAe,EAAC;AACtB,IAAA,IAAI,OAAO,CAAA,CAAE,KAAA,GAAQ,iBAAiB,KAAA,EAAO,MAAA,EAAQ,eAAe,kBAAkB,CAAA;AACtF,IAAA,IAAI,MAAA,IAAU,UAAU,CAAA,CAAE,UAAA,GAAa,OAAO,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAC,CAAA;AACtE,IAAA,IAAI,MAAA,IAAU,SAAA,GAAY,QAAA;AAC1B,IAAA,IAAI,SAAA,IAAa,kBAAA,GAAqB,WAAA;AACtC,IAAA,IAAI,WAAW,CAAA,CAAE,eAAA,GAAkB,iBAAiB,SAAA,EAAW,MAAA,EAAQ,eAAe,kBAAkB,CAAA;AACxG,IAAA,OAAO,CAAA;AAAA,EACT,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,SAAA,EAAW,SAAA,EAAW,aAAA,EAAe,kBAAkB,CAAC,CAAA;AAErG,EAAA,OAAOJ,wBAAAA,CAAM,aAAA;AAAA,IACXyB,gBAAAA;AAAA,IACA,EAAE,KAAA,EAAO,KAAA,GAAQ,CAAC,WAAW,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,KAAA,GAAQ,CAAC,KAAK,CAAE,IAAI,SAAA,EAAU;AAAA,IACtF;AAAA,GACF;AACF;AAGO,SAAS,SAAS,KAAA,EAAsC;AAC7D,EAAA,OAAOzB,wBAAAA,CAAM,cAAc,QAAA,EAAU,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,QAAsB,CAAA;AACjF;AAGO,SAAS,WAAW,KAAA,EAAsC;AAC/D,EAAA,OAAOA,wBAAAA,CAAM,cAAc,QAAA,EAAU,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,UAAwB,CAAA;AACnF;AAGO,SAAS,WAAW,KAAA,EAAsC;AAC/D,EAAA,OAAOA,wBAAAA,CAAM,cAAc,QAAA,EAAU,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,MAAM,CAAA;AACjE;AAGO,SAAS,cAAc,KAAA,EAAyC;AACrE,EAAA,OAAOA,wBAAAA,CAAM,cAAc,QAAA,EAAU,EAAE,GAAG,KAAA,EAAO,SAAA,EAAW,MAAM,CAAA;AACpE;AAGO,SAAS,cAAc,KAAA,EAA8F;AAC1H,EAAA,OAAOA,wBAAAA,CAAM,aAAA,CAAc,QAAA,EAAU,KAAsB,CAAA;AAC7D;;;AC7CO,IAAMC,KAAAA,GAAO,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU;AAAA,EAC1C,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,UAAA;AAAA,EACR,MAAA,EAAQ,UAAA;AAAA,EACR,SAAA,EAAW,aAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAC;ACjBD,IAAM,MAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,CAAA;AAAA,IACN,aAAA,EAAe,QAAA;AAAA,IACf,GAAI4B,qBAAS,EAAA,KAAO,KAAA,GAAQ,EAAE,SAAA,EAAW,OAAA,KAAiC;AAAC,GAC7E;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,CAAA;AAAA,IACN,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AA4BM,SAAS,IAAA,CAAK;AAAA,EACnB,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,WAAWzB,0BAAAA,EAAgB;AAIjC,EAAA,MAAM,cAAA,GAAiBE,gBAAQ,MAAM;AACnC,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,QAAA,CAAS,SAAS,OAAO,IAAA;AACzC,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA;AAC5C,IAAA,IAAI,CAAC,YAAA,IAAgB,YAAA,KAAiB,QAAA,CAAS,QAAQ,OAAO,IAAA;AAC9D,IAAA,OAAO;AAAA,MACL,GAAG,QAAA;AAAA,MACH,MAAA,EAAQ,YAAA;AAAA,MACR,YAAA,EAAc;AAAA,KAChB;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAErB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAErE,EAAA,MAAM,OAAA,mBACJJ,wBAAAA,CAAA,aAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAA,EAAkB,MAAA;AAAA,MAClB,KAAA,EAAO,CAAC,MAAA,CAAO,IAAA,EAAM,GAAG,UAAU;AAAA,KAAA;AAAA,IAEjC,MAAA;AAAA,IACA,OAAA,mBACCP,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,OAAO,IAAA,EAAA,EACjB,OAAA,kBACDP,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,OAAO,OAAA,EAAA,EAAU,QAAS,CACzC,CAAA,GAEA;AAAA,GAEJ;AAGF,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,uBACEP,yBAAA,aAAA,CAACQ,wBAAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,kBAC5B,OACH,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,OAAA;AACT;AClGA,IAAMF,OAAAA,GAASP,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;AAoBM,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAErE,EAAA,uBACEC,wBAAAA,CAAA,aAAA;AAAA,IAAC4B,sBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAOtB,OAAAA,CAAO,IAAA;AAAA,MACd,qBAAA,EAAuB,CAACA,OAAAA,CAAO,OAAA,EAAS,GAAG,UAAU;AAAA,KAAA;AAAA,IAEpD;AAAA,GACH;AAEJ;ACKO,SAAS,iBAAiB,KAAA,EAAqC;AACpE,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,SAAA,GAAY,UAAA;AAAA,IACZ,IAAA,GAAO,KAAA;AAAA,IACP,OAAA,GAAU,KAAA;AAAA,IACV,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAqC,EAAC;AAG5C,EAAA,SAAA,CAAU,aAAA,GAAgB,oBAAA,CAAqB,SAAA,EAAW,OAAO,CAAA;AACjE,EAAA,IAAI,IAAA,YAAgB,QAAA,GAAW,MAAA;AAG/B,EAAA,IAAI,KAAA,EAAO,SAAA,CAAU,UAAA,GAAa,gBAAA,CAAiB,KAAK,CAAA;AACxD,EAAA,IAAI,OAAA,EAAS,SAAA,CAAU,cAAA,GAAiB,oBAAA,CAAqB,OAAO,CAAA;AAGpE,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAM,CAAA,GAAI,cAAA,CAAe,OAAA,EAAS,MAAM,CAAA;AACxC,IAAA,SAAA,CAAU,aAAa,CAAA,CAAE,GAAA;AACzB,IAAA,SAAA,CAAU,eAAe,CAAA,CAAE,KAAA;AAC3B,IAAA,SAAA,CAAU,gBAAgB,CAAA,CAAE,MAAA;AAC5B,IAAA,SAAA,CAAU,cAAc,CAAA,CAAE,IAAA;AAAA,EAC5B;AAGA,EAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,GAAA,EAAK,MAAM,CAAA;AAChC,IAAA,SAAA,CAAU,SAAS,CAAA,CAAE,MAAA;AACrB,IAAA,SAAA,CAAU,YAAY,CAAA,CAAE,SAAA;AAAA,EAC1B;AAGA,EAAA,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW,aAAA,CAAc,KAAA,EAAO,MAAM,CAAC,CAAA;AAGrD,EAAA,IAAI,QAAA,KAAa,MAAA,EAAW,SAAA,CAAU,QAAA,GAAW,QAAA;AACjD,EAAA,IAAI,QAAA,KAAa,MAAA,EAAW,SAAA,CAAU,QAAA,GAAW,QAAA;AACjD,EAAA,IAAI,SAAA,KAAc,MAAA,EAAW,SAAA,CAAU,SAAA,GAAY,SAAA;AACnD,EAAA,IAAI,SAAA,KAAc,MAAA,EAAW,SAAA,CAAU,SAAA,GAAY,SAAA;AAGnD,EAAA,IAAI,QAAA,YAAoB,QAAA,GAAW,QAAA;AACnC,EAAA,IAAI,GAAA,KAAQ,MAAA,EAAW,SAAA,CAAU,GAAA,GAAM,GAAA;AACvC,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,SAAA,CAAU,KAAA,GAAQ,KAAA;AAC3C,EAAA,IAAI,MAAA,KAAW,MAAA,EAAW,SAAA,CAAU,MAAA,GAAS,MAAA;AAC7C,EAAA,IAAI,IAAA,KAAS,MAAA,EAAW,SAAA,CAAU,IAAA,GAAO,IAAA;AACzC,EAAA,IAAI,MAAA,KAAW,MAAA,EAAW,SAAA,CAAU,MAAA,GAAS,MAAA;AAC7C,EAAA,IAAI,QAAA,YAAoB,QAAA,GAAW,QAAA;AAEnC,EAAA,OAAOP,uBAAW,MAAA,CAAO,EAAE,CAAA,EAAG,SAAA,EAAwB,CAAA,CAAE,CAAA;AAC1D;AC9GO,SAAS,OAAA,CAAQ;AAAA,EACtB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,SAASW,oBAAAA,EAAU;AAEzB,EAAA,MAAM,cAAA,GAAiBN,eAAAA;AAAA,IACrB,MAAM,gBAAA,CAAiB;AAAA,MACrB,MAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACD;AAAA,MACE,MAAA;AAAA,MAAQ,SAAA;AAAA,MAAW,IAAA;AAAA,MAAM,OAAA;AAAA,MACzB,KAAA;AAAA,MAAO,OAAA;AAAA,MAAS,OAAA;AAAA,MAAS,GAAA;AAAA,MACzB,KAAA;AAAA,MAAO,MAAA;AAAA,MAAQ,QAAA;AAAA,MAAU,QAAA;AAAA,MAAU,SAAA;AAAA,MAAW,SAAA;AAAA,MAC9C,QAAA;AAAA,MAAU,GAAA;AAAA,MAAK,KAAA;AAAA,MAAO,MAAA;AAAA,MAAQ,IAAA;AAAA,MAAM,MAAA;AAAA,MAAQ;AAAA;AAC9C,GACF;AAEA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAErE,EAAA,uBACEJ,wBAAAA,CAAA,aAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA,EAAkB,MAAA;AAAA,MAClB,KAAA,EAAO,CAAC,cAAA,EAAgB,GAAG,UAAU;AAAA,KAAA;AAAA,IAEpC;AAAA,GACH;AAEJ;AC9EA,IAAM,YAAA,GAAgD;AAAA,EACpD,EAAA,EAAM,EAAE,QAAA,EAAU,GAAA,EAAM,mBAAmB,EAAA,EAAG;AAAA,EAC9C,EAAA,EAAM,EAAE,QAAA,EAAU,GAAA,EAAM,mBAAmB,EAAA,EAAG;AAAA,EAC9C,EAAA,EAAM,EAAE,QAAA,EAAU,GAAA,EAAM,mBAAmB,EAAA,EAAG;AAAA,EAC9C,EAAA,EAAM,EAAE,QAAA,EAAU,IAAA,EAAM,mBAAmB,EAAA,EAAG;AAAA,EAC9C,EAAA,EAAM,EAAE,QAAA,EAAU,IAAA,EAAM,mBAAmB,EAAA,EAAG;AAAA,EAC9C,IAAA,EAAM,EAAE,QAAA,EAAU,MAAA,EAAW,mBAAmB,CAAA;AAClD,CAAA;AAqBO,SAAS,iBAAiB,KAAA,EAAqC;AACpE,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,IAAA,GAAO,IAAA;AAAA,IACP,IAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,MAAA,GAAS,aAAa,IAAI,CAAA;AAChC,EAAA,MAAM,YAAqC,EAAC;AAG5C,EAAA,SAAA,CAAU,KAAA,GAAQ,MAAA;AAClB,EAAA,SAAA,CAAU,aAAA,GAAgB,QAAA;AAG1B,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,SAAA,CAAU,IAAA,GAAO,CAAA;AAAA,EACnB;AAGA,EAAA,IAAI,MAAA,CAAO,aAAa,MAAA,EAAW;AACjC,IAAA,SAAA,CAAU,WAAW,MAAA,CAAO,QAAA;AAC5B,IAAA,SAAA,CAAU,UAAA,GAAa,MAAA;AACvB,IAAA,SAAA,CAAU,WAAA,GAAc,MAAA;AAAA,EAC1B;AAGA,EAAA,SAAA,CAAU,cAAc,MAAA,CAAO,iBAAA;AAC/B,EAAA,SAAA,CAAU,eAAe,MAAA,CAAO,iBAAA;AAGhC,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAM,CAAA,GAAI,cAAA,CAAe,OAAA,EAAS,MAAM,CAAA;AACxC,IAAA,SAAA,CAAU,aAAa,CAAA,CAAE,GAAA;AACzB,IAAA,SAAA,CAAU,gBAAgB,CAAA,CAAE,MAAA;AAAA,EAC9B;AAGA,EAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,GAAA,EAAK,MAAM,CAAA;AAChC,IAAA,SAAA,CAAU,SAAS,CAAA,CAAE,MAAA;AACrB,IAAA,SAAA,CAAU,YAAY,CAAA,CAAE,SAAA;AAAA,EAC1B;AAEA,EAAA,OAAOR,uBAAW,MAAA,CAAO,EAAE,CAAA,EAAG,SAAA,EAAwB,CAAA,CAAE,CAAA;AAC1D;AChEO,SAAS,OAAA,CAAQ;AAAA,EACtB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,SAASW,oBAAAA,EAAU;AAEzB,EAAA,MAAM,cAAA,GAAiBN,eAAAA;AAAA,IACrB,MAAM,iBAAiB,EAAE,MAAA,EAAQ,MAAM,IAAA,EAAM,GAAA,EAAK,SAAS,CAAA;AAAA,IAC3D,CAAC,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,KAAK,OAAO;AAAA,GACnC;AAEA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAErE,EAAA,uBACEJ,wBAAAA,CAAA,aAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAA,EAAkB,MAAA;AAAA,MAClB,KAAA,EAAO,CAAC,cAAA,EAAgB,GAAG,UAAU;AAAA,KAAA;AAAA,IAEpC;AAAA,GACH;AAEJ;;;AChDO,IAAM,cAAA,GAA6C;AAAA,EACxD,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAwCO,SAAS,oBAAA,CACd,IAAA,EACA,OAAA,EACA,OAAA,EACA,YAAA,EACe;AACf,EAAA,MAAM,WAAA,GAA0C;AAAA,IAC9C,EAAA,EAAI,EAAA;AAAA,IACJ,EAAA,EAAI,EAAA;AAAA,IACJ,EAAA,EAAI,EAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAEA,EAAA,MAAM,IAAA,GAAO,YAAY,IAAI,CAAA;AAC7B,EAAA,MAAM,SAAA,GAAY,CAAA;AAGlB,EAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACvB,IAAA,OAAO,EAAE,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,IAAA,EAAK;AAAA,EACjD;AAGA,EAAA,IAAI,OAAA,IAAW,CAAC,OAAA,EAAS;AACvB,IAAA,OAAO,EAAE,WAAA,EAAa,IAAA,GAAO,SAAA,EAAW,YAAA,EAAc,OAAO,SAAA,EAAU;AAAA,EACzE;AAGA,EAAA,IAAI,WAAW,OAAA,EAAS;AACtB,IAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,MAAA,OAAO,EAAE,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,OAAO,SAAA,EAAU;AAAA,IAC7D,CAAA,MAAO;AACL,MAAA,OAAO,EAAE,WAAA,EAAa,IAAA,GAAO,SAAA,EAAW,cAAc,IAAA,EAAK;AAAA,IAC7D;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,WAAA,EAAa,IAAA,EAAM,YAAA,EAAc,IAAA,EAAK;AACjD;AASO,SAAS,eAAA,CACd,OAAA,EACA,IAAA,EACA,QAAA,EACA,QACA,KAAA,EACc;AACd,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,IAAA,EAAM,MAAM,CAAA;AAC7C,EAAA,MAAM,aAAA,GAAgB,gBAAA,CAAiB,OAAA,EAAS,QAAA,EAAU,QAAQ,KAAK,CAAA;AAEvE,EAAA,OAAO;AAAA,IACL,aAAA;AAAA,IACA,UAAA,EAAY;AAAA,MACV,QAAQ,UAAA,CAAW,MAAA;AAAA,MACnB,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,KAAK,UAAA,CAAW,GAAA;AAAA,MAChB,cAAc,UAAA,CAAW,YAAA;AAAA,MACzB,UAAU,UAAA,CAAW,QAAA;AAAA,MACrB,UAAU,UAAA,CAAW;AAAA;AACvB,GACF;AACF;AAMA,SAAS,aAAA,CAAc,MAAkB,MAAA,EAAyB;AAChE,EAAA,MAAM,OAAA,GAOD;AAAA,IACH,EAAA,EAAI;AAAA,MACF,QAAQ,cAAA,CAAe,EAAA;AAAA,MACvB,OAAA,EAAS,EAAA;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,YAAA,EAAc,CAAA;AAAA,MACd,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,EAAA,EAAI;AAAA,MACF,QAAQ,cAAA,CAAe,EAAA;AAAA,MACvB,OAAA,EAAS,EAAA;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,YAAA,EAAc,EAAA;AAAA,MACd,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,EAAA,EAAI;AAAA,MACF,QAAQ,cAAA,CAAe,EAAA;AAAA,MACvB,OAAA,EAAS,EAAA;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,YAAA,EAAc,EAAA;AAAA,MACd,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,EAAA,EAAI;AAAA,MACF,QAAQ,cAAA,CAAe,EAAA;AAAA,MACvB,OAAA,EAAS,EAAA;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,YAAA,EAAc,EAAA;AAAA,MACd,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU;AAAA;AACZ,GACF;AAEA,EAAA,OAAO,QAAQ,IAAI,CAAA;AACrB;AAMA,SAAS,gBAAA,CACP,OAAA,EACA,QAAA,EACA,MAAA,EACA,KAAA,EACA;AACA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO,wBAAA,CAAyB,OAAA,EAAS,MAAA,EAAQ,KAAK,CAAA;AAAA,EACxD;AAEA,EAAA,OAAO,wBAAA,CAAyB,OAAA,EAAS,MAAA,EAAQ,KAAK,CAAA;AACxD;AAMA,SAAS,wBAAA,CACP,OAAA,EACA,MAAA,EACA,KAAA,EACA;AACA,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AAG7B,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,EAAE,QAAA,CAAS,aAAA;AAAA,MACf,SAAA,EAAW,EAAE,QAAA,CAAS,aAAA;AAAA,MACtB,SAAA,EAAW,EAAE,QAAA,CAAS,aAAA;AAAA,MACtB,SAAA,EAAW,EAAE,QAAA,CAAS,WAAA;AAAA,MACtB,SAAA,EAAW,EAAE,QAAA,CAAS,WAAA;AAAA,MACtB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAGA,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,EAAE,MAAA,CAAO,aAAA;AAAA,MACb,SAAA,EAAW,EAAE,MAAA,CAAO,aAAA;AAAA,MACpB,SAAA,EAAW,EAAE,MAAA,CAAO,aAAA;AAAA,MACpB,SAAA,EAAW,EAAE,MAAA,CAAO,WAAA;AAAA,MACpB,SAAA,EAAW,EAAE,MAAA,CAAO,WAAA;AAAA,MACpB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAGA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,aAAA;AAAA,IACJ,SAAA,EAAW,EAAE,IAAA,CAAK,aAAA;AAAA,IAClB,SAAA,EAAW,EAAE,IAAA,CAAK,aAAA;AAAA,IAClB,SAAA,EAAW,EAAE,IAAA,CAAK,aAAA;AAAA,IAClB,SAAA,EAAW,EAAE,IAAA,CAAK,aAAA;AAAA,IAClB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,cAAA,EAAgB;AAAA,GAClB;AACF;AAMA,SAAS,wBAAA,CACP,OAAA,EACA,MAAA,EACA,KAAA,EACA;AACA,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AAG7B,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,EAAE,IAAA,CAAK,aAAA;AAAA,MACX,SAAA,EAAW,EAAE,IAAA,CAAK,aAAA;AAAA,MAClB,SAAA,EAAW,EAAE,IAAA,CAAK,aAAA;AAAA,MAClB,SAAA,EAAW,EAAE,IAAA,CAAK,YAAA;AAAA,MAClB,SAAA,EAAW,EAAE,IAAA,CAAK,YAAA;AAAA,MAClB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAGA,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,aAAA;AAAA,MACJ,SAAA,EAAW,aAAA;AAAA,MACX,SAAA,EAAW,aAAA;AAAA,MACX,SAAA,EAAW,EAAE,IAAA,CAAK,YAAA;AAAA,MAClB,SAAA,EAAW,EAAE,IAAA,CAAK,YAAA;AAAA,MAClB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa,EAAE,IAAA,CAAK;AAAA,KACtB;AAAA,EACF;AAGA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,aAAA;AAAA,IACJ,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW,EAAE,IAAA,CAAK,YAAA;AAAA,IAClB,SAAA,EAAW,EAAE,IAAA,CAAK,YAAA;AAAA,IAClB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa;AAAA,GACf;AACF;ACrPO,SAAS,MAAA,CAAO;AAAA,EACrB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA,GAAe,MAAA;AAAA,EACf,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,GAAY,KAAA;AAAA,EACZ,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,MAAM,SAASG,oBAAAA,EAAU;AACzB,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AAGjC,EAAA,MAAM,KAAA,GAAQ,UAAU,KAAA,IAAS,SAAA;AAGjC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,OAAA,CAAQ,GAAA,CAAI,UAAA,EAAY,EAAE,KAAA,EAAO,OAAA,EAAS,aAAA,EAAe,QAAA,EAAU,KAAA,EAAO,WAAA,EAAa,CAAC,CAAC,QAAA,EAAU,CAAA;AACnG,IAAA,IAAI,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,EAAG;AACxB,MAAA,MAAM,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AAC7B,MAAA,OAAA,CAAQ,IAAI,iBAAA,EAAmB;AAAA,QAC7B,wBAAA,EAA0B,EAAE,QAAA,CAAS,aAAA;AAAA,QACrC,oBAAA,EAAsB,EAAE,IAAA,CAAK,aAAA;AAAA,QAC7B,iBAAA,EAAmB,EAAE,IAAA,CAAK;AAAA,OAC3B,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,GAAA,CAAI,iCAAiC,KAAA,EAAO,mBAAA,EAAqB,OAAO,IAAA,CAAK,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,IACrG;AAAA,EACF;AAEA,EAAA,MAAM,aAAa,QAAA,IAAY,OAAA;AAE/B,EAAA,MAAM,EAAE,aAAA,EAAe,UAAA,EAAW,GAAIH,wBAAAA,CAAM,OAAA;AAAA,IAC1C,MAAM,eAAA,CAAgB,OAAA,EAAS,IAAA,EAAM,UAAA,EAAY,QAAQ,KAAK,CAAA;AAAA,IAC9D,CAAC,OAAA,EAAS,IAAA,EAAM,UAAA,EAAY,QAAQ,KAAK;AAAA,GAC3C;AAIA,EAAA,MAAM,UAAUA,wBAAAA,CAAM,OAAA;AAAA,IACpB,MAAM,qBAAqB,IAAA,EAAM,CAAC,CAAC,IAAA,EAAM,CAAC,CAAC,QAAA,EAAU,YAAY,CAAA;AAAA,IACjE,CAAC,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,YAAY;AAAA,GACrC;AAEA,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAAC6B,qBAAA,EAAA,EAAU,UAAU,UAAA,EAAa,GAAG,cAAA,EAAA,EAClC,CAAC,EAAE,OAAA,EAAS,OAAA,EAAQ,qBACnB7B,wBAAAA,CAAA,aAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAM,QAAA;AAAA,MACN,OAAA,EAAQ,QAAA;AAAA,MACR,KAAK,UAAA,CAAW,GAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL;AAAA,UACE,QAAQ,UAAA,CAAW,MAAA;AAAA,UACnB,aAAa,OAAA,CAAQ,WAAA;AAAA,UACrB,cAAc,OAAA,CAAQ,YAAA;AAAA,UACtB,eAAA,EAAiB,OAAA,IAAW,CAAC,UAAA,GACzB,aAAA,CAAc,SAAA,GACd,OAAA,IAAW,CAAC,UAAA,GACV,aAAA,CAAc,SAAA,GACd,aAAA,CAAc,EAAA;AAAA,UACpB,cAAc,UAAA,CAAW,YAAA;AAAA,UACzB,aAAa,aAAA,CAAc,WAAA;AAAA,UAC3B,WAAA,EAAa,cAAc,WAAA,IAAe,aAAA;AAAA,UAC1C,OAAA,EAAS,UAAU,GAAA,GAAM,CAAA;AAAA,UACzB,GAAI,SAAA,IAAa,EAAE,KAAA,EAAO,MAAA,EAAe,WAAW,SAAA;AAAiB,SACvE;AAAA,QACA,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI;AAAC;AACxD,KAAA;AAAA,IAEC,IAAA,IAAQ,YAAA,KAAiB,MAAA,oBACxBA,yBAAA,aAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,CAAW,QAAA,EAAU,KAAA,EAAO,cAAc,SAAA,EAAW,CAAA;AAAA,IAE9E,QAAA,oBACCA,wBAAAA,CAAA,aAAA;AAAA,MAACC,KAAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,MAAM,UAAA,CAAW,QAAA;AAAA,QACjB,gBAAA,EAAgB,IAAA;AAAA,QAChB,KAAA,EAAO;AAAA,UACL,EAAE,KAAA,EAAO,aAAA,CAAc,SAAA,EAAW,kBAAA,EAAoB,cAAc,cAAA,EAAe;AAAA,UACnF,GAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,YAAY,SAAA,GAAY,CAAC,SAAS,CAAA,GAAI;AAAC;AACxE,OAAA;AAAA,MAEC;AAAA,KACH;AAAA,IAED,IAAA,IAAQ,YAAA,KAAiB,OAAA,oBACxBD,yBAAA,aAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,CAAW,QAAA,EAAU,KAAA,EAAO,cAAc,SAAA,EAAW;AAAA,GAIrF,CAAA;AAEJ;AC1DO,SAAS,cAAc,KAAA,EAAmC;AAC/D,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA,GAAa,MAAA;AAAA,IACb,SAAA,GAAY,UAAA;AAAA,IACZ,IAAA,GAAO,KAAA;AAAA,IACP,OAAA,GAAU,KAAA;AAAA,IACV,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA,GAAW;AAAA,GACb,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAqC,EAAC;AAG5C,EAAA,MAAM,gBAAA,GAAqC,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAC1E,EAAA,SAAA,CAAU,kBAAkB,gBAAA,CAAiB,UAAA;AAC7C,EAAA,SAAA,CAAU,QAAQ,gBAAA,CAAiB,WAAA;AAGnC,EAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AACpB,EAAA,SAAA,CAAU,aAAA,GAAgB,oBAAA,CAAqB,SAAA,EAAW,OAAO,CAAA;AACjE,EAAA,IAAI,IAAA,YAAgB,QAAA,GAAW,MAAA;AAG/B,EAAA,IAAI,KAAA,EAAO,SAAA,CAAU,UAAA,GAAa,gBAAA,CAAiB,KAAK,CAAA;AACxD,EAAA,IAAI,OAAA,EAAS,SAAA,CAAU,cAAA,GAAiB,oBAAA,CAAqB,OAAO,CAAA;AAGpE,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAM,CAAA,GAAI,cAAA,CAAe,OAAA,EAAS,MAAM,CAAA;AACxC,IAAA,SAAA,CAAU,aAAa,CAAA,CAAE,GAAA;AACzB,IAAA,SAAA,CAAU,eAAe,CAAA,CAAE,KAAA;AAC3B,IAAA,SAAA,CAAU,gBAAgB,CAAA,CAAE,MAAA;AAC5B,IAAA,SAAA,CAAU,cAAc,CAAA,CAAE,IAAA;AAAA,EAC5B;AAGA,EAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,GAAA,EAAK,MAAM,CAAA;AAChC,IAAA,SAAA,CAAU,SAAS,CAAA,CAAE,MAAA;AACrB,IAAA,SAAA,CAAU,YAAY,CAAA,CAAE,SAAA;AAAA,EAC1B;AAGA,EAAA,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW,aAAA,CAAc,KAAA,EAAO,MAAM,CAAC,CAAA;AAGrD,EAAA,IAAI,QAAA,KAAa,MAAA,EAAW,SAAA,CAAU,QAAA,GAAW,QAAA;AACjD,EAAA,IAAI,QAAA,KAAa,MAAA,EAAW,SAAA,CAAU,QAAA,GAAW,QAAA;AACjD,EAAA,IAAI,SAAA,KAAc,MAAA,EAAW,SAAA,CAAU,SAAA,GAAY,SAAA;AACnD,EAAA,IAAI,SAAA,KAAc,MAAA,EAAW,SAAA,CAAU,SAAA,GAAY,SAAA;AAGnD,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA;AACnD,IAAA,SAAA,CAAU,sBAAsB,OAAA,CAAQ,OAAA;AACxC,IAAA,SAAA,CAAU,uBAAuB,OAAA,CAAQ,QAAA;AACzC,IAAA,SAAA,CAAU,yBAAyB,OAAA,CAAQ,UAAA;AAC3C,IAAA,SAAA,CAAU,0BAA0B,OAAA,CAAQ,WAAA;AAE5C,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,EAAG;AAC9B,MAAA,SAAA,CAAU,QAAA,GAAW,QAAA;AAAA,IACvB;AAAA,EACF;AAGA,EAAA,SAAA,CAAU,WAAA,GAAc,CAAA;AACxB,EAAA,SAAA,CAAU,cAAc,gBAAA,CAAiB,OAAA;AAGzC,EAAA,SAAA,CAAU,WAAA,GAAc,MAAA;AACxB,EAAA,SAAA,CAAU,YAAA,GAAe,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAC/C,EAAA,SAAA,CAAU,aAAA,GAAgB,IAAA;AAC1B,EAAA,SAAA,CAAU,YAAA,GAAe,CAAA;AACzB,EAAA,SAAA,CAAU,SAAA,GAAY,CAAA;AAGtB,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,SAAA,CAAU,OAAA,GAAU,GAAA;AAAA,EACtB;AAGA,EAAA,MAAM,OAAA,GAAUD,uBAAW,MAAA,CAAO;AAAA,IAChC,CAAA,EAAG,EAAE,eAAA,EAAiB,gBAAA,CAAiB,aAAA;AAAc,GACtD,CAAA,CAAE,CAAA;AAEH,EAAA,OAAO;AAAA,IACL,WAAWA,sBAAAA,CAAW,MAAA,CAAO,EAAE,CAAA,EAAG,SAAA,EAAwB,CAAA,CAAE,CAAA;AAAA,IAC5D;AAAA,GACF;AACF;;;ACvKA,SAAS+B,iBAAAA,CACP,UACA,SAAA,EACiB;AACjB,EAAA,OAAO9B,wBAAAA,CAAM,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AAC7C,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AAC1D,MAAA,uBAAOA,wBAAAA,CAAA,aAAA,CAACC,kBAAA,EAAK,KAAA,EAAO,aAAY,KAAM,CAAA;AAAA,IACxC;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AACH;AAGA,IAAM,cAAA,GAAiC,CAAA;AACvC,IAAM,mBAAA,GAAqC,UAAA;AAapC,SAAS,IAAA,CAAK;AAAA,EACnB,QAAA;AAAA;AAAA,EAEA,UAAA;AAAA,EACA,MAAA;AAAA;AAAA,EAEA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA;AAAA,EAEA,KAAA;AAAA,EACA,OAAA;AAAA;AAAA,EAEA,OAAA;AAAA,EACA,GAAA;AAAA;AAAA,EAEA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA;AAAA,EAEA,aAAA;AAAA;AAAA,EAEA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA;AAAA,EAEX,kBAAA;AAAA,EACA,iBAAA;AAAA;AAAA,EAEA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA;AAAA,EAEA;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,WAAWC,0BAAAA,EAAgB;AACjC,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,QAAA;AACxB,EAAA,MAAM,iBAAiBC,0BAAAA,EAAgB;AAGvC,EAAA,MAAM,aAAA,GAA2B,gBAAgB,KAAA,IAAS,SAAA;AAC1D,EAAA,MAAM,kBAAA,GAAqC,UAAA,IAAc,cAAA,EAAgB,UAAA,IAAc,MAAA;AAGvF,EAAA,MAAM,MAAA,GAASC,gBAAQ,MAAM;AAC3B,IAAA,OAAOC,wBAAAA;AAAA,MACL,SAAS,MAAA,CAAO,WAAA;AAAA,MAChB,IAAA;AAAA,MACA,KAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,MAAA;AAAA,MAChB,SAAS,MAAA,CAAO,UAAA;AAAA,MAChB,SAAS,MAAA,CAAO,KAAA;AAAA,MAChB,SAAS,MAAA,CAAO,aAAA;AAAA,MAChB,SAAS,MAAA,CAAO,cAAA;AAAA,MAChB,SAAS,MAAA,CAAO;AAAA,KAClB;AAAA,EACF,GAAG,CAAC,QAAA,CAAS,MAAA,EAAQ,IAAA,EAAM,KAAK,CAAC,CAAA;AAEjC,EAAA,MAAMC,OAAAA,GAASF,eAAAA;AAAA,IACb,MAAM,aAAA,CAAc;AAAA,MAClB,MAAA;AAAA,MACA,KAAA,EAAO,aAAA;AAAA,MACP,UAAA,EAAY,kBAAA;AAAA,MACZ,SAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACD;AAAA,MACE,MAAA;AAAA,MAAQ,aAAA;AAAA,MAAe,kBAAA;AAAA,MACvB,SAAA;AAAA,MAAW,IAAA;AAAA,MAAM,OAAA;AAAA,MACjB,KAAA;AAAA,MAAO,OAAA;AAAA,MAAS,OAAA;AAAA,MAAS,GAAA;AAAA,MACzB,KAAA;AAAA,MAAO,MAAA;AAAA,MAAQ,QAAA;AAAA,MAAU,QAAA;AAAA,MAAU,SAAA;AAAA,MAAW,SAAA;AAAA,MAC9C,MAAA;AAAA,MAAQ;AAAA;AACV,GACF;AAEA,EAAA,MAAM,YAAA,GAAeA,eAAAA;AAAA,IACnB,OAAO;AAAA,MACL,SAAA,EAAW,cAAA;AAAA,MACX,MAAA;AAAA,MACA,QAAQ,cAAA,EAAgB,MAAA;AAAA,MACxB,KAAA,EAAO,aAAA;AAAA,MACP,UAAA,EAAY;AAAA,KACd,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,cAAA,EAAgB,MAAA,EAAQ,eAAe,kBAAkB;AAAA,GACpE;AAEA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAErE,EAAA,MAAM,EAAE,cAAA,EAAgB,UAAA,EAAW,GAAI,eAAA,EAAgB;AAGvD,EAAA,MAAM,cAAA,GAAiB,cAAA,IAAkB,CAAC,QAAA,GAAW;AAAA,IACnD,YAAA,EAAc,CAAA;AAAA,IACd,YAAA,EAAc,OAAA;AAAA,IACd,YAAA,EAAc,MAAA,CAAO,MAAA,CAAO,aAAa,EAAE,QAAA,CAAS,UAAA;AAAA,IACpD,aAAA,EAAe;AAAA,GACjB,GAAmD,MAAA;AAEnD,EAAA,MAAM,SAAA,GAAYA,eAAAA;AAAA,IAChB,OAAO;AAAA,MACL,OAAO,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CAAE,kBAAkB,CAAA,CAAE,WAAA;AAAA,MACxD,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,IAAI;AAAA,KAChD,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,aAAA,EAAe,kBAAkB;AAAA,GAC5C;AACA,EAAA,MAAM,eAAA,GAAkBA,eAAAA;AAAA,IACtB,MAAM0B,iBAAAA,CAAiB,QAAA,EAAU,SAAS,CAAA;AAAA,IAC1C,CAAC,UAAU,SAAS;AAAA,GACtB;AAEA,EAAA,uBACE9B,yBAAA,aAAA,CAACS,uBAAAA,CAAa,UAAb,EAAsB,KAAA,EAAO,YAAA,EAAA,kBAC5BT,wBAAAA,CAAA,aAAA;AAAA,IAAC6B,qBAAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,kBAAA,EAAoB,QAAA,GAAW,EAAE,QAAA,EAAU,MAAK,GAAI,MAAA;AAAA,MACpD,OAAA;AAAA,MACA,QAAA;AAAA,MACC,GAAI,OAAO,EAAE,IAAA,EAAM,mBAAmB,MAAA,EAAgB,GAAI,EAAE,iBAAA,EAAmB,QAAA,EAAkB;AAAA,MACjG,GAAI,UAAA;AAAA,MACL,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,QACtBvB,OAAAA,CAAO,SAAA;AAAA,QACP,OAAA,IAAW,CAAC,QAAA,IAAYA,OAAAA,CAAO,OAAA;AAAA,QAC/B,cAAA;AAAA,QACA,GAAG;AAAA;AACL,KAAA;AAAA,IAEC;AAAA,GAEL,CAAA;AAEJ;;;ACtKA,SAAS,gBAAgB,QAAA,EAAqE;AAC5F,EAAA,IAAI,QAAA,KAAa,UAAU,OAAO,SAAA;AAClC,EAAA,OAAO,QAAA;AACT;AAKA,SAASyB,eAAc,IAAA,EAMrB;AACA,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,EAAE,QAAA,EAAU,EAAA,EAAI,QAAA,EAAU,CAAA,EAAG,KAAK,CAAA,EAAG,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,EAAA,EAAG;AAAA,EAChF;AACA,EAAA,OAAO,EAAE,QAAA,EAAU,EAAA,EAAI,QAAA,EAAU,CAAA,EAAG,KAAK,CAAA,EAAG,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,EAAA,EAAG;AAC9E;AAKA,SAASC,iBAAAA,CACP,OAAA,EACA,QAAA,EACA,QAAA,EACA,UACA,MAAA,EACA;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,UAAA;AAAA,QACjC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,WAAA;AAAA,QACxC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,UAAA;AAAA,QACxC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,WAAA;AAAA,QACxC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,WAAA;AAAA,QACxC,WAAA,EAAa,CAAA;AAAA,QACb,WAAA,EAAa;AAAA,OACf;AAAA,IACF;AACA,IAAA,MAAMC,EAAAA,GAAI,MAAA,CAAO,MAAA,CAAO,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACjD,IAAA,OAAO;AAAA,MACL,EAAA,EAAIA,GAAE,QAAA,CAAS,UAAA;AAAA,MACf,SAAA,EAAWA,GAAE,QAAA,CAAS,WAAA;AAAA,MACtB,SAAA,EAAWA,GAAE,QAAA,CAAS,UAAA;AAAA,MACtB,SAAA,EAAWA,GAAE,IAAA,CAAK,UAAA;AAAA,MAClB,SAAA,EAAWA,GAAE,IAAA,CAAK,UAAA;AAAA,MAClB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAGA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,aAAA;AAAA,MACJ,SAAA,EAAW,aAAA;AAAA,MACX,SAAA,EAAW,aAAA;AAAA,MACX,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,YAAA;AAAA,MACtC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,YAAA;AAAA,MACtC,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KAC1C;AAAA,EACF;AAGA,EAAA,IAAI,YAAY,QAAA,EAAU;AACxB,IAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,WAAA;AAAA,QAC/B,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,aAAA;AAAA,QACtC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,WAAA;AAAA,QACtC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,QACtC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,QACtC,WAAA,EAAa,CAAA;AAAA,QACb,WAAA,EAAa;AAAA,OACf;AAAA,IACF;AACA,IAAA,MAAMA,EAAAA,GAAI,MAAA,CAAO,MAAA,CAAO,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACjD,IAAA,OAAO;AAAA,MACL,EAAA,EAAIA,GAAE,QAAA,CAAS,UAAA;AAAA,MACf,SAAA,EAAWA,GAAE,QAAA,CAAS,WAAA;AAAA,MACtB,SAAA,EAAWA,GAAE,QAAA,CAAS,aAAA;AAAA,MACtB,SAAA,EAAWA,GAAE,IAAA,CAAK,UAAA;AAAA,MAClB,SAAA,EAAWA,GAAE,IAAA,CAAK,UAAA;AAAA,MAClB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAGA,EAAA,IAAI,YAAY,QAAA,EAAU;AACxB,IAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,UAAA;AAAA,QACjC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,WAAA;AAAA,QACxC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,aAAA;AAAA,QACxC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,WAAA;AAAA,QACtC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,WAAA;AAAA,QACtC,WAAA,EAAa,CAAA;AAAA,QACb,WAAA,EAAa;AAAA,OACf;AAAA,IACF;AACA,IAAA,MAAMA,EAAAA,GAAI,MAAA,CAAO,MAAA,CAAO,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACjD,IAAA,OAAO;AAAA,MACL,EAAA,EAAIA,GAAE,MAAA,CAAO,UAAA;AAAA,MACb,SAAA,EAAWA,GAAE,MAAA,CAAO,WAAA;AAAA,MACpB,SAAA,EAAWA,GAAE,MAAA,CAAO,aAAA;AAAA,MACpB,SAAA,EAAWA,GAAE,QAAA,CAAS,OAAA;AAAA,MACtB,SAAA,EAAWA,GAAE,QAAA,CAAS,OAAA;AAAA,MACtB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAGA,EAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,aAAA;AAAA,MACJ,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,UAAA;AAAA,MACxC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,WAAA;AAAA,MACxC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,WAAA;AAAA,MACtC,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,WAAA;AAAA,MACtC,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KAC1C;AAAA,EACF;AACA,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,eAAA,CAAgB,QAAQ,CAAC,CAAA;AACjD,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,aAAA;AAAA,IACJ,SAAA,EAAW,EAAE,MAAA,CAAO,UAAA;AAAA,IACpB,SAAA,EAAW,EAAE,MAAA,CAAO,WAAA;AAAA,IACpB,SAAA,EAAW,EAAE,QAAA,CAAS,OAAA;AAAA,IACtB,SAAA,EAAW,EAAE,QAAA,CAAS,OAAA;AAAA,IACtB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,EAAE,MAAA,CAAO;AAAA,GACxB;AACF;AAKO,SAAS,cACd,OAAA,EACA,QAAA,EACA,IAAA,EACA,QAAA,EACA,UACA,MAAA,EACY;AACZ,EAAA,OAAO;AAAA,IACL,QAAQD,iBAAAA,CAAiB,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,UAAU,MAAM,CAAA;AAAA,IACtE,UAAA,EAAYD,eAAc,IAAI;AAAA,GAChC;AACF;AC9JO,SAAS,IAAA,CAAK;AAAA,EACnB,QAAA;AAAA,EACA,OAAA,GAAU,QAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,QAAA,GAAW,SAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,IAAA;AAAA,EACA;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,SAASrB,oBAAAA,EAAU;AAEzB,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAIV,wBAAAA,CAAM,OAAA;AAAA,IACnC,MAAM,aAAA,CAAc,OAAA,EAAS,UAAU,IAAA,EAAM,QAAA,EAAU,UAAU,MAAM,CAAA;AAAA,IACvE,CAAC,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,QAAA,EAAU,UAAU,MAAM;AAAA,GACtD;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,qBACfA,wBAAAA,CAAA,aAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAM,QAAA;AAAA,MACN,KAAK,UAAA,CAAW,GAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL;AAAA,UACE,aAAa,UAAA,CAAW,QAAA;AAAA,UACxB,cAAc,UAAA,CAAW,QAAA;AAAA,UACzB,YAAY,UAAA,CAAW,QAAA;AAAA,UACvB,eAAe,UAAA,CAAW,QAAA;AAAA,UAC1B,eAAA,EAAiB,KAAA,EAAO,OAAA,IAAW,CAAC,QAAA,GAChC,MAAA,CAAO,SAAA,GACP,KAAA,EAAO,OAAA,IAAW,CAAC,QAAA,GACjB,MAAA,CAAO,YACP,MAAA,CAAO,EAAA;AAAA,UACb,YAAA,EAAc,EAAA;AAAA,UACd,aAAa,MAAA,CAAO,WAAA;AAAA,UACpB,WAAA,EAAa,OAAO,WAAA,IAAe,aAAA;AAAA,UACnC,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,SAC5B;AAAA,QACA,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI;AAAC;AACxD,KAAA;AAAA,IAEC,IAAA,oBACCA,wBAAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,CAAW,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,CAAA;AAAA,oBAExEA,wBAAAA,CAAA,aAAA;AAAA,MAACC,KAAAA;AAAA,MAAA;AAAA,QACC,MAAM,UAAA,CAAW,QAAA;AAAA,QACjB,MAAA,EAAQ,WAAW,MAAA,GAAS,QAAA;AAAA,QAC5B,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA;AAAU,OAAA;AAAA,MAEhC;AAAA;AACH,GACF;AAGF,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACED,wBAAAA,CAAA,aAAA,CAAC6B,qBAAAA,EAAA,EAAU,SAAkB,QAAA,EAAA,EAC1B,CAAC,EAAE,OAAA,EAAS,SAAQ,KACnB,OAAA,CAAQ,EAAE,OAAA,EAAS,OAAA,EAAS,CAEhC,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,OAAA,EAAQ;AACjB;;;ACzFO,SAAS,gBAAA,CACd,WAAA,EACA,OAAA,EACA,MAAA,EACW;AACX,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,OAAA;AAEzC,EAAA,IAAI,gBAAgB,UAAA,EAAY;AAC9B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,CAAA;AAAA,MACP,MAAA,EAAQ,MAAA;AAAA,MACR,eAAA,EAAiB,KAAA;AAAA,MACjB,GAAI,OAAA,IAAW,IAAA,IAAQ,EAAE,UAAA,EAAY,OAAA,EAAS,aAAa,OAAA;AAAQ,KACrE;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO,MAAA;AAAA,IACP,eAAA,EAAiB,KAAA;AAAA,IACjB,GAAI,OAAA,IAAW,IAAA,IAAQ,EAAE,SAAA,EAAW,OAAA,EAAS,cAAc,OAAA;AAAQ,GACrE;AACF;ACFO,SAAS,OAAA,CAAQ;AAAA,EACtB,WAAA,GAAc,YAAA;AAAA,EACd,OAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,SAASnB,oBAAAA,EAAU;AAEzB,EAAA,MAAM,eAAeV,wBAAAA,CAAM,OAAA;AAAA,IACzB,MAAM,gBAAA,CAAiB,WAAA,EAAa,OAAA,EAAS,MAAM,CAAA;AAAA,IACnD,CAAC,WAAA,EAAa,OAAA,EAAS,MAAM;AAAA,GAC/B;AAEA,EAAA,uBACEA,wBAAAA,CAAA,aAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,YAAA,EAAc,GAAI,MAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAG,CAAA;AAAA,MAC9E,iBAAA,EAAkB;AAAA;AAAA,GACpB;AAEJ;;;ACpCO,SAAS,oBAAA,CACd,OAAA,EACA,aAAA,EACA,MAAA,EACW;AACX,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,OAAA;AAEhD,EAAA,MAAM,iBAAA,GAAoB,gBACtB,EAAE,MAAA,EAAQ,WAAW,kBAAA,EAAoB,MAAA,KACzC,EAAC;AAEL,EAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,IAAA,OAAO;AAAA,MACL,YAAA,EAAc,EAAA;AAAA,MACd,GAAG;AAAA,KACL;AAAA,EACF;AAEA,EAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,IAAA,OAAO;AAAA,MACL,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa,YAAA;AAAA,MACb,WAAA,EAAa,OAAA;AAAA,MACb,YAAA,EAAc,EAAA;AAAA,MACd,GAAG;AAAA,KACL;AAAA,EACF;AAGA,EAAA,OAAO;AAAA,IACL,iBAAA,EAAmB,CAAA;AAAA,IACnB,iBAAA,EAAmB,YAAA;AAAA,IACnB,GAAG;AAAA,GACL;AACF;ACRO,SAAS,WAAA,CAAY;AAAA,EAC1B,QAAA;AAAA,EACA,OAAA,GAAU,UAAA;AAAA,EACV,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,EAAA;AAAA,EACV,GAAA,GAAM,CAAA;AAAA,EACN,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,SAASG,oBAAAA,EAAU;AACzB,EAAA,MAAM,aAAA,GAAgB,CAAC,EAAE,IAAA,IAAQ,OAAA,CAAA;AAEjC,EAAA,MAAM,gBAAgBV,wBAAAA,CAAM,OAAA;AAAA,IAC1B,MAAM,oBAAA,CAAqB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAA;AAAA,IACzD,CAAC,OAAA,EAAS,aAAA,EAAe,MAAM;AAAA,GACjC;AAEA,EAAA,uBACEA,wBAAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA,KAAY,UAAA,GAAa,CAAA,GAAI,MAAA;AAAA,MACxC,UAAA,EAAY,OAAA,KAAY,UAAA,GAAa,QAAA,GAAW,MAAA;AAAA,MAChD,IAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,aAAA;AAAA,QACA,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI;AAAC;AACxD,KAAA;AAAA,IAEC;AAAA,GACH;AAEJ;ACnEO,SAAS,mBACd,MAAA,EACA,QAAA,EACA,KAAA,GAAmB,SAAA,EACnB,aAA6B,MAAA,EAC7B;AACA,EAAA,MAAM,EAAA,GAAuB,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAC5D,EAAA,OAAOD,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI;AAAA,KAC1B;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,OAAO,EAAA,CAAG;AAAA,KACZ;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,iBAAiB,EAAA,CAAG,UAAA;AAAA,MACpB,WAAA,EAAa,CAAA;AAAA,MACb,aAAa,EAAA,CAAG,OAAA;AAAA,MAChB,YAAA,EAAc,OAAO,MAAA,CAAO,EAAA;AAAA,MAC5B,eAAA,EAAiB,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACpC,iBAAA,EAAmB,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACtC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,KAAA,EAAO,QAAA,GAAW,EAAA,CAAG,YAAA,GAAe,EAAA,CAAG,WAAA;AAAA,MACvC,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA;AAC5B,GACD,CAAA;AACH;;;AC3BO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,MAAA,GAASW,qBAAU,CAAC,CAAA;AAC1B,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AACjC,EAAA,MAAM,KAAA,GAAQ,UAAU,KAAA,IAAS,SAAA;AACjC,EAAA,MAAM,UAAA,GAAa,UAAU,UAAA,IAAc,MAAA;AAE3C,EAAA,MAAMG,UAASN,wBAAAA,CAAM,OAAA;AAAA,IACnB,MAAM,kBAAA,CAAmB,MAAA,EAAQ,QAAA,EAAU,OAAO,UAAU,CAAA;AAAA,IAC5D,CAAC,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,UAAU;AAAA,GACtC;AAEA,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAE,CAAA,EAAA,EACxE,KAAA,oBAASN,yBAAA,aAAA,CAACC,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,KAAA,EAAA,EAAQ,KAAM,CAAA,kBAC5CN,wBAAAA,CAAA,aAAA;AAAA,IAACkC,qBAAA;AAAA,IAAA;AAAA,MACC,OAAO5B,OAAAA,CAAO,KAAA;AAAA,MACd,UAAU,CAAC,QAAA;AAAA,MACX,sBAAsB,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,UAAU,CAAA,CAAE,YAAA;AAAA,MACtD,GAAG;AAAA;AAAA,GAER,CAAA;AAEJ;AC9BO,SAAS,gBAAA,CACd,MAAA,EACA,aAAA,EACA,MAAA,EACA,SAAA,EACA,OACA,MAAA,EACA,KAAA,GAAmB,SAAA,EACnB,UAAA,GAA6B,MAAA,EAC7B;AACA,EAAA,MAAM,EAAA,GAAuB,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAC5D,EAAA,MAAM,aACJ,KAAA,KAAU,SAAA,GACN,EAAE,IAAA,EAAM,CAAA,EAAY,OAAO,CAAA,EAAW,GACtC,OAAO,KAAA,KAAU,QAAA,GACf,EAAE,KAAA,EAAO,IAAA,EAAM,GAAW,GAC1B,EAAE,MAAM,CAAA,EAAW;AAE3B,EAAA,OAAOP,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,QAAA,EAAU,UAAA;AAAA,MACV,MAAA,EAAQ,SAAS,GAAA,GAAM;AAAA,KACzB;AAAA,IACA,OAAA,EAAS;AAAA,MACP,QAAA,EAAU,UAAA;AAAA,MACV,KAAK,aAAA,GAAgB,MAAA;AAAA,MACrB,GAAG,UAAA;AAAA,MACH,iBAAiB,EAAA,CAAG,WAAA;AAAA,MACpB,WAAA,EAAa,CAAA;AAAA,MACb,aAAa,EAAA,CAAG,aAAA;AAAA,MAChB,YAAA,EAAc,OAAO,MAAA,CAAO,EAAA;AAAA,MAC5B,SAAA;AAAA,MACA,MAAA,EAAQ,GAAA;AAAA,MACR,QAAA,EAAU,QAAA;AAAA,MACV,WAAA,EAAa,MAAA;AAAA,MACb,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,MACpC,aAAA,EAAe,IAAA;AAAA,MACf,YAAA,EAAc,EAAA;AAAA,MACd,SAAA,EAAW;AAAA;AACb,GACD,CAAA;AACH;;;ACpCA,IAAM,YAAA,uBAAmB,GAAA,EAAgB;AAElC,SAAS,OAAA,CAAQ;AAAA,EACtB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,SAAA,GAAY,GAAA;AAAA,EACZ,MAAA,GAAS,CAAA;AAAA,EACT,aAAA,GAAgB,IAAA;AAAA,EAChB,KAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,MAAA,GAASW,qBAAU,CAAC,CAAA;AAC1B,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AACjC,EAAA,MAAM,YAAA,GAAegC,eAAa,IAAI,CAAA;AACtC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIvC,iBAAS,CAAC,CAAA;AAEpD,EAAA,MAAM,eAAA,GAAkBE,mBAAAA;AAAA,IACtB,CAAC,CAAA,KAAuD;AACtD,MAAA,gBAAA,CAAiB,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,MAAM,CAAA;AAAA,IAC9C,CAAA;AAAA,IACA;AAAC,GACH;AAGA,EAAAD,kBAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,OAAA,KAAY,OAAA,EAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,KAAA,EAAM;AACnB,IAAA,YAAA,CAAa,IAAI,OAAO,CAAA;AACxB,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,OAAO,OAAO,CAAA;AAAA,IAC7B,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAIpB,EAAAA,kBAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACrC,IAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAkB;AACzC,MAAA,MAAM,OAAO,YAAA,CAAa,OAAA;AAC1B,MAAA,IAAI,QAAQ,CAAC,IAAA,CAAK,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AAC5C,QAAA,OAAA,EAAQ;AAAA,MACV;AAAA,IACF,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAA,EAAa,eAAA,EAAiB,IAAI,CAAA;AAC5D,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,iBAAiB,IAAI,CAAA;AAAA,EAC9E,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,MAAM,aAAA,GAAgBC,mBAAAA;AAAA,IACpB,CAAC,CAAA,KAAW;AACV,MAAA,IAAI,aAAA,IAAiB,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AACvC,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,OAAA,EAAQ;AAAA,MACV;AAAA,IACF,CAAA;AAAA,IACA,CAAC,eAAe,OAAO;AAAA,GACzB;AAEA,EAAA,MAAMQ,OAAAA,GAASF,eAAAA;AAAA,IACb,MAAM,gBAAA,CAAiB,MAAA,EAAQ,aAAA,EAAe,MAAA,EAAQ,SAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU,CAAA;AAAA,IACrH,CAAC,MAAA,EAAQ,aAAA,EAAe,MAAA,EAAQ,SAAA,EAAW,OAAO,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU;AAAA,GACjG;AAEA,EAAA,MAAM,eAAA,GAAkBA,eAAAA;AAAA,IACtB,MAAM,CAACE,OAAAA,CAAO,SAAA,EAAW,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAG,CAAA;AAAA,IACjF,CAACA,OAAAA,CAAO,SAAA,EAAW,KAAK;AAAA,GAC1B;AAEA,EAAA,MAAM,mBAAA,GAAsBF,eAAAA;AAAA,IAC1B,MAAM,CAACE,OAAAA,CAAO,OAAA,EAAS,GAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GAAI,eAAe,YAAA,GAAe,CAAC,YAAY,CAAA,GAAI,EAAG,CAAA;AAAA,IAC3G,CAACA,OAAAA,CAAO,OAAA,EAAS,YAAY;AAAA,GAC/B;AAGA,EAAA,MAAM,QAAA,GAAW,EAAE,SAAA,EAAW,aAAA,EAAc;AAE5C,EAAA,uBACEN,wBAAAA,CAAA,aAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,eAAA;AAAA,MACN,GAAG;AAAA,KAAA;AAAA,oBAEJP,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,QAAA,EAAU,mBACb,OACH,CAAA;AAAA,IAEC,MAAA,oBACCP,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,uBACV,QACH;AAAA,GAEJ;AAEJ;ACtGO,SAAS,WAAW,OAAA,EAA+C;AACxE,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,IAAIX,gBAAAA,CAAS,OAAA,EAAS,eAAe,KAAK,CAAA;AAElE,EAAA,MAAM,IAAA,GAAOE,oBAAY,MAAM;AAC7B,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,OAAA,EAAS,eAAe,IAAI,CAAA;AAAA,EAC9B,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,KAAA,GAAQA,oBAAY,MAAM;AAC9B,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,OAAA,EAAS,eAAe,KAAK,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,MAAA,GAASA,oBAAY,MAAM;AAC/B,IAAA,SAAA,CAAU,CAAC,IAAA,KAAS;AAClB,MAAA,MAAM,OAAO,CAAC,IAAA;AACd,MAAA,OAAA,EAAS,eAAe,IAAI,CAAA;AAC5B,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,MAAA,EAAO;AACvC;;;ACVO,SAAS,cAAc,IAAA,EAA6C;AACzE,EAAA,OAAO,SAAA,IAAa,IAAA;AACtB;ACdO,SAAS,eAAA,CACd,QACA,QAAA,EACA,IAAA,EACA,QACA,KAAA,GAAmB,SAAA,EACnB,aAA6B,MAAA,EAC7B;AACA,EAAA,MAAM,EAAA,GAAuB,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAC5D,EAAA,MAAM,OAAO,IAAA,KAAS,IAAA;AACtB,EAAA,MAAM,QAAA,GAAW,IAAA,GAAO,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA,GAAI,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAC5F,EAAA,MAAM,WAAW,QAAA,GAAW,CAAA;AAC5B,EAAA,MAAM,SAAA,GAAY,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAChD,EAAA,MAAM,eAAA,GAAkB,OAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,GAAI,MAAA,CAAO,QAAQ,IAAI,CAAA;AACzE,EAAA,MAAM,iBAAA,GAAoB,OAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,GAAI,MAAA,CAAO,QAAQ,IAAI,CAAA;AAE3E,EAAA,OAAOC,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,MAAA,EAAQ,SAAS,GAAA,GAAM;AAAA,KACzB;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,OAAO,EAAA,CAAG;AAAA,KACZ;AAAA,IACA,OAAA,EAAS;AAAA,MACP,aAAA,EAAe,KAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,iBAAiB,EAAA,CAAG,aAAA;AAAA,MACpB,WAAA,EAAa,CAAA;AAAA,MACb,aAAa,EAAA,CAAG,aAAA;AAAA,MAChB,YAAA,EAAc,OAAO,MAAA,CAAO,EAAA;AAAA,MAC5B,eAAA;AAAA,MACA,WAAA,EAAa,iBAAA;AAAA,MACb,YAAA,EAAc,aAAa,IAAA,GAAO,MAAA,CAAO,QAAQ,IAAI,CAAA,GAAI,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAA;AAAA,MAC5E,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,KAC5B;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,CAAA;AAAA,MACN,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA;AAAA,MACA,KAAA,EAAO,QAAA,GAAW,EAAA,CAAG,YAAA,GAAe,EAAA,CAAG;AAAA,KACzC;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,OAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,GAAI,MAAA,CAAO,QAAQ,IAAI,CAAA;AAAA,MACxD,GAAA,EAAK,CAAA;AAAA,MACL,MAAA,EAAQ,CAAA;AAAA,MACR,cAAA,EAAgB;AAAA,KAClB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,OAAO,EAAA,CAAG,YAAA;AAAA,MACV,aAAA,EAAe,WAAA;AAAA,MACf,aAAA,EAAe,GAAA;AAAA,MACf,eAAA,EAAiB,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACpC,iBAAA,EAAmB,OAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,GAAI,MAAA,CAAO,QAAQ,IAAI,CAAA;AAAA,MACpE,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,IAAI;AAAA;AACjC,GACD,CAAA;AACH;ACvDA,SAAS,eAAA,CACP,OAAA,EACA,UAAA,EACA,SAAA,EACQ;AACR,EAAA,MAAM,MAAM,OAAA,CAAQ,MAAA;AACpB,EAAA,IAAI,GAAA,KAAQ,GAAG,OAAO,EAAA;AAEtB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,GAAA,EAAK,CAAA,EAAA,EAAK;AAC7B,IAAA,MAAM,GAAA,GAAA,CAAO,UAAA,GAAa,CAAA,GAAI,SAAA,GAAY,GAAA,IAAO,GAAA;AACjD,IAAA,IAAI,CAAC,OAAA,CAAQ,GAAG,CAAA,CAAE,UAAU,OAAO,GAAA;AAAA,EACrC;AACA,EAAA,OAAO,EAAA;AACT;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,WAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIH,iBAAS,EAAE,CAAA;AACnD,EAAA,MAAM,YAAA,GAAeuC,eAAO,EAAE,CAAA;AAC9B,EAAA,MAAM,oBAAoBA,cAAAA,EAAsC;AAGhE,EAAAtC,kBAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,cAAc,WAAA,CAAY,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,KAAK,CAAA;AAClE,MAAA,IAAI,eAAe,CAAA,IAAK,CAAC,WAAA,CAAY,WAAW,EAAE,QAAA,EAAU;AAC1D,QAAA,eAAA,CAAgB,WAAW,CAAA;AAAA,MAC7B,CAAA,MAAO;AACL,QAAA,MAAM,eAAe,WAAA,CAAY,SAAA,CAAU,CAAC,CAAA,KAAM,CAAC,EAAE,QAAQ,CAAA;AAC7D,QAAA,eAAA,CAAgB,YAAA,IAAgB,CAAA,GAAI,YAAA,GAAe,EAAE,CAAA;AAAA,MACvD;AAAA,IACF,CAAA,MAAO;AACL,MAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,WAAA,EAAa,KAAK,CAAC,CAAA;AAE/B,EAAA,MAAM,aAAA,GAAgBC,mBAAAA;AAAA,IACpB,CAAC,CAAA,KAAW;AACV,MAAA,MAAM,MAAc,CAAA,CAAE,GAAA;AAGtB,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,IAAI,QAAQ,WAAA,IAAe,GAAA,KAAQ,aAAa,GAAA,KAAQ,OAAA,IAAW,QAAQ,GAAA,EAAK;AAC9E,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAA,EAAO;AAAA,QACT;AACA,QAAA;AAAA,MACF;AAEA,MAAA,QAAQ,GAAA;AAAK,QACX,KAAK,WAAA,EAAa;AAChB,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,WAAA,EAAa,YAAA,EAAc,CAAC,CAAA;AACzD,UAAA,IAAI,IAAA,IAAQ,CAAA,EAAG,eAAA,CAAgB,IAAI,CAAA;AACnC,UAAA;AAAA,QACF;AAAA,QACA,KAAK,SAAA,EAAW;AACd,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,WAAA,EAAa,YAAA,EAAc,EAAE,CAAA;AAC1D,UAAA,IAAI,IAAA,IAAQ,CAAA,EAAG,eAAA,CAAgB,IAAI,CAAA;AACnC,UAAA;AAAA,QACF;AAAA,QACA,KAAK,OAAA;AAAA,QACL,KAAK,GAAA,EAAK;AACR,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,gBAAgB,CAAA,IAAK,CAAC,WAAA,CAAY,YAAY,EAAE,QAAA,EAAU;AAC5D,YAAA,QAAA,CAAS,WAAA,CAAY,YAAY,CAAA,CAAE,KAAK,CAAA;AAAA,UAC1C;AACA,UAAA;AAAA,QACF;AAAA,QACA,KAAK,QAAA,EAAU;AACb,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,OAAA,EAAQ;AACR,UAAA;AAAA,QACF;AAAA,QACA,KAAK,MAAA,EAAQ;AACX,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAM,QAAQ,WAAA,CAAY,SAAA,CAAU,CAAC,CAAA,KAAM,CAAC,EAAE,QAAQ,CAAA;AACtD,UAAA,IAAI,KAAA,IAAS,CAAA,EAAG,eAAA,CAAgB,KAAK,CAAA;AACrC,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAM,WAAA,GAAc,CAAC,GAAG,WAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,SAAA,CAAU,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,QAAQ,CAAA;AAC3E,UAAA,IAAI,eAAe,CAAA,EAAG,eAAA,CAAgB,WAAA,CAAY,MAAA,GAAS,IAAI,WAAW,CAAA;AAC1E,UAAA;AAAA,QACF;AAAA,QACA,SAAS;AAEP,UAAA,IAAI,GAAA,CAAI,WAAW,CAAA,IAAK,CAAC,EAAE,OAAA,IAAW,CAAC,EAAE,OAAA,EAAS;AAChD,YAAA,YAAA,CAAa,kBAAkB,OAAO,CAAA;AACtC,YAAA,YAAA,CAAa,OAAA,IAAW,IAAI,WAAA,EAAY;AAExC,YAAA,MAAM,QAAQ,WAAA,CAAY,SAAA;AAAA,cACxB,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,KAAA,CAAM,WAAA,EAAY,CAAE,UAAA,CAAW,YAAA,CAAa,OAAO;AAAA,aAC7E;AACA,YAAA,IAAI,KAAA,IAAS,CAAA,EAAG,eAAA,CAAgB,KAAK,CAAA;AAErC,YAAA,iBAAA,CAAkB,OAAA,GAAU,WAAW,MAAM;AAC3C,cAAA,YAAA,CAAa,OAAA,GAAU,EAAA;AAAA,YACzB,GAAG,GAAG,CAAA;AAAA,UACR;AACA,UAAA;AAAA,QACF;AAAA;AACF,IACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,YAAA,EAAc,WAAA,EAAa,QAAA,EAAU,SAAS,MAAM;AAAA,GAC/D;AAEA,EAAA,OAAO,EAAE,cAAc,aAAA,EAAc;AACvC;ACjHO,SAAS,eAAA,CAAgB;AAAA,EAC9B,MAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,MAAA,GAASY,qBAAU,CAAC,CAAA;AAC1B,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AACjC,EAAA,MAAM,EAAA,GAAK,OAAO,MAAA,CAAO,QAAA,EAAU,SAAS,SAAS,CAAA,CAAE,QAAA,EAAU,UAAA,IAAc,MAAM,CAAA;AACrF,EAAA,MAAM,aAAa,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,KAAA,IAAS,SAAS,CAAA,CAAE,QAAA;AAE/D,EAAA,MAAM,eAAA,GAAkB,SAAS,IAAA,GAAO,MAAA,CAAO,QAAQ,IAAI,CAAA,GAAI,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAClF,EAAA,MAAM,iBAAA,GAAoB,SAAS,IAAA,GAAO,MAAA,CAAO,QAAQ,IAAI,CAAA,GAAI,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AACpF,EAAA,MAAM,QAAA,GAAW,IAAA,KAAS,IAAA,GAAO,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA,GAAI,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAErG,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,uBACEH,wBAAAA,CAAA,aAAA;AAAA,MAAC6B,qBAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,MAAA,CAAO,QAAA,GAAW,MAAA,GAAY,QAAA;AAAA,QACvC,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,IAAA,EAAK,QAAA;AAAA,QACL,kBAAA,EAAoB,EAAE,QAAA,EAAU,UAAA;AAAW,OAAA;AAAA,MAE1C,YAAA,CAAa,MAAA,EAAQ,EAAE,UAAA,EAAY,WAAW;AAAA,KACjD;AAAA,EAEJ;AAEA,EAAA,uBACE7B,wBAAAA,CAAA,aAAA;AAAA,IAAC6B,qBAAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,MAAA,CAAO,QAAA,GAAW,MAAA,GAAY,QAAA;AAAA,MACvC,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,IAAA,EAAK,QAAA;AAAA,MACL,kBAAA,EAAoB,EAAE,QAAA,EAAU,UAAA,EAAW;AAAA,MAC3C,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,QACtB;AAAA,UACE,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,eAAA;AAAA,UAChB,eAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAA,IAAc;AAAA,UACZ,iBAAiB,EAAA,CAAG;AAAA,SACtB;AAAA,QACA,SAAA,IACE,CAAC,UAAA,IAAc;AAAA,UACb,eAAA,EAAiB,CAAA,EAAG,EAAA,CAAG,aAAa,CAAA,EAAA;AAAA,SACtC;AAAA,QACF,OAAO,QAAA,IAAY;AAAA,UACjB,OAAA,EAAS;AAAA,SACX;AAAA,QACA,OAAA,IAAW;AAAA,UACT,OAAA,EAAS;AAAA;AACX;AACF,KAAA;AAAA,oBAEA7B,wBAAAA,CAAA,aAAA;AAAA,MAACC,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL;AAAA,YACE,IAAA,EAAM,CAAA;AAAA,YACN,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,YACzC,QAAA;AAAA,YACA,OAAO,EAAA,CAAG;AAAA,WACZ;AAAA,UACA,UAAA,IAAc;AAAA,YACZ,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,YACjD,OAAO,UAAA,CAAW;AAAA,WACpB;AAAA,UACA,OAAO,QAAA,IAAY;AAAA,YACjB,OAAO,EAAA,CAAG;AAAA;AACZ,SACF;AAAA,QACA,aAAA,EAAe;AAAA,OAAA;AAAA,MAEd,MAAA,CAAO;AAAA,KACV;AAAA,IACC,UAAA,oBACCD,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,OAAO,OAAA,CAAQ,IAAI,CAAA,EAAE,EAAA,kBAC9CP,wBAAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,OAAO,UAAA,CAAW;AAAA;AAAA,KAEtB;AAAA,GAEJ;AAEJ;;;AC7FA,SAAS,eAAe,KAAA,EAA0H;AAChJ,EAAA,MAAM,SAAyB,EAAC;AAChC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA,MAAA,CAAO,IAAA,CAAK,GAAG,IAAA,CAAK,OAAO,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,IAClB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,MAAA,CAAO;AAAA,EACrB,OAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,YAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,MAAA,GAASU,qBAAU,CAAC,CAAA;AAC1B,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AACjC,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,MAAA,KAAW,UAAA,EAAW;AAEnD,EAAA,MAAM,WAAA,GAAcC,gBAAQ,MAAM,cAAA,CAAe,OAAO,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEpE,EAAA,MAAM,EAAE,YAAA,EAAc,aAAA,EAAc,GAAI,SAAA,CAAU;AAAA,IAChD,WAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,MAAA,aAAA,CAAc,CAAC,CAAA;AACf,MAAA,KAAA,EAAM;AAAA,IACR,CAAA;AAAA,IACA,OAAA,EAAS,KAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,iBAAiB,QAAA,EAAU,KAAA;AACjC,EAAA,MAAM,sBAAsB,QAAA,EAAU,UAAA;AAEtC,EAAA,MAAME,OAAAA,GAASF,eAAAA;AAAA,IACb,MAAM,eAAA,CAAgB,MAAA,EAAQ,UAAU,IAAA,EAAM,MAAA,EAAQ,gBAAgB,mBAAmB,CAAA;AAAA,IACzF,CAAC,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,gBAAgB,mBAAmB;AAAA,GACtE;AAEA,EAAA,MAAM,iBAAiB,WAAA,CAAY,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,KAAK,CAAA;AAChE,EAAA,MAAM,YAAA,GAAe,cAAA,EAAgB,KAAA,IAAS,WAAA,IAAe,KAAA;AAE7D,EAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,kBAAkB,SAAS,CAAA,CAAE,uBAAuB,MAAM,CAAA;AACnF,EAAA,MAAM,SAAA,GAAY,QAAA,GAAW,EAAA,CAAG,YAAA,GAAe,EAAA,CAAG,OAAA;AAGlD,EAAA,MAAM,eAAA,GAAkB,EAAE,SAAA,EAAW,aAAA,EAAc;AAEnD,EAAA,MAAM,OAAA,mBACJJ,wBAAAA,CAAA,aAAA;AAAA,IAAC6B,qBAAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,WAAW,MAAA,GAAY,MAAA;AAAA,MAChC,QAAA;AAAA,MACA,IAAA,EAAK,UAAA;AAAA,MACL,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,EAAO;AAAA,MACtC,GAAG,eAAA;AAAA,MACJ,OAAOvB,OAAAA,CAAO;AAAA,KAAA;AAAA,IAEb,WAAA,GACC,WAAA,CAAY,cAAc,CAAA,mBAE1BN,wBAAAA,CAAA,aAAA,CAACC,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,WAAA,EAAa,aAAA,EAAe,KAC7C,YACH,CAAA;AAAA,oBAEFN,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,WAAA,EAAa,aAAA,EAAc,MAAA,EAAA,kBAC7CN,wBAAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,SAAS,aAAA,GAAgB,aAAA;AAAA,QAC/B,IAAA,EAAM,IAAA,KAAS,IAAA,GAAO,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA,GAAI,CAAA,GAAI,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA,GAAI,CAAA;AAAA,QAClG,KAAA,EAAO;AAAA;AAAA,KAEX;AAAA,GACF;AAGF,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAG,CAAA,EAAA,EACrF,KAAA,oBAASN,wBAAAA,CAAA,aAAA,CAACC,gBAAAA,EAAA,EAAK,OAAOK,OAAAA,CAAO,KAAA,EAAA,EAAQ,KAAM,CAAA,kBAC5CN,wBAAAA,CAAA,aAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAQ,UAAU,CAAC,QAAA;AAAA,MACnB,OAAA,EAAS,KAAA;AAAA,MACT;AAAA,KAAA;AAAA,oBAEAA,wBAAAA,CAAA,aAAA;AAAA,MAAC4B,sBAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,KAAA;AAAA,QACT,yBAAA,EAA0B,SAAA;AAAA,QAC1B,IAAA,EAAM;AAAA,OAAA;AAAA,MAEL,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS;AACrB,QAAA,IAAI,aAAA,CAAc,IAAI,CAAA,EAAG;AACvB,UAAA,uBACE5B,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAK,IAAA,CAAK,KAAA,EAAA,kBACdP,wBAAAA,CAAA,aAAA,CAACC,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,UAAA,EAAA,EAAa,IAAA,CAAK,KAAM,CAAA,EAC3C,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,qBACjBN,wBAAAA,CAAA,aAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,KAAK,GAAA,CAAI,KAAA;AAAA,cACT,MAAA,EAAQ,GAAA;AAAA,cACR,UAAA,EAAY,IAAI,KAAA,KAAU,KAAA;AAAA,cAC1B,SAAA,EAAW,WAAA,CAAY,YAAY,CAAA,EAAG,UAAU,GAAA,CAAI,KAAA;AAAA,cACpD,UAAU,MAAM;AACd,gBAAA,aAAA,CAAc,IAAI,KAAK,CAAA;AACvB,gBAAA,KAAA,EAAM;AAAA,cACR,CAAA;AAAA,cACA,YAAA;AAAA,cACA;AAAA;AAAA,WAEH,CACH,CAAA;AAAA,QAEJ;AACA,QAAA,uBACEA,wBAAAA,CAAA,aAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,KAAK,IAAA,CAAK,KAAA;AAAA,YACV,MAAA,EAAQ,IAAA;AAAA,YACR,UAAA,EAAY,KAAK,KAAA,KAAU,KAAA;AAAA,YAC3B,SAAA,EAAW,WAAA,CAAY,YAAY,CAAA,EAAG,UAAU,IAAA,CAAK,KAAA;AAAA,YACrD,UAAU,MAAM;AACd,cAAA,aAAA,CAAc,KAAK,KAAK,CAAA;AACxB,cAAA,KAAA,EAAM;AAAA,YACR,CAAA;AAAA,YACA,YAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAC;AAAA;AACH,GAEJ,CAAA;AAEJ;ACpJA,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,YAAA,GAAe,EAAA;AACrB,IAAM,UAAA,GAAa,EAAA;AACnB,IAAM,YAAA,GAAe,CAAA;AAEd,SAAS,gBACd,MAAA,EACA,KAAA,EACA,UACA,KAAA,GAAmB,SAAA,EACnB,aAA6B,MAAA,EAC7B;AACA,EAAA,MAAM,EAAA,GAAuB,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAC5D,EAAA,MAAM,UAAA,GAA+B,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA;AAC1D,EAAA,OAAOD,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,aAAA,EAAe,KAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,KAC5B;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,OAAO,EAAA,CAAG;AAAA,KACZ;AAAA,IACA,KAAA,EAAO;AAAA,MACL,KAAA,EAAO,WAAA;AAAA,MACP,MAAA,EAAQ,YAAA;AAAA,MACR,cAAc,YAAA,GAAe,CAAA;AAAA,MAC7B,eAAA,EAAiB,KAAA,GACb,UAAA,CAAW,OAAA,GACX,EAAA,CAAG,aAAA;AAAA,MACP,cAAA,EAAgB,QAAA;AAAA,MAChB,iBAAA,EAAmB;AAAA,KACrB;AAAA,IACA,KAAA,EAAO;AAAA,MACL,KAAA,EAAO,UAAA;AAAA,MACP,MAAA,EAAQ,UAAA;AAAA,MACR,cAAc,UAAA,GAAa,CAAA;AAAA,MAC3B,iBAAiB,EAAA,CAAG,UAAA;AAAA,MACpB,SAAA,EAAW,QAAQ,UAAA,GAAa;AAAA;AAClC,GACD,CAAA;AACH;;;AC1CO,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,MAAA,GAASW,qBAAU,CAAC,CAAA;AAC1B,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AAEjC,EAAA,MAAMG,UAASN,wBAAAA,CAAM,OAAA;AAAA,IACnB,MAAM,gBAAgB,MAAA,EAAQ,KAAA,EAAO,UAAU,QAAA,EAAU,KAAA,EAAO,UAAU,UAAU,CAAA;AAAA,IACpF,CAAC,MAAA,EAAQ,KAAA,EAAO,UAAU,QAAA,EAAU,KAAA,EAAO,UAAU,UAAU;AAAA,GACjE;AAEA,EAAA,MAAM,WAAA,GAAcA,wBAAAA,CAAM,WAAA,CAAY,MAAM;AAC1C,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,aAAA,CAAc,CAAC,KAAK,CAAA;AAAA,IACtB;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,KAAA,EAAO,aAAa,CAAC,CAAA;AAEnC,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAE,CAAA,EAAA,EACxE,KAAA,oBAASN,yBAAA,aAAA,CAACC,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,KAAA,EAAA,EAAQ,KAAM,CAAA,kBAC5CN,wBAAAA,CAAA,aAAA;AAAA,IAAC6B,qBAAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,WAAA;AAAA,MACT,QAAA;AAAA,MACA,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA,EAAoB,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA;AAAS,KAAA;AAAA,oBAE/C7B,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,KAAA,EAAA,kBAClBN,wBAAAA,CAAA,cAACO,gBAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,OAAO,CAC7B;AAAA,GAEJ,CAAA;AAEJ;ACvCA,IAAM8B,aAAAA,GAAe,CAAA;AACd,IAAMC,WAAAA,GAAa,EAAA;AAEnB,SAAS,eAAA,CAAgB,QAAwB,QAAA,EAAmB;AACzE,EAAA,OAAOtC,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,KAC5B;AAAA,IACA,QAAA,EAAU;AAAA,MACR,aAAA,EAAe,KAAA;AAAA,MACf,cAAA,EAAgB,eAAA;AAAA,MAChB,UAAA,EAAY;AAAA,KACd;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KACpC;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KACpC;AAAA,IACA,UAAA,EAAY;AAAA,MACV,KAAA,EAAO,EAAA;AAAA,MACP,eAAA,EAAiB,CAAA;AAAA,MACjB,iBAAA,EAAmB,CAAA;AAAA,MACnB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,aAAA;AAAA,MACxC,YAAA,EAAc,CAAA;AAAA,MACd,eAAA,EAAiB,aAAA;AAAA,MACjB,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,MAClC,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,SAAA,EAAW;AAAA,KACb;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,QAAQqC,aAAAA,GAAeC,WAAAA;AAAA,MACvB,cAAA,EAAgB,QAAA;AAAA,MAChB,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,SAAA,EAAW;AAAA,MACT,QAAA,EAAU,UAAA;AAAA,MACV,IAAA,EAAM,CAAA;AAAA,MACN,KAAA,EAAO,CAAA;AAAA,MACP,MAAA,EAAQD,aAAAA;AAAA,MACR,cAAcA,aAAAA,GAAe,CAAA;AAAA,MAC7B,eAAA,EAAiB,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KAC9C;AAAA,IACA,SAAA,EAAW;AAAA,MACT,QAAA,EAAU,UAAA;AAAA,MACV,IAAA,EAAM,CAAA;AAAA,MACN,MAAA,EAAQA,aAAAA;AAAA,MACR,cAAcA,aAAAA,GAAe,CAAA;AAAA,MAC7B,eAAA,EAAiB,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS;AAAA,KAClD;AAAA,IACA,KAAA,EAAO;AAAA,MACL,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAOC,WAAAA;AAAA,MACP,MAAA,EAAQA,WAAAA;AAAA,MACR,cAAcA,WAAAA,GAAa,CAAA;AAAA,MAC3B,eAAA,EAAiB,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS;AAAA;AAClD,GACD,CAAA;AACH;;;ACjEO,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA,GAAM,GAAA;AAAA,EACN,IAAA,GAAO,CAAA;AAAA,EACP,KAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,aAAA,GAAgB,KAAA;AAAA,EAChB,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,MAAA,GAAS3B,qBAAU,CAAC,CAAA;AAE1B,EAAA,MAAMJ,UAASN,wBAAAA,CAAM,OAAA;AAAA,IACnB,MAAM,eAAA,CAAgB,MAAA,EAAQ,QAAQ,CAAA;AAAA,IACtC,CAAC,QAAQ,QAAQ;AAAA,GACnB;AAEA,EAAA,MAAM,QAAA,GAAWA,wBAAAA,CAAM,MAAA,CAAa,IAAI,CAAA;AACxC,EAAA,MAAM,UAAA,GAAaA,wBAAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AACjC,EAAA,MAAM,UAAA,GAAaA,wBAAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AACjC,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,wBAAAA,CAAM,SAAS,CAAC,CAAA;AAGtD,EAAA,MAAM,gBAAA,GAAmBA,wBAAAA,CAAM,MAAA,CAAO,aAAa,CAAA;AACnD,EAAA,MAAM,MAAA,GAASA,wBAAAA,CAAM,MAAA,CAAO,GAAG,CAAA;AAC/B,EAAA,MAAM,MAAA,GAASA,wBAAAA,CAAM,MAAA,CAAO,GAAG,CAAA;AAC/B,EAAA,MAAM,OAAA,GAAUA,wBAAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AACjC,EAAA,MAAM,WAAA,GAAcA,wBAAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAEzC,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,gBAAA,CAAiB,OAAA,GAAU,aAAA;AAAA,EAAe,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AACpF,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAK,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AACtD,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAK,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AACtD,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAAA,EAAM,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AACzD,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EAAU,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAErE,EAAA,MAAM,YAAA,GAAeA,wBAAAA,CAAM,WAAA,CAAY,CAAC,KAAA,KAAkB;AACxD,IAAA,MAAM,MAAA,GAAS,QAAQ,UAAA,CAAW,OAAA;AAClC,IAAA,MAAMsC,MAAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAG,MAAA,GAAS,UAAA,CAAW,OAAO,CAAC,CAAA;AAClE,IAAA,MAAM,MAAM,MAAA,CAAO,OAAA,GAAUA,MAAAA,IAAS,MAAA,CAAO,UAAU,MAAA,CAAO,OAAA,CAAA;AAC9D,IAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAM,MAAM,OAAA,CAAQ,OAAO,IAAI,OAAA,CAAQ,OAAA;AAC5D,IAAA,OAAO,IAAA,CAAK,IAAI,MAAA,CAAO,OAAA,EAAS,KAAK,GAAA,CAAI,MAAA,CAAO,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,EACnE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAetC,wBAAAA,CAAM,MAAA;AAAA,IACzBuC,yBAAa,MAAA,CAAO;AAAA,MAClB,4BAAA,EAA8B,MAAM,CAAC,WAAA,CAAY,OAAA;AAAA,MACjD,2BAAA,EAA6B,MAAM,CAAC,WAAA,CAAY,OAAA;AAAA,MAChD,mBAAA,EAAqB,CAAC,GAAA,KAAQ;AAC5B,QAAA,gBAAA,CAAiB,OAAA,CAAQ,YAAA,CAAa,GAAA,CAAI,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,MAC9D,CAAA;AAAA,MACA,kBAAA,EAAoB,CAAC,IAAA,EAAM,YAAA,KAAiB;AAC1C,QAAA,gBAAA,CAAiB,OAAA,CAAQ,YAAA,CAAa,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,MAC3D;AAAA,KACD;AAAA,GACH,CAAE,OAAA;AAEF,EAAA,MAAM,QAAQ,GAAA,GAAM,GAAA,GAAA,CAAO,KAAA,GAAQ,GAAA,KAAQ,MAAM,GAAA,CAAA,GAAO,CAAA;AACxD,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,cAAcF,WAAU,CAAA;AACxD,EAAA,MAAM,YAAY,KAAA,GAAQ,WAAA;AAG1B,EAAA,MAAM,cAAA,GAAiB,GAAA,GAAM,CAAA,IAAK,GAAA,GAAM,CAAA;AACxC,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,WAAA,GAAA,CAAe,CAAA,GAAI,GAAA,KAAQ,GAAA,GAAM,GAAA,CAAA;AACvC,IAAA,MAAM,OAAA,GAAU,WAAA,GAAc,WAAA,GAAcA,WAAAA,GAAa,CAAA;AACzD,IAAA,MAAM,YAAA,GAAe,YAAYA,WAAAA,GAAa,CAAA;AAC9C,IAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,YAAY,CAAA;AACzC,IAAA,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,YAAA,GAAe,OAAO,CAAA;AAAA,EAC7C,CAAA,MAAO;AACL,IAAA,QAAA,GAAW,CAAA;AACX,IAAA,SAAA,GAAY,YAAYA,WAAAA,GAAa,CAAA;AAAA,EACvC;AAEA,EAAA,MAAM,wBAAwBrC,wBAAAA,CAAM,WAAA;AAAA,IAClC,CAAC,IAAA,KAAiB;AAChB,MAAA,MAAM,GAAA,GAAM,OAAO,IAAI,CAAA;AACvB,MAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,EAAG;AACtB,QAAA,aAAA,CAAc,IAAA,CAAK,IAAI,GAAA,EAAK,IAAA,CAAK,IAAI,GAAA,EAAK,GAAG,CAAC,CAAC,CAAA;AAAA,MACjD;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAA,EAAe,GAAA,EAAK,GAAG;AAAA,GAC1B;AAEA,EAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAIA,yBAAM,QAAA,CAAS,MAAA,CAAO,KAAK,CAAC,CAAA;AAC5D,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,WAAA,CAAY,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EAAG,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAE9D,EAAA,MAAM,SAAA,GAAY,SAAS,SAAA,IAAa,aAAA;AAExC,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,GAAI,KAAA,CAAM,QAAQ,KAAK,CAAA,GAAI,QAAQ,CAAC,KAAK,CAAE,CAAA,EAAA,EACxE,SAAA,oBACCN,wBAAAA,CAAA,cAACO,gBAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,QAAA,EAAA,EACjB,yBAASN,wBAAAA,CAAA,cAACC,gBAAAA,EAAA,EAAK,OAAOK,OAAAA,CAAO,KAAA,EAAA,EAAQ,KAAM,CAAA,EAC3C,aAAA,mBACCN,wBAAAA,CAAA,aAAA;AAAA,IAACwC,qBAAAA;AAAA,IAAA;AAAA,MACC,OAAOlC,OAAAA,CAAO,UAAA;AAAA,MACd,KAAA,EAAO,QAAA;AAAA,MACP,YAAA,EAAa,SAAA;AAAA,MACb,YAAA,EAAc,WAAA;AAAA,MACd,iBAAiB,CAAC,CAAA,KAAM,qBAAA,CAAsB,CAAA,CAAE,YAAY,IAAI,CAAA;AAAA,MAChE,MAAA,EAAQ,MAAM,qBAAA,CAAsB,QAAQ,CAAA;AAAA,MAC5C,iBAAA,EAAiB,IAAA;AAAA,MACjB,UAAU,CAAC;AAAA;AAAA,GACb,GAEA,SAAA,oBAAaN,wBAAAA,CAAA,cAACC,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,KAAA,EAAA,EAAQ,KAAM,CAEnD,CAAA,kBAEFN,wBAAAA,CAAA,aAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,OAAOD,OAAAA,CAAO,cAAA;AAAA,MACd,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,QAAA,MAAM,CAAA,GAAI,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,KAAA;AAC/B,QAAA,UAAA,CAAW,OAAA,GAAU,CAAA;AACrB,QAAA,cAAA,CAAe,CAAC,CAAA;AAChB,QAAA,QAAA,CAAS,SAAS,OAAA,CAAQ,CAAC,IAAI,EAAA,EAAI,EAAA,EAAI,IAAI,KAAA,KAAU;AACnD,UAAA,IAAI,KAAA,IAAS,IAAA,EAAM,UAAA,CAAW,OAAA,GAAU,KAAA;AAAA,QAC1C,CAAC,CAAA;AAAA,MACH,CAAA;AAAA,MACC,GAAG,YAAA,CAAa;AAAA,KAAA;AAAA,oBAEjBN,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAOD,QAAO,SAAA,EAAW,CAAA;AAAA,oBAC/BN,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,CAAA,EAAG,CAAA;AAAA,oBACvEN,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA,EAAG;AAAA,GAEtD,CAAA;AAEJ;ACtIA,IAAM8B,aAAAA,GAAe,EAAA;AACd,IAAMC,WAAAA,GAAa,EAAA;AAC1B,IAAM,aAAA,GAAgB,EAAA;AACtB,IAAM,OAAA,GAAU,GAAA;AAChB,IAAM,OAAA,GAAU,GAAA;AAGT,SAAS,SAAS,QAAA,EAA0B;AACjD,EAAA,MAAM,EAAE,KAAA,EAAM,GAAII,sBAAA,CAAe,EAAE,CAAA,EAAG,OAAA,EAAS,CAAA,EAAG,OAAA,EAAS,CAAA,EAAG,QAAA,EAAU,CAAA;AACxE,EAAA,OAAOC,kBAAU,KAAK,CAAA;AACxB;AAGO,SAAS,gBAAA,CAAiB,KAAa,GAAA,EAAuB;AACnE,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,eAAc,EAAG,CAAC,GAAG,CAAA,KAAM;AACrD,IAAA,MAAM,GAAA,GAAM,GAAA,GAAA,CAAO,GAAA,GAAM,GAAA,KAAQ,KAAK,aAAA,GAAgB,CAAA,CAAA,CAAA;AACtD,IAAA,OAAO,SAAS,GAAG,CAAA;AAAA,EACrB,CAAC,CAAA;AACH;AAEO,SAAS,kBAAA,CAAmB,QAAwB,QAAA,EAAmB;AAC5E,EAAA,OAAO3C,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,KAC5B;AAAA,IACA,QAAA,EAAU;AAAA,MACR,aAAA,EAAe,KAAA;AAAA,MACf,cAAA,EAAgB,eAAA;AAAA,MAChB,UAAA,EAAY;AAAA,KACd;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KACpC;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KACpC;AAAA,IACA,UAAA,EAAY;AAAA,MACV,KAAA,EAAO,EAAA;AAAA,MACP,eAAA,EAAiB,CAAA;AAAA,MACjB,iBAAA,EAAmB,CAAA;AAAA,MACnB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,aAAA;AAAA,MACxC,YAAA,EAAc,CAAA;AAAA,MACd,eAAA,EAAiB,aAAA;AAAA,MACjB,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,MAClC,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,SAAA,EAAW;AAAA,KACb;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,QAAQqC,aAAAA,GAAeC,WAAAA;AAAA,MACvB,cAAA,EAAgB,QAAA;AAAA,MAChB,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,UAAA;AAAA,MACV,IAAA,EAAM,CAAA;AAAA,MACN,KAAA,EAAO,CAAA;AAAA,MACP,MAAA,EAAQD,aAAAA;AAAA,MACR,cAAcA,aAAAA,GAAe,CAAA;AAAA,MAC7B,aAAA,EAAe,KAAA;AAAA,MACf,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM;AAAA,KACR;AAAA,IACA,KAAA,EAAO;AAAA,MACL,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAOC,WAAAA;AAAA,MACP,MAAA,EAAQA,WAAAA;AAAA,MACR,cAAcA,WAAAA,GAAa,CAAA;AAAA,MAC3B,eAAA,EAAiB,SAAA;AAAA,MACjB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA;AAC1C,GACD,CAAA;AACH;;;ACrEO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA,GAAM,GAAA;AAAA,EACN,KAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,aAAA,GAAgB,KAAA;AAAA,EAChB,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,MAAA,GAAS3B,qBAAU,CAAC,CAAA;AAE1B,EAAA,MAAMJ,UAASN,wBAAAA,CAAM,OAAA;AAAA,IACnB,MAAM,kBAAA,CAAmB,MAAA,EAAQ,QAAQ,CAAA;AAAA,IACzC,CAAC,QAAQ,QAAQ;AAAA,GACnB;AAEA,EAAA,MAAM,WAAWA,wBAAAA,CAAM,OAAA;AAAA,IACrB,MAAM,gBAAA,CAAiB,GAAA,EAAK,GAAG,CAAA;AAAA,IAC/B,CAAC,KAAK,GAAG;AAAA,GACX;AAEA,EAAA,MAAM,QAAA,GAAWA,wBAAAA,CAAM,MAAA,CAAa,IAAI,CAAA;AACxC,EAAA,MAAM,UAAA,GAAaA,wBAAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AACjC,EAAA,MAAM,UAAA,GAAaA,wBAAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AACjC,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,wBAAAA,CAAM,SAAS,CAAC,CAAA;AAGtD,EAAA,MAAM,gBAAA,GAAmBA,wBAAAA,CAAM,MAAA,CAAO,aAAa,CAAA;AACnD,EAAA,MAAM,MAAA,GAASA,wBAAAA,CAAM,MAAA,CAAO,GAAG,CAAA;AAC/B,EAAA,MAAM,MAAA,GAASA,wBAAAA,CAAM,MAAA,CAAO,GAAG,CAAA;AAC/B,EAAA,MAAM,WAAA,GAAcA,wBAAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAEzC,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,gBAAA,CAAiB,OAAA,GAAU,aAAA;AAAA,EAAe,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AACpF,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAK,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AACtD,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAK,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AACtD,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EAAU,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAErE,EAAA,MAAM,UAAA,GAAaA,wBAAAA,CAAM,WAAA,CAAY,CAAC,KAAA,KAAkB;AACtD,IAAA,MAAM,MAAA,GAAS,QAAQ,UAAA,CAAW,OAAA;AAClC,IAAA,MAAMsC,MAAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAG,MAAA,GAAS,UAAA,CAAW,OAAO,CAAC,CAAA;AAClE,IAAA,MAAM,MAAM,MAAA,CAAO,OAAA,GAAUA,MAAAA,IAAS,MAAA,CAAO,UAAU,MAAA,CAAO,OAAA,CAAA;AAC9D,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC9B,IAAA,OAAA,CAAS,OAAA,GAAU,MAAO,GAAA,IAAO,GAAA;AAAA,EACnC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAetC,wBAAAA,CAAM,MAAA;AAAA,IACzBuC,yBAAa,MAAA,CAAO;AAAA,MAClB,4BAAA,EAA8B,MAAM,CAAC,WAAA,CAAY,OAAA;AAAA,MACjD,2BAAA,EAA6B,MAAM,CAAC,WAAA,CAAY,OAAA;AAAA,MAChD,mBAAA,EAAqB,CAAC,GAAA,KAAQ;AAC5B,QAAA,gBAAA,CAAiB,OAAA,CAAQ,UAAA,CAAW,GAAA,CAAI,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,MAC5D,CAAA;AAAA,MACA,kBAAA,EAAoB,CAAC,IAAA,EAAM,YAAA,KAAiB;AAC1C,QAAA,gBAAA,CAAiB,OAAA,CAAQ,UAAA,CAAW,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,MACzD;AAAA,KACD;AAAA,GACH,CAAE,OAAA;AAGF,EAAA,MAAM,cAAc,GAAA,GAAM,GAAA,IAAO,KAAA,GAAQ,GAAA,GAAM,QAAQ,GAAA,GAAM,KAAA;AAC7D,EAAA,MAAM,QAAQ,GAAA,GAAM,GAAA,GAAA,CAAO,WAAA,GAAc,GAAA,KAAQ,MAAM,GAAA,CAAA,GAAO,CAAA;AAC9D,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,cAAcF,WAAU,CAAA;AACxD,EAAA,MAAM,YAAY,KAAA,GAAQ,WAAA;AAE1B,EAAA,MAAM,wBAAwBrC,wBAAAA,CAAM,WAAA;AAAA,IAClC,CAAC,IAAA,KAAiB;AAChB,MAAA,MAAM,GAAA,GAAM,OAAO,IAAI,CAAA;AACvB,MAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,EAAG;AACtB,QAAA,aAAA,CAAA,CAAgB,GAAA,GAAM,GAAA,GAAO,GAAA,IAAO,GAAG,CAAA;AAAA,MACzC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAIA,yBAAM,QAAA,CAAS,MAAA,CAAO,KAAK,CAAC,CAAA;AAC5D,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,WAAA,CAAY,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EAAG,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAE9D,EAAA,MAAM,SAAA,GAAY,SAAS,SAAA,IAAa,aAAA;AAExC,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,GAAI,KAAA,CAAM,QAAQ,KAAK,CAAA,GAAI,QAAQ,CAAC,KAAK,CAAE,CAAA,EAAA,EACxE,SAAA,oBACCN,wBAAAA,CAAA,cAACO,gBAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,QAAA,EAAA,EACjB,yBAASN,wBAAAA,CAAA,cAACC,gBAAAA,EAAA,EAAK,OAAOK,OAAAA,CAAO,KAAA,EAAA,EAAQ,KAAM,CAAA,EAC3C,aAAA,mBACCN,wBAAAA,CAAA,aAAA;AAAA,IAACwC,qBAAAA;AAAA,IAAA;AAAA,MACC,OAAOlC,OAAAA,CAAO,UAAA;AAAA,MACd,KAAA,EAAO,QAAA;AAAA,MACP,YAAA,EAAa,SAAA;AAAA,MACb,YAAA,EAAc,WAAA;AAAA,MACd,iBAAiB,CAAC,CAAA,KAAM,qBAAA,CAAsB,CAAA,CAAE,YAAY,IAAI,CAAA;AAAA,MAChE,MAAA,EAAQ,MAAM,qBAAA,CAAsB,QAAQ,CAAA;AAAA,MAC5C,iBAAA,EAAiB,IAAA;AAAA,MACjB,UAAU,CAAC;AAAA;AAAA,GACb,GAEA,SAAA,oBAAaN,wBAAAA,CAAA,cAACC,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,SAAQ,KAAA,EAAM,MAAC,CAEpD,CAAA,kBAEFN,wBAAAA,CAAA,aAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,OAAOD,OAAAA,CAAO,cAAA;AAAA,MACd,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,QAAA,MAAM,CAAA,GAAI,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,KAAA;AAC/B,QAAA,UAAA,CAAW,OAAA,GAAU,CAAA;AACrB,QAAA,cAAA,CAAe,CAAC,CAAA;AAChB,QAAA,QAAA,CAAS,SAAS,OAAA,CAAQ,CAAC,IAAI,EAAA,EAAI,EAAA,EAAI,IAAI,KAAA,KAAU;AACnD,UAAA,IAAI,KAAA,IAAS,IAAA,EAAM,UAAA,CAAW,OAAA,GAAU,KAAA;AAAA,QAC1C,CAAC,CAAA;AAAA,MACH,CAAA;AAAA,MACC,GAAG,YAAA,CAAa;AAAA,KAAA;AAAA,oBAEjBN,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,aAAA,EAAA,EACjB,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,EAAO,sBACpBN,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,GAAA,EAAK,CAAA,EAAG,KAAA,EAAO,CAACD,OAAAA,CAAO,OAAA,EAAS,EAAE,eAAA,EAAiB,KAAA,EAAO,CAAA,EAAG,CACpE,CACH,CAAA;AAAA,oBACAN,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA,EAAG;AAAA,GAEtD,CAAA;AAEJ;;;AC5IO,IAAM,2BAAA,GAA8B,QAAA;AACpC,IAAM,gBAAA,GAAmB,KAAA;AACzB,IAAM,mBAAA,GAAsB,GAAA;AAC5B,IAAM,iBAAA,GAAoB,KAAA;AAC1B,IAAM,gBAAA,GAAmB,KAAA;AAoBzB,IAAM,kBAAA,GAAqB;EAChC,CAAC,CAAA,EAAc,cAAe,YAAa,CAAA;EAC3C,CAAC,CAAA,EAAc,eAAe,aAAa,CAAA;EAC3C,CAAC,CAAA,EAAc,eAAe,YAAa;AAC7C,CAAA;AAqBO,IAAM,gBAAA,GAAmB;EAC9B,CAAC,WAAA,EAAe,eAAe,YAAa,CAAA;EAC5C,CAAC,aAAA,EAAe,cAAe,aAAa,CAAA;EAC5C,CAAC,aAAA,EAAe,eAAe,YAAa;AAC9C,CAAA;AAwCO,IAAM,UAAA,GAAa,KAAK,EAAA,GAAK,GAAA;AC9E7B,SAAS,aAAa,GAAA,EAAmB;AAC9C,EAAA,MAAM,IAAA,GAAO,IAAI,CAAA,GAAI,UAAA;AACrB,EAAA,OAAO;AACL,IAAA,CAAA,EAAG,GAAA,CAAI,CAAA;AACP,IAAA,CAAA,EAAG,GAAA,CAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA;AACxB,IAAA,CAAA,EAAG,GAAA,CAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAI;AAAA,GAAA;AAE5B;ACsBO,SAAS,gBAAgB,KAAA,EAA0B;AAExD,EAAA,MAAM,EAAA,GACJ,mBAAmB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,KAAA,CAAM,IACjC,kBAAA,CAAmB,CAAC,EAAE,CAAC,CAAA,GAAI,MAAM,CAAA,GACjC,kBAAA,CAAmB,CAAC,CAAA,CAAE,CAAC,IAAI,KAAA,CAAM,CAAA;AACnC,EAAA,MAAM,EAAA,GACJ,mBAAmB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,KAAA,CAAM,IACjC,kBAAA,CAAmB,CAAC,EAAE,CAAC,CAAA,GAAI,MAAM,CAAA,GACjC,kBAAA,CAAmB,CAAC,CAAA,CAAE,CAAC,IAAI,KAAA,CAAM,CAAA;AACnC,EAAA,MAAM,EAAA,GACJ,mBAAmB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,KAAA,CAAM,IACjC,kBAAA,CAAmB,CAAC,EAAE,CAAC,CAAA,GAAI,MAAM,CAAA,GACjC,kBAAA,CAAmB,CAAC,CAAA,CAAE,CAAC,IAAI,KAAA,CAAM,CAAA;AAGnC,EAAA,MAAM,CAAA,GAAI,KAAK,EAAA,GAAK,EAAA;AACpB,EAAA,MAAM,CAAA,GAAI,KAAK,EAAA,GAAK,EAAA;AACpB,EAAA,MAAM,CAAA,GAAI,KAAK,EAAA,GAAK,EAAA;AAGpB,EAAA,OAAO;AACL,IAAA,CAAA,EACE,iBAAiB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,IACzB,gBAAA,CAAiB,CAAC,CAAA,CAAE,CAAC,IAAI,CAAA,GACzB,gBAAA,CAAiB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA;AAC3B,IAAA,CAAA,EACE,iBAAiB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,IACzB,gBAAA,CAAiB,CAAC,CAAA,CAAE,CAAC,IAAI,CAAA,GACzB,gBAAA,CAAiB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA;AAC3B,IAAA,CAAA,EACE,iBAAiB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,IACzB,gBAAA,CAAiB,CAAC,CAAA,CAAE,CAAC,IAAI,CAAA,GACzB,gBAAA,CAAiB,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI;AAAA,GAAA;AAE/B;AChEO,SAAS,oBAAoB,KAAA,EAAuB;AACzD,EAAA,OAAO,SAAS,2BAAA,GACZ,KAAA,GAAQ,mBACR,gBAAA,GAAmB,KAAA,KAAU,IAAI,mBAAA,CAAA,GAAuB,iBAAA;AAC9D;AAYO,SAAS,iBAAiB,KAAA,EAAyB;AACxD,EAAA,OAAO;IACL,CAAA,EAAG,mBAAA,CAAoB,MAAM,CAAC,CAAA;IAC9B,CAAA,EAAG,mBAAA,CAAoB,MAAM,CAAC,CAAA;IAC9B,CAAA,EAAG,mBAAA,CAAoB,MAAM,CAAC;AAAA,GAAA;AAElC;ACQO,SAAS,UAAU,KAAA,EAAoB;AAC5C,EAAA,OAAO,gBAAA,CAAiB,eAAA,CAAgB,YAAA,CAAa,KAAK,CAAC,CAAC,CAAA;AAC9D;AAGO,SAAS,aAAa,KAAA,EAAsB;AACjD,EAAA,MAAM,EAAA,GAAK,UAAU,KAAK,CAAA;AAC1B,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,EAAA,CAAG,CAAC,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAClD,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,EAAA,CAAG,CAAC,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAClD,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,EAAA,CAAG,CAAC,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAClD,EAAA,OAAO,CAAA,iBAAA,EAAoB,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAA;AACxC;ACxDA,IAAM8B,aAAAA,GAAe,EAAA;AACd,IAAMC,WAAAA,GAAa,EAAA;AAEnB,SAAS,yBAAA,CAA0B,QAAwB,QAAA,EAAmB;AACnF,EAAA,OAAOtC,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,MACxB,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,KAC5B;AAAA,IACA,QAAA,EAAU;AAAA,MACR,aAAA,EAAe,KAAA;AAAA,MACf,cAAA,EAAgB,eAAA;AAAA,MAChB,UAAA,EAAY;AAAA,KACd;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KACpC;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,QAAQqC,aAAAA,GAAeC,WAAAA;AAAA,MACvB,cAAA,EAAgB,QAAA;AAAA,MAChB,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,UAAA;AAAA,MACV,IAAA,EAAM,CAAA;AAAA,MACN,KAAA,EAAO,CAAA;AAAA,MACP,MAAA,EAAQD,aAAAA;AAAA,MACR,cAAcA,aAAAA,GAAe,CAAA;AAAA,MAC7B,aAAA,EAAe,KAAA;AAAA,MACf,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM;AAAA,KACR;AAAA,IACA,KAAA,EAAO;AAAA,MACL,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAOC,WAAAA;AAAA,MACP,MAAA,EAAQA,WAAAA;AAAA,MACR,cAAcA,WAAAA,GAAa,CAAA;AAAA,MAC3B,eAAA,EAAiB,SAAA;AAAA,MACjB,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK;AAAA,KAC1C;AAAA,IACA,OAAA,EAAS;AAAA,MACP,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,MAAA;AAAA,MACzC,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,IAAI,CAAA;AAAA,MAC1C,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,KAAK,OAAA,CAAQ,MAAA;AAAA,MACjD,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,QAAA,CAAS;AAAA;AACtC,GACD,CAAA;AACH;;;ACtCO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,MAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,KAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,YAAA,GAAe,KAAA;AAAA,EACf,KAAA,EAAO,MAAA;AAAA,EACP;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS3B,qBAAU,CAAC,CAAA;AAC1B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIR,0BAAAA,EAAgB;AAElC,EAAA,MAAMI,UAASN,wBAAAA,CAAM,OAAA;AAAA,IACnB,MAAM,yBAAA,CAA0B,MAAA,EAAQ,QAAQ,CAAA;AAAA,IAChD,CAAC,QAAQ,QAAQ;AAAA,GACnB;AAEA,EAAA,MAAM,QAAA,GAAWA,wBAAAA,CAAM,MAAA,CAAa,IAAI,CAAA;AACxC,EAAA,MAAM,UAAA,GAAaA,wBAAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AACjC,EAAA,MAAM,UAAA,GAAaA,wBAAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AACjC,EAAA,MAAM,UAAA,GAAaA,wBAAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AACrC,EAAA,MAAM,SAAA,GAAYA,yBAAM,MAAA,CAAO,IAAI2C,qBAAS,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,OAAA;AACtD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI3C,wBAAAA,CAAM,SAAS,CAAC,CAAA;AAGtD,EAAA,MAAM,gBAAA,GAAmBA,wBAAAA,CAAM,MAAA,CAAO,aAAa,CAAA;AACnD,EAAA,MAAM,WAAA,GAAcA,wBAAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AACzC,EAAA,MAAM,eAAA,GAAkBA,wBAAAA,CAAM,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAClD,EAAA,MAAM,WAAA,GAAcA,wBAAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AACzC,EAAA,MAAM,OAAA,GAAUA,wBAAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAEjC,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,gBAAA,CAAiB,OAAA,GAAU,aAAA;AAAA,EAAe,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AACpF,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EAAU,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AACrE,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,eAAA,CAAgB,UAAU,MAAA,CAAO,MAAA;AAAA,EAAQ,CAAA,EAAG,CAAC,MAAA,CAAO,MAAM,CAAC,CAAA;AACnF,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EAAU,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AACrE,EAAAA,wBAAAA,CAAM,UAAU,MAAM;AAAE,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAAA,EAAM,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAEzD,EAAA,MAAM,SAAA,GAAYA,wBAAAA,CAAM,WAAA,CAAY,CAAC,KAAA,KAAkB;AACrD,IAAA,MAAM,MAAA,GAAS,QAAQ,UAAA,CAAW,OAAA;AAClC,IAAA,MAAMsC,MAAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAG,MAAA,GAAS,UAAA,CAAW,OAAO,CAAC,CAAA;AAClE,IAAA,MAAMM,WAAAA,GAAa,gBAAgB,OAAA,GAAU,CAAA;AAC7C,IAAA,MAAMC,MAAAA,GAAQ,WAAA,CAAY,OAAA,GAAU,CAAA,GAAID,WAAAA,GAAa,CAAA;AACrD,IAAA,MAAME,MAAAA,GAAQ,WAAA,CAAY,OAAA,GAAU,CAAA,GAAI,IAAIF,WAAAA,GAAa,CAAA;AACzD,IAAA,MAAMG,SAAQD,MAAAA,GAAQD,MAAAA;AAGtB,IAAA,IAAI,EAAA,GAAKC,SAAQR,MAAAA,GAAQS,MAAAA;AAEzB,IAAA,IAAI,OAAA,CAAQ,OAAA,IAAWH,WAAAA,GAAa,CAAA,EAAG;AACrC,MAAA,MAAM,SAAS,CAAA,GAAIA,WAAAA;AACnB,MAAA,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,MAAM,CAAA,GAAI,MAAA;AAC/B,MAAA,EAAA,GAAK,KAAK,GAAA,CAAIE,MAAAA,EAAO,KAAK,GAAA,CAAID,MAAAA,EAAO,EAAE,CAAC,CAAA;AAAA,IAC1C;AAEA,IAAA,OAAO,EAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAe7C,wBAAAA,CAAM,MAAA;AAAA,IACzBuC,yBAAa,MAAA,CAAO;AAAA,MAClB,4BAAA,EAA8B,MAAM,CAAC,WAAA,CAAY,OAAA;AAAA,MACjD,2BAAA,EAA6B,MAAM,CAAC,WAAA,CAAY,OAAA;AAAA,MAChD,mBAAA,EAAqB,CAAC,GAAA,KAAQ;AAC5B,QAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,QAAA,gBAAA,CAAiB,OAAA,CAAQ,SAAA,CAAU,GAAA,CAAI,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,MAC3D,CAAA;AAAA,MACA,kBAAA,EAAoB,CAAC,IAAA,EAAM,YAAA,KAAiB;AAC1C,QAAA,gBAAA,CAAiB,OAAA,CAAQ,SAAA,CAAU,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,MACxD,CAAA;AAAA,MACA,uBAAuB,MAAM;AAC3B,QAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AAAA,MACvB,CAAA;AAAA,MACA,yBAAyB,MAAM;AAC7B,QAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AAAA,MACvB;AAAA,KACD;AAAA,GACH,CAAE,OAAA;AAGF,EAAA,MAAM,gBAAgB,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,MAAA;AAGvD,EAAA,MAAM,UAAA,GAAa,OAAO,MAAA,GAAS,CAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,QAAA,GAAW,CAAA,GAAI,UAAA,GAAa,CAAA;AAC1C,EAAA,MAAM,KAAA,GAAQ,QAAA,GAAW,CAAA,GAAI,CAAA,GAAI,UAAA,GAAa,CAAA;AAC9C,EAAA,MAAM,QAAQ,KAAA,GAAQ,KAAA;AACtB,EAAA,MAAM,YAAA,GAAe,KAAA,KAAU,MAAA,GAC3B,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,KAAK,CAAC,CAAA,GAAA,CACrC,QAAQ,KAAA,IAAS,CAAA;AACtB,EAAA,MAAM,KAAA,GAAQ,KAAA,GAAQ,CAAA,GAAA,CAAK,KAAA,GAAQ,gBAAgB,KAAA,GAAQ,GAAA;AAC3D,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,cAAcF,WAAU,CAAA;AACxD,EAAA,MAAM,YAAY,KAAA,GAAQ,WAAA;AAG1B,EAAArC,wBAAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,UAAA,CAAW,OAAA,IAAW,CAAC,YAAA,EAAc;AACvC,MAAA,SAAA,CAAU,SAAS,SAAS,CAAA;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA2C,oBAAA,CAAS,OAAO,SAAA,EAAW;AAAA,QACzB,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU,GAAA;AAAA,QACV,eAAA,EAAiB;AAAA,OAClB,EAAE,KAAA,EAAM;AAAA,IACX;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,YAAA,EAAc,SAAS,CAAC,CAAA;AAEvC,EAAA,uBACE3C,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,CAACD,OAAAA,CAAO,SAAA,EAAW,GAAI,KAAA,CAAM,QAAQ,KAAK,CAAA,GAAI,QAAQ,CAAC,KAAK,CAAE,CAAA,EAAA,EACxE,KAAA,oBACCN,wBAAAA,CAAA,cAACO,gBAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,QAAA,EAAA,kBAClBN,wBAAAA,CAAA,aAAA,CAACC,gBAAAA,EAAA,EAAK,OAAOK,OAAAA,CAAO,KAAA,EAAA,EAAQ,KAAM,CACpC,CAAA,kBAEFN,wBAAAA,CAAA,aAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,OAAOD,OAAAA,CAAO,cAAA;AAAA,MACd,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,QAAA,MAAM,CAAA,GAAI,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,KAAA;AAC/B,QAAA,UAAA,CAAW,OAAA,GAAU,CAAA;AACrB,QAAA,cAAA,CAAe,CAAC,CAAA;AAChB,QAAA,QAAA,CAAS,SAAS,OAAA,CAAQ,CAAC,IAAI,EAAA,EAAI,EAAA,EAAI,IAAI,KAAA,KAAU;AACnD,UAAA,IAAI,KAAA,IAAS,IAAA,EAAM,UAAA,CAAW,OAAA,GAAU,KAAA;AAAA,QAC1C,CAAC,CAAA;AAAA,MACH,CAAA;AAAA,MACC,GAAG,YAAA,CAAa;AAAA,KAAA;AAAA,oBAEjBN,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,aAAA,EAAA,EACjB,aAAA,CAAc,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,qBACzBN,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,GAAA,EAAK,CAAA,EAAG,KAAA,EAAO,CAACD,OAAAA,CAAO,OAAA,EAAS,EAAE,eAAA,EAAiB,KAAA,KAAU,OAAO,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA,GAAIoC,kBAAU,KAAA,CAAM,IAAI,GAAG,CAAA,EAAG,CACjI,CACH,CAAA;AAAA,oBACA1C,wBAAAA,CAAA,aAAA,CAAC2C,oBAAA,CAAS,MAAT,EAAc,KAAA,EAAO,CAACrC,OAAAA,CAAO,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA,EAAG;AAAA,GAC7D,EACC,OAAA,oBACCN,wBAAAA,CAAA,aAAA,CAACC,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,OAAA,EAAA,EAAU,OAAQ,CAE1C,CAAA;AAEJ;AC5JO,SAAS,iBAAA,CACd,MAAA,EACA,KAAA,GAAmB,SAAA,EACnB,aAA6B,MAAA,EAC7B;AACA,EAAA,MAAM,EAAA,GAAuB,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAC5D,EAAA,OAAOP,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,CAAA;AAAA,MACN,aAAA,EAAe,KAAA;AAAA,MACf,QAAA,EAAU,QAAA;AAAA,MACV,iBAAiB,EAAA,CAAG;AAAA,KACtB;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,CAAA;AAAA,MACN,aAAA,EAAe,QAAA;AAAA,MACf,QAAA,EAAU,CAAA;AAAA,MACV,QAAA,EAAU;AAAA;AACZ,GACD,CAAA;AACH;;;ACjBO,SAAS,QAAA,CAAS,EAAE,OAAA,EAAS,QAAA,EAAS,EAAkB;AAC7D,EAAA,MAAM,SAASW,oBAAAA,EAAU;AACzB,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AACjC,EAAA,MAAMG,UAASN,wBAAAA,CAAM,OAAA;AAAA,IACnB,MAAM,iBAAA,CAAkB,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,UAAU,UAAU,CAAA;AAAA,IACrE,CAAC,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,UAAU,UAAU;AAAA,GAChD;AAEA,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAACO,kBAAA,EAAK,KAAA,EAAOD,QAAO,SAAA,EAAA,EACjB,OAAA,kBACDN,wBAAAA,CAAA,cAACO,gBAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,IAAA,EAAA,EAAO,QAAS,CACtC,CAAA;AAEJ;ACTO,SAAS,gBAAA,CAAiB,EAAE,MAAA,EAAQ,KAAA,EAAO,UAAU,KAAA,GAAQ,SAAA,EAAW,UAAA,GAAa,MAAA,EAAO,EAAsB;AACvH,EAAA,MAAM,EAAA,GAAuB,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAC5D,EAAA,MAAM,cAAc,EAAA,CAAG,aAAA;AAEvB,EAAA,OAAOP,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,KAAA;AAAA,MACA,UAAA,EAAY,CAAA;AAAA,MACZ,aAAA,EAAe,QAAA;AAAA,MACf,iBAAiB,EAAA,CAAG,UAAA;AAAA,MACpB,gBAAA,EAAkB,WAAW,CAAA,GAAI,CAAA;AAAA,MACjC,gBAAA,EAAkB;AAAA,KACpB;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,CAAA;AAAA,MACZ,iBAAA,EAAmB,CAAA;AAAA,MACnB,iBAAA,EAAmB;AAAA,KACrB;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM;AAAA,KACR;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,CAAA;AAAA,MACZ,cAAA,EAAgB,CAAA;AAAA,MAChB,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACH;;;AChCO,SAAS,OAAA,CAAQ;AAAA,EACtB,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA,GAAQ,GAAA;AAAA,EACR,QAAA,GAAW;AACb,CAAA,EAAiB;AACf,EAAA,MAAM,SAASW,oBAAAA,EAAU;AACzB,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AACjC,EAAA,MAAMG,UAASN,wBAAAA,CAAM,OAAA;AAAA,IACnB,MAAM,gBAAA,CAAiB,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,UAAA,EAAY,CAAA;AAAA,IAC5G,CAAC,MAAA,EAAQ,KAAA,EAAO,UAAU,QAAA,EAAU,KAAA,EAAO,UAAU,UAAU;AAAA,GACjE;AAEA,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,SAAA,EAAA,EACjB,MAAA,oBAAUN,yBAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,UAAS,MAAO,CAAA,kBAC/CN,wBAAAA,CAAA,cAAC4B,sBAAAA,EAAA,EAAW,OAAOtB,OAAAA,CAAO,IAAA,EAAA,EAAO,QAAS,CAAA,EACzC,MAAA,oBAAUN,wBAAAA,CAAA,cAACO,gBAAAA,EAAA,EAAK,OAAOD,OAAAA,CAAO,MAAA,EAAA,EAAS,MAAO,CACjD,CAAA;AAEJ;AChBO,SAAS,eAAA,CAAgB,EAAE,MAAA,EAAQ,MAAA,EAAQ,UAAU,KAAA,GAAQ,SAAA,EAAW,UAAA,GAAa,MAAA,EAAO,EAAqB;AACtH,EAAA,MAAM,EAAA,GAAuB,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,UAAU,CAAA;AAC5D,EAAA,MAAM,cAAc,EAAA,CAAG,aAAA;AAEvB,EAAA,OAAOP,uBAAW,MAAA,CAAO;AAAA,IACvB,SAAA,EAAW;AAAA,MACT,aAAA,EAAe,KAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,MAAA;AAAA,MACA,UAAA,EAAY,CAAA;AAAA,MACZ,iBAAA,EAAmB,EAAA;AAAA,MACnB,iBAAiB,EAAA,CAAG,UAAA;AAAA,MACpB,iBAAA,EAAmB,WAAW,CAAA,GAAI,CAAA;AAAA,MAClC,iBAAA,EAAmB;AAAA,KACrB;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,CAAA;AAAA,MACN,aAAA,EAAe,KAAA;AAAA,MACf,UAAA,EAAY;AAAA,KACd;AAAA,IACA,KAAA,EAAO;AAAA,MACL,IAAA,EAAM,CAAA;AAAA,MACN,aAAA,EAAe,KAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACH;;;AChCO,SAAS,MAAA,CAAO;AAAA,EACrB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA,GAAS,EAAA;AAAA,EACT,QAAA,GAAW;AACb,CAAA,EAAgB;AACd,EAAA,MAAM,SAASW,oBAAAA,EAAU;AACzB,EAAA,MAAM,WAAWP,0BAAAA,EAAgB;AACjC,EAAA,MAAMG,UAASN,wBAAAA,CAAM,OAAA;AAAA,IACnB,MAAM,eAAA,CAAgB,EAAE,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,UAAA,EAAY,CAAA;AAAA,IAC5G,CAAC,MAAA,EAAQ,MAAA,EAAQ,UAAU,QAAA,EAAU,KAAA,EAAO,UAAU,UAAU;AAAA,GAClE;AAEA,EAAA,uBACEA,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,SAAA,EAAA,EACjB,QAAA,GACC,2BAEAN,wBAAAA,CAAA,aAAA,CAAAA,wBAAAA,CAAA,gCACEA,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,IAAA,EAAA,EAAO,IAAK,mBAChCN,wBAAAA,CAAA,aAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAOD,OAAAA,CAAO,KAAA,EAAA,EAAQ,KAAM,CACpC,CAEJ,CAAA;AAEJ;ACvBO,SAAS,aAAa,EAAE,UAAA,GAAa,CAAA,EAAG,IAAA,GAAO,IAAG,EAAsB;AAE7E,EAAA,MAAM,KAAK,CAAA,IAAA,EAAO,UAAU,CAAA,EAAA,EAAK,UAAU,KAAK,UAAU,CAAA,CAAA,CAAA;AAE1D,EAAA,uBACEN,wBAAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,IAAA;AAAA,MACR,OAAA,EAAQ,aAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAM;AAAA,KAAA;AAAA,oBAENA,wBAAAA,CAAA,aAAA,CAAC,UAAK,CAAA,EAAE,sNAAA,EAAuN,MAAM,EAAA,EAAI,CAAA;AAAA,oBACzOA,wBAAAA,CAAA,aAAA,CAAC,UAAK,CAAA,EAAE,wMAAA,EAAyM,MAAM,EAAA,EAAI,CAAA;AAAA,oBAC3NA,wBAAAA,CAAA,aAAA,CAAC,UAAK,CAAA,EAAE,gMAAA,EAAiM,MAAM,EAAA,EAAI,CAAA;AAAA,oBACnNA,wBAAAA,CAAA,aAAA,CAAC,UAAK,CAAA,EAAE,+IAAA,EAAgJ,MAAM,EAAA,EAAI,CAAA;AAAA,oBAClKA,wBAAAA,CAAA,aAAA,CAAC,UAAK,CAAA,EAAE,kNAAA,EAAmN,MAAM,EAAA,EAAI;AAAA,GACvO;AAEJ;ACpBO,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,OAAA,EAAQ,EAAsB;AAClE,EAAA,uBACEA,wBAAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAQ,EAAA;AAAA,MACR,OAAA,EAAQ,aAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAM;AAAA,KAAA;AAAA,oBAENA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,wIAAuI,IAAA,EAAY,CAAA;AAAA,oBAC3JA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+aAA8a,IAAA,EAAY,CAAA;AAAA,oBAClcA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAS,WAAU,QAAA,EAAS,SAAA,EAAU,CAAA,EAAE,+jCAAA,EAAgkC,IAAA,EAAY,CAAA;AAAA,oBAC1nCA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAS,WAAU,QAAA,EAAS,SAAA,EAAU,CAAA,EAAE,skCAAA,EAAukC,IAAA,EAAY,CAAA;AAAA,oBACjoCA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,qLAAoL,IAAA,EAAY,CAAA;AAAA,oBACxMA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,imBAAgmB,IAAA,EAAY,CAAA;AAAA,oBACpnBA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6dAA4d,IAAA,EAAY,CAAA;AAAA,oBAChfA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iVAAgV,IAAA,EAAY,CAAA;AAAA,oBACpWA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAS,WAAU,QAAA,EAAS,SAAA,EAAU,CAAA,EAAE,qsCAAA,EAAssC,IAAA,EAAY,CAAA;AAAA,oBAChwCA,wBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,ybAAwb,IAAA,EAAY;AAAA,GAC9c;AAEJ;;;AC1BO,IAAM,UAAA,GAAsC;AAAA,EACjD,EAAE,IAAI,QAAA,EAAU,IAAA,EAAM,UAAU,WAAA,EAAa,wCAAA,EAA0C,MAAM,SAAA,EAAU;AAAA,EACvG,EAAE,IAAI,YAAA,EAAc,IAAA,EAAM,cAAc,WAAA,EAAa,wCAAA,EAA0C,MAAM,aAAA,EAAc;AAAA,EACnH,EAAE,IAAI,SAAA,EAAW,IAAA,EAAM,WAAW,WAAA,EAAa,+BAAA,EAAiC,MAAM,WAAA,EAAY;AAAA,EAClG,EAAE,IAAI,QAAA,EAAU,IAAA,EAAM,UAAU,WAAA,EAAa,gDAAA,EAA6C,MAAM,SAAA,EAAU;AAAA,EAC1G,EAAE,IAAI,YAAA,EAAc,IAAA,EAAM,cAAc,WAAA,EAAa,2BAAA,EAA6B,MAAM,SAAA;AAC1F;AAEO,IAAM,UAAA,GAAuC;AAAA,EAClD;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY,QAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,qEAAA;AAAA,IACb,WAAA,EAAa,IAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,IAAA,EAAK,EAAE;AAAA,MAChF,EAAE,EAAA,EAAI,cAAA,EAAgB,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,EAAE,OAAA,EAAS,WAAA,EAAa,IAAA,EAAM,IAAA,EAAK,EAAE;AAAA,MACtF,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,EAAE,OAAA,EAAS,OAAA,EAAS,IAAA,EAAM,IAAA,EAAK,EAAE;AAAA,MAC1E,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,IAAA,EAAK,EAAE;AAAA,MACtF,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,IAAA,EAAK,EAAE;AAAA,MACtF,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,IAAA,EAAK,EAAE;AAAA,MACnF,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAM,EAAE;AAAA,MAC9F,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,cAAc,KAAA,EAAO,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,IAAA,EAAM,IAAA,EAAM,eAAA,EAAiB,YAAA,EAAc,SAAQ,EAAE;AAAA,MACjI,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,EAAE,OAAA,EAAS,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAW;AAAE,KACnG;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO,SAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,UACrC,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA;AAAQ,SACnC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAK;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,IAAA;AAAK,SACtC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,cAAA;AAAA,QACN,KAAA,EAAO,eAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA;AAAQ,SACnC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,YAAA;AAAA,IACJ,IAAA,EAAM,WAAA;AAAA,IACN,UAAA,EAAY,WAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,qCAAA;AAAA,IACb,WAAA,EAAa,KAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,aAAA,EAAc,EAAE;AAAA,MACnF,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,EAAA,EAAG,EAAE;AAAA,MACpE,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,WAAA,EAAa,QAAA,EAAU,MAAK;AAAE,KACxG;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY,QAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,gCAAA;AAAA,IACb,WAAA,EAAa,KAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR;AAAA,QACE,EAAA,EAAI,SAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,kBAAA;AAAA,UACP,KAAA,EAAO,UAAA;AAAA,UACP,OAAA,EAAS;AAAA,YACP,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,YACvC,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,YACvC,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA;AAAW;AACzC;AACF,OACF;AAAA,MACA;AAAA,QACE,EAAA,EAAI,UAAA;AAAA,QACJ,KAAA,EAAO,UAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,iBAAA;AAAA,UACP,KAAA,EAAO,UAAA;AAAA,UACP,QAAA,EAAU,IAAA;AAAA,UACV,SAAS,CAAC,EAAE,OAAO,UAAA,EAAY,KAAA,EAAO,YAAY;AAAA;AACpD;AACF,KACF;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY,QAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,yBAAA;AAAA,IACb,WAAA,EAAa,KAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,IAAA,EAAK,EAAE;AAAA,MAClE,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,KAAA,EAAM,EAAE;AAAA,MACtE,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,MAAK;AAAE,KAC/F;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY,QAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,sBAAA;AAAA,IACb,WAAA,EAAa,KAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,WAAW,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,OAAO,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,KAAI,EAAE;AAAA,MAC3F,EAAE,EAAA,EAAI,WAAA,EAAa,OAAO,WAAA,EAAa,KAAA,EAAO,EAAE,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA,EAAG,GAAA,EAAK,GAAG,GAAA,EAAK,EAAA,EAAI,MAAM,CAAA,EAAG,SAAA,EAAW,MAAK;AAAE,KACxH;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,KAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,KAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAA;AAAA,QACN,KAAA,EAAO,YAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,YAAA;AAAA,IACJ,IAAA,EAAM,WAAA;AAAA,IACN,UAAA,EAAY,WAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,kDAAA;AAAA,IACb,WAAA,EAAa,KAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,GAAA,EAAI,EAAE;AAAA,MACvE,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,CAAA,EAAE,EAAE;AAAA,MAClE,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,GAAA,EAAI;AAAE,KACxE;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAA;AAAA,QACN,KAAA,EAAO,YAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,OAAA;AAAA,IACJ,IAAA,EAAM,OAAA;AAAA,IACN,UAAA,EAAY,OAAA;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,WAAA,EAAa,iFAAA;AAAA,IACb,WAAA,EAAa,IAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,EAAA,EAAI,SAAA,EAAW,OAAO,SAAA,EAAW,KAAA,EAAO,EAAC,EAAE;AAAA,MAC7C,EAAE,IAAI,SAAA,EAAW,KAAA,EAAO,WAAW,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAE;AAAA,MAC/D,EAAE,IAAI,WAAA,EAAa,KAAA,EAAO,aAAa,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAY,EAAE;AAAA,MACrE,EAAE,IAAI,QAAA,EAAU,KAAA,EAAO,UAAU,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAS,EAAE;AAAA,MAC5D,EAAE,EAAA,EAAI,eAAA,EAAiB,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,EAAE,SAAA,EAAW,EAAA,EAAI,MAAA,EAAQ,IAAA,EAAK,EAAE;AAAA,MACtF,EAAE,IAAI,QAAA,EAAU,KAAA,EAAO,UAAU,KAAA,EAAO,EAAE,SAAA,EAAW,EAAA,EAAG,EAAE;AAAA,MAC1D,EAAE,IAAI,UAAA,EAAY,KAAA,EAAO,YAAY,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAE,EAAE;AAAA,MAC7D,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK,EAAE;AAAA,MAC7E,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK,EAAE;AAAA,MACrE,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,EAAE,SAAA,EAAW,YAAA,EAAc,GAAA,EAAK,IAAA,EAAM,KAAA,EAAO,UAAS,EAAE;AAAA,MACxG,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,MAAK,EAAE;AAAA,MAC5F,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,aAAa,KAAA,EAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAS,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,GAAE;AAAE,KAC9G;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,UACrC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,UACrC,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA;AAAS,SACrC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAA;AAAA,QACN,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,oBAAA,EAAsB,KAAA,EAAO,EAAA,EAAG;AAAA,UACzC,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,EAAA,EAAG;AAAA,UAClC,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,CAAA,EAAE;AAAA,UACjC,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,CAAA,EAAE;AAAA,UAClC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,CAAA;AAAE,SACrC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAA;AAAA,QACN,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,UACvC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA;AAAa,SAC7C;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO,SAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,EAAA,EAAG;AAAA,UAC3B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAK;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,IAAA;AAAK,SACtC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,KAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,EAAA,EAAG;AAAA,UAC3B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAK;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA;AAAK,SAChC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAK;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA;AAAO,SACjC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,UAAA,EAAY,MAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,yCAAA;AAAA,IACb,WAAA,EAAa,IAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,IAAI,aAAA,EAAe,KAAA,EAAO,eAAe,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAE,EAAE;AAAA,MACnE,EAAE,IAAI,aAAA,EAAe,KAAA,EAAO,eAAe,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAE,EAAE;AAAA,MACnE,EAAE,IAAI,aAAA,EAAe,KAAA,EAAO,eAAe,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAE;AAAE,KACrE;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,WAAA;AAAA,QACN,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,CAAA,EAAE;AAAA,UAC7B,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,CAAA,EAAE;AAAA,UAC7B,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,CAAA;AAAE,SAC/B;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA;AAAA,EAEA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,UAAA,EAAY,MAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,2EAAA;AAAA,IACb,WAAA,EAAa,IAAA;AAAA,IACb,aAAA,EAAe,MAAA;AAAA,IACf,QAAA,EAAU;AAAA,MACR,EAAE,IAAI,MAAA,EAAQ,KAAA,EAAO,QAAQ,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAO,EAAE;AAAA,MACrD,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,SAAA,EAAU,EAAE;AAAA,MACnF,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,SAAA,EAAU,EAAE;AAAA,MAC1E,EAAE,IAAI,SAAA,EAAW,KAAA,EAAO,WAAW,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAU,EAAE;AAAA,MAC9D,EAAE,IAAI,YAAA,EAAc,KAAA,EAAO,cAAc,KAAA,EAAO,EAAE,IAAA,EAAM,YAAA,EAAa,EAAE;AAAA,MACvE,EAAE,IAAI,OAAA,EAAS,KAAA,EAAO,SAAS,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAQ,EAAE;AAAA,MACxD,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,WAAA,EAAY,EAAE;AAAA,MAClF,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAO,EAAE;AAAA,MACzE,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAY,IAAA,EAAM,MAAA,EAAO;AAAE,KAClF;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,UAC/B,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,UACrC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,UAC/B,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA;AAAW,SACzC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,UACvC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,UACjC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,UACrC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAa;AAAA,UAC3C,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,UACjC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA;AAAU,SACvC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAK;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA;AAAK,SAChC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,UACrC,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,UACvC,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,UACvC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,UACrC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,UACrC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA;AAAQ,SACnC;AAAA,QACA,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,UAAA,EAAY,MAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa,0CAAA;AAAA,IACb,WAAA,EAAa,KAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,IAAI,SAAA,EAAW,KAAA,EAAO,WAAW,KAAA,EAAO,EAAE,IAAA,EAAM,KAAA,EAAM;AAAE,KAC5D;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,iBAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,EAAA,EAAG;AAAA,UACzB,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,EAAA,EAAG;AAAA,UACzB,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,EAAA,EAAG;AAAA,UACzB,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,EAAA;AAAG,SAC3B;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,SAAA;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,WAAA,EAAa,kFAAA;AAAA,IACb,WAAA,EAAa,IAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,gBAAA,EAAkB,KAAA,EAAO,EAAE,SAAA,EAAW,UAAA,EAAY,GAAA,EAAK,IAAA,EAAK,EAAE;AAAA,MACvF,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,gBAAA,EAAkB,KAAA,EAAO,EAAE,SAAA,EAAW,YAAA,EAAc,GAAA,EAAK,IAAA,EAAM,KAAA,EAAO,UAAS,EAAE;AAAA,MAC5G,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK,EAAE;AAAA,MACrE,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,MAAK;AAAE,KACpG;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,WAAA;AAAA,QACN,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,UACvC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA;AAAa,SAC7C;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,KAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,EAAA,EAAG;AAAA,UAC3B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAK;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA;AAAK,SAChC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO,SAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,EAAA,EAAG;AAAA,UAC3B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAK;AAAA,UAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,IAAA;AAAK,SAChC;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,UACjC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA;AAAM,SAC/B;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO,SAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,UACjC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAM;AAAA,UAC7B,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,eAAA;AAAgB,SACnD;AAAA,QACA,YAAA,EAAc;AAAA;AAChB;AACF,GACF;AAAA;AAAA,EAEA;AAAA,IACE,EAAA,EAAI,oBAAA;AAAA,IACJ,IAAA,EAAM,kBAAA;AAAA,IACN,UAAA,EAAY,kBAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,wDAAA;AAAA,IACb,WAAA,EAAa,KAAA;AAAA,IACb,QAAA,EAAU;AAAA,MACR,EAAE,IAAI,SAAA,EAAW,KAAA,EAAO,WAAW,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAY;AAAE,KACnE;AAAA,IACA,aAAA,EAAe;AAAA,MACb;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF;AAEJ;AAEO,SAAS,aAAa,EAAA,EAAuC;AAClE,EAAA,OAAO,WAAW,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAC3C;AAEO,SAAS,YAAY,EAAA,EAAsC;AAChE,EAAA,OAAO,WAAW,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAC3C;AAEO,SAAS,wBAAwB,UAAA,EAA8C;AACpF,EAAA,OAAO,WAAW,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,eAAe,UAAU,CAAA;AAC7D;;;ACjmBA,IAAM,aAAA,GAAmD;AAAA,EACvD,MAAA,EAAQ,CAAC,oBAAoB,CAAA;AAAA,EAC7B,YAAA,EAAc,CAAC,eAAA,EAAiB,yBAAyB,CAAA;AAAA,EACzD,MAAA,EAAQ,CAAC,eAAA,EAAiB,0BAA0B,CAAA;AAAA,EACpD,MAAA,EAAQ,CAAC,eAAA,EAAiB,0BAA0B,CAAA;AAAA,EACpD,MAAA,EAAQ,CAAC,eAAA,EAAiB,0BAA0B,CAAA;AAAA,EACpD,YAAA,EAAc,CAAC,eAAA,EAAiB,0BAA0B;AAC5D,CAAA;AAKA,IAAM,gBAAA,GAA2C;AAAA,EAC/C,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,qBAAA;AAAA,EACN,IAAA,EAAM,iBAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAUO,SAAS,qBAAA,CACd,WACA,aAAA,EACQ;AACR,EAAA,MAAM,QAAkB,EAAC;AAGzB,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,SAAA,EAAY,SAAA,CAAU,UAAU,CAAA,iCAAA,CAAmC,CAAA;AAG9E,EAAA,IAAI,SAAA,CAAU,OAAO,QAAA,EAAU;AAC7B,IAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,IAAA,KAAA,CAAM,KAAK,mBAAmB,CAAA;AAC9B,IAAA,KAAA,CAAM,KAAK,6CAA6C,CAAA;AACxD,IAAA,KAAA,CAAM,KAAK,6CAA6C,CAAA;AACxD,IAAA,KAAA,CAAM,KAAK,6CAA6C,CAAA;AACxD,IAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,EACjB;AAEA,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AAGb,EAAA,MAAM,cAAwB,EAAC;AAG/B,EAAA,KAAA,MAAW,IAAA,IAAQ,UAAU,aAAA,EAAe;AAC1C,IAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,IAAA,CAAK,IAAI,KAAK,IAAA,CAAK,YAAA;AAC/C,IAAA,IAAI,KAAA,KAAU,KAAK,YAAA,EAAc;AAEjC,IAAA,WAAA,CAAY,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA,EAC/C;AAGA,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,SAAA,CAAU,EAAE,CAAA;AAC3C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,MAAA,WAAA,CAAY,KAAK,OAAO,CAAA;AAAA,IAC1B;AAAA,EACF;AAGA,EAAA,IAAI,SAAA,CAAU,OAAO,QAAA,EAAU;AAC7B,IAAA,WAAA,CAAY,KAAK,mBAAmB,CAAA;AAAA,EACtC;AAGA,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,SAAA,CAAU,EAAE,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,YAAY,MAAA,GAAS,CAAA;AACtC,EAAA,MAAM,MAAM,SAAA,CAAU,UAAA;AAEtB,EAAA,IAAI,SAAA,CAAU,eAAe,QAAA,EAAU;AACrC,IAAA,IAAI,QAAA,IAAY,WAAA,CAAY,MAAA,IAAU,CAAA,EAAG;AAEvC,MAAA,KAAA,CAAM,IAAA,CAAK,IAAI,GAAG,CAAA,CAAA,EAAI,YAAY,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAA;AAC9C,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAC1B,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,IACxB,WAAW,QAAA,EAAU;AAEnB,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACpB,MAAA,KAAA,MAAW,SAAS,WAAA,EAAa;AAC/B,QAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA;AAAA,MACzB;AACA,MAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AACd,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAC1B,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,IACxB,CAAA,MAAO;AACL,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG,CAAA;AACrB,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAC1B,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,IACxB;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,IAAI,QAAA,IAAY,WAAA,CAAY,MAAA,IAAU,CAAA,EAAG;AACvC,MAAA,KAAA,CAAM,IAAA,CAAK,IAAI,GAAG,CAAA,CAAA,EAAI,YAAY,IAAA,CAAK,GAAG,CAAC,CAAA,GAAA,CAAK,CAAA;AAAA,IAClD,WAAW,QAAA,EAAU;AACnB,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACpB,MAAA,KAAA,MAAW,SAAS,WAAA,EAAa;AAC/B,QAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA;AAAA,MACzB;AACA,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,EAAI,GAAG,CAAA,GAAA,CAAK,CAAA;AAAA,IACzB;AAAA,EACF;AAEA,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;AAEA,SAAS,UAAA,CAAW,MAAc,KAAA,EAAwB;AACxD,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAC1B;AACA,EAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC9B,IAAA,OAAO,KAAA,GAAQ,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,QAAA,CAAA;AAAA,EAC/B;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAC1B;AACA,EAAA,OAAO,GAAG,IAAI,CAAA,EAAA,EAAK,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAA,CAAA;AAC1C;;;AC9HO,IAAM,YAAA,GAA+C;AAAA,EAC1D;AAAA,IACE,EAAA,EAAI,YAAA;AAAA,IACJ,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,MAAA;AAAA,MAAQ,MAAA;AAAA,MAAQ,OAAA;AAAA,MAAS,YAAA;AAAA,MAAc,eAAA;AAAA,MACvC,cAAA;AAAA,MAAgB,gBAAA;AAAA,MAAkB,cAAA;AAAA,MAAgB,eAAA;AAAA,MAClD,aAAA;AAAA,MAAe,aAAA;AAAA,MAAe,YAAA;AAAA,MAAc,WAAA;AAAA,MAC5C,WAAA;AAAA,MAAa,YAAA;AAAA,MAAc,aAAA;AAAA,MAAe,aAAA;AAAA,MAC1C;AAAA;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,SAAA;AAAA,IACJ,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,QAAA;AAAA,MAAU,UAAA;AAAA,MAAY,MAAA;AAAA,MAAQ,KAAA;AAAA,MAAO,QAAA;AAAA,MACrC,QAAA;AAAA,MAAU,MAAA;AAAA,MAAQ,MAAA;AAAA,MAAQ,SAAA;AAAA,MAAW,MAAA;AAAA,MACrC,MAAA;AAAA,MAAQ,UAAA;AAAA,MAAY,QAAA;AAAA,MAAU,OAAA;AAAA,MAAS,OAAA;AAAA,MACvC,cAAA;AAAA,MAAgB,eAAA;AAAA,MAAiB,aAAA;AAAA,MAAe,QAAA;AAAA,MAChD,gBAAA;AAAA,MAAkB,MAAA;AAAA,MAAQ,MAAA;AAAA,MAAQ;AAAA;AACpC,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,eAAA;AAAA,IACJ,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,MAAA;AAAA,MAAQ,MAAA;AAAA,MAAQ,MAAA;AAAA,MAAQ,eAAA;AAAA,MAAiB,OAAA;AAAA,MACzC,MAAA;AAAA,MAAQ,OAAA;AAAA,MAAS,QAAA;AAAA,MAAU,iBAAA;AAAA,MAC3B,cAAA;AAAA,MAAgB,iBAAA;AAAA,MAAmB,SAAA;AAAA,MACnC,aAAA;AAAA,MAAe,KAAA;AAAA,MAAO;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,SAAA;AAAA,IACJ,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,YAAA;AAAA,MAAc,eAAA;AAAA,MAAiB,cAAA;AAAA,MAAgB,QAAA;AAAA,MAC/C,MAAA;AAAA,MAAQ,UAAA;AAAA,MAAY,MAAA;AAAA,MAAQ,UAAA;AAAA,MAC5B,UAAA;AAAA,MAAY,YAAA;AAAA,MAAc,UAAA;AAAA,MAAY,MAAA;AAAA,MACtC,UAAA;AAAA,MAAY,MAAA;AAAA,MAAQ,OAAA;AAAA,MAAS,aAAA;AAAA,MAC7B,YAAA;AAAA,MAAc;AAAA;AAChB,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,OAAA;AAAA,IACJ,KAAA,EAAO,OAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,YAAA;AAAA,MAAc,OAAA;AAAA,MAAS,MAAA;AAAA,MAAQ,WAAA;AAAA,MAAa,eAAA;AAAA,MAC5C,cAAA;AAAA,MAAgB,aAAA;AAAA,MAAe,QAAA;AAAA,MAAU,SAAA;AAAA,MACzC,QAAA;AAAA,MAAU,WAAA;AAAA,MAAa,YAAA;AAAA,MAAc,YAAA;AAAA,MACrC,OAAA;AAAA,MAAS,cAAA;AAAA,MAAgB,UAAA;AAAA,MAAY;AAAA;AACvC,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,QAAA;AAAA,MAAU,aAAA;AAAA,MAAe,mBAAA;AAAA,MAAqB,aAAA;AAAA,MAC9C,WAAA;AAAA,MAAa,aAAA;AAAA,MAAe,OAAA;AAAA,MAAS,cAAA;AAAA,MACrC,gBAAA;AAAA,MAAkB,WAAA;AAAA,MAAa,SAAA;AAAA,MAAW;AAAA;AAC5C,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,KAAA,EAAO,iBAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,QAAA;AAAA,MAAU,OAAA;AAAA,MAAS,YAAA;AAAA,MAAc,eAAA;AAAA,MACjC,QAAA;AAAA,MAAU,MAAA;AAAA,MAAQ,qBAAA;AAAA,MAAuB,wBAAA;AAAA,MACzC,QAAA;AAAA,MAAU,mBAAA;AAAA,MAAqB,cAAA;AAAA,MAAgB;AAAA;AACjD,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,KAAA,EAAO,iBAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,OAAA;AAAA,MAAS,SAAA;AAAA,MAAW,MAAA;AAAA,MAAQ,MAAA;AAAA,MAC5B,cAAA;AAAA,MAAgB,QAAA;AAAA,MAAU,cAAA;AAAA,MAC1B,wBAAA;AAAA,MAA0B,eAAA;AAAA,MAC1B,UAAA;AAAA,MAAY,QAAA;AAAA,MAAU,UAAA;AAAA,MACtB,MAAA;AAAA,MAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,eAAA;AAAA,MAAiB,UAAA;AAAA,MAAY,YAAA;AAAA,MAAc,OAAA;AAAA,MAC3C,UAAA;AAAA,MAAY,OAAA;AAAA,MAAS,YAAA;AAAA,MAAc,SAAA;AAAA,MACnC,SAAA;AAAA,MAAW,SAAA;AAAA,MAAW,QAAA;AAAA,MAAU,cAAA;AAAA,MAChC,MAAA;AAAA,MAAQ,WAAA;AAAA,MAAa,KAAA;AAAA,MAAO,WAAA;AAAA,MAAa;AAAA;AAC3C,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,KAAA,EAAO,qBAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,aAAA;AAAA,MAAe,eAAA;AAAA,MAAiB,mBAAA;AAAA,MAChC,sBAAA;AAAA,MAAwB,sBAAA;AAAA,MAAwB,cAAA;AAAA,MAChD,mBAAA;AAAA,MAAqB,qBAAA;AAAA,MAAuB,oBAAA;AAAA,MAC5C,OAAA;AAAA,MAAS,aAAA;AAAA,MAAe,MAAA;AAAA,MAAQ,SAAA;AAAA,MAChC,YAAA;AAAA,MAAc,OAAA;AAAA,MAAS;AAAA;AACzB;AAEJ","file":"index.cjs","sourcesContent":["/**\n * useFocusVisible — Keyboard-only focus detection hook.\n *\n * Tracks whether the user's last input was keyboard (Tab, arrows, etc.)\n * or pointer (mouse, touch). When an element receives focus after a\n * keyboard event, `isFocusVisible` is true — matching the browser's\n * native `:focus-visible` pseudo-class behavior.\n *\n * This is the same approach used by the `:focus-visible` polyfill.\n * On native platforms, the document listeners are skipped (guarded by\n * `typeof document`), and the hook returns false for `isFocusVisible`.\n *\n * @example\n * ```tsx\n * const { isFocusVisible, focusProps } = useFocusVisible();\n *\n * <Pressable {...focusProps} style={isFocusVisible ? focusRingStyle : undefined}>\n * <Text>Keyboard-focusable</Text>\n * </Pressable>\n * ```\n */\n\nimport { useState, useEffect, useCallback } from 'react';\n\n// ── Module-level input modality tracking ────────────────────────\n// Shared across all hook instances — a single set of document listeners\n// tracks whether the most recent user input was keyboard or pointer.\n\nlet hadKeyboardEvent = false;\nlet isListenerSetup = false;\n\n/**\n * Attach document-level listeners once. Keyboard events (Tab, arrows,\n * Enter, Space, Escape) set the flag; pointer/mouse events clear it.\n * Capture phase ensures we see the event before any component handler.\n */\nfunction setupModality() {\n // Guard: skip on native platforms and during SSR (no document).\n if (isListenerSetup || typeof document === 'undefined') return;\n isListenerSetup = true;\n\n // Keyboard navigation keys that should trigger focus-visible.\n // We don't flag every keydown (e.g. typing in a TextInput shouldn't\n // make the next focused element show a ring).\n const NAVIGATION_KEYS = new Set([\n 'Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight',\n 'Enter', ' ', 'Escape',\n ]);\n\n document.addEventListener('keydown', (e) => {\n if (NAVIGATION_KEYS.has(e.key)) {\n hadKeyboardEvent = true;\n }\n }, true);\n\n // Any pointer activity means the user is using a mouse/touch,\n // so the next focus should NOT show a visible ring.\n document.addEventListener('pointerdown', () => {\n hadKeyboardEvent = false;\n }, true);\n\n // Fallback for environments without PointerEvent (older browsers).\n document.addEventListener('mousedown', () => {\n hadKeyboardEvent = false;\n }, true);\n}\n\n// ── Hook ────────────────────────────────────────────────────────\n\nexport interface FocusVisibleResult {\n /** True when the element is focused AND focus was keyboard-initiated. */\n readonly isFocusVisible: boolean;\n /** Spread these onto the interactive element (web-only, ignored on native). */\n readonly focusProps: Record<string, unknown>;\n}\n\nexport function useFocusVisible(): FocusVisibleResult {\n const [isFocusVisible, setIsFocusVisible] = useState(false);\n\n // Set up document-level modality tracking on first render.\n useEffect(() => {\n setupModality();\n }, []);\n\n // On focus: show ring only if the last input was keyboard.\n const onFocus = useCallback(() => {\n if (hadKeyboardEvent) {\n setIsFocusVisible(true);\n }\n }, []);\n\n // On blur: always hide the ring.\n const onBlur = useCallback(() => {\n setIsFocusVisible(false);\n }, []);\n\n // Return props as a spreadable object. These are web-only event handlers\n // supported by react-native-web — silently ignored on native.\n const focusProps = { onFocus, onBlur } as Record<string, unknown>; // web-only\n\n return { isFocusVisible, focusProps };\n}\n","import type { ViewStyle } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\nimport type {\n SpacingValue,\n SpacingAxes,\n SpacingSides,\n PaddingProp,\n GapProp,\n RadiusValue,\n RadiusProp,\n SizingMode,\n Direction,\n Alignment,\n Justification,\n} from './Frame.types';\n\n// ── Spacing ──────────────────────────────────────────────────────\n// These functions convert spacing props (token names like 'md' or pixel numbers)\n// into actual pixel values that React Native can use for padding and gap.\n\n/** Convert a spacing token name (like 'md') or raw number into pixels. */\nexport function resolveSpacing(\n value: SpacingValue,\n tokens: ResolvedTokens,\n): number {\n // If already a number, use it directly as pixels.\n if (typeof value === 'number') return value;\n // Otherwise look up the token name in the theme's spacing scale.\n return tokens.spacing[value];\n}\n\n/** Convert a padding prop into pixel values for all four sides. */\nexport function resolvePadding(\n prop: PaddingProp,\n tokens: ResolvedTokens,\n): { readonly top: number; readonly right: number; readonly bottom: number; readonly left: number } {\n // Uniform: same padding on all sides (e.g. padding=\"md\" or padding={16}).\n if (typeof prop === 'string' || typeof prop === 'number') {\n const px = resolveSpacing(prop, tokens);\n return { top: px, right: px, bottom: px, left: px };\n }\n\n // Axis shorthand: separate horizontal (x) and vertical (y) padding.\n // Example: padding={{ x: 'lg', y: 'sm' }}\n if ('x' in prop || 'y' in prop) {\n const axes = prop as SpacingAxes;\n const x = axes.x !== undefined ? resolveSpacing(axes.x, tokens) : 0;\n const y = axes.y !== undefined ? resolveSpacing(axes.y, tokens) : 0;\n return { top: y, right: x, bottom: y, left: x };\n }\n\n // Per-side: different padding on each side.\n // Example: padding={{ top: 8, bottom: 16, left: 'md', right: 'md' }}\n const sides = prop as SpacingSides;\n return {\n top: sides.top !== undefined ? resolveSpacing(sides.top, tokens) : 0,\n right: sides.right !== undefined ? resolveSpacing(sides.right, tokens) : 0,\n bottom: sides.bottom !== undefined ? resolveSpacing(sides.bottom, tokens) : 0,\n left: sides.left !== undefined ? resolveSpacing(sides.left, tokens) : 0,\n };\n}\n\n/** Convert a gap prop into row and column gap pixel values. */\nexport function resolveGap(\n prop: GapProp,\n tokens: ResolvedTokens,\n): { readonly rowGap: number; readonly columnGap: number } {\n // Uniform: same gap in both directions (e.g. gap=\"md\" or gap={12}).\n if (typeof prop === 'string' || typeof prop === 'number') {\n const px = resolveSpacing(prop, tokens);\n return { rowGap: px, columnGap: px };\n }\n\n // Per-axis: different gap for rows vs columns.\n // Example: gap={{ row: 'sm', column: 'lg' }}\n return {\n rowGap: prop.row !== undefined ? resolveSpacing(prop.row, tokens) : 0,\n columnGap: prop.column !== undefined ? resolveSpacing(prop.column, tokens) : 0,\n };\n}\n\n// ── Radius ───────────────────────────────────────────────────────\n// These functions convert radius props (token names like 'lg' or pixel numbers)\n// into actual pixel values for rounding corners.\n\n/** Convert a radius token name (like 'lg') or raw number into pixels. */\nexport function resolveRadius(\n value: RadiusValue,\n tokens: ResolvedTokens,\n): number {\n if (typeof value === 'number') return value;\n return tokens.radius[value];\n}\n\n/** Pixel values for each corner of a rounded rectangle. */\nexport interface ResolvedCorners {\n readonly topLeft: number;\n readonly topRight: number;\n readonly bottomLeft: number;\n readonly bottomRight: number;\n}\n\n/** Convert a radius prop into pixel values for all four corners. */\nexport function resolveRadiusCorners(\n prop: RadiusProp,\n tokens: ResolvedTokens,\n): ResolvedCorners {\n // Uniform: same radius on all corners (e.g. radius=\"lg\" or radius={8}).\n if (typeof prop === 'string' || typeof prop === 'number') {\n const px = resolveRadius(prop, tokens);\n return { topLeft: px, topRight: px, bottomLeft: px, bottomRight: px };\n }\n\n // Per-corner: different radius on each corner.\n // Example: radius={{ topLeft: 'lg', topRight: 'lg', bottomLeft: 0, bottomRight: 0 }}\n return {\n topLeft: prop.topLeft !== undefined ? resolveRadius(prop.topLeft, tokens) : 0,\n topRight: prop.topRight !== undefined ? resolveRadius(prop.topRight, tokens) : 0,\n bottomLeft: prop.bottomLeft !== undefined ? resolveRadius(prop.bottomLeft, tokens) : 0,\n bottomRight: prop.bottomRight !== undefined ? resolveRadius(prop.bottomRight, tokens) : 0,\n };\n}\n\n/** Check if any corner is rounded (used to decide whether to clip overflowing content). */\nexport function hasPositiveRadius(corners: ResolvedCorners): boolean {\n return corners.topLeft > 0\n || corners.topRight > 0\n || corners.bottomLeft > 0\n || corners.bottomRight > 0;\n}\n\n// ── Sizing ───────────────────────────────────────────────────────\n// Converts Figma-like sizing modes into React Native style properties.\n\n/** Convert width/height sizing modes to style properties. */\nexport function resolveSizing(\n width: SizingMode | undefined,\n height: SizingMode | undefined,\n): ViewStyle {\n const style: Record<string, unknown> = {};\n\n if (width !== undefined) {\n if (width === 'fill') {\n // 'fill' = expand to take all available space in the parent.\n // flexGrow tells the layout engine to give this element extra space.\n // width: 100% ensures it spans the full width.\n style.flexGrow = 1;\n style.width = '100%';\n } else if (typeof width === 'number') {\n // Fixed pixel width (e.g. 300).\n style.width = width;\n }\n // 'hug' = shrink to fit the content (React Native's default behavior).\n }\n\n if (height !== undefined) {\n if (height === 'fill') {\n // Same as width 'fill' — expand to fill all available vertical space.\n style.flexGrow = 1;\n style.height = '100%';\n } else if (typeof height === 'number') {\n // Fixed pixel height (e.g. 200).\n style.height = height;\n }\n // 'hug' = shrink to fit the content (React Native's default behavior).\n }\n\n return style as ViewStyle;\n}\n\n// ── Layout ───────────────────────────────────────────────────────\n// These functions convert our friendly prop names (like 'start', 'between')\n// into the actual CSS flexbox values that React Native uses internally.\n\n// Maps our alignment names to flexbox cross-axis values:\n// 'start' → push children to the top/left edge\n// 'center' → center children in the cross direction\n// 'end' → push children to the bottom/right edge\n// 'stretch' → stretch children to fill the cross dimension\n// 'baseline' → align children by their text baseline\nconst ALIGN_MAP: Record<Alignment, ViewStyle['alignItems']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\n// Maps our justification names to flexbox main-axis values:\n// 'start' → pack children at the beginning\n// 'center' → pack children in the middle\n// 'end' → pack children at the end\n// 'between' → spread children with equal space between them\n// 'around' → spread children with equal space around each\n// 'evenly' → spread children with equal space everywhere\nconst JUSTIFY_MAP: Record<Justification, ViewStyle['justifyContent']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\n/** Convert our alignment name to the flexbox value React Native expects. */\nexport function resolveAlignment(align: Alignment): ViewStyle['alignItems'] {\n return ALIGN_MAP[align];\n}\n\n/** Convert our justification name to the flexbox value React Native expects. */\nexport function resolveJustification(justify: Justification): ViewStyle['justifyContent'] {\n return JUSTIFY_MAP[justify];\n}\n\n/** Convert direction ('horizontal'/'vertical') + reverse flag to flexbox direction. */\nexport function resolveFlexDirection(\n direction: Direction,\n reverse: boolean,\n): ViewStyle['flexDirection'] {\n // 'horizontal' → children in a row, 'vertical' → children in a column.\n if (direction === 'horizontal') {\n return reverse ? 'row-reverse' : 'row';\n }\n return reverse ? 'column-reverse' : 'column';\n}\n","import type { ViewStyle } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens } from 'newtone-api';\nimport type { FrameElevation, ThemeName, AppearanceName } from 'newtone-api';\nimport type {\n PaddingProp,\n GapProp,\n SizingMode,\n Direction,\n Alignment,\n Justification,\n RadiusProp,\n LayoutMode,\n PositionType,\n OffsetValue,\n OverflowMode,\n} from './Frame.types';\nimport {\n resolvePadding,\n resolveGap,\n resolveSizing,\n resolveFlexDirection,\n resolveAlignment,\n resolveJustification,\n resolveRadiusCorners,\n hasPositiveRadius,\n} from './Frame.utils';\n\n// ── Input ────────────────────────────────────────────────────────\n\nexport interface FrameStyleInput {\n readonly tokens: ResolvedTokens;\n readonly frameElevation: FrameElevation;\n\n // Theme / Appearance\n readonly theme?: ThemeName;\n readonly appearance?: AppearanceName;\n\n // Layout\n readonly layout?: LayoutMode;\n readonly direction?: Direction;\n readonly wrap?: boolean;\n readonly reverse?: boolean;\n readonly columns?: number;\n readonly rows?: number;\n\n // Alignment\n readonly align?: Alignment;\n readonly justify?: Justification;\n\n // Spacing\n readonly padding?: PaddingProp;\n readonly gap?: GapProp;\n\n // Sizing\n readonly width?: SizingMode;\n readonly height?: SizingMode;\n readonly minWidth?: number;\n readonly maxWidth?: number;\n readonly minHeight?: number;\n readonly maxHeight?: number;\n\n // Positioning\n readonly position?: PositionType;\n readonly top?: OffsetValue;\n readonly right?: OffsetValue;\n readonly bottom?: OffsetValue;\n readonly left?: OffsetValue;\n readonly zIndex?: number;\n readonly overflow?: OverflowMode;\n\n // Appearance\n readonly radius?: RadiusProp;\n}\n\n// ── Output ───────────────────────────────────────────────────────\n\nexport interface FrameStyles {\n /** Main container style (ViewStyle) */\n readonly container: ViewStyle;\n /** Web-only CSS Grid properties (cast to ViewStyle at render) */\n readonly gridWebStyle: React.CSSProperties | null;\n /** Web-only inset box-shadow string for elevation -2 */\n readonly insetBoxShadow: string | null;\n}\n\n// ── Builder ──────────────────────────────────────────────────────\n\n/**\n * Build all visual styles for a Frame.\n *\n * Takes the Frame's props + design tokens and produces:\n * - container: the main style (background, layout, spacing, border, shadow, etc.)\n * - gridWebStyle: CSS Grid properties (only works on web, null otherwise)\n * - insetBoxShadow: inner shadow CSS string for sunken frames (web-only)\n */\nexport function getFrameStyles(input: FrameStyleInput): FrameStyles {\n const {\n tokens,\n frameElevation,\n theme = 'primary',\n appearance = 'main',\n layout = 'flex',\n direction = 'vertical',\n wrap = false,\n reverse = false,\n columns,\n rows,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n radius,\n } = input;\n\n // We build styles as a plain object first, then validate it through\n // StyleSheet.create() at the end. Using Record<string, unknown> lets us\n // set properties conditionally without TypeScript complaining.\n const container: Record<string, unknown> = {};\n\n // ── Background & foreground ──\n // Resolve the appearance tokens for the selected theme + appearance.\n const appearanceTokens: AppearanceTokens = tokens.colors[theme][appearance];\n\n // Set the surface color and default text color from the resolved appearance.\n container.backgroundColor = appearanceTokens.background;\n container.color = appearanceTokens.fontPrimary;\n\n // ── Layout mode ──\n if (layout === 'flex') {\n // Standard flex layout: children arranged in a row or column.\n container.display = 'flex';\n container.flexDirection = resolveFlexDirection(direction, reverse);\n if (wrap) container.flexWrap = 'wrap';\n }\n if (layout === 'grid') {\n // Grid layout: uses CSS Grid on web, but React Native doesn't support grid.\n // So we set flex as a fallback (wrapping row) for native platforms.\n // The actual CSS Grid styles are applied separately via gridWebStyle below.\n container.display = 'flex';\n container.flexDirection = 'row';\n container.flexWrap = 'wrap';\n }\n\n // ── Alignment ──\n // Cross-axis: how children are positioned perpendicular to the main direction.\n if (align) container.alignItems = resolveAlignment(align);\n // Main-axis: how children are distributed along the main direction.\n if (justify) container.justifyContent = resolveJustification(justify);\n\n // ── Padding ──\n // Convert spacing tokens (like 'md') or pixel values into actual padding.\n if (padding !== undefined) {\n const p = resolvePadding(padding, tokens);\n container.paddingTop = p.top;\n container.paddingRight = p.right;\n container.paddingBottom = p.bottom;\n container.paddingLeft = p.left;\n }\n\n // ── Gap ──\n // Space between children (row gap for vertical stacks, column gap for horizontal).\n if (gap !== undefined) {\n const g = resolveGap(gap, tokens);\n container.rowGap = g.rowGap;\n container.columnGap = g.columnGap;\n }\n\n // ── Sizing ──\n // Apply width/height settings: 'hug' (shrink), 'fill' (expand), or fixed pixels.\n const sizing = resolveSizing(width, height);\n Object.assign(container, sizing);\n\n // ── Constraints ──\n // Set min/max boundaries for width and height.\n if (minWidth !== undefined) container.minWidth = minWidth;\n if (maxWidth !== undefined) container.maxWidth = maxWidth;\n if (minHeight !== undefined) container.minHeight = minHeight;\n if (maxHeight !== undefined) container.maxHeight = maxHeight;\n\n // ── Positioning ──\n // Set CSS position mode and offsets for absolute/fixed/sticky positioning.\n if (position) container.position = position;\n if (top !== undefined) container.top = top;\n if (right !== undefined) container.right = right;\n if (bottom !== undefined) container.bottom = bottom;\n if (left !== undefined) container.left = left;\n if (zIndex !== undefined) container.zIndex = zIndex;\n\n // ── Radius ──\n // Round the corners of the Frame (e.g. for cards, buttons, pills).\n if (radius !== undefined) {\n const corners = resolveRadiusCorners(radius, tokens);\n container.borderTopLeftRadius = corners.topLeft;\n container.borderTopRightRadius = corners.topRight;\n container.borderBottomLeftRadius = corners.bottomLeft;\n container.borderBottomRightRadius = corners.bottomRight;\n\n // Clip overflowing content when corners are rounded,\n // otherwise children would visually leak outside the rounded edges.\n if (hasPositiveRadius(corners)) {\n container.overflow = 'hidden';\n }\n }\n\n // ── Overflow ──\n // Explicit overflow prop overrides the auto-overflow from radius.\n if (overflow) container.overflow = overflow;\n\n // ── Outer shadow (elevation 2) ──\n // Add a subtle drop shadow to make the Frame look raised above the surface.\n // These are React Native shadow properties — react-native-web converts them\n // to CSS box-shadow automatically.\n if (frameElevation === 2) {\n container.shadowColor = '#000';\n container.shadowOffset = { width: 0, height: 2 };\n container.shadowOpacity = 0.12;\n container.shadowRadius = 6;\n container.elevation = 4; // Android-specific shadow depth\n }\n\n // ── Grid web style (web-only) ──\n // CSS Grid only works in web browsers. On native platforms this stays null,\n // and the flex fallback (set above) handles the layout instead.\n let gridWebStyle: React.CSSProperties | null = null;\n if (layout === 'grid') {\n gridWebStyle = {\n display: 'grid' as const,\n // Divide into equal-width columns (e.g. 3 columns → \"repeat(3, 1fr)\").\n gridTemplateColumns: columns ? `repeat(${columns}, 1fr)` : undefined,\n gridTemplateRows: rows ? `repeat(${rows}, 1fr)` : undefined,\n };\n }\n\n // ── Inset shadow (elevation -2, web-only) ──\n // Creates an inner shadow effect to make the Frame look sunken/recessed.\n // Only used for the deepest sunken level (-2).\n const insetBoxShadow = frameElevation === -2\n ? 'inset 0 2px 4px rgba(0,0,0,0.12)'\n : null;\n\n return {\n // Validate and optimize the container styles through StyleSheet.create(),\n // then extract the single style object with `.c`.\n container: StyleSheet.create({ c: container as ViewStyle }).c,\n gridWebStyle,\n insetBoxShadow,\n };\n}\n","import React, { useMemo } from 'react';\nimport { View, Text } from 'react-native';\nimport type { ViewStyle, TextStyle } from 'react-native';\nimport type { FrameProps } from './Frame.types';\nimport type { ElevationLevel, FrameElevation, ElevationName, ThemeName, AppearanceName } from 'newtone-api';\nimport { FrameContext, useFrameContext } from 'newtone-api';\nimport { useNewtoneTheme, _ThemeContext } from 'newtone-api';\nimport { computeTokens } from 'newtone-api';\nimport { getFrameStyles } from './Frame.styles';\n\n\n/**\n * Wrap raw string/number children in <Text> so they display correctly.\n */\nfunction wrapTextChildren(\n children: React.ReactNode,\n textStyle: TextStyle,\n): React.ReactNode {\n return React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Text style={textStyle}>{child}</Text>;\n }\n return child;\n });\n}\n\n/** Map numeric elevation levels to named elevations for the swatches layer. */\nconst ELEVATION_MAP: Record<ElevationLevel, ElevationName> = {\n 0: 'sunken',\n 1: 'grounded',\n 2: 'elevated',\n};\n\n/**\n * Convert user-facing FrameElevation (-2..2) to internal ElevationLevel (0..2).\n */\nfunction toElevationLevel(frameElevation: FrameElevation): ElevationLevel {\n if (frameElevation <= -1) return 0;\n if (frameElevation === 0) return 1;\n return 2;\n}\n\n/**\n * Frame — Foundational layout building block.\n *\n * Frame is a container that provides theme and elevation context to all\n * descendants, plus layout (flex/grid), spacing, sizing, appearance,\n * and interactivity capabilities.\n *\n * Frames can be nested. Inner frames override outer frames for their subtree.\n */\nexport function Frame({\n children,\n // Elevation\n elevation,\n // Scheme\n scheme,\n // Theme / Appearance\n theme,\n appearance,\n // Layout\n layout,\n direction,\n wrap,\n reverse,\n columns,\n rows,\n // Alignment\n align,\n justify,\n // Spacing\n padding,\n gap,\n // Sizing\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n // Positioning\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n pointerEvents,\n // Appearance\n radius,\n // Accessibility\n accessibilityLabel,\n accessibilityHint,\n // Testing & platform\n testID,\n nativeID,\n ref,\n // Style override\n style,\n}: FrameProps) {\n const themeCtx = useNewtoneTheme();\n const { mode, gamut } = themeCtx;\n const parentFrameCtx = useFrameContext();\n\n // Resolve which config to use: explicit scheme > inherited from parent > default.\n const resolvedConfig = useMemo(() => {\n if (scheme && themeCtx.schemes) {\n const schemeConfig = themeCtx.schemes[scheme];\n if (schemeConfig) return schemeConfig;\n }\n return themeCtx.config;\n }, [scheme, themeCtx.schemes, themeCtx.config]);\n\n // Track whether this Frame switches the scheme (needs theme context override).\n const isSchemeOverride = resolvedConfig !== themeCtx.config;\n\n // Resolve theme/appearance: explicit prop > parent Frame > defaults.\n const resolvedTheme: ThemeName = theme ?? parentFrameCtx?.theme ?? 'primary';\n const resolvedAppearance: AppearanceName = appearance ?? parentFrameCtx?.appearance ?? 'main';\n\n const resolvedFrameElevation: FrameElevation = elevation ?? 0;\n\n const resolvedElevation: ElevationLevel = elevation !== undefined\n ? toElevationLevel(elevation)\n : parentFrameCtx?.elevation ?? 1;\n\n // Compute tokens with gamut pre-applied (no [gamut] indexing needed downstream).\n const tokens = useMemo(() => {\n return computeTokens(\n resolvedConfig.colorSystem,\n mode,\n gamut,\n ELEVATION_MAP[resolvedElevation],\n resolvedConfig.spacing,\n resolvedConfig.radius,\n resolvedConfig.typography,\n resolvedConfig.icons,\n resolvedConfig.themeMappings,\n resolvedConfig.swatchDefaults,\n resolvedConfig.relativeSwatchDefaults,\n );\n }, [resolvedConfig, mode, gamut, resolvedElevation]);\n\n const styles = useMemo(\n () => getFrameStyles({\n tokens,\n frameElevation: resolvedFrameElevation,\n theme: resolvedTheme,\n appearance: resolvedAppearance,\n layout,\n direction,\n wrap,\n reverse,\n columns,\n rows,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n radius,\n }),\n [\n tokens, resolvedFrameElevation, resolvedTheme, resolvedAppearance,\n layout, direction, wrap, reverse, columns, rows,\n align, justify, padding, gap,\n width, height, minWidth, maxWidth, minHeight, maxHeight,\n position, top, right, bottom, left, zIndex, overflow,\n radius,\n ],\n );\n\n // Resolved scheme name: explicit prop > inherited from parent Frame.\n const resolvedScheme = scheme ?? parentFrameCtx?.scheme;\n\n const contextValue = useMemo(\n () => ({\n elevation: resolvedElevation,\n tokens,\n scheme: resolvedScheme,\n theme: resolvedTheme,\n appearance: resolvedAppearance,\n }),\n [resolvedElevation, tokens, resolvedScheme, resolvedTheme, resolvedAppearance],\n );\n\n // When this Frame switches the scheme, override ThemeContext so that\n // useNewtoneTheme().config returns the scheme's config for descendants.\n const schemeThemeCtx = useMemo(() => {\n if (!isSchemeOverride) return null;\n return {\n ...themeCtx,\n config: resolvedConfig,\n activeScheme: scheme ?? themeCtx.activeScheme,\n };\n }, [isSchemeOverride, themeCtx, resolvedConfig, scheme]);\n\n const webOverrides: ViewStyle[] = [];\n if (styles.gridWebStyle) {\n webOverrides.push(styles.gridWebStyle as unknown as ViewStyle);\n }\n if (styles.insetBoxShadow) {\n webOverrides.push({ boxShadow: styles.insetBoxShadow } as unknown as ViewStyle);\n }\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n const textStyle = useMemo<TextStyle>(\n () => ({\n color: tokens.colors[resolvedTheme][resolvedAppearance].fontPrimary,\n fontSize: tokens.typography.fontSizes['05'],\n fontFamily: tokens.typography.fonts.main.family,\n lineHeight: tokens.typography.lineHeights['06'],\n }),\n [tokens, resolvedTheme, resolvedAppearance],\n );\n const wrappedChildren = useMemo(\n () => wrapTextChildren(children, textStyle),\n [children, textStyle],\n );\n\n const content = (\n <View\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n pointerEvents={pointerEvents}\n accessibilityLabel={accessibilityLabel}\n accessibilityHint={accessibilityHint}\n style={[styles.container, ...webOverrides, ...userStyles]}\n >\n {wrappedChildren}\n </View>\n );\n\n const wrappedContent = schemeThemeCtx ? (\n <_ThemeContext.Provider value={schemeThemeCtx}>\n {content}\n </_ThemeContext.Provider>\n ) : content;\n\n return (\n <FrameContext.Provider value={contextValue}>\n {wrappedContent}\n </FrameContext.Provider>\n );\n}\n","import React, { useMemo } from 'react';\nimport { Text, type TextStyle } from 'react-native';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport type { IconProps } from './Icon.types';\n\n/**\n * Material Symbols icon component with variable font support.\n *\n * Uses global icon configuration (variant, weight, auto-grade) from theme config,\n * with per-instance control over size, fill, and color.\n *\n * @example\n * ```tsx\n * <Icon name=\"home\" />\n * <Icon name=\"settings\" size={24} fill={1} />\n * <Icon name=\"check\" color=\"#00ff00\" />\n * ```\n */\nexport function Icon({\n name = 'add',\n size = 24,\n opticalSize,\n fill = 0,\n color,\n style,\n // Accessibility\n accessibilityLabel,\n // Testing & platform\n testID,\n nativeID,\n ref,\n}: IconProps) {\n // Inherit tokens from nearest parent Frame via FrameContext.\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n const resolvedTheme = frameCtx?.theme ?? 'primary';\n const resolvedAppearance = frameCtx?.appearance ?? 'main';\n\n // Build the icon's style from the theme tokens and props.\n // Wrapped in useMemo so it only recalculates when the inputs change,\n // instead of rebuilding the style object on every render.\n const iconStyle = useMemo<TextStyle>(() => {\n // Use the provided size, or fall back to the theme's default text size.\n const fontSize = size ?? tokens.typography.fontSizes['05'];\n\n // Round to nearest Material Symbols optical size (20, 24, 40, 48)\n // for optimal stroke weight and detail rendering.\n const getOpticalSize = (size: number): number => {\n if (size <= 22) return 20;\n if (size <= 32) return 24;\n if (size <= 44) return 40;\n return 48;\n };\n\n // Optical size adjusts stroke weight for readability at small sizes.\n // Use explicit opticalSize if provided, otherwise auto-calculate from fontSize.\n const opsz = opticalSize ?? getOpticalSize(fontSize);\n\n // Use the provided color, or fall back to the inherited theme/appearance text color.\n const iconColor = color ?? tokens.colors[resolvedTheme][resolvedAppearance].fontPrimary;\n\n // Build the font family name from the theme's icon variant setting.\n // Example: variant 'rounded' → 'Material Symbols Rounded'\n // The charAt(0).toUpperCase() + slice(1) capitalizes the first letter.\n const fontFamily = `Material Symbols ${tokens.icons.variant.charAt(0).toUpperCase() + tokens.icons.variant.slice(1)}`;\n\n // Material Symbols is a variable font with 4 adjustable axes:\n // FILL: 0 = outlined (hollow), 1 = filled (solid)\n // wght: font weight (thinner or bolder strokes)\n // GRAD: grade (fine-tune weight without changing overall size)\n // opsz: optical size (adjusts detail level for the display size)\n const fillValue = typeof fill === 'boolean' ? (fill ? 1 : 0) : fill;\n const fontVariationSettings = `'FILL' ${fillValue}, 'wght' ${tokens.icons.weight}, 'GRAD' ${tokens.icons.grade}, 'opsz' ${opsz}`;\n\n return {\n fontFamily,\n fontSize,\n width: fontSize, // Explicit width ensures square rendering\n height: fontSize, // Explicit height ensures square rendering\n lineHeight: fontSize, // Prevent text line-height from affecting total height\n color: iconColor,\n userSelect: 'none', // web-only: prevents users from selecting the icon as text\n fontVariationSettings, // web-only: controls the variable font axes listed above\n ...style,\n } as TextStyle; // Cast needed because web-only properties aren't in RN's type definitions\n }, [tokens, size, opticalSize, fill, color, style, resolvedTheme, resolvedAppearance]);\n\n // Material Symbols renders icons as text ligatures — the icon name (like \"home\")\n // is passed as text content, and the font renders it as the icon glyph.\n return (\n <Text\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n accessibilityLabel={accessibilityLabel}\n // When no label is provided, the icon is decorative — hide it from screen readers\n // so assistive technology doesn't try to read the ligature text (e.g. \"home\").\n importantForAccessibility={accessibilityLabel ? 'yes' : 'no-hide-descendants'}\n style={iconStyle}\n >\n {name}\n </Text>\n );\n}\n","import React, { createContext, useMemo, useState, useEffect } from 'react';\nimport { Text as RNText, View } from 'react-native';\nimport type { LayoutChangeEvent, TextStyle } from 'react-native';\nimport { resolveResponsiveSize, estimateLineWidths, BREAKPOINT_ROLE_SCALE, scaleRoleStep, REFERENCE_LINE_HEIGHT_RATIO, buildFontFeatureSettings, SEMANTIC_WEIGHT_MAP, ROLE_DEFAULT_WEIGHTS } from '@newtonedev/fonts';\nimport { useTokens } from 'newtone-api';\nimport { useNewtoneTheme } from 'newtone-api';\nimport { useFrameContext } from 'newtone-api';\nimport type { UseTokensResult } from 'newtone-api';\nimport type { ThemeName, AppearanceName } from 'newtone-api';\nimport type { TextProps, TextColor, TextRole } from './Text.types';\nimport { useLocalCalibration } from 'newtone-api';\nimport { useTypographyCalibrations } from 'newtone-api';\nimport { enqueueObservation } from 'newtone-api';\nimport { useBreakpoint } from 'newtone-api';\n\n/**\n * Context to pass the active scope's weight map to span sub-components.\n * Spans inherit font family from the parent RN Text, but need the scope's\n * weight mapping to resolve semantic weight tokens (regular/medium/bold)\n * to numeric CSS values.\n */\nexport const TextScopeContext = createContext<{\n readonly weights: { readonly regular: number; readonly medium: number; readonly bold: number };\n} | null>(null);\n\n/** Roles considered \"large text\" — accent uses accentLarge (lighter). */\nconst LARGE_TEXT_ROLES = new Set<TextRole>(['headline', 'title', 'heading', 'subheading']);\n\n/**\n * Resolve a semantic text color to a hex string from the current tokens.\n * Neutral colors use the inherited theme/appearance from the nearest Frame.\n * Accent uses accentLarge (large text) or accentSmall (small text) from the inherited theme/appearance.\n */\nexport function resolveTextColor(\n color: TextColor,\n tokens: UseTokensResult,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n role: TextRole = 'body',\n): string {\n switch (color) {\n case 'primary': return tokens.colors[theme][appearance].fontPrimary;\n case 'secondary': return tokens.colors[theme][appearance].fontSecondary;\n case 'tertiary': return tokens.colors[theme][appearance].fontTertiary;\n case 'accent': return tokens.colors[theme][appearance][LARGE_TEXT_ROLES.has(role) ? 'accentLarge' : 'accentSmall'];\n case 'disabled': return tokens.colors[theme][appearance].fontDisabled;\n }\n}\n\n/** Adaptive roles that support responsive font sizing. */\nconst ADAPTIVE_ROLES = new Set(['headline', 'title', 'heading', 'subheading']);\n\n/** Maps heading-like roles to HTML heading levels for semantic rendering on web. */\nconst ROLE_HEADING_LEVEL: Readonly<Record<string, number>> = {\n headline: 1,\n title: 2,\n heading: 3,\n};\n\n/** Estimate total character count from potentially nested React children. */\nfunction extractCharacterCount(node: React.ReactNode): number {\n if (typeof node === 'string') return node.length;\n if (typeof node === 'number') return String(node).length;\n if (!node) return 0;\n if (Array.isArray(node)) {\n return node.reduce((sum: number, child) => sum + extractCharacterCount(child), 0);\n }\n if (typeof node === 'object' && 'props' in node) {\n return extractCharacterCount((node as React.ReactElement).props?.children);\n }\n return 0;\n}\n\n/**\n * Token-aware text primitive with semantic scope + role API.\n *\n * - `scope` selects the font family (main, display, mono, currency)\n * - `role` sets default weight; fontSize and lineHeight resolved from config's role mapping\n * - `size` selects within the role's 3-step scale (sm, md, lg)\n * - `responsive` enables container-width-aware font sizing for adaptive roles\n *\n * @example\n * ```tsx\n * <Text>Body text (default)</Text>\n * <Text role=\"headline\" scope=\"display\">Hero title</Text>\n * <Text role=\"label\">Form label</Text>\n * <Text scope=\"mono\" role=\"caption\">const x = 42;</Text>\n * <Text role=\"body\">Regular <Text.Bold>bold</Text.Bold> text</Text>\n * <Text role=\"headline\" responsive>Responsive headline</Text>\n * ```\n */\nfunction TextBase({\n children,\n scope = 'main',\n role = 'body',\n color = 'primary',\n size: sizeOverride,\n weight: weightOverride,\n align,\n numberOfLines,\n elevation,\n style,\n accessibilityRole: accessibilityRoleOverride,\n testID,\n nativeID,\n ref,\n responsive = false,\n centerVertically = false,\n features,\n}: TextProps) {\n const tokens = useTokens(elevation);\n const { config, reportingEndpoint } = useNewtoneTheme();\n const frameCtx = useFrameContext();\n const resolvedTheme: ThemeName = frameCtx?.theme ?? 'primary';\n const resolvedAppearance: AppearanceName = frameCtx?.appearance ?? 'main';\n\n const size = sizeOverride ?? 'md';\n const fontSlot = tokens.typography.fonts[scope];\n // roleWeights from config (user-customized), falling back to canonical defaults\n const resolvedFontWeight = weightOverride\n ? SEMANTIC_WEIGHT_MAP[weightOverride]\n : (config.typography.roleWeights?.[role] ?? ROLE_DEFAULT_WEIGHTS[role]);\n\n // --- Breakpoint-aware step ---\n const breakpoint = useBreakpoint();\n const baseStep = config.typography.roles[role][size];\n const bpScale = BREAKPOINT_ROLE_SCALE[breakpoint][role];\n const step = bpScale === 1.0 ? baseStep : scaleRoleStep(baseStep, bpScale);\n\n // --- Responsive sizing (Layer 2 calibration) ---\n // Hooks are called unconditionally; results are used only when `responsive && isAdaptive`.\n const calibrations = useTypographyCalibrations();\n const fontSlotFull = config.typography.fonts[scope]; // FontSlot with config.fallback\n const localRatio = useLocalCalibration(\n fontSlot.family,\n SEMANTIC_WEIGHT_MAP.regular,\n fontSlotFull.config.fallback,\n calibrations[fontSlot.family],\n );\n\n const isAdaptive = ADAPTIVE_ROLES.has(role);\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n const characterCount = useMemo(() => extractCharacterCount(children), [children]);\n\n const resolvedStep = useMemo(\n () =>\n resolveResponsiveSize(\n {\n role,\n size,\n responsive: responsive && isAdaptive,\n fontFamily: fontSlot.family,\n maxFontSize: step.fontSize,\n minFontSize: Math.max(8, Math.round(step.fontSize * 0.7)),\n },\n config.typography.roles,\n containerWidth != null ? { containerWidth, characterCount } : undefined,\n { [fontSlot.family]: localRatio },\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [role, size, responsive, isAdaptive, fontSlot.family, step.fontSize, config.typography.roles, containerWidth, characterCount, localRatio],\n );\n\n // --- Layer 3: report observations for cross-site rolling averages ---\n useEffect(() => {\n if (!reportingEndpoint || !responsive || !isAdaptive || containerWidth == null) return;\n const lineWidths = estimateLineWidths(characterCount, containerWidth, resolvedStep.fontSize, localRatio);\n const lastLine = lineWidths[lineWidths.length - 1];\n enqueueObservation(reportingEndpoint, {\n fontFamily: fontSlot.family,\n fontWeight: resolvedFontWeight,\n role,\n size,\n fontSize: resolvedStep.fontSize,\n containerWidth,\n characterCount,\n lineCount: lineWidths.length,\n lastLineRatio: containerWidth > 0 ? lastLine / containerWidth : 1,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reportingEndpoint, resolvedStep.fontSize, containerWidth]);\n\n const resolvedStyle = useMemo<TextStyle>(() => {\n const activeStep = responsive && isAdaptive ? resolvedStep : step;\n\n // Font metrics corrections (adjustLineHeight, verticalCenterOffset, features)\n const currentMetrics = config.typography.fontMetrics?.[fontSlot.family];\n\n // Phase 3: Correct line height for font's natural vertical extent (snap to 4px grid)\n const correctedLineHeight = currentMetrics\n ? Math.round((activeStep.lineHeight * currentMetrics.naturalLineHeightRatio / REFERENCE_LINE_HEIGHT_RATIO) / 4) * 4\n : activeStep.lineHeight;\n\n // Phase 4: Visual centering correction (opt-in via centerVertically prop, snap to 0.5px)\n const vcOffset = centerVertically && currentMetrics\n ? Math.round(currentMetrics.verticalCenterOffset * activeStep.fontSize * 2) / 2\n : 0;\n\n // Phase 5: OpenType feature settings\n const activeFeatures = features\n ? (currentMetrics?.features ? features.filter(tag => currentMetrics.features.includes(tag)) : [...features])\n : [];\n const featureSettings = activeFeatures.length > 0 ? buildFontFeatureSettings(activeFeatures) : undefined;\n\n return {\n fontFamily: fontSlot.family,\n fontSize: activeStep.fontSize,\n fontWeight: String(resolvedFontWeight) as TextStyle['fontWeight'],\n color: resolveTextColor(color, tokens, resolvedTheme, resolvedAppearance, role),\n lineHeight: correctedLineHeight,\n textAlign: align,\n ...(vcOffset !== 0 ? { transform: [{ translateY: vcOffset }] } : {}),\n ...(featureSettings ? { fontFeatureSettings: featureSettings } as any : {}),\n };\n }, [tokens, fontSlot, step, resolvedStep, responsive, isAdaptive, resolvedFontWeight, color, align, config.typography.fontMetrics, centerVertically, features, resolvedTheme, resolvedAppearance]);\n\n // Auto-derive accessibility role and heading level for heading-like typography roles.\n // react-native-web uses aria-level to render the correct <h1>/<h2>/<h3> element.\n const inferredA11yRole = (role === 'headline' || role === 'title' || role === 'heading')\n ? 'header' as const\n : undefined;\n const effectiveA11yRole = accessibilityRoleOverride ?? inferredA11yRole;\n const ariaLevel = effectiveA11yRole === 'header' ? ROLE_HEADING_LEVEL[role] : undefined;\n\n // Scope context value for span sub-components (stable reference — weights are constant)\n const scopeCtx = useMemo(() => ({ weights: SEMANTIC_WEIGHT_MAP }), []);\n\n const textNode = (\n <TextScopeContext.Provider value={scopeCtx}>\n <RNText\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n accessibilityRole={effectiveA11yRole}\n aria-level={ariaLevel}\n style={style\n ? [resolvedStyle, ...(Array.isArray(style) ? style : [style])]\n : resolvedStyle\n }\n numberOfLines={numberOfLines}\n >\n {children}\n </RNText>\n </TextScopeContext.Provider>\n );\n\n // Wrap in a View for container measurement when responsive mode is active on an adaptive role.\n // onLayout fires whenever the container's dimensions change, providing the measured width.\n if (responsive && isAdaptive) {\n return (\n <View\n onLayout={(e: LayoutChangeEvent) => {\n const w = e.nativeEvent.layout.width;\n if (w > 0) setContainerWidth(w);\n }}\n style={{ width: '100%' }}\n >\n {textNode}\n </View>\n );\n }\n\n return textNode;\n}\n\nexport { TextBase };\n","import React, { useContext, useMemo } from 'react';\nimport { Text as RNText } from 'react-native';\nimport type { TextStyle } from 'react-native';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport type { ThemeName, AppearanceName } from 'newtone-api';\nimport { TextScopeContext, resolveTextColor } from './Text';\nimport type { TextSpanProps, TextWeight } from './Text.types';\n\n/**\n * Generic inline span — constrained sub-component for inline text formatting.\n * Inherits font family, size, and line height from the parent Text.\n * Only inline formatting properties (color, weight, italic, underline, highlight) are exposed.\n */\nexport function TextSpan({ children, color, weight, italic, underline, highlight, style }: TextSpanProps) {\n const tokens = useTokens();\n const scopeCtx = useContext(TextScopeContext);\n const frameCtx = useFrameContext();\n const resolvedTheme: ThemeName = frameCtx?.theme ?? 'primary';\n const resolvedAppearance: AppearanceName = frameCtx?.appearance ?? 'main';\n\n const spanStyle = useMemo<TextStyle>(() => {\n const s: TextStyle = {};\n if (color) s.color = resolveTextColor(color, tokens, resolvedTheme, resolvedAppearance);\n if (weight && scopeCtx) s.fontWeight = String(scopeCtx.weights[weight]) as TextStyle['fontWeight'];\n if (italic) s.fontStyle = 'italic';\n if (underline) s.textDecorationLine = 'underline';\n if (highlight) s.backgroundColor = resolveTextColor(highlight, tokens, resolvedTheme, resolvedAppearance);\n return s;\n }, [tokens, scopeCtx, color, weight, italic, underline, highlight, resolvedTheme, resolvedAppearance]);\n\n return React.createElement(\n RNText,\n { style: style ? [spanStyle, ...(Array.isArray(style) ? style : [style])] : spanStyle },\n children,\n );\n}\n\n/** Bold span — applies bold weight inline. */\nexport function TextBold(props: Omit<TextSpanProps, 'weight'>) {\n return React.createElement(TextSpan, { ...props, weight: 'bold' as TextWeight });\n}\n\n/** Medium-weight span — applies medium weight inline. */\nexport function TextMedium(props: Omit<TextSpanProps, 'weight'>) {\n return React.createElement(TextSpan, { ...props, weight: 'medium' as TextWeight });\n}\n\n/** Italic span — applies italic style inline. */\nexport function TextItalic(props: Omit<TextSpanProps, 'italic'>) {\n return React.createElement(TextSpan, { ...props, italic: true });\n}\n\n/** Underline span — applies underline decoration inline. */\nexport function TextUnderline(props: Omit<TextSpanProps, 'underline'>) {\n return React.createElement(TextSpan, { ...props, underline: true });\n}\n\n/** Highlight span — applies background highlight using a semantic color token. */\nexport function TextHighlight(props: Omit<TextSpanProps, 'highlight'> & { readonly highlight: TextSpanProps['highlight'] }) {\n return React.createElement(TextSpan, props as TextSpanProps);\n}\n","import { TextBase } from './Text';\nimport { TextSpan, TextBold, TextMedium, TextItalic, TextUnderline, TextHighlight } from './Text.spans';\n\n/**\n * Token-aware text primitive with span sub-components.\n *\n * Primary API: `scope` (font family) + `role` (semantic preset) + `color`.\n *\n * @example\n * ```tsx\n * <Text role=\"headline\" scope=\"display\">Hero</Text>\n * <Text role=\"body\">Regular <Text.Bold>bold</Text.Bold> text</Text>\n * <Text role=\"label\" color=\"secondary\">Field label</Text>\n * ```\n */\nexport const Text = Object.assign(TextBase, {\n Span: TextSpan,\n Bold: TextBold,\n Medium: TextMedium,\n Italic: TextItalic,\n Underline: TextUnderline,\n Highlight: TextHighlight,\n});\n\nexport type {\n TextProps,\n TextSize,\n TextWeight,\n TextColor,\n TextScope,\n TextRole,\n TextAlign,\n TextSpanProps,\n} from './Text.types';\n","import React, { useMemo } from 'react';\nimport { Platform, View, StyleSheet } from 'react-native';\nimport type { PageProps } from './Page.types';\nimport { useNewtoneTheme, _ThemeContext } from 'newtone-api';\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n flexDirection: 'column',\n ...(Platform.OS === 'web' ? { minHeight: '100vh' as unknown as number } : {}),\n },\n body: {\n flex: 1,\n flexDirection: 'row',\n },\n content: {\n flex: 1,\n },\n});\n\n/**\n * Page — Full-viewport layout root with optional navbar and sidebar slots.\n *\n * Page fills the full screen height and arranges layout regions:\n * - Navbar at the top (outside scroll)\n * - Sidebar to the left of the main content\n * - Children fill the remaining space (typically a Viewport)\n *\n * When a `scheme` prop is provided, Page activates that scheme from the\n * parent NewtoneProvider so all descendants receive the scheme's config.\n *\n * Page is invisible — no background, border, or shadow.\n *\n * @example\n * ```tsx\n * <Page navbar={<Nav />}>\n * <Viewport>\n * <Section size=\"sm\" fill>\n * <Frame elevation={1} padding={32}>\n * <Text>Centered content</Text>\n * </Frame>\n * </Section>\n * </Viewport>\n * </Page>\n * ```\n */\nexport function Page({\n children,\n scheme,\n navbar,\n sidebar,\n testID,\n nativeID,\n ref,\n style,\n}: PageProps) {\n const themeCtx = useNewtoneTheme();\n\n // Resolve scheme override: if scheme is specified and exists in the\n // provider's schemes map, override the theme context for descendants.\n const schemeThemeCtx = useMemo(() => {\n if (!scheme || !themeCtx.schemes) return null;\n const schemeConfig = themeCtx.schemes[scheme];\n if (!schemeConfig || schemeConfig === themeCtx.config) return null;\n return {\n ...themeCtx,\n config: schemeConfig,\n activeScheme: scheme,\n };\n }, [scheme, themeCtx]);\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n const content = (\n <View\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n accessibilityRole=\"none\"\n style={[styles.root, ...userStyles]}\n >\n {navbar}\n {sidebar ? (\n <View style={styles.body}>\n {sidebar}\n <View style={styles.content}>{children}</View>\n </View>\n ) : (\n children\n )}\n </View>\n );\n\n if (schemeThemeCtx) {\n return (\n <_ThemeContext.Provider value={schemeThemeCtx}>\n {content}\n </_ThemeContext.Provider>\n );\n }\n\n return content;\n}\n","import React from 'react';\nimport { ScrollView, StyleSheet } from 'react-native';\nimport type { ViewportProps } from './Viewport.types';\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n },\n content: {\n flexGrow: 1,\n },\n});\n\n/**\n * Viewport — Full-height scrollable layout root.\n *\n * Viewport fills all available height (`flex: 1`) and scrolls vertically\n * when content overflows. It stacks children in a column.\n *\n * Viewport is invisible — no background, border, or shadow. It is purely\n * a layout tool for structuring the outermost page container.\n *\n * @example\n * ```tsx\n * <Viewport>\n * <Section size=\"lg\" padding={{ y: 48 }}>\n * <Text role=\"heading\">Welcome</Text>\n * </Section>\n * </Viewport>\n * ```\n */\nexport function Viewport({\n children,\n testID,\n nativeID,\n ref,\n style,\n}: ViewportProps) {\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n return (\n <ScrollView\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n style={styles.root}\n contentContainerStyle={[styles.content, ...userStyles]}\n >\n {children}\n </ScrollView>\n );\n}\n","import type { ViewStyle } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\nimport type {\n Direction,\n Alignment,\n Justification,\n PaddingProp,\n GapProp,\n SizingMode,\n PositionType,\n OffsetValue,\n OverflowMode,\n} from '../../primitives/Frame/Frame.types';\nimport {\n resolvePadding,\n resolveGap,\n resolveSizing,\n resolveFlexDirection,\n resolveAlignment,\n resolveJustification,\n} from '../../primitives/Frame/Frame.utils';\n\nexport interface WrapperStyleInput {\n readonly tokens: ResolvedTokens;\n readonly direction?: Direction;\n readonly wrap?: boolean;\n readonly reverse?: boolean;\n readonly align?: Alignment;\n readonly justify?: Justification;\n readonly padding?: PaddingProp;\n readonly gap?: GapProp;\n readonly width?: SizingMode;\n readonly height?: SizingMode;\n readonly minWidth?: number;\n readonly maxWidth?: number;\n readonly minHeight?: number;\n readonly maxHeight?: number;\n\n // Positioning\n readonly position?: PositionType;\n readonly top?: OffsetValue;\n readonly right?: OffsetValue;\n readonly bottom?: OffsetValue;\n readonly left?: OffsetValue;\n readonly zIndex?: number;\n readonly overflow?: OverflowMode;\n}\n\n/**\n * Build the layout styles for a Wrapper.\n *\n * Unlike Frame, this only handles structure (direction, spacing, sizing).\n * No background, border, shadow, or radius — Wrapper is always invisible.\n * Reuses the same helper functions that Frame uses for layout.\n */\nexport function getWrapperStyles(input: WrapperStyleInput): ViewStyle {\n const {\n tokens,\n direction = 'vertical',\n wrap = false,\n reverse = false,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n } = input;\n\n const container: Record<string, unknown> = {};\n\n // ── Layout ──\n container.flexDirection = resolveFlexDirection(direction, reverse);\n if (wrap) container.flexWrap = 'wrap';\n\n // ── Alignment ──\n if (align) container.alignItems = resolveAlignment(align);\n if (justify) container.justifyContent = resolveJustification(justify);\n\n // ── Padding ──\n if (padding !== undefined) {\n const p = resolvePadding(padding, tokens);\n container.paddingTop = p.top;\n container.paddingRight = p.right;\n container.paddingBottom = p.bottom;\n container.paddingLeft = p.left;\n }\n\n // ── Gap ──\n if (gap !== undefined) {\n const g = resolveGap(gap, tokens);\n container.rowGap = g.rowGap;\n container.columnGap = g.columnGap;\n }\n\n // ── Sizing ──\n Object.assign(container, resolveSizing(width, height));\n\n // ── Constraints ──\n if (minWidth !== undefined) container.minWidth = minWidth;\n if (maxWidth !== undefined) container.maxWidth = maxWidth;\n if (minHeight !== undefined) container.minHeight = minHeight;\n if (maxHeight !== undefined) container.maxHeight = maxHeight;\n\n // ── Positioning ──\n if (position) container.position = position;\n if (top !== undefined) container.top = top;\n if (right !== undefined) container.right = right;\n if (bottom !== undefined) container.bottom = bottom;\n if (left !== undefined) container.left = left;\n if (zIndex !== undefined) container.zIndex = zIndex;\n if (overflow) container.overflow = overflow;\n\n return StyleSheet.create({ c: container as ViewStyle }).c;\n}\n","import React, { useMemo } from 'react';\nimport { View } from 'react-native';\nimport type { WrapperProps } from './Wrapper.types';\nimport { getWrapperStyles } from './Wrapper.styles';\nimport { useTokens } from 'newtone-api';\n\n/**\n * Wrapper — Lightweight, invisible layout container.\n *\n * Same layout API as Frame (direction, spacing, alignment, sizing)\n * but with zero appearance overhead. No background, border, shadow,\n * theme context, or interactivity. Always renders a plain View.\n *\n * Use Wrapper for structural layout. Use Frame when you need visual\n * appearance or theme/elevation context.\n */\nexport function Wrapper({\n children,\n direction,\n wrap,\n reverse,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n pointerEvents,\n style,\n testID,\n nativeID,\n ref,\n}: WrapperProps) {\n const tokens = useTokens();\n\n const containerStyle = useMemo(\n () => getWrapperStyles({\n tokens,\n direction,\n wrap,\n reverse,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n position,\n top,\n right,\n bottom,\n left,\n zIndex,\n overflow,\n }),\n [\n tokens, direction, wrap, reverse,\n align, justify, padding, gap,\n width, height, minWidth, maxWidth, minHeight, maxHeight,\n position, top, right, bottom, left, zIndex, overflow,\n ],\n );\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n return (\n <View\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n pointerEvents={pointerEvents}\n accessibilityRole=\"none\"\n style={[containerStyle, ...userStyles]}\n >\n {children}\n </View>\n );\n}\n","import type { ViewStyle } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\nimport type { GapProp, PaddingProp } from '../../primitives/Frame/Frame.types';\nimport type { SectionSize } from './Section.types';\nimport { resolveGap, resolvePadding } from '../../primitives/Frame/Frame.utils';\n\n// ── Size Presets ─────────────────────────────────────────────────\n\ninterface SizePreset {\n readonly maxWidth: number | undefined;\n readonly paddingHorizontal: number;\n}\n\nconst SIZE_PRESETS: Record<SectionSize, SizePreset> = {\n xs: { maxWidth: 480, paddingHorizontal: 24 },\n sm: { maxWidth: 640, paddingHorizontal: 24 },\n md: { maxWidth: 768, paddingHorizontal: 24 },\n lg: { maxWidth: 1024, paddingHorizontal: 32 },\n xl: { maxWidth: 1280, paddingHorizontal: 40 },\n full: { maxWidth: undefined, paddingHorizontal: 0 },\n};\n\n// ── Input ────────────────────────────────────────────────────────\n\nexport interface SectionStyleInput {\n readonly tokens: ResolvedTokens;\n readonly size?: SectionSize;\n readonly fill?: boolean;\n readonly gap?: GapProp;\n readonly padding?: PaddingProp;\n}\n\n// ── Builder ──────────────────────────────────────────────────────\n\n/**\n * Build layout styles for a Section.\n *\n * Section fills all horizontal space, centers content within a max width,\n * and applies horizontal padding from the size preset. Vertical padding\n * can be specified via the padding prop.\n */\nexport function getSectionStyles(input: SectionStyleInput): ViewStyle {\n const {\n tokens,\n size = 'lg',\n fill,\n gap,\n padding,\n } = input;\n\n const preset = SIZE_PRESETS[size];\n const container: Record<string, unknown> = {};\n\n // Section always fills horizontal space and stacks children vertically.\n container.width = '100%';\n container.flexDirection = 'column';\n\n // Fill available vertical space when requested.\n if (fill) {\n container.flex = 1;\n }\n\n // Center the content area by capping its width and using auto margins.\n if (preset.maxWidth !== undefined) {\n container.maxWidth = preset.maxWidth;\n container.marginLeft = 'auto';\n container.marginRight = 'auto';\n }\n\n // Horizontal padding from the size preset (so content doesn't touch edges).\n container.paddingLeft = preset.paddingHorizontal;\n container.paddingRight = preset.paddingHorizontal;\n\n // Vertical padding from the user's padding prop.\n if (padding !== undefined) {\n const p = resolvePadding(padding, tokens);\n container.paddingTop = p.top;\n container.paddingBottom = p.bottom;\n }\n\n // Gap between children.\n if (gap !== undefined) {\n const g = resolveGap(gap, tokens);\n container.rowGap = g.rowGap;\n container.columnGap = g.columnGap;\n }\n\n return StyleSheet.create({ c: container as ViewStyle }).c;\n}\n","import React, { useMemo } from 'react';\nimport { View } from 'react-native';\nimport type { SectionProps } from './Section.types';\nimport { getSectionStyles } from './Section.styles';\nimport { useTokens } from 'newtone-api';\n\n/**\n * Section — Full-width layout container that constrains content width.\n *\n * Section fills all available horizontal space and centers its content\n * within a maximum width determined by the `size` preset. It provides\n * horizontal padding so content doesn't touch the viewport edges when\n * the screen is narrower than the max width.\n *\n * Section is invisible — no background, border, or shadow. It is purely\n * a layout tool for structuring page-level content regions.\n *\n * @example\n * ```tsx\n * <Section size=\"md\" gap={24} padding={{ y: 48 }}>\n * <Text role=\"heading\">Documentation</Text>\n * <Text role=\"body\">Content constrained to 768px max width.</Text>\n * </Section>\n * ```\n */\nexport function Section({\n children,\n size,\n fill,\n gap,\n padding,\n testID,\n nativeID,\n ref,\n style,\n}: SectionProps) {\n const tokens = useTokens();\n\n const containerStyle = useMemo(\n () => getSectionStyles({ tokens, size, fill, gap, padding }),\n [tokens, size, fill, gap, padding],\n );\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n return (\n <View\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n accessibilityRole=\"none\"\n style={[containerStyle, ...userStyles]}\n >\n {children}\n </View>\n );\n}\n","import type { UseTokensResult } from 'newtone-api';\nimport type { ThemeName } from 'newtone-api';\nimport type { ButtonVariant, ButtonSize } from './Button.types';\nimport type { TextSize } from '../../../primitives/Text/Text.types';\n\n/**\n * Fixed heights per size (px)\n */\nexport const BUTTON_HEIGHTS: Record<ButtonSize, number> = {\n sm: 40,\n md: 48,\n lg: 56,\n xl: 64,\n};\n\n/**\n * Configuration returned by getButtonConfig\n */\nexport interface ButtonConfig {\n variantColors: {\n bg: string;\n hoveredBg: string;\n pressedBg: string;\n textColor: string;\n iconColor: string;\n borderWidth: number;\n borderColor?: string;\n textDecoration?: 'underline' | 'none';\n };\n sizeTokens: {\n height: number;\n padding: number;\n gap: number;\n borderRadius: number;\n textSize: TextSize;\n iconSize: number;\n };\n}\n\n/**\n * Padding object for asymmetric horizontal padding\n */\nexport interface ButtonPadding {\n paddingLeft: number;\n paddingRight: number;\n}\n\n/**\n * Compute asymmetric button padding based on icon/text presence.\n *\n * Text appears visually closer to borders than icons, so we add 8px extra\n * horizontal padding on the text side for optical balance.\n */\nexport function computeButtonPadding(\n size: ButtonSize,\n hasIcon: boolean,\n hasText: boolean,\n iconPosition: 'left' | 'right'\n): ButtonPadding {\n const basePadding: Record<ButtonSize, number> = {\n sm: 12,\n md: 16,\n lg: 20,\n xl: 24,\n };\n\n const base = basePadding[size];\n const textExtra = 8;\n\n // Icon-only: symmetric\n if (!hasText && hasIcon) {\n return { paddingLeft: base, paddingRight: base };\n }\n\n // Text-only: extra padding on both sides\n if (hasText && !hasIcon) {\n return { paddingLeft: base + textExtra, paddingRight: base + textExtra };\n }\n\n // Icon + text: extra padding on text side only\n if (hasText && hasIcon) {\n if (iconPosition === 'left') {\n return { paddingLeft: base, paddingRight: base + textExtra };\n } else {\n return { paddingLeft: base + textExtra, paddingRight: base };\n }\n }\n\n return { paddingLeft: base, paddingRight: base };\n}\n\n/**\n * Compute button configuration based on variant, size, and state.\n *\n * Colors are derived from the inherited theme (via FrameContext) rather than\n * hardcoded to the primary palette. The `theme` parameter comes from the\n * nearest Frame's `theme` prop, defaulting to 'primary'.\n */\nexport function getButtonConfig(\n variant: ButtonVariant,\n size: ButtonSize,\n disabled: boolean,\n tokens: UseTokensResult,\n theme: ThemeName,\n): ButtonConfig {\n const sizeConfig = getSizeConfig(size, tokens);\n const variantColors = getVariantColors(variant, disabled, tokens, theme);\n\n return {\n variantColors,\n sizeTokens: {\n height: sizeConfig.height,\n padding: sizeConfig.padding,\n gap: sizeConfig.gap,\n borderRadius: sizeConfig.borderRadius,\n textSize: sizeConfig.textSize,\n iconSize: sizeConfig.iconSize,\n },\n };\n}\n\n/**\n * Get size configuration. Heights are fixed per size.\n * Only padding and radius scale with size.\n */\nfunction getSizeConfig(size: ButtonSize, tokens: UseTokensResult) {\n const configs: Record<ButtonSize, {\n height: number;\n padding: number;\n gap: number;\n borderRadius: number;\n textSize: TextSize;\n iconSize: number;\n }> = {\n sm: {\n height: BUTTON_HEIGHTS.sm,\n padding: 12,\n gap: tokens.spacing['08'],\n borderRadius: 8,\n textSize: 'md',\n iconSize: 20,\n },\n md: {\n height: BUTTON_HEIGHTS.md,\n padding: 16,\n gap: tokens.spacing['08'],\n borderRadius: 12,\n textSize: 'md',\n iconSize: 24,\n },\n lg: {\n height: BUTTON_HEIGHTS.lg,\n padding: 20,\n gap: tokens.spacing['08'],\n borderRadius: 14,\n textSize: 'md',\n iconSize: 24,\n },\n xl: {\n height: BUTTON_HEIGHTS.xl,\n padding: 24,\n gap: tokens.spacing['08'],\n borderRadius: 16,\n textSize: 'lg',\n iconSize: 24,\n },\n };\n\n return configs[size];\n}\n\n/**\n * Get variant-specific colors from the inherited theme's tokens.\n * Handles disabled state override for all variants.\n */\nfunction getVariantColors(\n variant: ButtonVariant,\n disabled: boolean,\n tokens: UseTokensResult,\n theme: ThemeName,\n) {\n if (disabled) {\n return getDisabledVariantColors(variant, tokens, theme);\n }\n\n return getVariantColorsForState(variant, tokens, theme);\n}\n\n/**\n * Get variant colors for non-disabled state.\n * Uses the inherited theme's tokens — no semantic prop needed.\n */\nfunction getVariantColorsForState(\n variant: ButtonVariant,\n tokens: UseTokensResult,\n theme: ThemeName,\n) {\n const t = tokens.colors[theme];\n\n // PRIMARY: Filled background using emphasis appearance\n if (variant === 'primary') {\n return {\n bg: t.emphasis.actionEnabled,\n hoveredBg: t.emphasis.actionHovered,\n pressedBg: t.emphasis.actionPressed,\n textColor: t.emphasis.accentSmall,\n iconColor: t.emphasis.accentSmall,\n borderWidth: 0,\n borderColor: 'transparent',\n };\n }\n\n // SECONDARY: Outlined with subtle hover\n if (variant === 'secondary') {\n return {\n bg: t.tinted.actionEnabled,\n hoveredBg: t.tinted.actionHovered,\n pressedBg: t.tinted.actionPressed,\n textColor: t.tinted.fontPrimary,\n iconColor: t.tinted.fontPrimary,\n borderWidth: 0,\n borderColor: 'transparent',\n };\n }\n\n // GHOST: No border, transparent background, subtle hover, underlined text\n return {\n bg: 'transparent',\n hoveredBg: t.main.actionEnabled,\n pressedBg: t.main.actionHovered,\n textColor: t.main.fontSecondary,\n iconColor: t.main.fontSecondary,\n borderWidth: 0,\n borderColor: 'transparent',\n textDecoration: 'underline' as const,\n };\n}\n\n/**\n * Get variant-specific disabled colors.\n * Each variant has its own disabled treatment using mapped disabled tokens.\n */\nfunction getDisabledVariantColors(\n variant: ButtonVariant,\n tokens: UseTokensResult,\n theme: ThemeName,\n) {\n const t = tokens.colors[theme];\n\n // PRIMARY DISABLED: keeps emphasis appearance, muted text\n if (variant === 'primary') {\n return {\n bg: t.main.actionEnabled,\n hoveredBg: t.main.actionEnabled,\n pressedBg: t.main.actionEnabled,\n textColor: t.main.fontDisabled,\n iconColor: t.main.fontDisabled,\n borderWidth: 0,\n borderColor: 'transparent',\n };\n }\n\n // SECONDARY DISABLED: keeps main appearance bg, muted text\n if (variant === 'secondary') {\n return {\n bg: 'transparent',\n hoveredBg: 'transparent',\n pressedBg: 'transparent',\n textColor: t.main.fontDisabled,\n iconColor: t.main.fontDisabled,\n borderWidth: 1,\n borderColor: t.main.divider,\n };\n }\n\n // GHOST DISABLED: transparent, muted text only, underlined\n return {\n bg: 'transparent',\n hoveredBg: 'transparent',\n pressedBg: 'transparent',\n textColor: t.main.fontDisabled,\n iconColor: t.main.fontDisabled,\n borderWidth: 0,\n borderColor: 'transparent'\n };\n}\n","import React from 'react';\nimport { Pressable } from 'react-native';\nimport type { ButtonProps } from './Button.types';\nimport { getButtonConfig, computeButtonPadding } from './Button.styles';\nimport { useTokens } from 'newtone-api';\nimport { useFrameContext } from 'newtone-api';\nimport { Icon } from '../../../primitives/Icon/Icon';\nimport { Text } from '../../../primitives/Text';\nimport { Wrapper } from '../../../layout/Wrapper/Wrapper';\n\n/**\n * Button — A composite component that inherits its color theme from the\n * nearest parent Frame's `theme` prop (defaults to 'primary').\n *\n * **Variants:**\n * - `primary` — Filled background (highest visual weight)\n * - `secondary` — Outlined with subtle hover\n * - `ghost` — No border, transparent, subtle hover\n *\n * **Sizes (fixed heights):**\n * - `sm` — 40px\n * - `md` — 48px\n * - `lg` — 56px\n * - `xl` — 64px\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\" onPress={() => console.log('Pressed')}>\n * Click me\n * </Button>\n * ```\n *\n * @example\n * ```tsx\n * // Inherits theme from parent Frame\n * <Frame theme=\"error\">\n * <Button variant=\"primary\">Delete</Button>\n * </Frame>\n * ```\n */\nexport function Button({\n children,\n icon,\n iconPosition = 'left',\n variant = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n fullWidth = false,\n style,\n textStyle,\n ...pressableProps\n}: ButtonProps) {\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n\n // Inherit theme from nearest Frame, default to 'primary'\n const theme = frameCtx?.theme ?? 'primary';\n\n // DEBUG: trace Button token resolution\n if (typeof window !== 'undefined') {\n console.log('[Button]', { theme, variant, frameCtxTheme: frameCtx?.theme, hasFrameCtx: !!frameCtx });\n if (tokens.colors[theme]) {\n const t = tokens.colors[theme];\n console.log('[Button tokens]', {\n 'emphasis.actionEnabled': t.emphasis.actionEnabled,\n 'main.actionEnabled': t.main.actionEnabled,\n 'main.background': t.main.background,\n });\n } else {\n console.log('[Button] NO tokens for theme:', theme, 'available themes:', Object.keys(tokens.colors));\n }\n }\n\n const isDisabled = disabled || loading;\n\n const { variantColors, sizeTokens } = React.useMemo(\n () => getButtonConfig(variant, size, isDisabled, tokens, theme),\n [variant, size, isDisabled, tokens, theme]\n );\n\n // Compute asymmetric padding (+8px on text side for optical balance)\n // Ghost variant with no icon uses standard padding\n const padding = React.useMemo(\n () => computeButtonPadding(size, !!icon, !!children, iconPosition),\n [size, icon, children, iconPosition]\n );\n\n return (\n <Pressable disabled={isDisabled} {...pressableProps}>\n {({ pressed, hovered }: { pressed: boolean; hovered?: boolean }) => (\n <Wrapper\n direction=\"horizontal\"\n align=\"center\"\n justify=\"center\"\n gap={sizeTokens.gap}\n style={[\n {\n height: sizeTokens.height,\n paddingLeft: padding.paddingLeft,\n paddingRight: padding.paddingRight,\n backgroundColor: pressed && !isDisabled\n ? variantColors.pressedBg\n : hovered && !isDisabled\n ? variantColors.hoveredBg\n : variantColors.bg,\n borderRadius: sizeTokens.borderRadius,\n borderWidth: variantColors.borderWidth,\n borderColor: variantColors.borderColor || 'transparent',\n opacity: loading ? 0.6 : 1,\n ...(fullWidth && { width: '100%' as any, alignSelf: 'stretch' as any }),\n },\n ...(Array.isArray(style) ? style : style ? [style] : []),\n ]}\n >\n {icon && iconPosition === 'left' && (\n <Icon name={icon} size={sizeTokens.iconSize} color={variantColors.iconColor} />\n )}\n {children && (\n <Text\n role=\"label\"\n size={sizeTokens.textSize}\n centerVertically\n style={[\n { color: variantColors.textColor, textDecorationLine: variantColors.textDecoration },\n ...(Array.isArray(textStyle) ? textStyle : textStyle ? [textStyle] : []),\n ]}\n >\n {children}\n </Text>\n )}\n {icon && iconPosition === 'right' && (\n <Icon name={icon} size={sizeTokens.iconSize} color={variantColors.iconColor} />\n )}\n </Wrapper>\n )}\n </Pressable>\n );\n}\n","import type { ViewStyle } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens } from 'newtone-api';\nimport type { ThemeName, AppearanceName } from 'newtone-api';\nimport type {\n PaddingProp,\n GapProp,\n SizingMode,\n Direction,\n Alignment,\n Justification,\n RadiusProp,\n} from '../Frame/Frame.types';\nimport {\n resolvePadding,\n resolveGap,\n resolveSizing,\n resolveFlexDirection,\n resolveAlignment,\n resolveJustification,\n resolveRadiusCorners,\n hasPositiveRadius,\n} from '../Frame/Frame.utils';\n\n// ── Input ────────────────────────────────────────────────────────\n\nexport interface CardStyleInput {\n readonly tokens: ResolvedTokens;\n\n // Theme / Appearance (theme is inherited, not user-supplied)\n readonly theme: ThemeName;\n readonly appearance?: AppearanceName;\n\n // Layout\n readonly direction?: Direction;\n readonly wrap?: boolean;\n readonly reverse?: boolean;\n\n // Alignment\n readonly align?: Alignment;\n readonly justify?: Justification;\n\n // Spacing\n readonly padding?: PaddingProp;\n readonly gap?: GapProp;\n\n // Sizing\n readonly width?: SizingMode;\n readonly height?: SizingMode;\n readonly minWidth?: number;\n readonly maxWidth?: number;\n readonly minHeight?: number;\n readonly maxHeight?: number;\n\n // Appearance\n readonly radius?: RadiusProp;\n\n // Interactivity\n readonly disabled?: boolean;\n}\n\n// ── Output ───────────────────────────────────────────────────────\n\nexport interface CardStyles {\n /** Main container style */\n readonly container: ViewStyle;\n /** Style applied when pressed (background shift) */\n readonly pressed: ViewStyle;\n}\n\n// ── Builder ──────────────────────────────────────────────────────\n\n/**\n * Build all visual styles for a Card.\n *\n * Cards are always elevated with a border and drop shadow.\n * Takes the Card's props + design tokens and produces:\n * - container: the main style (background, border, shadow, layout, spacing, etc.)\n * - pressed: style override applied when the user is pressing\n */\nexport function getCardStyles(input: CardStyleInput): CardStyles {\n const {\n tokens,\n theme,\n appearance = 'main',\n direction = 'vertical',\n wrap = false,\n reverse = false,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n radius,\n disabled = false,\n } = input;\n\n const container: Record<string, unknown> = {};\n\n // ── Background & foreground ──\n const appearanceTokens: AppearanceTokens = tokens.colors[theme][appearance];\n container.backgroundColor = appearanceTokens.background;\n container.color = appearanceTokens.fontPrimary;\n\n // ── Layout ──\n container.display = 'flex';\n container.flexDirection = resolveFlexDirection(direction, reverse);\n if (wrap) container.flexWrap = 'wrap';\n\n // ── Alignment ──\n if (align) container.alignItems = resolveAlignment(align);\n if (justify) container.justifyContent = resolveJustification(justify);\n\n // ── Padding ──\n if (padding !== undefined) {\n const p = resolvePadding(padding, tokens);\n container.paddingTop = p.top;\n container.paddingRight = p.right;\n container.paddingBottom = p.bottom;\n container.paddingLeft = p.left;\n }\n\n // ── Gap ──\n if (gap !== undefined) {\n const g = resolveGap(gap, tokens);\n container.rowGap = g.rowGap;\n container.columnGap = g.columnGap;\n }\n\n // ── Sizing ──\n Object.assign(container, resolveSizing(width, height));\n\n // ── Constraints ──\n if (minWidth !== undefined) container.minWidth = minWidth;\n if (maxWidth !== undefined) container.maxWidth = maxWidth;\n if (minHeight !== undefined) container.minHeight = minHeight;\n if (maxHeight !== undefined) container.maxHeight = maxHeight;\n\n // ── Radius ──\n if (radius !== undefined) {\n const corners = resolveRadiusCorners(radius, tokens);\n container.borderTopLeftRadius = corners.topLeft;\n container.borderTopRightRadius = corners.topRight;\n container.borderBottomLeftRadius = corners.bottomLeft;\n container.borderBottomRightRadius = corners.bottomRight;\n\n if (hasPositiveRadius(corners)) {\n container.overflow = 'hidden';\n }\n }\n\n // ── Border (always on) ──\n container.borderWidth = 1;\n container.borderColor = appearanceTokens.divider;\n\n // ── Shadow (always elevated) ──\n container.shadowColor = '#000';\n container.shadowOffset = { width: 0, height: 2 };\n container.shadowOpacity = 0.12;\n container.shadowRadius = 6;\n container.elevation = 4; // Android-specific shadow depth\n\n // ── Disabled ──\n if (disabled) {\n container.opacity = 0.5;\n }\n\n // ── Pressed state ──\n const pressed = StyleSheet.create({\n s: { backgroundColor: appearanceTokens.fontSecondary },\n }).s;\n\n return {\n container: StyleSheet.create({ c: container as ViewStyle }).c,\n pressed,\n };\n}\n","import React, { useMemo } from 'react';\nimport { Pressable, Text } from 'react-native';\nimport type { TextStyle } from 'react-native';\nimport type { CardProps } from './Card.types';\nimport type { ElevationLevel, ElevationName, ThemeName, AppearanceName } from 'newtone-api';\nimport { FrameContext, useFrameContext } from 'newtone-api';\nimport { useNewtoneTheme } from 'newtone-api';\nimport { computeTokens } from 'newtone-api';\nimport { getCardStyles } from './Card.styles';\nimport { useFocusVisible } from '../useFocusVisible';\n\n/**\n * Wrap raw string/number children in <Text> so they display correctly.\n */\nfunction wrapTextChildren(\n children: React.ReactNode,\n textStyle: TextStyle,\n): React.ReactNode {\n return React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Text style={textStyle}>{child}</Text>;\n }\n return child;\n });\n}\n\n/** Cards are always elevated. */\nconst CARD_ELEVATION: ElevationLevel = 2;\nconst CARD_ELEVATION_NAME: ElevationName = 'elevated';\n\n/**\n * Card — An elevated, bordered, pressable surface.\n *\n * Card inherits its theme from the parent Frame context. It is always\n * rendered at the elevated level with a border and drop shadow.\n * It handles press and navigation interactions, making it ideal for\n * clickable content tiles, list items, and action surfaces.\n *\n * Cards can be nested inside Frames. They inherit the theme but provide\n * their own elevated FrameContext to descendants.\n */\nexport function Card({\n children,\n // Appearance\n appearance,\n radius,\n // Layout\n direction,\n wrap,\n reverse,\n // Alignment\n align,\n justify,\n // Spacing\n padding,\n gap,\n // Sizing\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n // Positioning\n pointerEvents,\n // Interactivity\n onPress,\n href,\n disabled = false,\n // Accessibility\n accessibilityLabel,\n accessibilityHint,\n // Testing & platform\n testID,\n nativeID,\n ref,\n // Style override\n style,\n}: CardProps) {\n const themeCtx = useNewtoneTheme();\n const { mode, gamut } = themeCtx;\n const parentFrameCtx = useFrameContext();\n\n // Inherit theme from parent Frame context (Card never overrides theme).\n const resolvedTheme: ThemeName = parentFrameCtx?.theme ?? 'primary';\n const resolvedAppearance: AppearanceName = appearance ?? parentFrameCtx?.appearance ?? 'main';\n\n // Compute tokens at the elevated level.\n const tokens = useMemo(() => {\n return computeTokens(\n themeCtx.config.colorSystem,\n mode,\n gamut,\n CARD_ELEVATION_NAME,\n themeCtx.config.spacing,\n themeCtx.config.radius,\n themeCtx.config.typography,\n themeCtx.config.icons,\n themeCtx.config.themeMappings,\n themeCtx.config.swatchDefaults,\n themeCtx.config.relativeSwatchDefaults,\n );\n }, [themeCtx.config, mode, gamut]);\n\n const styles = useMemo(\n () => getCardStyles({\n tokens,\n theme: resolvedTheme,\n appearance: resolvedAppearance,\n direction,\n wrap,\n reverse,\n align,\n justify,\n padding,\n gap,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n radius,\n disabled,\n }),\n [\n tokens, resolvedTheme, resolvedAppearance,\n direction, wrap, reverse,\n align, justify, padding, gap,\n width, height, minWidth, maxWidth, minHeight, maxHeight,\n radius, disabled,\n ],\n );\n\n const contextValue = useMemo(\n () => ({\n elevation: CARD_ELEVATION,\n tokens,\n scheme: parentFrameCtx?.scheme,\n theme: resolvedTheme,\n appearance: resolvedAppearance,\n }),\n [tokens, parentFrameCtx?.scheme, resolvedTheme, resolvedAppearance],\n );\n\n const userStyles = Array.isArray(style) ? style : style ? [style] : [];\n\n const { isFocusVisible, focusProps } = useFocusVisible();\n\n // Focus ring: uses the emphasis background of the inherited theme as the outline color.\n const focusRingStyle = isFocusVisible && !disabled ? {\n outlineWidth: 2,\n outlineStyle: 'solid',\n outlineColor: tokens.colors[resolvedTheme].emphasis.background,\n outlineOffset: 2,\n } as unknown as import('react-native').ViewStyle : undefined;\n\n const textStyle = useMemo<TextStyle>(\n () => ({\n color: tokens.colors[resolvedTheme][resolvedAppearance].fontPrimary,\n fontSize: tokens.typography.fontSizes['05'],\n fontFamily: tokens.typography.fonts.main.family,\n lineHeight: tokens.typography.lineHeights['06'],\n }),\n [tokens, resolvedTheme, resolvedAppearance],\n );\n const wrappedChildren = useMemo(\n () => wrapTextChildren(children, textStyle),\n [children, textStyle],\n );\n\n return (\n <FrameContext.Provider value={contextValue}>\n <Pressable\n ref={ref}\n testID={testID}\n nativeID={nativeID}\n pointerEvents={pointerEvents}\n accessibilityLabel={accessibilityLabel}\n accessibilityHint={accessibilityHint}\n accessibilityState={disabled ? { disabled: true } : undefined}\n onPress={onPress}\n disabled={disabled}\n {...(href ? { href, accessibilityRole: 'link' as const } : { accessibilityRole: 'button' as const })}\n {...(focusProps as any)}\n style={({ pressed }) => [\n styles.container,\n pressed && !disabled && styles.pressed,\n focusRingStyle,\n ...userStyles,\n ]}\n >\n {wrappedChildren}\n </Pressable>\n </FrameContext.Provider>\n );\n}\n","import type { UseTokensResult } from 'newtone-api';\nimport type { ChipVariant, ChipSemantic, ChipSize } from './Chip.types';\nimport type { TextRole } from '../../../primitives/Text';\n\n/**\n * Configuration returned by getChipConfig\n */\nexport interface ChipConfig {\n colors: {\n bg: string;\n hoveredBg: string;\n pressedBg: string;\n textColor: string;\n iconColor: string;\n borderWidth: number;\n borderColor: string;\n };\n sizeTokens: {\n paddingX: number;\n paddingY: number;\n gap: number;\n textRole: TextRole;\n iconSize: number;\n };\n}\n\n/**\n * Map chip semantic to theme name.\n * 'accent' maps to 'primary'; others map directly.\n */\nfunction semanticToTheme(semantic: ChipSemantic): 'primary' | 'success' | 'error' | 'warning' {\n if (semantic === 'accent') return 'primary';\n return semantic as 'success' | 'error' | 'warning';\n}\n\n/**\n * Get size configuration for the chip.\n */\nfunction getSizeConfig(size: ChipSize): {\n paddingX: number;\n paddingY: number;\n gap: number;\n textRole: TextRole;\n iconSize: number;\n} {\n if (size === 'sm') {\n return { paddingX: 10, paddingY: 3, gap: 4, textRole: 'caption', iconSize: 16 };\n }\n return { paddingX: 16, paddingY: 8, gap: 6, textRole: 'label', iconSize: 20 };\n}\n\n/**\n * Get variant colors for the chip.\n */\nfunction getVariantColors(\n variant: ChipVariant,\n semantic: ChipSemantic,\n selected: boolean,\n disabled: boolean,\n tokens: UseTokensResult\n) {\n // Selected state overrides to strong appearance\n if (selected) {\n if (semantic === 'neutral') {\n return {\n bg: tokens.colors.primary.strong.background,\n hoveredBg: tokens.colors.primary.strong.fontPrimary,\n pressedBg: tokens.colors.primary.strong.background,\n textColor: tokens.colors.primary.strong.fontPrimary,\n iconColor: tokens.colors.primary.strong.fontPrimary,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n const t = tokens.colors[semanticToTheme(semantic)];\n return {\n bg: t.emphasis.background,\n hoveredBg: t.emphasis.fontPrimary,\n pressedBg: t.emphasis.background,\n textColor: t.main.background,\n iconColor: t.main.background,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n\n // Disabled state\n if (disabled) {\n return {\n bg: 'transparent',\n hoveredBg: 'transparent',\n pressedBg: 'transparent',\n textColor: tokens.colors.primary.main.fontTertiary,\n iconColor: tokens.colors.primary.main.fontTertiary,\n borderWidth: 1,\n borderColor: tokens.colors.primary.main.divider,\n };\n }\n\n // Filled variant\n if (variant === 'filled') {\n if (semantic === 'neutral') {\n return {\n bg: tokens.colors.primary.main.fontPrimary,\n hoveredBg: tokens.colors.primary.main.fontSecondary,\n pressedBg: tokens.colors.primary.main.fontPrimary,\n textColor: tokens.colors.primary.main.divider,\n iconColor: tokens.colors.primary.main.divider,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n const t = tokens.colors[semanticToTheme(semantic)];\n return {\n bg: t.emphasis.background,\n hoveredBg: t.emphasis.fontPrimary,\n pressedBg: t.emphasis.fontSecondary,\n textColor: t.main.background,\n iconColor: t.main.background,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n\n // Tinted variant\n if (variant === 'tinted') {\n if (semantic === 'neutral') {\n return {\n bg: tokens.colors.primary.tinted.background,\n hoveredBg: tokens.colors.primary.tinted.fontPrimary,\n pressedBg: tokens.colors.primary.tinted.fontSecondary,\n textColor: tokens.colors.primary.main.fontPrimary,\n iconColor: tokens.colors.primary.main.fontPrimary,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n const t = tokens.colors[semanticToTheme(semantic)];\n return {\n bg: t.tinted.background,\n hoveredBg: t.tinted.fontPrimary,\n pressedBg: t.tinted.fontSecondary,\n textColor: t.emphasis.divider,\n iconColor: t.emphasis.divider,\n borderWidth: 1,\n borderColor: 'transparent',\n };\n }\n\n // Outlined variant\n if (semantic === 'neutral') {\n return {\n bg: 'transparent',\n hoveredBg: tokens.colors.primary.tinted.background,\n pressedBg: tokens.colors.primary.tinted.fontPrimary,\n textColor: tokens.colors.primary.main.fontPrimary,\n iconColor: tokens.colors.primary.main.fontPrimary,\n borderWidth: 1,\n borderColor: tokens.colors.primary.main.divider,\n };\n }\n const t = tokens.colors[semanticToTheme(semantic)];\n return {\n bg: 'transparent',\n hoveredBg: t.tinted.background,\n pressedBg: t.tinted.fontPrimary,\n textColor: t.emphasis.divider,\n iconColor: t.emphasis.divider,\n borderWidth: 1,\n borderColor: t.tinted.fontSecondary,\n };\n}\n\n/**\n * Compute chip configuration based on variant, semantic, size, and state.\n */\nexport function getChipConfig(\n variant: ChipVariant,\n semantic: ChipSemantic,\n size: ChipSize,\n selected: boolean,\n disabled: boolean,\n tokens: UseTokensResult\n): ChipConfig {\n return {\n colors: getVariantColors(variant, semantic, selected, disabled, tokens),\n sizeTokens: getSizeConfig(size),\n };\n}\n","import React from 'react';\nimport { Pressable } from 'react-native';\nimport type { ChipProps } from './Chip.types';\nimport { getChipConfig } from './Chip.styles';\nimport { useTokens } from 'newtone-api';\nimport { Icon } from '../../../primitives/Icon/Icon';\nimport { Text } from '../../../primitives/Text';\nimport { Wrapper } from '../../../layout/Wrapper/Wrapper';\n\n/**\n * Chip — A pill-shaped label for tags, filters, badges, and status indicators.\n *\n * **Composition Architecture:**\n * - Pressable (RN primitive) — handles interaction (when onPress is provided)\n * - Wrapper (primitive) — handles layout (direction, gap, padding, alignment)\n * - Icon (primitive) — handles optional leading icon\n * - Text (primitive) — handles typography with theme tokens\n *\n * @example\n * ```tsx\n * // Static label\n * <Chip>Design Systems</Chip>\n *\n * // Interactive filter chip\n * <Chip selected={isActive} onPress={() => toggle()}>Color Science</Chip>\n *\n * // With icon\n * <Chip icon=\"check\" semantic=\"success\">Verified</Chip>\n * ```\n */\nexport function Chip({\n children,\n variant = 'tinted',\n size = 'md',\n semantic = 'neutral',\n selected = false,\n onPress,\n disabled = false,\n icon,\n style,\n}: ChipProps) {\n const tokens = useTokens();\n\n const { colors, sizeTokens } = React.useMemo(\n () => getChipConfig(variant, semantic, size, selected, disabled, tokens),\n [variant, semantic, size, selected, disabled, tokens]\n );\n\n const content = (state?: { pressed: boolean; hovered?: boolean }) => (\n <Wrapper\n direction=\"horizontal\"\n align=\"center\"\n gap={sizeTokens.gap}\n style={[\n {\n paddingLeft: sizeTokens.paddingX,\n paddingRight: sizeTokens.paddingX,\n paddingTop: sizeTokens.paddingY,\n paddingBottom: sizeTokens.paddingY,\n backgroundColor: state?.pressed && !disabled\n ? colors.pressedBg\n : state?.hovered && !disabled\n ? colors.hoveredBg\n : colors.bg,\n borderRadius: 99,\n borderWidth: colors.borderWidth,\n borderColor: colors.borderColor || 'transparent',\n opacity: disabled ? 0.4 : 1,\n },\n ...(Array.isArray(style) ? style : style ? [style] : []),\n ]}\n >\n {icon && (\n <Icon name={icon} size={sizeTokens.iconSize} color={colors.iconColor} />\n )}\n <Text\n role={sizeTokens.textRole}\n weight={selected ? 'bold' : 'medium'}\n style={{ color: colors.textColor }}\n >\n {children}\n </Text>\n </Wrapper>\n );\n\n if (onPress) {\n return (\n <Pressable onPress={onPress} disabled={disabled}>\n {({ pressed, hovered }: { pressed: boolean; hovered?: boolean }) =>\n content({ pressed, hovered })\n }\n </Pressable>\n );\n }\n\n return content();\n}\n","import type { ViewStyle } from 'react-native';\nimport type { UseTokensResult } from 'newtone-api';\nimport type { DividerOrientation } from './Divider.types';\n\n/**\n * Compute divider styles based on orientation, spacing, and tokens.\n */\nexport function getDividerStyles(\n orientation: DividerOrientation,\n spacing: number | undefined,\n tokens: UseTokensResult\n): ViewStyle {\n const color = tokens.colors.primary.main.divider;\n\n if (orientation === 'vertical') {\n return {\n width: 1,\n height: '100%' as any,\n backgroundColor: color,\n ...(spacing != null && { marginLeft: spacing, marginRight: spacing }),\n };\n }\n\n return {\n height: 1,\n width: '100%' as any,\n backgroundColor: color,\n ...(spacing != null && { marginTop: spacing, marginBottom: spacing }),\n };\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport type { DividerProps } from './Divider.types';\nimport { getDividerStyles } from './Divider.styles';\nimport { useTokens } from 'newtone-api';\n\n/**\n * Divider — A horizontal or vertical separator line.\n *\n * Uses the theme's divider color from tokens automatically.\n *\n * @example\n * ```tsx\n * // Horizontal divider\n * <Divider />\n *\n * // With spacing\n * <Divider spacing={16} />\n *\n * // Vertical divider (inside a horizontal Wrapper)\n * <Wrapper direction=\"horizontal\" align=\"center\">\n * <Text>Left</Text>\n * <Divider orientation=\"vertical\" spacing={12} />\n * <Text>Right</Text>\n * </Wrapper>\n * ```\n */\nexport function Divider({\n orientation = 'horizontal',\n spacing,\n style,\n}: DividerProps) {\n const tokens = useTokens();\n\n const dividerStyle = React.useMemo(\n () => getDividerStyles(orientation, spacing, tokens),\n [orientation, spacing, tokens]\n );\n\n return (\n <View\n style={[dividerStyle, ...(Array.isArray(style) ? style : style ? [style] : [])]}\n accessibilityRole=\"none\"\n />\n );\n}\n","import type { ViewStyle } from 'react-native';\nimport type { UseTokensResult } from 'newtone-api';\nimport type { ContentCardVariant } from './ContentCard.types';\n\n/**\n * Compute variant-specific styles for ContentCard.\n * Uses `as ViewStyle` for web-only properties (cursor, borderBottomStyle)\n * that react-native-web supports but RN types don't include.\n */\nexport function getContentCardStyles(\n variant: ContentCardVariant,\n isInteractive: boolean,\n tokens: UseTokensResult\n): ViewStyle {\n const dividerColor = tokens.colors.primary.main.divider;\n\n const interactiveStyles = isInteractive\n ? { cursor: 'pointer', textDecorationLine: 'none' } as ViewStyle\n : {} as ViewStyle;\n\n if (variant === 'elevated') {\n return {\n borderRadius: 12,\n ...interactiveStyles,\n } as ViewStyle;\n }\n\n if (variant === 'bordered') {\n return {\n borderWidth: 1,\n borderColor: dividerColor,\n borderStyle: 'solid',\n borderRadius: 12,\n ...interactiveStyles,\n } as ViewStyle;\n }\n\n // flat variant — bottom border only\n return {\n borderBottomWidth: 1,\n borderBottomColor: dividerColor,\n ...interactiveStyles,\n } as ViewStyle;\n}\n","import React from 'react';\nimport type { ContentCardProps } from './ContentCard.types';\nimport { getContentCardStyles } from './ContentCard.styles';\nimport { useTokens } from 'newtone-api';\nimport { Frame } from '../../../primitives/Frame/Frame';\n\n/**\n * ContentCard — A content container with three visual treatments.\n *\n * **Variants:**\n * - `elevated` — raised surface with tinted background (hero cards, featured content)\n * - `bordered` — outlined container (related items, previews)\n * - `flat` — bottom-border only (list rows, compact items)\n *\n * Delegates to Frame for layout, elevation, appearance, and interactivity.\n *\n * @example\n * ```tsx\n * // Elevated hero card\n * <ContentCard variant=\"elevated\" href=\"/articles/intro\">\n * <Text role=\"heading\" weight=\"bold\">Featured Article</Text>\n * <Text role=\"body\" color=\"secondary\">Article excerpt...</Text>\n * </ContentCard>\n *\n * // Bordered card\n * <ContentCard variant=\"bordered\" onPress={() => navigate(slug)}>\n * <Text role=\"body\" weight=\"bold\">Related Article</Text>\n * </ContentCard>\n *\n * // Flat list item\n * <ContentCard variant=\"flat\" href={`/articles/${slug}`}>\n * <Text role=\"body\" weight=\"bold\">{title}</Text>\n * </ContentCard>\n * ```\n */\nexport function ContentCard({\n children,\n variant = 'bordered',\n href,\n onPress,\n padding = 20,\n gap = 8,\n disabled = false,\n style,\n}: ContentCardProps) {\n const tokens = useTokens();\n const isInteractive = !!(href || onPress);\n\n const variantStyles = React.useMemo(\n () => getContentCardStyles(variant, isInteractive, tokens),\n [variant, isInteractive, tokens]\n );\n\n return (\n <Frame\n elevation={variant === 'elevated' ? 2 : undefined}\n appearance={variant === 'elevated' ? 'tinted' : undefined}\n href={href}\n onPress={onPress}\n disabled={disabled}\n padding={padding}\n gap={gap}\n style={[\n variantStyles,\n ...(Array.isArray(style) ? style : style ? [style] : []),\n ]}\n >\n {children}\n </Frame>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nexport function getTextInputStyles(\n tokens: ResolvedTokens,\n disabled: boolean,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: at.fontSecondary,\n },\n input: {\n fontFamily: tokens.typography.fonts.main.family,\n backgroundColor: at.background,\n borderWidth: 1,\n borderColor: at.divider,\n borderRadius: tokens.radius.md,\n paddingVertical: tokens.spacing['08'],\n paddingHorizontal: tokens.spacing['12'],\n fontSize: tokens.typography.fontSizes['05'],\n color: disabled ? at.fontDisabled : at.fontPrimary,\n opacity: disabled ? 0.5 : 1,\n },\n });\n}\n","import React from 'react';\nimport { View, Text, TextInput as RNTextInput } from 'react-native';\nimport type { TextInputProps } from './TextInput.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getTextInputStyles } from './TextInput.styles';\n\nexport function TextInput({\n label,\n disabled = false,\n style,\n ...textInputProps\n}: TextInputProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n const theme = frameCtx?.theme ?? 'primary';\n const appearance = frameCtx?.appearance ?? 'main';\n\n const styles = React.useMemo(\n () => getTextInputStyles(tokens, disabled, theme, appearance),\n [tokens, disabled, theme, appearance]\n );\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <RNTextInput\n style={styles.input}\n editable={!disabled}\n placeholderTextColor={tokens.colors[theme][appearance].fontTertiary}\n {...textInputProps}\n />\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nexport function getPopoverStyles(\n tokens: ResolvedTokens,\n triggerHeight: number,\n offset: number,\n maxHeight: number,\n width: 'trigger' | 'auto' | number,\n isOpen: boolean,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const widthStyle =\n width === 'trigger'\n ? { left: 0 as const, right: 0 as const }\n : typeof width === 'number'\n ? { width, left: 0 as const }\n : { left: 0 as const };\n\n return StyleSheet.create({\n container: {\n position: 'relative',\n zIndex: isOpen ? 999 : 1,\n },\n content: {\n position: 'absolute',\n top: triggerHeight + offset,\n ...widthStyle,\n backgroundColor: at.fontPrimary,\n borderWidth: 1,\n borderColor: at.fontSecondary,\n borderRadius: tokens.radius.md,\n maxHeight,\n zIndex: 1000,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.15,\n shadowRadius: 12,\n elevation: 8,\n },\n });\n}\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { View } from 'react-native';\nimport type { PopoverProps } from './Popover.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getPopoverStyles } from './Popover.styles';\n\n// Module-level: set of close callbacks for all open Popovers.\n// Opening one Popover automatically closes all others.\nconst openPopovers = new Set<() => void>();\n\nexport function Popover({\n isOpen,\n onClose,\n trigger,\n children,\n width = 'trigger',\n maxHeight = 240,\n offset = 4,\n closeOnEscape = true,\n style,\n contentStyle,\n}: PopoverProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n const containerRef = useRef<View>(null);\n const [triggerHeight, setTriggerHeight] = useState(0);\n\n const onTriggerLayout = useCallback(\n (e: { nativeEvent: { layout: { height: number } } }) => {\n setTriggerHeight(e.nativeEvent.layout.height);\n },\n []\n );\n\n // Mutual exclusion: opening this Popover closes all others\n useEffect(() => {\n if (!isOpen) return;\n openPopovers.forEach((closeFn) => closeFn());\n openPopovers.clear();\n openPopovers.add(onClose);\n return () => {\n openPopovers.delete(onClose);\n };\n }, [isOpen, onClose]);\n\n // Click-outside: capture phase so RNW Pressable can't swallow the event.\n // Web-only: on native, document is undefined (click-outside needs a portal/Modal rearchitecture).\n useEffect(() => {\n if (!isOpen) return;\n if (typeof document === 'undefined') return;\n const handleMouseDown = (e: MouseEvent) => {\n const node = containerRef.current as unknown as HTMLElement;\n if (node && !node.contains(e.target as Node)) {\n onClose();\n }\n };\n document.addEventListener('mousedown', handleMouseDown, true);\n return () => document.removeEventListener('mousedown', handleMouseDown, true);\n }, [isOpen, onClose]);\n\n const handleKeyDown = useCallback(\n (e: any) => {\n if (closeOnEscape && e.key === 'Escape') {\n e.stopPropagation();\n onClose();\n }\n },\n [closeOnEscape, onClose]\n );\n\n const styles = useMemo(\n () => getPopoverStyles(tokens, triggerHeight, offset, maxHeight, width, isOpen, frameCtx?.theme, frameCtx?.appearance),\n [tokens, triggerHeight, offset, maxHeight, width, isOpen, frameCtx?.theme, frameCtx?.appearance]\n );\n\n const containerStyles = useMemo(\n () => [styles.container, ...(Array.isArray(style) ? style : style ? [style] : [])],\n [styles.container, style]\n );\n\n const mergedContentStyles = useMemo(\n () => [styles.content, ...(Array.isArray(contentStyle) ? contentStyle : contentStyle ? [contentStyle] : [])],\n [styles.content, contentStyle]\n );\n\n // onKeyDown is a web-only prop supported by react-native-web but not in RN types\n const webProps = { onKeyDown: handleKeyDown } as any;\n\n return (\n <View\n ref={containerRef}\n style={containerStyles}\n {...webProps}\n >\n <View onLayout={onTriggerLayout}>\n {trigger}\n </View>\n\n {isOpen && (\n <View style={mergedContentStyles}>\n {children}\n </View>\n )}\n </View>\n );\n}\n","import { useCallback, useState } from 'react';\nimport type { UsePopoverOptions, UsePopoverReturn } from './Popover.types';\n\nexport function usePopover(options?: UsePopoverOptions): UsePopoverReturn {\n const [isOpen, setIsOpen] = useState(options?.initialOpen ?? false);\n\n const open = useCallback(() => {\n setIsOpen(true);\n options?.onOpenChange?.(true);\n }, [options]);\n\n const close = useCallback(() => {\n setIsOpen(false);\n options?.onOpenChange?.(false);\n }, [options]);\n\n const toggle = useCallback(() => {\n setIsOpen((prev) => {\n const next = !prev;\n options?.onOpenChange?.(next);\n return next;\n });\n }, [options]);\n\n return { isOpen, open, close, toggle };\n}\n","import type { ViewStyle } from 'react-native';\n\nexport interface SelectOption {\n readonly label: string;\n readonly value: string;\n readonly disabled?: boolean;\n}\n\nexport interface SelectOptionGroup {\n readonly label: string;\n readonly options: readonly SelectOption[];\n}\n\nexport type SelectItem = SelectOption | SelectOptionGroup;\n\nexport function isOptionGroup(item: SelectItem): item is SelectOptionGroup {\n return 'options' in item;\n}\n\nexport interface SelectProps {\n /** Flat options or grouped options */\n readonly options: readonly SelectItem[];\n /** Currently selected value */\n readonly value: string;\n /** Callback when selection changes */\n readonly onValueChange: (value: string) => void;\n /** Field label displayed above the trigger */\n readonly label?: string;\n /** Placeholder text when no value is selected */\n readonly placeholder?: string;\n /** Disabled state */\n readonly disabled?: boolean;\n /** Custom render for each option row */\n readonly renderOption?: (\n option: SelectOption,\n state: { readonly isSelected: boolean; readonly isFocused: boolean }\n ) => React.ReactNode;\n /** Custom render for the trigger display text */\n readonly renderValue?: (option: SelectOption | undefined) => React.ReactNode;\n /** Size variant. @default 'md' */\n readonly size?: 'sm' | 'md';\n /** Container style override */\n readonly style?: ViewStyle | ViewStyle[];\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nexport function getSelectStyles(\n tokens: ResolvedTokens,\n disabled: boolean,\n size: 'sm' | 'md',\n isOpen: boolean,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const isSm = size === 'sm';\n const fontSize = isSm ? tokens.typography.fontSizes['04'] : tokens.typography.fontSizes['05'];\n const iconSize = fontSize + 2;\n const iconSpace = iconSize + tokens.spacing['08'];\n const paddingVertical = isSm ? tokens.spacing['04'] : tokens.spacing['08'];\n const paddingHorizontal = isSm ? tokens.spacing['08'] : tokens.spacing['12'];\n\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n zIndex: isOpen ? 999 : 0,\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: at.fontTertiary,\n },\n trigger: {\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: at.fontSecondary,\n borderWidth: 1,\n borderColor: at.fontSecondary,\n borderRadius: tokens.radius.md,\n paddingVertical,\n paddingLeft: paddingHorizontal,\n paddingRight: iconSpace + (isSm ? tokens.spacing['04'] : tokens.spacing['08']),\n opacity: disabled ? 0.5 : 1,\n },\n triggerText: {\n flex: 1,\n fontFamily: tokens.typography.fonts.main.family,\n fontSize,\n color: disabled ? at.fontTertiary : at.divider,\n },\n iconWrapper: {\n position: 'absolute',\n right: isSm ? tokens.spacing['04'] : tokens.spacing['08'],\n top: 0,\n bottom: 0,\n justifyContent: 'center',\n },\n groupLabel: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['01'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: at.fontTertiary,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n paddingVertical: tokens.spacing['04'],\n paddingHorizontal: isSm ? tokens.spacing['08'] : tokens.spacing['12'],\n paddingTop: tokens.spacing['08'],\n },\n });\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport type { SelectOption } from './Select.types';\n\ninterface UseSelectOptions {\n readonly flatOptions: readonly SelectOption[];\n readonly value: string;\n readonly isOpen: boolean;\n readonly onSelect: (value: string) => void;\n readonly onClose: () => void;\n readonly onOpen: () => void;\n}\n\nfunction findNextEnabled(\n options: readonly SelectOption[],\n startIndex: number,\n direction: 1 | -1\n): number {\n const len = options.length;\n if (len === 0) return -1;\n\n for (let i = 1; i <= len; i++) {\n const idx = (startIndex + i * direction + len) % len;\n if (!options[idx].disabled) return idx;\n }\n return -1;\n}\n\nexport function useSelect({\n flatOptions,\n value,\n isOpen,\n onSelect,\n onClose,\n onOpen,\n}: UseSelectOptions) {\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const typeAheadRef = useRef('');\n const typeAheadTimerRef = useRef<ReturnType<typeof setTimeout>>();\n\n // When opening, focus the selected option or first enabled option\n useEffect(() => {\n if (isOpen) {\n const selectedIdx = flatOptions.findIndex((o) => o.value === value);\n if (selectedIdx >= 0 && !flatOptions[selectedIdx].disabled) {\n setFocusedIndex(selectedIdx);\n } else {\n const firstEnabled = flatOptions.findIndex((o) => !o.disabled);\n setFocusedIndex(firstEnabled >= 0 ? firstEnabled : -1);\n }\n } else {\n setFocusedIndex(-1);\n }\n }, [isOpen, flatOptions, value]);\n\n const handleKeyDown = useCallback(\n (e: any) => {\n const key: string = e.key;\n\n // When closed, open on ArrowDown/ArrowUp/Enter/Space\n if (!isOpen) {\n if (key === 'ArrowDown' || key === 'ArrowUp' || key === 'Enter' || key === ' ') {\n e.preventDefault();\n onOpen();\n }\n return;\n }\n\n switch (key) {\n case 'ArrowDown': {\n e.preventDefault();\n const next = findNextEnabled(flatOptions, focusedIndex, 1);\n if (next >= 0) setFocusedIndex(next);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const prev = findNextEnabled(flatOptions, focusedIndex, -1);\n if (prev >= 0) setFocusedIndex(prev);\n break;\n }\n case 'Enter':\n case ' ': {\n e.preventDefault();\n if (focusedIndex >= 0 && !flatOptions[focusedIndex].disabled) {\n onSelect(flatOptions[focusedIndex].value);\n }\n break;\n }\n case 'Escape': {\n e.preventDefault();\n onClose();\n break;\n }\n case 'Home': {\n e.preventDefault();\n const first = flatOptions.findIndex((o) => !o.disabled);\n if (first >= 0) setFocusedIndex(first);\n break;\n }\n case 'End': {\n e.preventDefault();\n const lastEnabled = [...flatOptions].reverse().findIndex((o) => !o.disabled);\n if (lastEnabled >= 0) setFocusedIndex(flatOptions.length - 1 - lastEnabled);\n break;\n }\n default: {\n // Type-ahead: single character matching\n if (key.length === 1 && !e.ctrlKey && !e.metaKey) {\n clearTimeout(typeAheadTimerRef.current);\n typeAheadRef.current += key.toLowerCase();\n\n const match = flatOptions.findIndex(\n (o) => !o.disabled && o.label.toLowerCase().startsWith(typeAheadRef.current)\n );\n if (match >= 0) setFocusedIndex(match);\n\n typeAheadTimerRef.current = setTimeout(() => {\n typeAheadRef.current = '';\n }, 500);\n }\n break;\n }\n }\n },\n [isOpen, focusedIndex, flatOptions, onSelect, onClose, onOpen]\n );\n\n return { focusedIndex, handleKeyDown };\n}\n","import React from 'react';\nimport { Pressable, Text, View } from 'react-native';\nimport type { SelectOption as SelectOptionType, SelectProps } from './Select.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { Icon } from '../../../primitives/Icon/Icon';\n\ninterface SelectOptionRowProps {\n readonly option: SelectOptionType;\n readonly isSelected: boolean;\n readonly isFocused: boolean;\n readonly onSelect: () => void;\n readonly renderOption?: SelectProps['renderOption'];\n readonly size: 'sm' | 'md';\n}\n\nexport function SelectOptionRow({\n option,\n isSelected,\n isFocused,\n onSelect,\n renderOption,\n size,\n}: SelectOptionRowProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n const at = tokens.colors[frameCtx?.theme ?? 'primary'][frameCtx?.appearance ?? 'main'];\n const emphasisAt = tokens.colors[frameCtx?.theme ?? 'primary'].emphasis;\n\n const paddingVertical = size === 'sm' ? tokens.spacing['04'] : tokens.spacing['08'];\n const paddingHorizontal = size === 'sm' ? tokens.spacing['08'] : tokens.spacing['12'];\n const fontSize = size === 'sm' ? tokens.typography.fontSizes['04'] : tokens.typography.fontSizes['05'];\n\n if (renderOption) {\n return (\n <Pressable\n onPress={option.disabled ? undefined : onSelect}\n disabled={option.disabled}\n role=\"option\"\n accessibilityState={{ selected: isSelected }}\n >\n {renderOption(option, { isSelected, isFocused })}\n </Pressable>\n );\n }\n\n return (\n <Pressable\n onPress={option.disabled ? undefined : onSelect}\n disabled={option.disabled}\n role=\"option\"\n accessibilityState={{ selected: isSelected }}\n style={({ pressed }) => [\n {\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n justifyContent: 'space-between' as const,\n paddingVertical,\n paddingHorizontal,\n },\n isSelected && {\n backgroundColor: at.fontSecondary,\n },\n isFocused &&\n !isSelected && {\n backgroundColor: `${at.fontSecondary}20`,\n },\n option.disabled && {\n opacity: 0.5,\n },\n pressed && {\n opacity: 0.7,\n },\n ]}\n >\n <Text\n style={[\n {\n flex: 1,\n fontFamily: tokens.typography.fonts.main.family,\n fontSize,\n color: at.divider,\n },\n isSelected && {\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: emphasisAt.divider,\n },\n option.disabled && {\n color: at.fontTertiary,\n },\n ]}\n numberOfLines={1}\n >\n {option.label}\n </Text>\n {isSelected && (\n <View style={{ marginLeft: tokens.spacing['08'] }}>\n <Icon\n name=\"check\"\n size={fontSize}\n color={emphasisAt.divider}\n />\n </View>\n )}\n </Pressable>\n );\n}\n","import React, { useMemo } from 'react';\nimport { View, Text, Pressable, ScrollView } from 'react-native';\nimport type { SelectProps, SelectOption } from './Select.types';\nimport { isOptionGroup } from './Select.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getSelectStyles } from './Select.styles';\nimport { Icon } from '../../../primitives/Icon/Icon';\nimport { Popover } from '../../overlays/Popover/Popover';\nimport { usePopover } from '../../overlays/Popover/usePopover';\nimport { useSelect } from './useSelect';\nimport { SelectOptionRow } from './SelectOption';\n\nfunction flattenOptions(items: readonly (SelectOption | { readonly label: string; readonly options: readonly SelectOption[] })[]): SelectOption[] {\n const result: SelectOption[] = [];\n for (const item of items) {\n if ('options' in item) {\n result.push(...item.options);\n } else {\n result.push(item);\n }\n }\n return result;\n}\n\nexport function Select({\n options,\n value,\n onValueChange,\n label,\n placeholder,\n disabled = false,\n renderOption,\n renderValue,\n size = 'md',\n style,\n}: SelectProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n const { isOpen, open, close, toggle } = usePopover();\n\n const flatOptions = useMemo(() => flattenOptions(options), [options]);\n\n const { focusedIndex, handleKeyDown } = useSelect({\n flatOptions,\n value,\n isOpen,\n onSelect: (v) => {\n onValueChange(v);\n close();\n },\n onClose: close,\n onOpen: open,\n });\n\n const inheritedTheme = frameCtx?.theme;\n const inheritedAppearance = frameCtx?.appearance;\n\n const styles = useMemo(\n () => getSelectStyles(tokens, disabled, size, isOpen, inheritedTheme, inheritedAppearance),\n [tokens, disabled, size, isOpen, inheritedTheme, inheritedAppearance]\n );\n\n const selectedOption = flatOptions.find((o) => o.value === value);\n const displayLabel = selectedOption?.label ?? placeholder ?? value;\n\n const at = tokens.colors[inheritedTheme ?? 'primary'][inheritedAppearance ?? 'main'];\n const iconColor = disabled ? at.fontTertiary : at.divider;\n\n // onKeyDown is a web-only prop supported by react-native-web but not in RN types\n const triggerWebProps = { onKeyDown: handleKeyDown } as any;\n\n const trigger = (\n <Pressable\n onPress={disabled ? undefined : toggle}\n disabled={disabled}\n role=\"combobox\"\n accessibilityState={{ expanded: isOpen }}\n {...triggerWebProps}\n style={styles.trigger}\n >\n {renderValue ? (\n renderValue(selectedOption)\n ) : (\n <Text style={styles.triggerText} numberOfLines={1}>\n {displayLabel}\n </Text>\n )}\n <View style={styles.iconWrapper} pointerEvents=\"none\">\n <Icon\n name={isOpen ? 'expand_less' : 'expand_more'}\n size={size === 'sm' ? tokens.typography.fontSizes['04'] + 2 : tokens.typography.fontSizes['05'] + 2}\n color={iconColor}\n />\n </View>\n </Pressable>\n );\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : style ? [style] : [])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <Popover\n isOpen={isOpen && !disabled}\n onClose={close}\n trigger={trigger}\n >\n <ScrollView\n bounces={false}\n keyboardShouldPersistTaps=\"handled\"\n role={'listbox' as any}\n >\n {options.map((item) => {\n if (isOptionGroup(item)) {\n return (\n <View key={item.label}>\n <Text style={styles.groupLabel}>{item.label}</Text>\n {item.options.map((opt) => (\n <SelectOptionRow\n key={opt.value}\n option={opt}\n isSelected={opt.value === value}\n isFocused={flatOptions[focusedIndex]?.value === opt.value}\n onSelect={() => {\n onValueChange(opt.value);\n close();\n }}\n renderOption={renderOption}\n size={size}\n />\n ))}\n </View>\n );\n }\n return (\n <SelectOptionRow\n key={item.value}\n option={item}\n isSelected={item.value === value}\n isFocused={flatOptions[focusedIndex]?.value === item.value}\n onSelect={() => {\n onValueChange(item.value);\n close();\n }}\n renderOption={renderOption}\n size={size}\n />\n );\n })}\n </ScrollView>\n </Popover>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nconst TRACK_WIDTH = 40;\nconst TRACK_HEIGHT = 22;\nconst THUMB_SIZE = 18;\nconst THUMB_OFFSET = 2;\n\nexport function getToggleStyles(\n tokens: ResolvedTokens,\n value: boolean,\n disabled: boolean,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const emphasisAt: AppearanceTokens = tokens.colors[theme].emphasis;\n return StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: tokens.spacing['08'],\n opacity: disabled ? 0.5 : 1,\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: at.fontTertiary,\n },\n track: {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n backgroundColor: value\n ? emphasisAt.divider\n : at.fontSecondary,\n justifyContent: 'center',\n paddingHorizontal: THUMB_OFFSET,\n },\n thumb: {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: at.background,\n alignSelf: value ? 'flex-end' : 'flex-start',\n },\n });\n}\n","import React from 'react';\nimport { View, Text, Pressable } from 'react-native';\nimport type { ToggleProps } from './Toggle.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getToggleStyles } from './Toggle.styles';\n\nexport function Toggle({\n value,\n onValueChange,\n label,\n disabled = false,\n style,\n}: ToggleProps) {\n const tokens = useTokens(1);\n const frameCtx = useFrameContext();\n\n const styles = React.useMemo(\n () => getToggleStyles(tokens, value, disabled, frameCtx?.theme, frameCtx?.appearance),\n [tokens, value, disabled, frameCtx?.theme, frameCtx?.appearance]\n );\n\n const handlePress = React.useCallback(() => {\n if (!disabled) {\n onValueChange(!value);\n }\n }, [disabled, value, onValueChange]);\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && <Text style={styles.label}>{label}</Text>}\n <Pressable\n onPress={handlePress}\n disabled={disabled}\n accessibilityRole=\"switch\"\n accessibilityState={{ checked: value, disabled }}\n >\n <View style={styles.track}>\n <View style={styles.thumb} />\n </View>\n </Pressable>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\n\nconst TRACK_HEIGHT = 6;\nexport const THUMB_SIZE = 16;\n\nexport function getSliderStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n opacity: disabled ? 0.5 : 1,\n },\n labelRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.fontTertiary,\n },\n value: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.divider,\n },\n valueInput: {\n width: 48,\n paddingVertical: 0,\n paddingHorizontal: 4,\n borderWidth: 1,\n borderColor: tokens.colors.primary.main.fontSecondary,\n borderRadius: 4,\n backgroundColor: 'transparent',\n color: tokens.colors.primary.main.divider,\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n textAlign: 'right',\n },\n trackContainer: {\n height: TRACK_HEIGHT + THUMB_SIZE,\n justifyContent: 'center',\n position: 'relative',\n },\n trackRail: {\n position: 'absolute',\n left: 0,\n right: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n backgroundColor: tokens.colors.primary.main.fontSecondary,\n },\n trackFill: {\n position: 'absolute',\n left: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n backgroundColor: tokens.colors.primary.emphasis.divider,\n },\n thumb: {\n position: 'absolute',\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: tokens.colors.primary.emphasis.divider,\n },\n });\n}\n","import React from 'react';\nimport { View, Text, TextInput, PanResponder } from 'react-native';\nimport type { SliderProps } from './Slider.types';\nimport { useTokens } from 'newtone-api';\nimport { getSliderStyles, THUMB_SIZE } from './Slider.styles';\n\nexport function Slider({\n value,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n label,\n showValue = false,\n editableValue = false,\n disabled = false,\n style,\n}: SliderProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getSliderStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n const trackRef = React.useRef<View>(null);\n const trackWidth = React.useRef(0);\n const trackPageX = React.useRef(0);\n const [layoutWidth, setLayoutWidth] = React.useState(0);\n\n // Mutable refs to avoid stale closures in PanResponder\n const onValueChangeRef = React.useRef(onValueChange);\n const minRef = React.useRef(min);\n const maxRef = React.useRef(max);\n const stepRef = React.useRef(step);\n const disabledRef = React.useRef(disabled);\n\n React.useEffect(() => { onValueChangeRef.current = onValueChange; }, [onValueChange]);\n React.useEffect(() => { minRef.current = min; }, [min]);\n React.useEffect(() => { maxRef.current = max; }, [max]);\n React.useEffect(() => { stepRef.current = step; }, [step]);\n React.useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n\n const computeValue = React.useCallback((pageX: number) => {\n const localX = pageX - trackPageX.current;\n const ratio = Math.min(1, Math.max(0, localX / trackWidth.current));\n const raw = minRef.current + ratio * (maxRef.current - minRef.current);\n const stepped = Math.round(raw / stepRef.current) * stepRef.current;\n return Math.min(maxRef.current, Math.max(minRef.current, stepped));\n }, []);\n\n const panResponder = React.useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabledRef.current,\n onMoveShouldSetPanResponder: () => !disabledRef.current,\n onPanResponderGrant: (evt) => {\n onValueChangeRef.current(computeValue(evt.nativeEvent.pageX));\n },\n onPanResponderMove: (_evt, gestureState) => {\n onValueChangeRef.current(computeValue(gestureState.moveX));\n },\n })\n ).current;\n\n const ratio = max > min ? (value - min) / (max - min) : 0;\n const usableWidth = Math.max(0, layoutWidth - THUMB_SIZE);\n const thumbLeft = ratio * usableWidth;\n\n // Center-origin fill: when range spans zero, fill extends from center to thumb\n const isCenterOrigin = min < 0 && max > 0;\n let fillLeft: number;\n let fillWidth: number;\n if (isCenterOrigin) {\n const centerRatio = (0 - min) / (max - min);\n const centerX = centerRatio * usableWidth + THUMB_SIZE / 2;\n const thumbCenterX = thumbLeft + THUMB_SIZE / 2;\n fillLeft = Math.min(centerX, thumbCenterX);\n fillWidth = Math.abs(thumbCenterX - centerX);\n } else {\n fillLeft = 0;\n fillWidth = thumbLeft + THUMB_SIZE / 2;\n }\n\n const handleValueTextSubmit = React.useCallback(\n (text: string) => {\n const raw = Number(text);\n if (!Number.isNaN(raw)) {\n onValueChange(Math.min(max, Math.max(min, raw)));\n }\n },\n [onValueChange, min, max]\n );\n\n const [editText, setEditText] = React.useState(String(value));\n React.useEffect(() => { setEditText(String(value)); }, [value]);\n\n const showLabel = label || showValue || editableValue;\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {showLabel && (\n <View style={styles.labelRow}>\n {label && <Text style={styles.label}>{label}</Text>}\n {editableValue ? (\n <TextInput\n style={styles.valueInput}\n value={editText}\n keyboardType=\"numeric\"\n onChangeText={setEditText}\n onSubmitEditing={(e) => handleValueTextSubmit(e.nativeEvent.text)}\n onBlur={() => handleValueTextSubmit(editText)}\n selectTextOnFocus\n editable={!disabled}\n />\n ) : (\n showValue && <Text style={styles.value}>{value}</Text>\n )}\n </View>\n )}\n <View\n ref={trackRef}\n style={styles.trackContainer}\n onLayout={(e) => {\n const w = e.nativeEvent.layout.width;\n trackWidth.current = w;\n setLayoutWidth(w);\n trackRef.current?.measure((_x, _y, _w, _h, pageX) => {\n if (pageX != null) trackPageX.current = pageX;\n });\n }}\n {...panResponder.panHandlers}\n >\n <View style={styles.trackRail} />\n <View style={[styles.trackFill, { left: fillLeft, width: fillWidth }]} />\n <View style={[styles.thumb, { left: thumbLeft }]} />\n </View>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport { srgbToHex, gamutMapToSrgb } from 'newtone';\nimport type { ResolvedTokens } from 'newtone-api';\n\nconst TRACK_HEIGHT = 22;\nexport const THUMB_SIZE = 18;\nconst SEGMENT_COUNT = 48;\nconst OKLCH_L = 0.7;\nconst OKLCH_C = 0.4;\n\n/** Convert an OKLCH hue [0, 360) to a hex string via gamut-mapped rendering. */\nexport function hueToHex(oklchHue: number): string {\n const { color } = gamutMapToSrgb({ L: OKLCH_L, C: OKLCH_C, h: oklchHue });\n return srgbToHex(color);\n}\n\n/** Build an array of hex colors for the gradient track segments. */\nexport function buildHueSegments(min: number, max: number): string[] {\n return Array.from({ length: SEGMENT_COUNT }, (_, i) => {\n const hue = min + (max - min) * (i / (SEGMENT_COUNT - 1));\n return hueToHex(hue);\n });\n}\n\nexport function getHueSliderStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n opacity: disabled ? 0.5 : 1,\n },\n labelRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.fontTertiary,\n },\n value: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.divider,\n },\n valueInput: {\n width: 48,\n paddingVertical: 0,\n paddingHorizontal: 4,\n borderWidth: 1,\n borderColor: tokens.colors.primary.main.fontSecondary,\n borderRadius: 4,\n backgroundColor: 'transparent',\n color: tokens.colors.primary.main.divider,\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n textAlign: 'right',\n },\n trackContainer: {\n height: TRACK_HEIGHT + THUMB_SIZE,\n justifyContent: 'center',\n position: 'relative',\n },\n gradientTrack: {\n position: 'absolute',\n left: 0,\n right: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n flexDirection: 'row',\n overflow: 'hidden',\n },\n segment: {\n flex: 1,\n },\n thumb: {\n position: 'absolute',\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: '#ffffff',\n borderWidth: 2,\n borderColor: tokens.colors.primary.main.fontSecondary,\n },\n });\n}\n","import React from 'react';\nimport { View, Text, TextInput, PanResponder } from 'react-native';\nimport type { HueSliderProps } from './HueSlider.types';\nimport { useTokens } from 'newtone-api';\nimport {\n getHueSliderStyles,\n buildHueSegments,\n THUMB_SIZE,\n} from './HueSlider.styles';\n\n/**\n * Hue slider with rainbow gradient track.\n *\n * Value range: OKLCH hue [0, 360).\n *\n * Optional min/max constrain the selectable range.\n * For wrapping ranges, max may exceed 360;\n * the returned value is always normalized to [0, 360).\n */\nexport function HueSlider({\n value,\n onValueChange,\n min = 0,\n max = 360,\n label,\n showValue = false,\n editableValue = false,\n disabled = false,\n style,\n}: HueSliderProps) {\n const tokens = useTokens(1);\n\n const styles = React.useMemo(\n () => getHueSliderStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n const segments = React.useMemo(\n () => buildHueSegments(min, max),\n [min, max]\n );\n\n const trackRef = React.useRef<View>(null);\n const trackWidth = React.useRef(0);\n const trackPageX = React.useRef(0);\n const [layoutWidth, setLayoutWidth] = React.useState(0);\n\n // Mutable refs to avoid stale closures in PanResponder\n const onValueChangeRef = React.useRef(onValueChange);\n const minRef = React.useRef(min);\n const maxRef = React.useRef(max);\n const disabledRef = React.useRef(disabled);\n\n React.useEffect(() => { onValueChangeRef.current = onValueChange; }, [onValueChange]);\n React.useEffect(() => { minRef.current = min; }, [min]);\n React.useEffect(() => { maxRef.current = max; }, [max]);\n React.useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n\n const computeHue = React.useCallback((pageX: number) => {\n const localX = pageX - trackPageX.current;\n const ratio = Math.min(1, Math.max(0, localX / trackWidth.current));\n const raw = minRef.current + ratio * (maxRef.current - minRef.current);\n const stepped = Math.round(raw);\n return ((stepped % 360) + 360) % 360;\n }, []);\n\n const panResponder = React.useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabledRef.current,\n onMoveShouldSetPanResponder: () => !disabledRef.current,\n onPanResponderGrant: (evt) => {\n onValueChangeRef.current(computeHue(evt.nativeEvent.pageX));\n },\n onPanResponderMove: (_evt, gestureState) => {\n onValueChangeRef.current(computeHue(gestureState.moveX));\n },\n })\n ).current;\n\n // For wrapping ranges (max > 360), convert stored value to slider range\n const sliderValue = max > 360 && value < min ? value + 360 : value;\n const ratio = max > min ? (sliderValue - min) / (max - min) : 0;\n const usableWidth = Math.max(0, layoutWidth - THUMB_SIZE);\n const thumbLeft = ratio * usableWidth;\n\n const handleValueTextSubmit = React.useCallback(\n (text: string) => {\n const raw = Number(text);\n if (!Number.isNaN(raw)) {\n onValueChange(((raw % 360) + 360) % 360);\n }\n },\n [onValueChange]\n );\n\n const [editText, setEditText] = React.useState(String(value));\n React.useEffect(() => { setEditText(String(value)); }, [value]);\n\n const showLabel = label || showValue || editableValue;\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {showLabel && (\n <View style={styles.labelRow}>\n {label && <Text style={styles.label}>{label}</Text>}\n {editableValue ? (\n <TextInput\n style={styles.valueInput}\n value={editText}\n keyboardType=\"numeric\"\n onChangeText={setEditText}\n onSubmitEditing={(e) => handleValueTextSubmit(e.nativeEvent.text)}\n onBlur={() => handleValueTextSubmit(editText)}\n selectTextOnFocus\n editable={!disabled}\n />\n ) : (\n showValue && <Text style={styles.value}>{value}°</Text>\n )}\n </View>\n )}\n <View\n ref={trackRef}\n style={styles.trackContainer}\n onLayout={(e) => {\n const w = e.nativeEvent.layout.width;\n trackWidth.current = w;\n setLayoutWidth(w);\n trackRef.current?.measure((_x, _y, _w, _h, pageX) => {\n if (pageX != null) trackPageX.current = pageX;\n });\n }}\n {...panResponder.panHandlers}\n >\n <View style={styles.gradientTrack}>\n {segments.map((color, i) => (\n <View key={i} style={[styles.segment, { backgroundColor: color }]} />\n ))}\n </View>\n <View style={[styles.thumb, { left: thumbLeft }]} />\n </View>\n </View>\n );\n}\n","// ── sRGB Gamma Transfer (IEC 61966-2-1) ──\n\nexport const SRGB_GAMMA_THRESHOLD = 0.04045;\nexport const SRGB_GAMMA_THRESHOLD_LINEAR = 0.0031308;\nexport const SRGB_GAMMA_SLOPE = 12.92;\nexport const SRGB_GAMMA_EXPONENT = 2.4;\nexport const SRGB_GAMMA_OFFSET = 0.055;\nexport const SRGB_GAMMA_SCALE = 1.055;\n\n// ── Ottosson M1: Linear sRGB → LMS ──\n\nexport const LINEAR_SRGB_TO_LMS = [\n [0.4122214708, 0.5363325363, 0.0514459929],\n [0.2119034982, 0.6806995451, 0.1073969566],\n [0.0883024619, 0.2817188376, 0.6299787005],\n] as const;\n\n// ── Ottosson M2: LMS′ (cube-root) → OKLAB ──\n\nexport const LMS_PRIME_TO_OKLAB = [\n [+0.2104542553, +0.7936177850, -0.0040720468],\n [+1.9779984951, -2.4285922050, +0.4505937099],\n [+0.0259040371, +0.7827717662, -0.8086757660],\n] as const;\n\n// ── Inverse M2: OKLAB → LMS′ ──\n\nexport const OKLAB_TO_LMS_PRIME = [\n [1.0000000000, +0.3963377774, +0.2158037573],\n [1.0000000000, -0.1055613458, -0.0638541728],\n [1.0000000000, -0.0894841775, -1.2914855480],\n] as const;\n\n// ── Inverse M1: LMS → Linear sRGB ──\n\nexport const LMS_TO_LINEAR_SRGB = [\n [+4.0767416621, -3.3077115913, +0.2309699292],\n [-1.2684380046, +2.6097574011, -0.3413193965],\n [-0.0041960863, -0.7034186147, +1.7076147010],\n] as const;\n\n// ── Display P3 M1: Linear Display P3 → LMS ──\n// Derived: XYZ_to_LMS × P3_to_XYZ, where XYZ_to_LMS = M1_srgb × inv(sRGB_to_XYZ)\n\nexport const LINEAR_P3_TO_LMS = [\n [+0.4813791595, +0.4621155872, +0.0565406381],\n [+0.2288319169, +0.6532167007, +0.1179528072],\n [+0.0839457149, +0.2241651052, +0.6918912614],\n] as const;\n\n// ── Inverse P3 M1: LMS → Linear Display P3 ──\n\nexport const LMS_TO_LINEAR_P3 = [\n [+3.1277694390, -2.2570600176, +0.1291828502],\n [-1.0910091977, +2.4133065499, -0.3222615148],\n [-0.0260108068, -0.5080402362, +1.5340494942],\n] as const;\n\n// ── Gamut Mapping ──\n\nexport const GAMUT_EPSILON = 1e-6;\nexport const GAMUT_MAP_JND = 0.02;\nexport const GAMUT_MAP_EPSILON = 1e-4;\nexport const GAMUT_MAP_MAX_ITERATIONS = 50;\n\n// ── Achromatic Threshold ──\n\nexport const ACHROMATIC_THRESHOLD = 1e-10;\n\n// ── WCAG 2.x Luminance Coefficients ──\n\nexport const WCAG_R = 0.2126;\nexport const WCAG_G = 0.7152;\nexport const WCAG_B = 0.0722;\n\n// ── APCA-W3 (SA98G) Constants ──\n\nexport const APCA_MAIN_TRC = 2.4;\nexport const APCA_SRGB_R = 0.2126729;\nexport const APCA_SRGB_G = 0.7151522;\nexport const APCA_SRGB_B = 0.0721750;\nexport const APCA_NORM_BG = 0.56;\nexport const APCA_NORM_TXT = 0.57;\nexport const APCA_REV_TXT = 0.62;\nexport const APCA_REV_BG = 0.65;\nexport const APCA_BLK_THRS = 0.022;\nexport const APCA_BLK_CLMP = 1.414;\nexport const APCA_SCALE_BOW = 1.14;\nexport const APCA_SCALE_WOB = 1.14;\nexport const APCA_LO_BOW_OFFSET = 0.027;\nexport const APCA_LO_WOB_OFFSET = 0.027;\nexport const APCA_DELTA_Y_MIN = 0.0005;\nexport const APCA_LO_CLIP = 0.1;\n\n// ── Angle Math ──\n\nexport const DEG_TO_RAD = Math.PI / 180;\nexport const RAD_TO_DEG = 180 / Math.PI;\n","import type { Oklab, Oklch } from \"../types.js\";\nimport { ACHROMATIC_THRESHOLD, DEG_TO_RAD, RAD_TO_DEG } from \"../constants.js\";\n\n/** Convert OKLAB (cartesian) to OKLCH (cylindrical). Achromatic colors get h=0. */\nexport function oklabToOklch(lab: Oklab): Oklch {\n const C = Math.sqrt(lab.a * lab.a + lab.b * lab.b);\n\n if (C < ACHROMATIC_THRESHOLD) {\n return { L: lab.L, C: 0, h: 0 };\n }\n\n let h = Math.atan2(lab.b, lab.a) * RAD_TO_DEG;\n if (h < 0) h += 360;\n\n return { L: lab.L, C, h };\n}\n\n/** Convert OKLCH (cylindrical) to OKLAB (cartesian). */\nexport function oklchToOklab(lch: Oklch): Oklab {\n const hRad = lch.h * DEG_TO_RAD;\n return {\n L: lch.L,\n a: lch.C * Math.cos(hRad),\n b: lch.C * Math.sin(hRad),\n };\n}\n","import type { LinearSrgb, Oklab } from \"../types.js\";\nimport {\n LINEAR_P3_TO_LMS,\n LMS_PRIME_TO_OKLAB,\n LMS_TO_LINEAR_P3,\n OKLAB_TO_LMS_PRIME,\n} from \"../constants.js\";\n\n/** Convert Linear Display P3 to OKLAB via P3-specific M1 + shared M2. */\nexport function linearP3ToOklab(color: LinearSrgb): Oklab {\n // Step 1: Linear P3 → LMS\n const l =\n LINEAR_P3_TO_LMS[0][0] * color.r +\n LINEAR_P3_TO_LMS[0][1] * color.g +\n LINEAR_P3_TO_LMS[0][2] * color.b;\n const m =\n LINEAR_P3_TO_LMS[1][0] * color.r +\n LINEAR_P3_TO_LMS[1][1] * color.g +\n LINEAR_P3_TO_LMS[1][2] * color.b;\n const s =\n LINEAR_P3_TO_LMS[2][0] * color.r +\n LINEAR_P3_TO_LMS[2][1] * color.g +\n LINEAR_P3_TO_LMS[2][2] * color.b;\n\n // Step 2: Cube root\n const lp = Math.cbrt(l);\n const mp = Math.cbrt(m);\n const sp = Math.cbrt(s);\n\n // Step 3: LMS′ → OKLAB (shared M2)\n return {\n L:\n LMS_PRIME_TO_OKLAB[0][0] * lp +\n LMS_PRIME_TO_OKLAB[0][1] * mp +\n LMS_PRIME_TO_OKLAB[0][2] * sp,\n a:\n LMS_PRIME_TO_OKLAB[1][0] * lp +\n LMS_PRIME_TO_OKLAB[1][1] * mp +\n LMS_PRIME_TO_OKLAB[1][2] * sp,\n b:\n LMS_PRIME_TO_OKLAB[2][0] * lp +\n LMS_PRIME_TO_OKLAB[2][1] * mp +\n LMS_PRIME_TO_OKLAB[2][2] * sp,\n };\n}\n\n/** Convert OKLAB to Linear Display P3 via shared inverse M2 + P3-specific inverse M1. */\nexport function oklabToLinearP3(color: Oklab): LinearSrgb {\n // Step 1: OKLAB → LMS′ (shared inverse M2)\n const lp =\n OKLAB_TO_LMS_PRIME[0][0] * color.L +\n OKLAB_TO_LMS_PRIME[0][1] * color.a +\n OKLAB_TO_LMS_PRIME[0][2] * color.b;\n const mp =\n OKLAB_TO_LMS_PRIME[1][0] * color.L +\n OKLAB_TO_LMS_PRIME[1][1] * color.a +\n OKLAB_TO_LMS_PRIME[1][2] * color.b;\n const sp =\n OKLAB_TO_LMS_PRIME[2][0] * color.L +\n OKLAB_TO_LMS_PRIME[2][1] * color.a +\n OKLAB_TO_LMS_PRIME[2][2] * color.b;\n\n // Step 2: Cube\n const l = lp * lp * lp;\n const m = mp * mp * mp;\n const s = sp * sp * sp;\n\n // Step 3: LMS → Linear P3\n return {\n r:\n LMS_TO_LINEAR_P3[0][0] * l +\n LMS_TO_LINEAR_P3[0][1] * m +\n LMS_TO_LINEAR_P3[0][2] * s,\n g:\n LMS_TO_LINEAR_P3[1][0] * l +\n LMS_TO_LINEAR_P3[1][1] * m +\n LMS_TO_LINEAR_P3[1][2] * s,\n b:\n LMS_TO_LINEAR_P3[2][0] * l +\n LMS_TO_LINEAR_P3[2][1] * m +\n LMS_TO_LINEAR_P3[2][2] * s,\n };\n}\n","import type { LinearSrgb, Srgb } from \"../types.js\";\nimport {\n SRGB_GAMMA_EXPONENT,\n SRGB_GAMMA_OFFSET,\n SRGB_GAMMA_SCALE,\n SRGB_GAMMA_SLOPE,\n SRGB_GAMMA_THRESHOLD,\n SRGB_GAMMA_THRESHOLD_LINEAR,\n} from \"../constants.js\";\n\n/** Decode a single sRGB gamma-encoded channel to linear light. */\nexport function srgbChannelToLinear(value: number): number {\n return value <= SRGB_GAMMA_THRESHOLD\n ? value / SRGB_GAMMA_SLOPE\n : ((value + SRGB_GAMMA_OFFSET) / SRGB_GAMMA_SCALE) ** SRGB_GAMMA_EXPONENT;\n}\n\n/** Encode a single linear light channel to sRGB gamma. */\nexport function linearChannelToSrgb(value: number): number {\n return value <= SRGB_GAMMA_THRESHOLD_LINEAR\n ? value * SRGB_GAMMA_SLOPE\n : SRGB_GAMMA_SCALE * value ** (1 / SRGB_GAMMA_EXPONENT) - SRGB_GAMMA_OFFSET;\n}\n\n/** Convert an sRGB color to Linear sRGB. */\nexport function srgbToLinearSrgb(color: Srgb): LinearSrgb {\n return {\n r: srgbChannelToLinear(color.r),\n g: srgbChannelToLinear(color.g),\n b: srgbChannelToLinear(color.b),\n };\n}\n\n/** Convert a Linear sRGB color to sRGB. */\nexport function linearSrgbToSrgb(color: LinearSrgb): Srgb {\n return {\n r: linearChannelToSrgb(color.r),\n g: linearChannelToSrgb(color.g),\n b: linearChannelToSrgb(color.b),\n };\n}\n","import type { Hex, Oklab, Oklch, Srgb } from \"../types.js\";\nimport { oklabToOklch, oklchToOklab } from \"./oklab.js\";\nimport { linearSrgbToOklab, oklabToLinearSrgb } from \"./linear-srgb.js\";\nimport { linearP3ToOklab, oklabToLinearP3 } from \"./linear-p3.js\";\nimport { linearSrgbToSrgb, srgbToLinearSrgb } from \"./srgb.js\";\nimport { hexToSrgb, srgbToHex } from \"./hex.js\";\n\n/** Convert sRGB to OKLCH. */\nexport function srgbToOklch(color: Srgb): Oklch {\n return oklabToOklch(linearSrgbToOklab(srgbToLinearSrgb(color)));\n}\n\n/** Convert OKLCH to sRGB. May produce out-of-gamut values (channels outside [0,1]). */\nexport function oklchToSrgb(color: Oklch): Srgb {\n return linearSrgbToSrgb(oklabToLinearSrgb(oklchToOklab(color)));\n}\n\n/** Convert sRGB to OKLAB. */\nexport function srgbToOklab(color: Srgb): Oklab {\n return linearSrgbToOklab(srgbToLinearSrgb(color));\n}\n\n/** Convert OKLAB to sRGB. May produce out-of-gamut values. */\nexport function oklabToSrgb(color: Oklab): Srgb {\n return linearSrgbToSrgb(oklabToLinearSrgb(color));\n}\n\n/** Convert hex to OKLCH. */\nexport function hexToOklch(hex: string): Oklch {\n return srgbToOklch(hexToSrgb(hex));\n}\n\n/** Convert OKLCH to hex. Clamps to sRGB gamut before hex encoding. */\nexport function oklchToHex(color: Oklch): Hex {\n const srgb = oklchToSrgb(color);\n return srgbToHex({\n r: Math.max(0, Math.min(1, srgb.r)),\n g: Math.max(0, Math.min(1, srgb.g)),\n b: Math.max(0, Math.min(1, srgb.b)),\n });\n}\n\n/** Convert Display P3 to OKLCH. */\nexport function p3ToOklch(color: Srgb): Oklch {\n return oklabToOklch(linearP3ToOklab(srgbToLinearSrgb(color)));\n}\n\n/** Convert OKLCH to Display P3. May produce out-of-gamut values (channels outside [0,1]). */\nexport function oklchToP3(color: Oklch): Srgb {\n return linearSrgbToSrgb(oklabToLinearP3(oklchToOklab(color)));\n}\n\n/** Convert OKLCH to a CSS `color(display-p3 r g b)` string. Clamps channels to [0,1]. */\nexport function oklchToP3Css(color: Oklch): string {\n const p3 = oklchToP3(color);\n const r = Math.max(0, Math.min(1, p3.r)).toFixed(4);\n const g = Math.max(0, Math.min(1, p3.g)).toFixed(4);\n const b = Math.max(0, Math.min(1, p3.b)).toFixed(4);\n return `color(display-p3 ${r} ${g} ${b})`;\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens } from 'newtone-api';\n\nconst TRACK_HEIGHT = 22;\nexport const THUMB_SIZE = 18;\n\nexport function getColorScaleSliderStyles(tokens: ResolvedTokens, disabled: boolean) {\n return StyleSheet.create({\n container: {\n gap: tokens.spacing['04'],\n opacity: disabled ? 0.5 : 1,\n },\n labelRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n label: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['04'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.primary.main.fontTertiary,\n },\n trackContainer: {\n height: TRACK_HEIGHT + THUMB_SIZE,\n justifyContent: 'center',\n position: 'relative',\n },\n gradientTrack: {\n position: 'absolute',\n left: 0,\n right: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n flexDirection: 'row',\n overflow: 'hidden',\n },\n segment: {\n flex: 1,\n },\n thumb: {\n position: 'absolute',\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: '#ffffff',\n borderWidth: 2,\n borderColor: tokens.colors.primary.main.fontSecondary,\n },\n warning: {\n fontFamily: tokens.typography.fonts.main.family,\n fontSize: tokens.typography.fontSizes['01'],\n fontWeight: tokens.typography.fonts.main.weights.medium as any,\n color: tokens.colors.error.emphasis.divider,\n },\n });\n}\n\nexport { TRACK_HEIGHT };\n","import React from 'react';\nimport { View, Text, PanResponder, Animated } from 'react-native';\nimport { srgbToHex } from 'newtone';\nimport { oklchToP3Css } from '@newtonedev/colors';\nimport type { Oklch } from '@newtonedev/colors';\nimport type { ColorScaleSliderProps } from './ColorScaleSlider.types';\nimport { useTokens, useNewtoneTheme } from 'newtone-api';\nimport { getColorScaleSliderStyles, THUMB_SIZE } from './ColorScaleSlider.styles';\n\n/**\n * Interactive color scale slider.\n *\n * Renders an array of colors as the track (lightest on left, darkest on right)\n * with a draggable thumb. The value is a normalizedValue [0, 1] where\n * 0 = darkest (right) and 1 = lightest (left).\n *\n * Used by PalettePanel for key color selection on non-neutral palettes.\n */\nexport function ColorScaleSlider({\n colors,\n value,\n onValueChange,\n label,\n warning,\n trimEnds = false,\n snap = false,\n disabled = false,\n animateValue = false,\n useP3: _useP3,\n style,\n}: ColorScaleSliderProps) {\n const tokens = useTokens(1);\n const { gamut } = useNewtoneTheme();\n\n const styles = React.useMemo(\n () => getColorScaleSliderStyles(tokens, disabled),\n [tokens, disabled]\n );\n\n const trackRef = React.useRef<View>(null);\n const trackWidth = React.useRef(0);\n const trackPageX = React.useRef(0);\n const isDragging = React.useRef(false);\n const thumbAnim = React.useRef(new Animated.Value(0)).current;\n const [layoutWidth, setLayoutWidth] = React.useState(0);\n\n // Mutable refs to avoid stale closures in PanResponder\n const onValueChangeRef = React.useRef(onValueChange);\n const disabledRef = React.useRef(disabled);\n const colorsLengthRef = React.useRef(colors.length);\n const trimEndsRef = React.useRef(trimEnds);\n const snapRef = React.useRef(snap);\n\n React.useEffect(() => { onValueChangeRef.current = onValueChange; }, [onValueChange]);\n React.useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n React.useEffect(() => { colorsLengthRef.current = colors.length; }, [colors.length]);\n React.useEffect(() => { trimEndsRef.current = trimEnds; }, [trimEnds]);\n React.useEffect(() => { snapRef.current = snap; }, [snap]);\n\n const computeNv = React.useCallback((pageX: number) => {\n const localX = pageX - trackPageX.current;\n const ratio = Math.min(1, Math.max(0, localX / trackWidth.current));\n const totalSteps = colorsLengthRef.current - 1;\n const minNV = trimEndsRef.current ? 1 / totalSteps : 0;\n const maxNV = trimEndsRef.current ? 1 - 1 / totalSteps : 1;\n const range = maxNV - minNV;\n\n // Left = lightest (maxNV), right = darkest (minNV)\n let nv = maxNV - ratio * range;\n\n if (snapRef.current && totalSteps > 0) {\n const stepNv = 1 / totalSteps;\n nv = Math.round(nv / stepNv) * stepNv;\n nv = Math.min(maxNV, Math.max(minNV, nv));\n }\n\n return nv;\n }, []);\n\n const panResponder = React.useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabledRef.current,\n onMoveShouldSetPanResponder: () => !disabledRef.current,\n onPanResponderGrant: (evt) => {\n isDragging.current = true;\n onValueChangeRef.current(computeNv(evt.nativeEvent.pageX));\n },\n onPanResponderMove: (_evt, gestureState) => {\n onValueChangeRef.current(computeNv(gestureState.moveX));\n },\n onPanResponderRelease: () => {\n isDragging.current = false;\n },\n onPanResponderTerminate: () => {\n isDragging.current = false;\n },\n })\n ).current;\n\n // Visible colors: trim interpolation endpoints if requested\n const visibleColors = trimEnds ? colors.slice(1, -1) : colors;\n\n // Thumb position mapped to the visible range\n const totalSteps = colors.length - 1;\n const minNV = trimEnds ? 1 / totalSteps : 0;\n const maxNV = trimEnds ? 1 - 1 / totalSteps : 1;\n const range = maxNV - minNV;\n const clampedValue = value !== undefined\n ? Math.min(maxNV, Math.max(minNV, value))\n : (maxNV + minNV) / 2;\n const ratio = range > 0 ? (maxNV - clampedValue) / range : 0.5;\n const usableWidth = Math.max(0, layoutWidth - THUMB_SIZE);\n const thumbLeft = ratio * usableWidth;\n\n // Sync animated thumb position: animate on prop-driven changes, instant during drag\n React.useEffect(() => {\n if (isDragging.current || !animateValue) {\n thumbAnim.setValue(thumbLeft);\n } else {\n Animated.timing(thumbAnim, {\n toValue: thumbLeft,\n duration: 300,\n useNativeDriver: false,\n }).start();\n }\n }, [thumbLeft, animateValue, thumbAnim]);\n\n return (\n <View style={[styles.container, ...(Array.isArray(style) ? style : [style])]}>\n {label && (\n <View style={styles.labelRow}>\n <Text style={styles.label}>{label}</Text>\n </View>\n )}\n <View\n ref={trackRef}\n style={styles.trackContainer}\n onLayout={(e) => {\n const w = e.nativeEvent.layout.width;\n trackWidth.current = w;\n setLayoutWidth(w);\n trackRef.current?.measure((_x, _y, _w, _h, pageX) => {\n if (pageX != null) trackPageX.current = pageX;\n });\n }}\n {...panResponder.panHandlers}\n >\n <View style={styles.gradientTrack}>\n {visibleColors.map((color, i) => (\n <View key={i} style={[styles.segment, { backgroundColor: gamut === 'p3' ? oklchToP3Css(color.oklch) : srgbToHex(color.srgb) }]} />\n ))}\n </View>\n <Animated.View style={[styles.thumb, { left: thumbAnim }]} />\n </View>\n {warning && (\n <Text style={styles.warning}>{warning}</Text>\n )}\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\nexport function getAppShellStyles(\n tokens: ResolvedTokens,\n theme: ThemeName = 'primary',\n appearance: AppearanceName = 'main',\n) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n return StyleSheet.create({\n container: {\n flex: 1,\n flexDirection: 'row',\n overflow: 'hidden',\n backgroundColor: at.background,\n },\n main: {\n flex: 1,\n flexDirection: 'column',\n minWidth: 0,\n overflow: 'hidden',\n },\n });\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport type { AppShellProps } from './AppShell.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getAppShellStyles } from './AppShell.styles';\n\nexport function AppShell({ sidebar, children }: AppShellProps) {\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n const styles = React.useMemo(\n () => getAppShellStyles(tokens, frameCtx?.theme, frameCtx?.appearance),\n [tokens, frameCtx?.theme, frameCtx?.appearance]\n );\n\n return (\n <View style={styles.container}>\n {sidebar}\n <View style={styles.main}>{children}</View>\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\ninterface SidebarStyleInput {\n readonly tokens: ResolvedTokens;\n readonly width: number;\n readonly bordered: boolean;\n readonly theme?: ThemeName;\n readonly appearance?: AppearanceName;\n}\n\nexport function getSidebarStyles({ tokens, width, bordered, theme = 'primary', appearance = 'main' }: SidebarStyleInput) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const borderColor = at.fontSecondary;\n\n return StyleSheet.create({\n container: {\n width,\n flexShrink: 0,\n flexDirection: 'column',\n backgroundColor: at.background,\n borderRightWidth: bordered ? 1 : 0,\n borderRightColor: borderColor,\n },\n header: {\n flexShrink: 0,\n borderBottomWidth: 1,\n borderBottomColor: borderColor,\n },\n body: {\n flex: 1,\n },\n footer: {\n flexShrink: 0,\n borderTopWidth: 1,\n borderTopColor: borderColor,\n },\n });\n}\n","import React from 'react';\nimport { View, ScrollView } from 'react-native';\nimport type { SidebarProps } from './Sidebar.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getSidebarStyles } from './Sidebar.styles';\n\nexport function Sidebar({\n children,\n header,\n footer,\n width = 260,\n bordered = true,\n}: SidebarProps) {\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n const styles = React.useMemo(\n () => getSidebarStyles({ tokens, width, bordered, theme: frameCtx?.theme, appearance: frameCtx?.appearance }),\n [tokens, width, bordered, frameCtx?.theme, frameCtx?.appearance]\n );\n\n return (\n <View style={styles.container}>\n {header && <View style={styles.header}>{header}</View>}\n <ScrollView style={styles.body}>{children}</ScrollView>\n {footer && <View style={styles.footer}>{footer}</View>}\n </View>\n );\n}\n","import { StyleSheet } from 'react-native';\nimport type { ResolvedTokens, AppearanceTokens, ThemeName, AppearanceName } from 'newtone-api';\n\ninterface NavbarStyleInput {\n readonly tokens: ResolvedTokens;\n readonly height: number;\n readonly bordered: boolean;\n readonly theme?: ThemeName;\n readonly appearance?: AppearanceName;\n}\n\nexport function getNavbarStyles({ tokens, height, bordered, theme = 'primary', appearance = 'main' }: NavbarStyleInput) {\n const at: AppearanceTokens = tokens.colors[theme][appearance];\n const borderColor = at.fontSecondary;\n\n return StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n height,\n flexShrink: 0,\n paddingHorizontal: 24,\n backgroundColor: at.background,\n borderBottomWidth: bordered ? 1 : 0,\n borderBottomColor: borderColor,\n },\n left: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n },\n right: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n });\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport type { NavbarProps } from './Navbar.types';\nimport { useTokens, useFrameContext } from 'newtone-api';\nimport { getNavbarStyles } from './Navbar.styles';\n\nexport function Navbar({\n children,\n left,\n right,\n height = 56,\n bordered = true,\n}: NavbarProps) {\n const tokens = useTokens();\n const frameCtx = useFrameContext();\n const styles = React.useMemo(\n () => getNavbarStyles({ tokens, height, bordered, theme: frameCtx?.theme, appearance: frameCtx?.appearance }),\n [tokens, height, bordered, frameCtx?.theme, frameCtx?.appearance]\n );\n\n return (\n <View style={styles.container}>\n {children ? (\n children\n ) : (\n <>\n <View style={styles.left}>{left}</View>\n <View style={styles.right}>{right}</View>\n </>\n )}\n </View>\n );\n}\n","import React from 'react';\nimport type { LogoMonogramProps } from './LogoMonogram.types';\n\n/**\n * Newtone monogram — the \"N\" symbol mark rendered as an SVG.\n *\n * The fill color is derived from `colorValue` (0 = black, 255 = white),\n * allowing smooth animated transitions between light and dark contexts.\n */\nexport function LogoMonogram({ colorValue = 0, size = 32 }: LogoMonogramProps) {\n // Convert the 0–255 grayscale value to an rgb() string.\n const fg = `rgb(${colorValue}, ${colorValue}, ${colorValue})`;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 168 168\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M39.3574 70H12L20 84H36L30.2681 94.0309C28.8627 96.4903 28.8627 99.5096 30.2681 101.969L36 112L49.7319 87.9691C51.1373 85.5097 51.1373 82.4903 49.7319 80.0309L46.3034 74.0309C44.879 71.5383 42.2283 70 39.3574 70Z\" fill={fg} />\n <path d=\"M84 112H36L41.6966 121.969C43.121 124.462 45.7717 126 48.6426 126H79.3574C82.2283 126 84.879 124.462 86.3034 121.969L93.7319 108.969C95.1373 106.51 95.1373 103.49 93.7319 101.031L84 84L76 98L84 112Z\" fill={fg} />\n <path d=\"M76 70L84 84H64.6426C61.7717 84 59.121 82.4617 57.6966 79.9691L50.268 66.9691C48.8626 64.5097 48.8626 61.4903 50.268 59.0309L65.6966 32.0309C67.121 29.5383 69.7717 28 72.6426 28H84L60 70H76Z\" fill={fg} />\n <path d=\"M95.3574 28H84L132 112L137.732 101.969C139.137 99.5097 139.137 96.4903 137.732 94.0309L102.303 32.0309C100.879 29.5383 98.2283 28 95.3574 28Z\" fill={fg} />\n <path d=\"M104.643 112H132L126.303 121.969C124.879 124.462 122.228 126 119.357 126H108L116 140L108 154L94.268 129.969C92.8626 127.51 92.8626 124.49 94.268 122.031L97.6966 116.031C99.121 113.538 101.772 112 104.643 112Z\" fill={fg} />\n </svg>\n );\n}\n","import React from 'react';\nimport type { LogoWordmarkProps } from './LogoWordmark.types';\n\n/**\n * Newtone wordmark — the full \"NEWTONE\" text rendered as an SVG.\n *\n * Fixed height of 32px with proportional width derived from the viewBox.\n */\nexport function LogoWordmark({ fill = 'black' }: LogoWordmarkProps) {\n return (\n <svg\n height={32}\n viewBox=\"0 0 504 168\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M8 126H22V42H14.4C12.1598 42 11.0397 42 10.184 42.436C9.43139 42.8195 8.81947 43.4314 8.43597 44.184C8 45.0397 8 46.1598 8 48.4V126Z\" fill={fill} />\n <path d=\"M76 108.5V42H90V119.6C90 121.84 90 122.96 89.564 123.816C89.1805 124.569 88.5686 125.181 87.816 125.564C86.9603 126 85.8402 126 83.6 126H77.4281C74.7227 126 73.37 126 72.1603 125.605C71.0899 125.256 70.1054 124.684 69.271 123.928C68.328 123.074 67.6569 121.9 66.3146 119.551L22 42H30.5719C33.2773 42 34.63 42 35.8397 42.3949C36.9101 42.7442 37.8946 43.3156 38.729 44.0716C39.672 44.926 40.3431 46.1005 41.6854 48.4494L76 108.5Z\" fill={fill} />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M152.208 68.2077C153.395 69.3951 153.989 69.9888 154.439 70.6738C154.838 71.2814 155.152 71.9406 155.374 72.6332C155.623 73.4139 155.711 74.2489 155.886 75.9189L156.884 85.3951C157.27 89.0678 157.464 90.9042 156.867 92.3245C156.343 93.5721 155.412 94.6057 154.226 95.2577C152.876 96 151.03 96 147.337 96H112V114H154V126H115.302C113.345 126 112.367 126 111.446 125.779C110.63 125.583 109.849 125.26 109.134 124.821C108.326 124.326 107.635 123.635 106.251 122.251L101.749 117.749C100.365 116.365 99.6736 115.674 99.1789 114.866C98.7402 114.151 98.417 113.37 98.221 112.554C98 111.633 98 110.655 98 108.698V75.3019C98 73.3452 98 72.3668 98.221 71.4461C98.417 70.6299 98.7402 69.8495 99.1789 69.1337C99.6736 68.3264 100.365 67.6346 101.749 66.251L106.251 61.749C107.635 60.3654 108.326 59.6736 109.134 59.1789C109.849 58.7402 110.63 58.417 111.446 58.221C112.367 58 113.345 58 115.302 58H136.698C138.655 58 139.633 58 140.554 58.221C141.37 58.417 142.151 58.7402 142.866 59.1789C143.674 59.6736 144.365 60.3654 145.749 61.749L152.208 68.2077ZM112 70V87.5332L144.492 86.4502L141.895 70H112Z\" fill={fill} />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M492.208 68.2077C493.395 69.3951 493.989 69.9888 494.439 70.6738C494.838 71.2814 495.152 71.9406 495.374 72.6332C495.623 73.4139 495.711 74.2489 495.886 75.9189L496.884 85.3951C497.27 89.0678 497.464 90.9042 496.867 92.3245C496.343 93.5721 495.412 94.6057 494.226 95.2577C492.876 96 491.03 96 487.337 96H452V114H494V126H455.302C453.345 126 452.367 126 451.446 125.779C450.63 125.583 449.849 125.26 449.134 124.821C448.326 124.326 447.635 123.635 446.251 122.251L441.749 117.749C440.365 116.365 439.674 115.674 439.179 114.866C438.74 114.151 438.417 113.37 438.221 112.554C438 111.633 438 110.655 438 108.698V75.3019C438 73.3452 438 72.3668 438.221 71.4461C438.417 70.6299 438.74 69.8495 439.179 69.1337C439.674 68.3264 440.365 67.6346 441.749 66.251L446.251 61.749C447.635 60.3654 448.326 59.6736 449.134 59.1789C449.849 58.7402 450.63 58.417 451.446 58.221C452.367 58 453.345 58 455.302 58H476.698C478.655 58 479.633 58 480.554 58.221C481.37 58.417 482.151 58.7402 482.866 59.1789C483.674 59.6736 484.365 60.3654 485.749 61.749L492.208 68.2077ZM452 70V87.5332L484.492 86.4502L481.895 70H452Z\" fill={fill} />\n <path d=\"M168.794 117.797L160 58H174L184 126H178.291C175.35 126 173.88 126 172.695 125.46C171.651 124.984 170.765 124.219 170.142 123.255C169.435 122.161 169.222 120.706 168.794 117.797Z\" fill={fill} />\n <path d=\"M192.794 66.2033L184 126H187.674C190.626 126 192.102 126 193.29 125.457C194.337 124.979 195.224 124.209 195.846 123.241C196.551 122.141 196.76 120.68 197.177 117.758L204 70L210.823 117.758C211.24 120.68 211.449 122.141 212.154 123.241C212.776 124.209 213.663 124.979 214.71 125.457C215.898 126 217.374 126 220.326 126H224L215.206 66.2033C214.778 63.2936 214.565 61.8387 213.858 60.7448C213.235 59.7808 212.349 59.0155 211.305 58.5398C210.12 58 208.65 58 205.709 58H202.291C199.35 58 197.88 58 196.695 58.5398C195.651 59.0155 194.765 59.7808 194.142 60.7448C193.435 61.8387 193.222 63.2936 192.794 66.2033Z\" fill={fill} />\n <path d=\"M224 126H229.709C232.65 126 234.12 126 235.305 125.46C236.349 124.984 237.235 124.219 237.858 123.255C238.565 122.161 238.778 120.706 239.206 117.797L246.235 70H298V58H251.302C249.345 58 248.367 58 247.446 58.221C246.63 58.417 245.849 58.7402 245.134 59.1789C244.326 59.6736 243.635 60.3654 242.251 61.749L234.927 69.0727C233.815 70.1845 233.26 70.7405 232.829 71.3785C232.447 71.9446 232.139 72.5573 231.913 73.2016C231.658 73.9277 231.543 74.7056 231.315 76.2613L224 126Z\" fill={fill} />\n <path d=\"M264.251 122.251L259.749 117.749C258.365 116.365 257.674 115.674 257.179 114.866C256.74 114.151 256.417 113.37 256.221 112.554C256 111.633 256 110.655 256 108.698V69.2L260 42H270V114H298V126H273.302C271.345 126 270.367 126 269.446 125.779C268.63 125.583 267.849 125.26 267.134 124.821C266.326 124.326 265.635 123.635 264.251 122.251Z\" fill={fill} />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M358.251 66.251C359.635 67.6346 360.326 68.3264 360.821 69.1337C361.26 69.8495 361.583 70.6299 361.779 71.4461C362 72.3668 362 73.3452 362 75.3019V108.698C362 110.655 362 111.633 361.779 112.554C361.583 113.37 361.26 114.151 360.821 114.866C360.326 115.674 359.635 116.365 358.251 117.749L353.749 122.251C352.365 123.635 351.674 124.326 350.866 124.821C350.151 125.26 349.37 125.583 348.554 125.779C347.633 126 346.655 126 344.698 126H319.302C317.345 126 316.367 126 315.446 125.779C314.63 125.583 313.849 125.26 313.134 124.821C312.326 124.326 311.635 123.635 310.251 122.251L305.749 117.749C304.365 116.365 303.674 115.674 303.179 114.866C302.74 114.151 302.417 113.37 302.221 112.554C302 111.633 302 110.655 302 108.698V75.3019C302 73.3452 302 72.3668 302.221 71.4461C302.417 70.6299 302.74 69.8495 303.179 69.1337C303.674 68.3264 304.365 67.6346 305.749 66.251L310.224 61.7757C311.606 60.3937 312.297 59.7027 313.104 59.2083C313.818 58.77 314.598 58.4468 315.413 58.2506C316.333 58.0292 317.31 58.0284 319.264 58.0267L344.692 58.0046C346.651 58.0029 347.63 58.0021 348.552 58.2228C349.369 58.4185 350.151 58.7417 350.867 59.1807C351.676 59.6757 352.368 60.3684 353.754 61.7536L358.251 66.251ZM316 70V114H348V70H316Z\" fill={fill} />\n <path d=\"M370 64.4V126H384V70H416V126H430V75.3019C430 73.3452 430 72.3668 429.779 71.4461C429.583 70.6299 429.26 69.8495 428.821 69.1337C428.326 68.3264 427.635 67.6346 426.251 66.251L421.749 61.749C420.365 60.3654 419.674 59.6736 418.866 59.1789C418.151 58.7402 417.37 58.417 416.554 58.221C415.633 58 414.655 58 412.698 58H376.4C374.16 58 373.04 58 372.184 58.436C371.431 58.8195 370.819 59.4314 370.436 60.184C370 61.0397 370 62.1598 370 64.4Z\" fill={fill} />\n </svg>\n );\n}\n","import type { CategoryMeta, ComponentMeta } from './types';\n\nexport const CATEGORIES: readonly CategoryMeta[] = [\n { id: 'colors', name: 'Colors', description: 'Color palettes and token visualization', icon: 'palette' },\n { id: 'typography', name: 'Typography', description: 'Text roles, scopes, and weight control', icon: 'text_fields' },\n { id: 'symbols', name: 'Symbols', description: 'Material Symbols icon browser', icon: 'grid_view' },\n { id: 'layout', name: 'Layout', description: 'Structural containers — Frame and Wrapper', icon: 'grid_on' },\n { id: 'components', name: 'Components', description: 'Interactive UI components', icon: 'widgets' },\n];\n\nexport const COMPONENTS: readonly ComponentMeta[] = [\n {\n id: 'button',\n name: 'Button',\n importName: 'Button',\n categoryId: 'components',\n description: 'Interactive button with multiple variants, sizes, and optional icon',\n hasChildren: true,\n variants: [\n { id: 'primary-md', label: 'Primary', props: { variant: 'primary', size: 'md' } },\n { id: 'secondary-md', label: 'Secondary', props: { variant: 'secondary', size: 'md' } },\n { id: 'ghost-md', label: 'Ghost', props: { variant: 'ghost', size: 'md' } },\n { id: 'primary-sm', label: 'Primary Small', props: { variant: 'primary', size: 'sm' } },\n { id: 'primary-lg', label: 'Primary Large', props: { variant: 'primary', size: 'lg' } },\n { id: 'primary-xl', label: 'Primary XL', props: { variant: 'primary', size: 'xl' } },\n { id: 'icon-left', label: 'Icon Left', props: { variant: 'primary', size: 'md', icon: 'add' } },\n { id: 'icon-right', label: 'Icon Right', props: { variant: 'primary', size: 'md', icon: 'arrow_forward', iconPosition: 'right' } },\n { id: 'icon-only', label: 'Icon Only', props: { variant: 'ghost', size: 'md', icon: 'settings' } },\n ],\n editableProps: [\n {\n name: 'variant',\n label: 'Variant',\n control: 'select',\n options: [\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n { label: 'Ghost', value: 'ghost' },\n ],\n defaultValue: 'primary',\n },\n {\n name: 'size',\n label: 'Size',\n control: 'select',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n { label: 'Extra Large', value: 'xl' },\n ],\n defaultValue: 'md',\n },\n {\n name: 'icon',\n label: 'Icon',\n control: 'text',\n defaultValue: '',\n },\n {\n name: 'iconPosition',\n label: 'Icon Position',\n control: 'select',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Right', value: 'right' },\n ],\n defaultValue: 'left',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'text-input',\n name: 'TextInput',\n importName: 'TextInput',\n categoryId: 'components',\n description: 'Text input field with label support',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { label: 'Label', value: 'Sample text' } },\n { id: 'empty', label: 'Empty', props: { label: 'Email', value: '' } },\n { id: 'disabled', label: 'Disabled', props: { label: 'Disabled', value: 'Read only', disabled: true } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Label',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'select',\n name: 'Select',\n importName: 'Select',\n categoryId: 'components',\n description: 'Dropdown selector with options',\n hasChildren: false,\n variants: [\n {\n id: 'default',\n label: 'Default',\n props: {\n label: 'Choose an option',\n value: 'option-1',\n options: [\n { label: 'Option 1', value: 'option-1' },\n { label: 'Option 2', value: 'option-2' },\n { label: 'Option 3', value: 'option-3' },\n ],\n },\n },\n {\n id: 'disabled',\n label: 'Disabled',\n props: {\n label: 'Disabled select',\n value: 'option-1',\n disabled: true,\n options: [{ label: 'Option 1', value: 'option-1' }],\n },\n },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Choose an option',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'toggle',\n name: 'Toggle',\n importName: 'Toggle',\n categoryId: 'components',\n description: 'Binary switch component',\n hasChildren: false,\n variants: [\n { id: 'on', label: 'On', props: { label: 'Enabled', value: true } },\n { id: 'off', label: 'Off', props: { label: 'Disabled', value: false } },\n { id: 'disabled', label: 'Disabled', props: { label: 'Locked', value: true, disabled: true } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Toggle',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'slider',\n name: 'Slider',\n importName: 'Slider',\n categoryId: 'components',\n description: 'Numeric range slider',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { label: 'Volume', value: 50, min: 0, max: 100 } },\n { id: 'with-step', label: 'With Step', props: { label: 'Steps', value: 3, min: 0, max: 10, step: 1, showValue: true } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Slider',\n },\n {\n name: 'min',\n label: 'Min',\n control: 'number',\n defaultValue: 0,\n },\n {\n name: 'max',\n label: 'Max',\n control: 'number',\n defaultValue: 100,\n },\n {\n name: 'showValue',\n label: 'Show Value',\n control: 'toggle',\n defaultValue: false,\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'hue-slider',\n name: 'HueSlider',\n importName: 'HueSlider',\n categoryId: 'components',\n description: 'Specialized slider for hue selection (0-360\\u00b0)',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { label: 'Hue', value: 180 } },\n { id: 'red', label: 'Red', props: { label: 'Warm Hue', value: 0 } },\n { id: 'blue', label: 'Blue', props: { label: 'Cool Hue', value: 240 } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Hue',\n },\n {\n name: 'showValue',\n label: 'Show Value',\n control: 'toggle',\n defaultValue: false,\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'frame',\n name: 'Frame',\n importName: 'Frame',\n categoryId: 'layout',\n description: 'Foundational layout container with theme, elevation, spacing, and interactivity',\n hasChildren: true,\n variants: [\n { id: 'default', label: 'Default', props: {} },\n { id: 'primary', label: 'Primary', props: { theme: 'primary' } },\n { id: 'secondary', label: 'Secondary', props: { theme: 'secondary' } },\n { id: 'strong', label: 'Strong', props: { theme: 'strong' } },\n { id: 'deeply-sunken', label: 'Deeply Sunken', props: { elevation: -2, radius: 'md' } },\n { id: 'sunken', label: 'Sunken', props: { elevation: -1 } },\n { id: 'elevated', label: 'Elevated', props: { elevation: 1 } },\n { id: 'prominent', label: 'Prominent', props: { elevation: 2, radius: 'lg' } },\n { id: 'padded', label: 'Padded', props: { padding: 'lg', gap: 'md' } },\n { id: 'horizontal', label: 'Horizontal', props: { direction: 'horizontal', gap: 'md', align: 'center' } },\n { id: 'grid-3col', label: '3-Column Grid', props: { layout: 'grid', columns: 3, gap: 'md' } },\n { id: 'card-like', label: 'Card-like', props: { radius: 'lg', padding: 'lg', bordered: true, elevation: 1 } },\n ],\n editableProps: [\n {\n name: 'theme',\n label: 'Theme',\n control: 'select',\n options: [\n { label: 'Neutral', value: 'neutral' },\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n { label: 'Strong', value: 'strong' },\n ],\n defaultValue: 'neutral',\n },\n {\n name: 'elevation',\n label: 'Elevation',\n control: 'select',\n options: [\n { label: 'Deeply Sunken (-2)', value: -2 },\n { label: 'Sunken (-1)', value: -1 },\n { label: 'Default (0)', value: 0 },\n { label: 'Elevated (1)', value: 1 },\n { label: 'Prominent (2)', value: 2 },\n ],\n defaultValue: 0,\n },\n {\n name: 'direction',\n label: 'Direction',\n control: 'select',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n defaultValue: 'vertical',\n },\n {\n name: 'padding',\n label: 'Padding',\n control: 'select',\n options: [\n { label: 'None', value: '' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n { label: 'Extra Large', value: 'xl' },\n ],\n defaultValue: '',\n },\n {\n name: 'gap',\n label: 'Gap',\n control: 'select',\n options: [\n { label: 'None', value: '' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n defaultValue: '',\n },\n {\n name: 'radius',\n label: 'Radius',\n control: 'select',\n options: [\n { label: 'None', value: 'none' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n { label: 'Pill', value: 'pill' },\n ],\n defaultValue: 'none',\n },\n {\n name: 'bordered',\n label: 'Bordered',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'card',\n name: 'Card',\n importName: 'Card',\n categoryId: 'components',\n description: 'Surface container with elevation levels',\n hasChildren: true,\n variants: [\n { id: 'elevation-0', label: 'Elevation 0', props: { elevation: 0 } },\n { id: 'elevation-1', label: 'Elevation 1', props: { elevation: 1 } },\n { id: 'elevation-2', label: 'Elevation 2', props: { elevation: 2 } },\n ],\n editableProps: [\n {\n name: 'elevation',\n label: 'Elevation',\n control: 'select',\n options: [\n { label: 'Level 0', value: 0 },\n { label: 'Level 1', value: 1 },\n { label: 'Level 2', value: 2 },\n ],\n defaultValue: 0,\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n // ── Design Primitives ──\n {\n id: 'text',\n name: 'Text',\n importName: 'Text',\n categoryId: 'typography',\n description: 'Typography primitive with semantic scope (font family) and role (purpose)',\n hasChildren: true,\n previewLayout: 'list',\n variants: [\n { id: 'body', label: 'Body', props: { role: 'body' } },\n { id: 'headline', label: 'Headline', props: { role: 'headline', scope: 'display' } },\n { id: 'title', label: 'Title', props: { role: 'title', scope: 'display' } },\n { id: 'heading', label: 'Heading', props: { role: 'heading' } },\n { id: 'subheading', label: 'Subheading', props: { role: 'subheading' } },\n { id: 'label', label: 'Label', props: { role: 'label' } },\n { id: 'caption', label: 'Caption', props: { role: 'caption', color: 'secondary' } },\n { id: 'mono', label: 'Monospace', props: { scope: 'mono', role: 'body' } },\n { id: 'currency', label: 'Currency', props: { scope: 'currency', role: 'body' } },\n ],\n editableProps: [\n {\n name: 'scope',\n label: 'Scope',\n control: 'select',\n options: [\n { label: 'Main', value: 'main' },\n { label: 'Display', value: 'display' },\n { label: 'Mono', value: 'mono' },\n { label: 'Currency', value: 'currency' },\n ],\n defaultValue: 'main',\n },\n {\n name: 'role',\n label: 'Role',\n control: 'select',\n options: [\n { label: 'Headline', value: 'headline' },\n { label: 'Title', value: 'title' },\n { label: 'Heading', value: 'heading' },\n { label: 'Subheading', value: 'subheading' },\n { label: 'Body', value: 'body' },\n { label: 'Label', value: 'label' },\n { label: 'Caption', value: 'caption' },\n ],\n defaultValue: 'body',\n },\n {\n name: 'size',\n label: 'Size',\n control: 'select',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n defaultValue: 'md',\n },\n {\n name: 'color',\n label: 'Color',\n control: 'select',\n options: [\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n { label: 'Tertiary', value: 'tertiary' },\n { label: 'Disabled', value: 'disabled' },\n { label: 'Accent', value: 'accent' },\n { label: 'Success', value: 'success' },\n { label: 'Warning', value: 'warning' },\n { label: 'Error', value: 'error' },\n ],\n defaultValue: 'primary',\n },\n ],\n },\n {\n id: 'icon',\n name: 'Icon',\n importName: 'Icon',\n categoryId: 'symbols',\n description: 'Material Symbols icon with size and fill',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { name: 'add' } },\n ],\n editableProps: [\n {\n name: 'name',\n label: 'Icon Name',\n control: 'text',\n defaultValue: 'add',\n },\n {\n name: 'size',\n label: 'Size',\n control: 'discrete-slider',\n options: [\n { label: '20', value: 20 },\n { label: '24', value: 24 },\n { label: '40', value: 40 },\n { label: '48', value: 48 },\n ],\n defaultValue: 24,\n },\n {\n name: 'fill',\n label: 'Fill',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n {\n id: 'wrapper',\n name: 'Wrapper',\n importName: 'Wrapper',\n categoryId: 'layout',\n description: 'Lightweight layout container with direction, spacing, and alignment (no theming)',\n hasChildren: true,\n variants: [\n { id: 'vertical', label: 'Vertical Stack', props: { direction: 'vertical', gap: 'md' } },\n { id: 'horizontal', label: 'Horizontal Row', props: { direction: 'horizontal', gap: 'md', align: 'center' } },\n { id: 'padded', label: 'Padded', props: { padding: 'lg', gap: 'md' } },\n { id: 'centered', label: 'Centered', props: { align: 'center', justify: 'center', padding: 'xl' } },\n ],\n editableProps: [\n {\n name: 'direction',\n label: 'Direction',\n control: 'select',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n defaultValue: 'vertical',\n },\n {\n name: 'gap',\n label: 'Gap',\n control: 'select',\n options: [\n { label: 'None', value: '' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n defaultValue: '',\n },\n {\n name: 'padding',\n label: 'Padding',\n control: 'select',\n options: [\n { label: 'None', value: '' },\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n defaultValue: '',\n },\n {\n name: 'align',\n label: 'Align',\n control: 'select',\n options: [\n { label: 'Start', value: 'start' },\n { label: 'Center', value: 'center' },\n { label: 'End', value: 'end' },\n ],\n defaultValue: 'start',\n },\n {\n name: 'justify',\n label: 'Justify',\n control: 'select',\n options: [\n { label: 'Start', value: 'start' },\n { label: 'Center', value: 'center' },\n { label: 'End', value: 'end' },\n { label: 'Space Between', value: 'space-between' },\n ],\n defaultValue: 'start',\n },\n ],\n },\n // ── Range Inputs (Addition: ColorScaleSlider) ──\n {\n id: 'color-scale-slider',\n name: 'ColorScaleSlider',\n importName: 'ColorScaleSlider',\n categoryId: 'components',\n description: 'Interactive palette preview slider with color segments',\n hasChildren: false,\n variants: [\n { id: 'default', label: 'Default', props: { label: 'Key Color' } },\n ],\n editableProps: [\n {\n name: 'label',\n label: 'Label',\n control: 'text',\n defaultValue: 'Key Color',\n },\n {\n name: 'disabled',\n label: 'Disabled',\n control: 'toggle',\n defaultValue: false,\n },\n ],\n },\n];\n\nexport function getComponent(id: string): ComponentMeta | undefined {\n return COMPONENTS.find((c) => c.id === id);\n}\n\nexport function getCategory(id: string): CategoryMeta | undefined {\n return CATEGORIES.find((c) => c.id === id);\n}\n\nexport function getComponentsByCategory(categoryId: string): readonly ComponentMeta[] {\n return COMPONENTS.filter((c) => c.categoryId === categoryId);\n}\n","import type { ComponentMeta } from './types';\n\n/**\n * Handler props that should be included as placeholders in generated code.\n * Maps component ID to the handler props it needs.\n */\nconst HANDLER_PROPS: Record<string, readonly string[]> = {\n button: ['onPress={() => {}}'],\n 'text-input': ['value={value}', 'onChangeText={setValue}'],\n select: ['value={value}', 'onValueChange={setValue}'],\n toggle: ['value={value}', 'onValueChange={setValue}'],\n slider: ['value={value}', 'onValueChange={setValue}'],\n 'hue-slider': ['value={value}', 'onValueChange={setValue}'],\n};\n\n/**\n * Default children content for components with children.\n */\nconst CHILDREN_CONTENT: Record<string, string> = {\n button: 'Button',\n text: 'The quick brown fox',\n card: '{/* content */}',\n frame: '{/* content */}',\n};\n\n/**\n * Generates a ready-to-paste JSX code snippet for a component with the given prop overrides.\n *\n * - Includes the import statement\n * - Omits props that match their default values\n * - Adds placeholder handlers for interactive props\n * - Formats Select's options as a const declaration\n */\nexport function generateComponentCode(\n component: ComponentMeta,\n propOverrides: Record<string, unknown>,\n): string {\n const lines: string[] = [];\n\n // Import line\n lines.push(`import { ${component.importName} } from '@newtonedev/components';`);\n\n // Select needs options declaration above JSX\n if (component.id === 'select') {\n lines.push('');\n lines.push('const options = [');\n lines.push(\" { label: 'Option 1', value: 'option-1' },\");\n lines.push(\" { label: 'Option 2', value: 'option-2' },\");\n lines.push(\" { label: 'Option 3', value: 'option-3' },\");\n lines.push('];');\n }\n\n lines.push('');\n\n // Build props string\n const propEntries: string[] = [];\n\n // Add editable props (only non-default values)\n for (const prop of component.editableProps) {\n const value = propOverrides[prop.name] ?? prop.defaultValue;\n if (value === prop.defaultValue) continue;\n\n propEntries.push(formatProp(prop.name, value));\n }\n\n // Add handler/runtime props\n const handlers = HANDLER_PROPS[component.id];\n if (handlers) {\n for (const handler of handlers) {\n propEntries.push(handler);\n }\n }\n\n // Special case: Select gets options={options} reference\n if (component.id === 'select') {\n propEntries.push('options={options}');\n }\n\n // Build the JSX\n const children = CHILDREN_CONTENT[component.id];\n const hasProps = propEntries.length > 0;\n const tag = component.importName;\n\n if (component.hasChildren && children) {\n if (hasProps && propEntries.length <= 3) {\n // Single-line opening tag\n lines.push(`<${tag} ${propEntries.join(' ')}>`);\n lines.push(` ${children}`);\n lines.push(`</${tag}>`);\n } else if (hasProps) {\n // Multi-line opening tag\n lines.push(`<${tag}`);\n for (const entry of propEntries) {\n lines.push(` ${entry}`);\n }\n lines.push('>');\n lines.push(` ${children}`);\n lines.push(`</${tag}>`);\n } else {\n lines.push(`<${tag}>`);\n lines.push(` ${children}`);\n lines.push(`</${tag}>`);\n }\n } else {\n // Self-closing tag\n if (hasProps && propEntries.length <= 3) {\n lines.push(`<${tag} ${propEntries.join(' ')} />`);\n } else if (hasProps) {\n lines.push(`<${tag}`);\n for (const entry of propEntries) {\n lines.push(` ${entry}`);\n }\n lines.push('/>');\n } else {\n lines.push(`<${tag} />`);\n }\n }\n\n return lines.join('\\n');\n}\n\nfunction formatProp(name: string, value: unknown): string {\n if (typeof value === 'string') {\n return `${name}=\"${value}\"`;\n }\n if (typeof value === 'boolean') {\n return value ? name : `${name}={false}`;\n }\n if (typeof value === 'number') {\n return `${name}={${value}}`;\n }\n return `${name}={${JSON.stringify(value)}}`;\n}\n","export interface IconCatalogCategory {\n readonly id: string;\n readonly label: string;\n readonly icons: readonly string[];\n}\n\nexport const ICON_CATALOG: readonly IconCatalogCategory[] = [\n {\n id: 'navigation',\n label: 'Navigation',\n icons: [\n 'home', 'menu', 'close', 'arrow_back', 'arrow_forward',\n 'arrow_upward', 'arrow_downward', 'chevron_left', 'chevron_right',\n 'expand_more', 'expand_less', 'first_page', 'last_page',\n 'more_vert', 'more_horiz', 'unfold_more', 'unfold_less',\n 'subdirectory_arrow_right',\n ],\n },\n {\n id: 'actions',\n label: 'Actions',\n icons: [\n 'search', 'settings', 'done', 'add', 'remove',\n 'delete', 'edit', 'save', 'refresh', 'undo',\n 'redo', 'download', 'upload', 'share', 'print',\n 'content_copy', 'content_paste', 'open_in_new', 'launch',\n 'drag_indicator', 'tune', 'sort', 'filter_list',\n ],\n },\n {\n id: 'communication',\n label: 'Communication',\n icons: [\n 'mail', 'chat', 'call', 'notifications', 'forum',\n 'send', 'inbox', 'drafts', 'mark_email_read',\n 'contact_mail', 'alternate_email', 'comment',\n 'chat_bubble', 'sms', 'voicemail',\n ],\n },\n {\n id: 'content',\n label: 'Content',\n icons: [\n 'add_circle', 'remove_circle', 'check_circle', 'cancel',\n 'flag', 'bookmark', 'star', 'favorite',\n 'thumb_up', 'thumb_down', 'push_pin', 'link',\n 'link_off', 'bolt', 'label', 'inventory_2',\n 'visibility', 'visibility_off',\n ],\n },\n {\n id: 'media',\n label: 'Media',\n icons: [\n 'play_arrow', 'pause', 'stop', 'skip_next', 'skip_previous',\n 'fast_forward', 'fast_rewind', 'replay', 'shuffle',\n 'repeat', 'volume_up', 'volume_off', 'music_note',\n 'image', 'photo_camera', 'videocam', 'mic',\n ],\n },\n {\n id: 'file',\n label: 'File & Folder',\n icons: [\n 'folder', 'folder_open', 'create_new_folder', 'description',\n 'file_copy', 'attach_file', 'cloud', 'cloud_upload',\n 'cloud_download', 'cloud_off', 'storage', 'snippet_folder',\n ],\n },\n {\n id: 'social',\n label: 'Social & People',\n icons: [\n 'person', 'group', 'person_add', 'person_remove',\n 'people', 'face', 'sentiment_satisfied', 'sentiment_dissatisfied',\n 'public', 'workspace_premium', 'emoji_events', 'military_tech',\n ],\n },\n {\n id: 'alerts',\n label: 'Alerts & Status',\n icons: [\n 'error', 'warning', 'info', 'help',\n 'check_circle', 'report', 'new_releases',\n 'notification_important', 'priority_high',\n 'verified', 'shield', 'security',\n 'lock', 'lock_open',\n ],\n },\n {\n id: 'device',\n label: 'Device & Hardware',\n icons: [\n 'phone_android', 'computer', 'tablet_mac', 'watch',\n 'keyboard', 'mouse', 'headphones', 'speaker',\n 'monitor', 'devices', 'memory', 'battery_full',\n 'wifi', 'bluetooth', 'usb', 'dark_mode', 'light_mode',\n ],\n },\n {\n id: 'editor',\n label: 'Editor & Formatting',\n icons: [\n 'format_bold', 'format_italic', 'format_underlined',\n 'format_list_bulleted', 'format_list_numbered', 'format_quote',\n 'format_align_left', 'format_align_center', 'format_align_right',\n 'title', 'text_fields', 'code', 'palette',\n 'color_lens', 'brush', 'auto_fix_high',\n ],\n },\n];\n"]}
|