@almadar/mobile 1.16.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-7JWBQIW4.js → chunk-AARPB3FY.js} +2 -2
- package/dist/chunk-AARPB3FY.js.map +1 -0
- package/dist/{chunk-O7H7L24S.js → chunk-PNP63ZFU.js} +123 -31
- package/dist/chunk-PNP63ZFU.js.map +1 -0
- package/dist/{chunk-76KEXEYS.js → chunk-RONRIAV4.js} +1 -1
- package/dist/chunk-RONRIAV4.js.map +1 -0
- package/dist/{chunk-B4JZIFI6.js → chunk-T33BAIMJ.js} +5 -5
- package/dist/chunk-T33BAIMJ.js.map +1 -0
- package/dist/components/atoms/index.js +1 -1
- package/dist/components/index.js +4 -4
- package/dist/components/molecules/RepeatableFormSection.d.ts.map +1 -1
- package/dist/components/molecules/SortableList.d.ts +3 -3
- package/dist/components/molecules/SortableList.d.ts.map +1 -1
- package/dist/components/molecules/index.js +1 -1
- package/dist/components/organisms/ComponentPatterns.d.ts.map +1 -1
- package/dist/components/organisms/ContentRenderer.d.ts +3 -1
- package/dist/components/organisms/ContentRenderer.d.ts.map +1 -1
- package/dist/components/organisms/DrawerSlot.d.ts.map +1 -1
- package/dist/components/organisms/LayoutPatterns.d.ts.map +1 -1
- package/dist/components/organisms/MasterDetail.d.ts.map +1 -1
- package/dist/components/organisms/ModalSlot.d.ts.map +1 -1
- package/dist/components/organisms/SignaturePad.d.ts.map +1 -1
- package/dist/components/organisms/StateMachineView.d.ts.map +1 -1
- package/dist/components/organisms/ToastSlot.d.ts.map +1 -1
- package/dist/components/organisms/UISlotRenderer.d.ts +3 -3
- package/dist/components/organisms/UISlotRenderer.d.ts.map +1 -1
- package/dist/components/organisms/game/puzzles/sequencer/ActionPalette.d.ts +1 -1
- package/dist/components/organisms/game/puzzles/sequencer/ActionPalette.d.ts.map +1 -1
- package/dist/components/organisms/game/puzzles/sequencer/SequenceBar.d.ts +2 -1
- package/dist/components/organisms/game/puzzles/sequencer/SequenceBar.d.ts.map +1 -1
- package/dist/components/organisms/index.js +1 -1
- package/dist/components/templates/index.js +1 -1
- package/dist/index.js +9 -9
- package/package.json +4 -4
- package/dist/chunk-76KEXEYS.js.map +0 -1
- package/dist/chunk-7JWBQIW4.js.map +0 -1
- package/dist/chunk-B4JZIFI6.js.map +0 -1
- package/dist/chunk-O7H7L24S.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/atoms/Center.tsx","../src/components/atoms/Radio.tsx","../src/components/atoms/Switch.tsx","../src/components/atoms/Textarea.tsx","../src/components/atoms/Avatar.tsx","../src/components/atoms/Overlay.tsx","../src/components/atoms/Spacer.tsx","../src/components/atoms/ConditionalWrapper.tsx","../src/components/atoms/StatusDot.tsx","../src/components/atoms/TrendIndicator.tsx","../src/components/atoms/TextHighlight.tsx","../src/components/atoms/AnimatedCounter.tsx","../src/components/atoms/TypewriterText.tsx","../src/components/atoms/ThemeToggle.tsx","../src/components/atoms/RangeSlider.tsx","../src/components/atoms/game/Sprite.tsx","../src/components/atoms/game/StateIndicator.tsx","../src/components/atoms/game/OrbitalGameCanvas.tsx"],"sourcesContent":["import React from 'react';\nimport { View, StyleSheet, ViewStyle } from 'react-native';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface CenterProps {\n children: React.ReactNode;\n style?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const Center: React.FC<CenterProps> = ({\n children,\n style,\n isLoading,\n error,\n}) => {\n if (isLoading) {\n return (\n <View style={[styles.container, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.container, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n return (\n <View style={[styles.container, style]}>\n {children}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nCenter.displayName = 'Center';\n","import React from 'react';\nimport { \n TouchableOpacity, \n View, \n StyleSheet, \n ViewStyle \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\nimport type { EventKey, EventPayload } from '../../types';\n\n\nexport interface RadioProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n style?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Declarative change event name - emits UI:${changeEvent} via eventBus */\n changeEvent?: EventKey;\n /** Payload to include with the change event */\n actionPayload?: EventPayload;\n}\n\nexport const Radio: React.FC<RadioProps> = ({\n checked = false,\n onChange,\n disabled = false,\n size = 'md',\n style,\n isLoading,\n error,\n changeEvent,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handlePress = () => {\n if (disabled || isLoading) return;\n \n const newValue = !checked;\n if (changeEvent) {\n eventBus.emit(`UI:${changeEvent}`, { ...actionPayload, checked: newValue });\n }\n onChange?.(newValue);\n };\n\n if (isLoading) {\n return (\n <View style={[styles.container, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.container, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const sizeStyles: Record<string, { outer: number; inner: number }> = {\n sm: { outer: 18, inner: 8 },\n md: { outer: 24, inner: 10 },\n lg: { outer: 32, inner: 14 },\n };\n\n const { outer, inner } = sizeStyles[size];\n\n return (\n <TouchableOpacity\n onPress={handlePress}\n disabled={disabled}\n activeOpacity={0.8}\n style={[\n styles.container,\n {\n width: outer,\n height: outer,\n borderRadius: outer / 2,\n borderWidth: 2,\n borderColor: checked \n ? theme.colors.primary \n : theme.colors.border,\n backgroundColor: theme.colors.card,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n {checked && (\n <View\n style={{\n width: inner,\n height: inner,\n borderRadius: inner / 2,\n backgroundColor: theme.colors.primary,\n }}\n />\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nRadio.displayName = 'Radio';\n","import React from 'react';\nimport { \n TouchableOpacity, \n View, \n StyleSheet, \n ViewStyle,\n Animated \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\nimport type { EventKey, EventPayload } from '../../types';\n\n\nexport interface SwitchProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n style?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Declarative change event name - emits UI:${changeEvent} via eventBus */\n changeEvent?: EventKey;\n /** Payload to include with the change event */\n actionPayload?: EventPayload;\n}\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked = false,\n onChange,\n disabled = false,\n size = 'md',\n style,\n isLoading,\n error,\n changeEvent,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n const translateX = React.useRef(new Animated.Value(checked ? 1 : 0)).current;\n\n React.useEffect(() => {\n const { width } = sizeStyles[size];\n const thumbWidth = width * 0.4;\n const travelDistance = width - thumbWidth - 4;\n \n Animated.timing(translateX, {\n toValue: checked ? travelDistance : 0,\n duration: 200,\n useNativeDriver: true,\n }).start();\n }, [checked, size]);\n\n const handlePress = () => {\n if (disabled || isLoading) return;\n \n const newValue = !checked;\n if (changeEvent) {\n eventBus.emit(`UI:${changeEvent}`, { ...actionPayload, checked: newValue });\n }\n onChange?.(newValue);\n };\n\n if (isLoading) {\n return (\n <View style={[styles.container, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.container, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const sizeStyles: Record<string, { width: number; height: number }> = {\n sm: { width: 36, height: 20 },\n md: { width: 48, height: 28 },\n lg: { width: 60, height: 36 },\n };\n\n const { width, height } = sizeStyles[size];\n const thumbSize = height - 4;\n\n return (\n <TouchableOpacity\n onPress={handlePress}\n disabled={disabled}\n activeOpacity={0.8}\n style={[\n styles.track,\n {\n width,\n height,\n borderRadius: height / 2,\n backgroundColor: checked \n ? theme.colors.primary \n : theme.colors['muted-foreground'],\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n <Animated.View\n style={[\n styles.thumb,\n {\n width: thumbSize,\n height: thumbSize,\n borderRadius: thumbSize / 2,\n backgroundColor: theme.colors['primary-foreground'],\n transform: [{ translateX }],\n },\n ]}\n />\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n track: {\n justifyContent: 'center',\n padding: 2,\n },\n thumb: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.2,\n shadowRadius: 2,\n elevation: 2,\n },\n});\n\nSwitch.displayName = 'Switch';\n","import React from 'react';\nimport { \n TextInput, \n TextInputProps, \n StyleSheet, \n View, \n Text,\n ViewStyle \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\n\nexport interface TextareaProps extends Omit<TextInputProps, 'onChange' | 'multiline'> {\n label?: string;\n /** String error message for form validation */\n errorMessage?: string;\n helperText?: string;\n containerStyle?: ViewStyle;\n numberOfLines?: number;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state object */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Declarative change event name - emits UI:${changeEvent} via eventBus */\n changeEvent?: string;\n /** Declarative focus event name - emits UI:${focusEvent} via eventBus */\n focusEvent?: string;\n}\n\nexport const Textarea: React.FC<TextareaProps> = ({\n label,\n errorMessage,\n helperText,\n containerStyle,\n style,\n numberOfLines = 4,\n isLoading,\n error,\n changeEvent,\n focusEvent,\n onChangeText,\n onFocus,\n ...textInputProps\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handleChangeText = (text: string) => {\n if (changeEvent) {\n eventBus.emit(`UI:${changeEvent}`, { value: text });\n }\n onChangeText?.(text);\n };\n\n const handleFocus = () => {\n if (focusEvent) {\n eventBus.emit(`UI:${focusEvent}`);\n }\n onFocus?.({} as never);\n };\n\n if (isLoading) {\n return (\n <View style={[styles.container, containerStyle]}>\n {label && (\n <Text style={[styles.label, { color: theme.colors.foreground }]}>\n {label}\n </Text>\n )}\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n const errorText = error?.message || errorMessage;\n\n return (\n <View style={[styles.container, containerStyle]}>\n {label && (\n <Text style={[styles.label, { color: theme.colors.foreground }]}>\n {label}\n </Text>\n )}\n <TextInput\n multiline\n numberOfLines={numberOfLines}\n textAlignVertical=\"top\"\n style={[\n styles.textarea,\n {\n borderColor: errorText ? theme.colors.error : theme.colors.border,\n backgroundColor: theme.colors.card,\n color: theme.colors.foreground,\n },\n style,\n ]}\n placeholderTextColor={theme.colors['muted-foreground']}\n onChangeText={handleChangeText}\n onFocus={handleFocus}\n {...textInputProps}\n />\n {errorText ? (\n <Text style={[styles.errorText, { color: theme.colors.error }]}>\n {errorText}\n </Text>\n ) : helperText ? (\n <Text style={[styles.helperText, { color: theme.colors['muted-foreground'] }]}>\n {helperText}\n </Text>\n ) : null}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n label: {\n fontSize: 14,\n fontWeight: '500',\n marginBottom: 6,\n },\n textarea: {\n borderWidth: 1,\n borderRadius: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n fontSize: 16,\n minHeight: 100,\n },\n errorText: {\n fontSize: 12,\n marginTop: 4,\n },\n helperText: {\n fontSize: 12,\n marginTop: 4,\n },\n});\n\nTextarea.displayName = 'Textarea';\n","import React from 'react';\nimport { \n View, \n Text, \n StyleSheet, \n ViewStyle,\n Image,\n ImageSourcePropType \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface AvatarProps {\n src?: ImageSourcePropType;\n alt?: string;\n initials?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n style?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt,\n initials,\n size = 'md',\n style,\n isLoading,\n error,\n}) => {\n const theme = useTheme();\n\n const sizeMap: Record<string, { container: number; fontSize: number }> = {\n sm: { container: 32, fontSize: 12 },\n md: { container: 40, fontSize: 14 },\n lg: { container: 48, fontSize: 16 },\n xl: { container: 64, fontSize: 20 },\n };\n\n const { container, fontSize } = sizeMap[size];\n\n if (isLoading) {\n return (\n <View style={[styles.container, { width: container, height: container }, style]}>\n <LoadingState message=\"\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.container, { width: container, height: container }, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const getInitials = () => {\n if (initials) return initials;\n if (alt) {\n return alt\n .split(' ')\n .map(n => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n }\n return '?';\n };\n\n if (src) {\n return (\n <Image\n source={src}\n style={[\n styles.image,\n { \n width: container, \n height: container, \n borderRadius: container / 2 \n },\n style as never,\n ]}\n accessibilityLabel={alt}\n />\n );\n }\n\n return (\n <View\n style={[\n styles.container,\n {\n width: container,\n height: container,\n borderRadius: container / 2,\n backgroundColor: theme.colors.primary,\n },\n style,\n ]}\n >\n <Text\n style={[\n styles.initials,\n {\n fontSize,\n color: theme.colors['primary-foreground'],\n },\n ]}\n >\n {getInitials()}\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n image: {\n resizeMode: 'cover',\n },\n initials: {\n fontWeight: '600',\n },\n});\n\nAvatar.displayName = 'Avatar';\n","import React from 'react';\nimport { \n TouchableWithoutFeedback, \n View,\n StyleSheet, \n ViewStyle \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\n\nexport interface OverlayProps {\n /** Whether overlay is visible */\n isVisible?: boolean;\n /** Called when overlay is pressed */\n onPress?: () => void;\n /** Whether to apply blur effect (iOS only) */\n blur?: boolean;\n /** Declarative event name — emits UI:{action} via eventBus on press */\n action?: string;\n /** Additional styles */\n style?: ViewStyle;\n}\n\nexport const Overlay: React.FC<OverlayProps> = ({\n isVisible = true,\n onPress,\n blur = true,\n action,\n style,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n if (!isVisible) return null;\n\n const handlePress = () => {\n if (action) {\n eventBus.emit(`UI:${action}`, {});\n }\n onPress?.();\n };\n\n return (\n <TouchableWithoutFeedback onPress={handlePress}>\n <View \n style={[\n styles.overlay,\n { \n backgroundColor: theme.colors.background,\n opacity: 0.8,\n },\n blur && styles.blur,\n ...(style ? [style] : []),\n ]}\n pointerEvents=\"auto\"\n />\n </TouchableWithoutFeedback>\n );\n};\n\nconst styles = StyleSheet.create({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 40,\n },\n blur: {\n // Note: For actual blur effect on iOS, use @react-native-community/blur\n // This is a fallback opacity-based overlay\n },\n});\n\nOverlay.displayName = 'Overlay';\n","import React from 'react';\nimport { View, ViewStyle } from 'react-native';\n\nexport type SpacerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'auto';\n\nexport interface SpacerProps {\n /** Fixed size (auto = flex grow) */\n size?: SpacerSize;\n /** Orientation (for fixed sizes) */\n axis?: 'horizontal' | 'vertical';\n /** Custom style */\n style?: ViewStyle;\n}\n\nconst sizeValues: Record<Exclude<SpacerSize, 'auto'>, number> = {\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32,\n '2xl': 48,\n};\n\n/**\n * Spacer - Flexible spacing element for flex layouts\n * \n * Usage:\n * - size=\"auto\" (default): Expands to fill available space (flex: 1)\n * - size=\"md\": Fixed size spacing\n */\nexport const Spacer: React.FC<SpacerProps> = ({\n size = 'auto',\n axis = 'horizontal',\n style,\n}) => {\n if (size === 'auto') {\n return (\n <View \n style={[{ flex: 1 }, ...(style ? [style] : [])]} \n accessibilityElementsHidden\n />\n );\n }\n\n const sizeValue = sizeValues[size];\n const spacerStyle: ViewStyle = axis === 'horizontal' \n ? { width: sizeValue }\n : { height: sizeValue };\n\n return (\n <View \n style={[\n spacerStyle,\n ...(style ? [style] : []),\n ]} \n accessibilityElementsHidden\n />\n );\n};\n\nSpacer.displayName = 'Spacer';\n","/**\n * ConditionalWrapper Atom Component\n *\n * A wrapper component that conditionally renders its children based on\n * condition evaluation. Used for dynamic field visibility in forms.\n * \n * Note: S-expression evaluation requires @almadar/evaluator to be installed.\n * For now, this uses a simplified condition evaluator.\n */\n\nimport React from 'react';\nimport { Animated, ViewStyle } from 'react-native';\n\nexport interface ConditionalContext {\n formValues: Record<string, unknown>;\n globalVariables: Record<string, unknown>;\n localVariables?: Record<string, unknown>;\n entity?: Record<string, unknown>;\n}\n\nexport type Condition = \n | boolean \n | string \n | [string, string, unknown] // [operator, field, value]\n | ((context: ConditionalContext) => boolean);\n\nexport interface ConditionalWrapperProps {\n /** The condition to evaluate (boolean, expression tuple, or function) */\n condition?: Condition;\n /** Context for evaluating the condition */\n context?: ConditionalContext;\n /** Children to render when condition is true */\n children: React.ReactNode;\n /** Optional fallback to render when condition is false */\n fallback?: React.ReactNode;\n /** Whether to animate the transition */\n animate?: boolean;\n /** Additional styles */\n style?: ViewStyle;\n}\n\n/**\n * Simple condition evaluator\n * Supports: boolean, comparison tuples like [\"=\", \"fieldName\", \"value\"], or functions\n */\nfunction evaluateCondition(\n condition: Condition, \n context: ConditionalContext = { formValues: {}, globalVariables: {} }\n): boolean {\n // Boolean condition\n if (typeof condition === 'boolean') {\n return condition;\n }\n\n // Function condition\n if (typeof condition === 'function') {\n return condition(context);\n }\n\n // Expression tuple: [operator, field, value]\n if (Array.isArray(condition) && condition.length === 3) {\n const [operator, fieldPath, expectedValue] = condition;\n \n // Parse field path (e.g., \"formValues.myField\" or \"globalVariables.HG_VAR\")\n const parts = String(fieldPath).split('.');\n let actualValue: unknown;\n \n if (parts[0] === 'formValues' && parts[1]) {\n actualValue = context.formValues?.[parts[1]];\n } else if (parts[0] === 'globalVariables' && parts[1]) {\n actualValue = context.globalVariables?.[parts[1]];\n } else if (parts[0] === 'localVariables' && parts[1]) {\n actualValue = context.localVariables?.[parts[1]];\n } else if (parts[0] && context.entity?.[parts[0]]) {\n actualValue = context.entity[parts[0]];\n }\n\n switch (operator) {\n case '=':\n case '==':\n return actualValue === expectedValue;\n case '!=':\n return actualValue !== expectedValue;\n case '>':\n return Number(actualValue) > Number(expectedValue);\n case '>=':\n return Number(actualValue) >= Number(expectedValue);\n case '<':\n return Number(actualValue) < Number(expectedValue);\n case '<=':\n return Number(actualValue) <= Number(expectedValue);\n case 'includes':\n return Array.isArray(actualValue) && actualValue.includes(expectedValue);\n default:\n return false;\n }\n }\n\n // String truthiness\n return Boolean(condition);\n}\n\nexport const ConditionalWrapper: React.FC<ConditionalWrapperProps> = ({\n condition,\n context = { formValues: {}, globalVariables: {} },\n children,\n fallback = null,\n animate = false,\n style,\n}) => {\n const [isVisible, setIsVisible] = React.useState(!condition ? true : false);\n const fadeAnim = React.useRef(new Animated.Value(!condition ? 1 : 0)).current;\n\n React.useEffect(() => {\n if (!condition) {\n setIsVisible(true);\n return;\n }\n\n const visible = evaluateCondition(condition, context);\n \n setIsVisible(visible);\n\n if (animate) {\n Animated.timing(fadeAnim, {\n toValue: visible ? 1 : 0,\n duration: 200,\n useNativeDriver: true,\n }).start();\n } else {\n fadeAnim.setValue(visible ? 1 : 0);\n }\n }, [condition, context, animate, fadeAnim]);\n\n if (!condition) {\n return <>{children}</>;\n }\n\n if (animate) {\n return (\n <Animated.View\n style={[\n { opacity: fadeAnim, overflow: 'hidden' },\n ...(style ? [style] : []),\n ]}\n >\n {isVisible ? children : fallback}\n </Animated.View>\n );\n }\n\n return isVisible ? <>{children}</> : <>{fallback}</>;\n};\n\nConditionalWrapper.displayName = 'ConditionalWrapper';\n","import React, { useEffect, useRef } from 'react';\nimport { View, Animated, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { Typography } from './Typography';\nimport { HStack } from './Stack';\n\nexport type StatusDotStatus = 'online' | 'offline' | 'busy' | 'away' | 'error';\nexport type StatusDotSize = 'sm' | 'md' | 'lg';\n\nexport interface StatusDotProps {\n status?: StatusDotStatus;\n pulse?: boolean;\n size?: StatusDotSize;\n label?: string;\n style?: ViewStyle;\n isLoading?: boolean;\n error?: Error | null;\n entity?: string;\n}\n\nconst sizeMap: Record<StatusDotSize, number> = {\n sm: 8,\n md: 12,\n lg: 16,\n};\n\nexport const StatusDot: React.FC<StatusDotProps> = ({\n status = 'offline',\n pulse = false,\n size = 'md',\n label,\n style,\n}) => {\n const theme = useTheme();\n const pulseAnim = useRef(new Animated.Value(1)).current;\n\n const statusColors: Record<StatusDotStatus, string> = {\n online: theme.colors.success,\n offline: theme.colors['muted-foreground'],\n busy: theme.colors.error,\n away: theme.colors.warning,\n error: theme.colors.error,\n };\n\n useEffect(() => {\n if (pulse && (status === 'online' || status === 'busy')) {\n const animation = Animated.loop(\n Animated.sequence([\n Animated.timing(pulseAnim, {\n toValue: 0.3,\n duration: 1000,\n useNativeDriver: true,\n }),\n Animated.timing(pulseAnim, {\n toValue: 1,\n duration: 1000,\n useNativeDriver: true,\n }),\n ])\n );\n animation.start();\n return () => animation.stop();\n } else {\n pulseAnim.setValue(1);\n }\n }, [pulse, status, pulseAnim]);\n\n const dotSize = sizeMap[size];\n const color = statusColors[status];\n\n const dot = (\n <View style={[styles.wrapper, style]}>\n <Animated.View\n style={[\n styles.dot,\n {\n width: dotSize,\n height: dotSize,\n borderRadius: dotSize / 2,\n backgroundColor: color,\n opacity: pulseAnim,\n },\n ]}\n />\n </View>\n );\n\n if (label) {\n return (\n <HStack spacing={theme.spacing[2]} align=\"center\" style={style}>\n {dot}\n <Typography variant=\"caption\" style={{ color: theme.colors.foreground }}>\n {label}\n </Typography>\n </HStack>\n );\n }\n\n return dot;\n};\n\nconst styles = StyleSheet.create({\n wrapper: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n dot: {},\n});\n\nStatusDot.displayName = 'StatusDot';\n","import React from 'react';\nimport { StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { Typography } from './Typography';\nimport { Icon } from './Icon';\nimport { HStack } from './Stack';\n\nexport type TrendDirection = 'up' | 'down' | 'neutral';\nexport type TrendSize = 'sm' | 'md' | 'lg';\n\nexport interface TrendIndicatorProps {\n value?: number;\n direction?: TrendDirection;\n showValue?: boolean;\n size?: TrendSize;\n style?: ViewStyle;\n isLoading?: boolean;\n error?: Error | null;\n entity?: string;\n}\n\nconst sizeConfig: Record<TrendSize, { icon: number; font: 'xs' | 'sm' | 'base' }> = {\n sm: { icon: 14, font: 'xs' },\n md: { icon: 18, font: 'sm' },\n lg: { icon: 22, font: 'base' },\n};\n\nexport const TrendIndicator: React.FC<TrendIndicatorProps> = ({\n value,\n direction = 'neutral',\n showValue = true,\n size = 'md',\n style,\n}) => {\n const theme = useTheme();\n const config = sizeConfig[size];\n\n const directionColors: Record<TrendDirection, string> = {\n up: theme.colors.success,\n down: theme.colors.error,\n neutral: theme.colors['muted-foreground'],\n };\n\n const color = directionColors[direction];\n const iconName = direction === 'up' ? 'chevron-up' : direction === 'down' ? 'chevron-down' : 'minus';\n\n return (\n <HStack spacing={4} align=\"center\" style={style}>\n <Icon name={iconName} size={config.icon} color={color} />\n {showValue && value !== undefined && (\n <Typography\n variant=\"body\"\n style={[\n styles.value,\n { color, fontSize: theme.typography.sizes[config.font] },\n ]}\n >\n {Math.abs(value)}%\n </Typography>\n )}\n </HStack>\n );\n};\n\nconst styles = StyleSheet.create({\n value: {\n fontWeight: '500',\n },\n});\n\nTrendIndicator.displayName = 'TrendIndicator';\n","import React from 'react';\nimport { Pressable, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { Typography } from './Typography';\nimport type { EventKey, EventPayload } from '../../types';\n\n\nexport type HighlightType = 'mark' | 'code' | 'emphasis' | 'custom';\n\nexport interface TextHighlightProps {\n children: React.ReactNode;\n highlightType?: HighlightType;\n isActive?: boolean;\n action?: EventKey;\n actionPayload?: EventPayload;\n color?: string;\n style?: ViewStyle;\n isLoading?: boolean;\n error?: Error | null;\n entity?: string;\n}\n\nexport const TextHighlight: React.FC<TextHighlightProps> = ({\n children,\n highlightType = 'mark',\n isActive = true,\n action,\n actionPayload,\n color,\n style,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handlePress = () => {\n if (action) {\n eventBus.emit(`UI:${action}`, actionPayload);\n }\n };\n\n const highlightColors: Record<HighlightType, { bg: string; fg: string }> = {\n mark: { bg: theme.colors.warning + '40', fg: theme.colors.foreground },\n code: { bg: theme.colors.muted, fg: theme.colors.foreground },\n emphasis: { bg: theme.colors.primary + '20', fg: theme.colors.primary },\n custom: { bg: (color || theme.colors.accent) + '30', fg: theme.colors.foreground },\n };\n\n const { bg, fg } = highlightColors[highlightType];\n\n const content = (\n <Typography\n variant=\"body\"\n style={[\n styles.text,\n isActive && {\n backgroundColor: bg,\n color: fg,\n },\n highlightType === 'code' && {\n fontFamily: 'monospace',\n fontSize: theme.typography.sizes.sm,\n },\n style,\n ]}\n >\n {children}\n </Typography>\n );\n\n if (action) {\n return (\n <Pressable onPress={handlePress} style={styles.pressable}>\n {content}\n </Pressable>\n );\n }\n\n return content;\n};\n\nconst styles = StyleSheet.create({\n text: {\n paddingHorizontal: 4,\n paddingVertical: 1,\n borderRadius: 4,\n },\n pressable: {\n alignSelf: 'flex-start',\n },\n});\n\nTextHighlight.displayName = 'TextHighlight';\n","import React, { useEffect, useRef } from 'react';\nimport { Animated, StyleSheet, ViewStyle, TextStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\n\nexport interface AnimatedCounterProps {\n value: number;\n duration?: number;\n prefix?: string;\n suffix?: string;\n style?: ViewStyle;\n textStyle?: TextStyle;\n isLoading?: boolean;\n error?: Error | null;\n entity?: string;\n}\n\nexport const AnimatedCounter: React.FC<AnimatedCounterProps> = ({\n value,\n duration = 800,\n prefix = '',\n suffix = '',\n style,\n textStyle,\n}) => {\n const theme = useTheme();\n const animatedValue = useRef(new Animated.Value(0)).current;\n const displayRef = useRef(0);\n const [displayValue, setDisplayValue] = React.useState(0);\n\n useEffect(() => {\n animatedValue.setValue(displayRef.current);\n\n Animated.timing(animatedValue, {\n toValue: value,\n duration,\n useNativeDriver: false,\n }).start();\n\n const listener = animatedValue.addListener(({ value: v }) => {\n const rounded = Math.round(v);\n if (rounded !== displayRef.current) {\n displayRef.current = rounded;\n setDisplayValue(rounded);\n }\n });\n\n return () => {\n animatedValue.removeListener(listener);\n };\n }, [value, duration, animatedValue]);\n\n return (\n <Animated.View style={[styles.container, style]}>\n <Animated.Text\n style={[\n styles.text,\n {\n color: theme.colors.foreground,\n fontSize: theme.typography.sizes['2xl'],\n fontWeight: theme.typography.fontWeight.bold as '600',\n },\n textStyle,\n ]}\n >\n {prefix}{displayValue}{suffix}\n </Animated.Text>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n textAlign: 'center',\n },\n});\n\nAnimatedCounter.displayName = 'AnimatedCounter';\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Animated, StyleSheet, ViewStyle, TextStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { HStack } from './Stack';\n\nexport interface TypewriterTextProps {\n text: string;\n speed?: number;\n startDelay?: number;\n onComplete?: () => void;\n showCursor?: boolean;\n style?: ViewStyle;\n textStyle?: TextStyle;\n isLoading?: boolean;\n error?: Error | null;\n entity?: string;\n}\n\nexport const TypewriterText: React.FC<TypewriterTextProps> = ({\n text,\n speed = 50,\n startDelay = 0,\n onComplete,\n showCursor = true,\n style,\n textStyle,\n}) => {\n const theme = useTheme();\n const [displayedText, setDisplayedText] = useState('');\n const [isComplete, setIsComplete] = useState(false);\n const cursorOpacity = useRef(new Animated.Value(1)).current;\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n setDisplayedText('');\n setIsComplete(false);\n let charIndex = 0;\n\n timeoutRef.current = setTimeout(() => {\n intervalRef.current = setInterval(() => {\n if (charIndex < text.length) {\n setDisplayedText(text.slice(0, charIndex + 1));\n charIndex++;\n } else {\n if (intervalRef.current) clearInterval(intervalRef.current);\n setIsComplete(true);\n onComplete?.();\n }\n }, speed);\n }, startDelay);\n\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, [text, speed, startDelay, onComplete]);\n\n useEffect(() => {\n if (showCursor && !isComplete) {\n const blink = Animated.loop(\n Animated.sequence([\n Animated.timing(cursorOpacity, {\n toValue: 0,\n duration: 500,\n useNativeDriver: true,\n }),\n Animated.timing(cursorOpacity, {\n toValue: 1,\n duration: 500,\n useNativeDriver: true,\n }),\n ])\n );\n blink.start();\n return () => blink.stop();\n }\n }, [showCursor, isComplete, cursorOpacity]);\n\n return (\n <HStack spacing={0} align=\"flex-end\" style={style}>\n <Animated.Text\n style={[\n styles.text,\n {\n color: theme.colors.foreground,\n fontSize: theme.typography.sizes.base,\n },\n textStyle,\n ]}\n >\n {displayedText}\n </Animated.Text>\n {showCursor && !isComplete && (\n <Animated.Text\n style={[\n styles.cursor,\n {\n color: theme.colors.primary,\n fontSize: theme.typography.sizes.base,\n opacity: cursorOpacity,\n },\n ]}\n >\n |\n </Animated.Text>\n )}\n </HStack>\n );\n};\n\nconst styles = StyleSheet.create({\n text: {\n fontWeight: '400',\n },\n cursor: {\n fontWeight: '300',\n marginLeft: 1,\n },\n});\n\nTypewriterText.displayName = 'TypewriterText';\n","import React from 'react';\nimport { Pressable, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useThemeMode } from '../../providers/ThemeProvider';\nimport { Typography } from './Typography';\nimport { Icon } from './Icon';\nimport { HStack } from './Stack';\n\nexport type ThemeToggleSize = 'sm' | 'md' | 'lg';\n\nexport interface ThemeToggleProps {\n size?: ThemeToggleSize;\n showLabel?: boolean;\n style?: ViewStyle;\n isLoading?: boolean;\n error?: Error | null;\n entity?: string;\n}\n\nconst sizeConfig: Record<ThemeToggleSize, { icon: number; padding: number }> = {\n sm: { icon: 18, padding: 6 },\n md: { icon: 24, padding: 10 },\n lg: { icon: 30, padding: 14 },\n};\n\nexport const ThemeToggle: React.FC<ThemeToggleProps> = ({\n size = 'md',\n showLabel = false,\n style,\n}) => {\n const theme = useTheme();\n const { resolvedMode, toggleMode } = useThemeMode();\n const config = sizeConfig[size];\n\n const isDark = resolvedMode === 'dark';\n const iconText = isDark ? '☀' : '☾';\n const label = isDark ? 'Light mode' : 'Dark mode';\n\n return (\n <Pressable\n onPress={toggleMode}\n style={[\n styles.container,\n {\n padding: config.padding,\n borderRadius: theme.borderRadius.full,\n backgroundColor: theme.colors.secondary,\n },\n style,\n ]}\n >\n <HStack spacing={theme.spacing[2]} align=\"center\">\n <Icon name={isDark ? 'check' : 'settings'} size={config.icon} color={theme.colors.foreground} />\n <Typography variant=\"body\" style={{ color: theme.colors.foreground, fontSize: config.icon * 0.7 }}>\n {iconText}\n </Typography>\n {showLabel && (\n <Typography variant=\"caption\" style={{ color: theme.colors['muted-foreground'] }}>\n {label}\n </Typography>\n )}\n </HStack>\n </Pressable>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'flex-start',\n },\n});\n\nThemeToggle.displayName = 'ThemeToggle';\n","import React, { useRef, useState } from 'react';\nimport { View, PanResponder, StyleSheet, ViewStyle, LayoutChangeEvent } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { Typography } from './Typography';\nimport { HStack } from './Stack';\nimport { VStack } from './Stack';\nimport type { EventKey, EventPayload } from '../../types';\n\n\nexport interface RangeSliderProps {\n min?: number;\n max?: number;\n value?: number;\n step?: number;\n action?: EventKey;\n actionPayload?: EventPayload;\n onChange?: (value: number) => void;\n showValue?: boolean;\n label?: string;\n disabled?: boolean;\n style?: ViewStyle;\n isLoading?: boolean;\n error?: Error | null;\n entity?: string;\n}\n\nconst THUMB_SIZE = 24;\nconst TRACK_HEIGHT = 4;\n\nexport const RangeSlider: React.FC<RangeSliderProps> = ({\n min = 0,\n max = 100,\n value: controlledValue,\n step = 1,\n action,\n actionPayload,\n onChange,\n showValue = false,\n label,\n disabled = false,\n style,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n const [internalValue, setInternalValue] = useState(controlledValue ?? min);\n const trackWidth = useRef(0);\n const currentValue = controlledValue ?? internalValue;\n\n const clamp = (v: number) => {\n const stepped = Math.round((v - min) / step) * step + min;\n return Math.max(min, Math.min(max, stepped));\n };\n\n const getFraction = () => (currentValue - min) / (max - min);\n\n const emitValue = (v: number) => {\n const clamped = clamp(v);\n setInternalValue(clamped);\n onChange?.(clamped);\n if (action) {\n eventBus.emit(`UI:${action}`, { ...actionPayload, value: clamped });\n }\n };\n\n const panResponder = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabled,\n onMoveShouldSetPanResponder: () => !disabled,\n onPanResponderGrant: (_, gestureState) => {\n const fraction = Math.max(0, Math.min(1, gestureState.x0 / (trackWidth.current || 1)));\n emitValue(fraction * (max - min) + min);\n },\n onPanResponderMove: (_, gestureState) => {\n const startFraction = getFraction();\n const deltaFraction = gestureState.dx / (trackWidth.current || 1);\n const newValue = (startFraction + deltaFraction) * (max - min) + min;\n emitValue(newValue);\n },\n })\n ).current;\n\n const handleLayout = (e: LayoutChangeEvent) => {\n trackWidth.current = e.nativeEvent.layout.width;\n };\n\n const fraction = getFraction();\n\n const content = (\n <View\n style={[styles.trackContainer, disabled && { opacity: 0.5 }, style]}\n onLayout={handleLayout}\n {...panResponder.panHandlers}\n >\n <View\n style={[\n styles.track,\n { backgroundColor: theme.colors.border },\n ]}\n />\n <View\n style={[\n styles.trackFill,\n {\n backgroundColor: theme.colors.primary,\n width: `${fraction * 100}%`,\n },\n ]}\n />\n <View\n style={[\n styles.thumb,\n {\n backgroundColor: theme.colors.primary,\n borderColor: theme.colors.card,\n left: `${fraction * 100}%`,\n marginLeft: -THUMB_SIZE / 2,\n ...theme.shadows.sm,\n },\n ]}\n />\n </View>\n );\n\n if (label || showValue) {\n return (\n <VStack spacing={theme.spacing[2]} style={style}>\n {(label || showValue) && (\n <HStack spacing={0} align=\"center\" style={styles.header}>\n {label && (\n <Typography variant=\"caption\" style={{ color: theme.colors['muted-foreground'], flex: 1 }}>\n {label}\n </Typography>\n )}\n {showValue && (\n <Typography variant=\"body\" style={{ color: theme.colors.foreground, fontWeight: '500' }}>\n {currentValue}\n </Typography>\n )}\n </HStack>\n )}\n {content}\n </VStack>\n );\n }\n\n return content;\n};\n\nconst styles = StyleSheet.create({\n trackContainer: {\n height: THUMB_SIZE + 8,\n justifyContent: 'center',\n paddingHorizontal: THUMB_SIZE / 2,\n },\n track: {\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n position: 'absolute',\n left: THUMB_SIZE / 2,\n right: THUMB_SIZE / 2,\n },\n trackFill: {\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n position: 'absolute',\n left: THUMB_SIZE / 2,\n },\n thumb: {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n borderWidth: 3,\n position: 'absolute',\n },\n header: {\n justifyContent: 'space-between',\n },\n});\n\nRangeSlider.displayName = 'RangeSlider';\n","import React, { useMemo } from 'react';\nimport { \n View, \n Image, \n TouchableOpacity,\n StyleSheet, \n ViewStyle,\n ImageSourcePropType \n} from 'react-native';\nimport { useEventBus } from '../../../hooks/useEventBus';\n\nexport interface SpriteProps {\n /** Spritesheet image URL or require */\n spritesheet: ImageSourcePropType;\n /** Width of each frame in pixels */\n frameWidth: number;\n /** Height of each frame in pixels */\n frameHeight: number;\n /** Frame index to display (0-based, left-to-right, top-to-bottom) */\n frame: number;\n /** X position in pixels */\n x: number;\n /** Y position in pixels */\n y: number;\n /** Scale factor (default: 1) */\n scale?: number;\n /** Flip horizontally */\n flipX?: boolean;\n /** Flip vertically */\n flipY?: boolean;\n /** Rotation in degrees */\n rotation?: number;\n /** Opacity (0-1) */\n opacity?: number;\n /** Z-index for layering */\n zIndex?: number;\n /** Number of columns in spritesheet (for frame calculation) */\n columns?: number;\n /** Optional style */\n style?: ViewStyle;\n /** Optional onPress handler */\n onPress?: () => void;\n /** Declarative event name emitted on press via useEventBus */\n action?: string;\n}\n\n/**\n * Sprite component for rendering spritesheet frames\n */\nexport const Sprite: React.FC<SpriteProps> = ({\n spritesheet,\n frameWidth,\n frameHeight,\n frame,\n x,\n y,\n scale = 1,\n flipX = false,\n flipY = false,\n rotation = 0,\n opacity = 1,\n zIndex = 0,\n columns = 16,\n style,\n onPress,\n action,\n}) => {\n const eventBus = useEventBus();\n\n // Calculate source position in spritesheet\n const sourcePosition = useMemo(() => {\n const frameX = frame % columns;\n const frameY = Math.floor(frame / columns);\n return {\n x: frameX * frameWidth,\n y: frameY * frameHeight,\n };\n }, [frame, columns, frameWidth, frameHeight]);\n\n const handlePress = () => {\n if (action) eventBus.emit(`UI:${action}`, {});\n onPress?.();\n };\n\n const transform = [\n { translateX: x },\n { translateY: y },\n { scale: scale },\n { rotate: `${rotation}deg` },\n { scaleX: flipX ? -1 : 1 },\n { scaleY: flipY ? -1 : 1 },\n ];\n\n const Container = (action || onPress) ? TouchableOpacity : View;\n\n return (\n <Container\n onPress={(action || onPress) ? handlePress : undefined}\n style={[\n styles.container,\n {\n width: frameWidth,\n height: frameHeight,\n transform,\n opacity,\n zIndex,\n },\n style as never,\n ]}\n >\n <View\n style={{\n width: frameWidth * columns,\n height: frameHeight * Math.ceil((frame + 1) / columns),\n position: 'absolute',\n left: -sourcePosition.x,\n top: -sourcePosition.y,\n overflow: 'hidden',\n }}\n >\n <Image\n source={spritesheet}\n style={{\n width: frameWidth * columns,\n height: frameHeight * Math.ceil((frame + 1) / columns),\n resizeMode: 'stretch',\n }}\n />\n </View>\n </Container>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n overflow: 'hidden',\n },\n});\n\nSprite.displayName = 'Sprite';\n","import React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../../providers/ThemeContext';\n\nexport interface StateStyle {\n icon: string;\n backgroundColor: string;\n}\n\nexport interface StateIndicatorProps {\n /** The current state name */\n state: string;\n /** Optional label override (defaults to capitalized state name) */\n label?: string;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show pulse animation on non-idle states */\n animated?: boolean;\n /** Custom state styles to extend/override defaults */\n stateStyles?: Record<string, StateStyle>;\n /** Additional styles */\n style?: ViewStyle;\n}\n\nconst DEFAULT_STATE_STYLES: Record<string, StateStyle> = {\n idle: { icon: '⏸', backgroundColor: '#6b7280' },\n active: { icon: '▶', backgroundColor: '#22c55e' },\n sleeping: { icon: '💤', backgroundColor: '#6b7280' },\n moving: { icon: '🚶', backgroundColor: '#3b82f6' },\n eating: { icon: '🍽', backgroundColor: '#22c55e' },\n waiting: { icon: '⏳', backgroundColor: '#eab308' },\n happy: { icon: '😊', backgroundColor: '#22c55e' },\n scared: { icon: '😨', backgroundColor: '#ef4444' },\n done: { icon: '✓', backgroundColor: '#22c55e' },\n error: { icon: '✗', backgroundColor: '#ef4444' },\n ready: { icon: '✓', backgroundColor: '#22c55e' },\n cooldown: { icon: '🔄', backgroundColor: '#eab308' },\n};\n\nconst DEFAULT_STYLE: StateStyle = { icon: '?', backgroundColor: '#6b7280' };\n\nconst SIZE_STYLES: Record<string, { padding: number; fontSize: number }> = {\n sm: { padding: 4, fontSize: 10 },\n md: { padding: 8, fontSize: 12 },\n lg: { padding: 12, fontSize: 14 },\n};\n\nexport const StateIndicator: React.FC<StateIndicatorProps> = ({\n state,\n label,\n size = 'md',\n animated = true,\n stateStyles,\n style,\n}) => {\n const theme = useTheme();\n const mergedStyles = stateStyles\n ? { ...DEFAULT_STATE_STYLES, ...stateStyles }\n : DEFAULT_STATE_STYLES;\n const config = mergedStyles[state.toLowerCase()] || DEFAULT_STYLE;\n const displayLabel = label || state.charAt(0).toUpperCase() + state.slice(1);\n const sizeStyles = SIZE_STYLES[size];\n const shouldAnimate = animated && \n state.toLowerCase() !== 'idle' && \n state.toLowerCase() !== 'done';\n\n return (\n <View\n style={[\n styles.container,\n {\n backgroundColor: config.backgroundColor,\n paddingHorizontal: sizeStyles.padding,\n paddingVertical: sizeStyles.padding * 0.5,\n opacity: shouldAnimate ? 0.8 : 1,\n },\n style as never,\n ]}\n >\n <Text style={{ fontSize: sizeStyles.fontSize, marginRight: 4 }}>\n {config.icon}\n </Text>\n <Text\n style={{\n fontSize: sizeStyles.fontSize,\n color: theme.colors['primary-foreground'],\n fontWeight: '500',\n }}\n >\n {displayLabel}\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 9999,\n },\n});\n\nStateIndicator.displayName = 'StateIndicator';\n","import React, { useEffect, useRef } from 'react';\nimport { Platform, View, Text, ViewStyle, StyleSheet, requireNativeComponent, UIManager, findNodeHandle } from 'react-native';\n\n// ── Fabric/TurboModule spec ────────────────────────────────────────────────────\n//\n// The native view `OrbitalGameCanvasView` is registered by:\n// Android: OrbitalGameCanvasViewManager.kt (loads liborbital_shell_android.so,\n// wraps OrbitalGameSurfaceView, passes ANativeWindow* to JNI bridge)\n// iOS: OrbitalGameCanvasViewManager.swift (wraps MTKView backed by\n// OrbitalGameMTKCoordinator from bridge/OrbitalGameBridge.swift,\n// passes CAMetalLayer* to orbital_game_renderer_init)\n//\n// On-device native build (Kotlin/Swift compile + NDK/Xcode link) is CI-deferred;\n// see docs/Almadar_Compiler_Gaps.md MOBILE-GPU-NATIVE-BUILD.\n//\n// The JS component below is tsc-clean and runtime-safe: on platforms where the\n// native module is absent (e.g. web/simulator without the .so/.a) it renders a\n// clearly-labelled placeholder View so the app doesn't crash.\n\nexport interface OrbitalGameCanvasProps {\n /** JSON-encoded GameRenderPacket forwarded verbatim to orbital_game_renderer_submit. */\n jsonPacket: string;\n /** Trait name for dispatch wiring. */\n trait: string;\n /** Additional pattern config forwarded as part of the packet. */\n props?: Record<string, unknown>;\n style?: ViewStyle;\n onReady?: () => void;\n onError?: (error: string) => void;\n}\n\n// The native component name must match the return value of `getName()` in\n// OrbitalGameCanvasViewManager on both platforms.\nconst NATIVE_VIEW_NAME = 'OrbitalGameCanvasView';\n\n// `requireNativeComponent` throws in test/web environments where the native\n// module is not registered. Guard so tsc-clean JS can run in any context.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet NativeGameCanvas: React.ComponentType<any> | null = null;\nconst nativeAvailable = Platform.OS === 'android' || Platform.OS === 'ios';\nif (nativeAvailable) {\n try {\n NativeGameCanvas = requireNativeComponent(NATIVE_VIEW_NAME);\n } catch {\n // Native module absent: fall through to JS fallback below.\n NativeGameCanvas = null;\n }\n}\n\n// ── Native commands ────────────────────────────────────────────────────────────\n\nconst COMMANDS: Record<string, number> | undefined = UIManager.getViewManagerConfig\n ? (UIManager.getViewManagerConfig(NATIVE_VIEW_NAME)?.Commands as Record<string, number> | undefined)\n : undefined;\n\n/** Submit a new JSON GameRenderPacket to the already-mounted native renderer. */\nfunction nativeSubmitPacket(ref: React.RefObject<View | null>, jsonPacket: string): void {\n if (!ref.current || !COMMANDS || typeof COMMANDS['submitPacket'] !== 'number') {\n return;\n }\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(ref.current),\n COMMANDS['submitPacket'],\n [jsonPacket],\n );\n}\n\n// ── OrbitalGameCanvas ──────────────────────────────────────────────────────────\n\n/**\n * React Native native view that renders game-canvas patterns via the\n * orbital-game-renderer GPU backend (Vulkan on Android, Metal on iOS).\n *\n * The component wraps:\n * - Android: OrbitalGameSurfaceView → JNI → orbital_game_renderer_init/render\n * - iOS: OrbitalGameMTKCoordinator → Swift bridge → orbital_game_renderer_init/render\n *\n * On simulators or web (no GPU adapter) a labelled placeholder is shown.\n */\nexport const OrbitalGameCanvas: React.FC<OrbitalGameCanvasProps> = ({\n jsonPacket,\n trait,\n props: _props,\n style,\n onReady,\n onError: _onError,\n}) => {\n // Ref typed as View so `findNodeHandle` works; the actual native component\n // instance shares the same handle.\n const ref = useRef<View>(null);\n\n // Re-submit the packet on prop change after the native renderer is mounted.\n useEffect(() => {\n nativeSubmitPacket(ref, jsonPacket);\n }, [jsonPacket]);\n\n useEffect(() => {\n if (onReady) {\n onReady();\n }\n }, [onReady]);\n\n if (NativeGameCanvas) {\n // Forward props to the native view; style is merged with the flex default.\n return (\n <NativeGameCanvas\n ref={ref}\n jsonPacket={jsonPacket}\n trait={trait}\n style={[styles.canvas, style]}\n />\n );\n }\n\n // Fallback: native module absent (web, bare simulator, test environment).\n return (\n <View style={[styles.fallback, style]}>\n <Text style={styles.fallbackText}>\n [OrbitalGameCanvas — native GPU unavailable]\n </Text>\n <Text style={styles.fallbackSub}>{trait}</Text>\n </View>\n );\n};\n\nOrbitalGameCanvas.displayName = 'OrbitalGameCanvas';\n\nconst styles = StyleSheet.create({\n canvas: {\n flex: 1,\n },\n fallback: {\n flex: 1,\n minHeight: 160,\n backgroundColor: '#111',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 8,\n },\n fallbackText: {\n color: '#aaa',\n fontSize: 12,\n fontFamily: 'monospace',\n },\n fallbackSub: {\n color: '#666',\n fontSize: 10,\n marginTop: 4,\n fontFamily: 'monospace',\n },\n});\n"],"mappings":"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","names":["React","View","StyleSheet","React","View","styles","StyleSheet","React","TouchableOpacity","View","StyleSheet","React","width","View","styles","TouchableOpacity","StyleSheet","React","StyleSheet","View","React","View","styles","StyleSheet","React","View","Text","StyleSheet","sizeMap","React","View","styles","Text","StyleSheet","React","View","StyleSheet","React","View","styles","StyleSheet","React","View","React","Animated","React","View","Animated","StyleSheet","Animated","React","View","styles","StyleSheet","React","StyleSheet","React","styles","StyleSheet","React","StyleSheet","React","styles","StyleSheet","React","useEffect","useRef","Animated","StyleSheet","useRef","Animated","React","useEffect","styles","StyleSheet","React","useEffect","useRef","Animated","StyleSheet","useRef","Animated","useEffect","React","styles","StyleSheet","React","Pressable","StyleSheet","sizeConfig","React","Pressable","styles","StyleSheet","React","useRef","useState","View","StyleSheet","useState","useRef","fraction","React","View","styles","StyleSheet","React","View","Image","TouchableOpacity","StyleSheet","TouchableOpacity","View","React","styles","Image","StyleSheet","React","View","Text","StyleSheet","React","View","styles","Text","StyleSheet","React","useEffect","useRef","View","Text","StyleSheet","styles"]}
|
|
@@ -3774,7 +3774,7 @@ var RepeatableFormSection = ({
|
|
|
3774
3774
|
setItems(newItems);
|
|
3775
3775
|
const addPayload = {
|
|
3776
3776
|
entity,
|
|
3777
|
-
item: newItem,
|
|
3777
|
+
item: { ...newItem },
|
|
3778
3778
|
index: newItems.length - 1,
|
|
3779
3779
|
totalItems: newItems.length
|
|
3780
3780
|
};
|
|
@@ -3790,7 +3790,7 @@ var RepeatableFormSection = ({
|
|
|
3790
3790
|
setItems(newItems);
|
|
3791
3791
|
const removePayload = {
|
|
3792
3792
|
entity,
|
|
3793
|
-
item: removedItem,
|
|
3793
|
+
item: { ...removedItem },
|
|
3794
3794
|
index,
|
|
3795
3795
|
totalItems: newItems.length
|
|
3796
3796
|
};
|
|
@@ -3804,7 +3804,7 @@ var RepeatableFormSection = ({
|
|
|
3804
3804
|
setItems(newItems);
|
|
3805
3805
|
const updatePayload = {
|
|
3806
3806
|
entity,
|
|
3807
|
-
item: newItems[index],
|
|
3807
|
+
item: { ...newItems[index] },
|
|
3808
3808
|
index,
|
|
3809
3809
|
data
|
|
3810
3810
|
};
|
|
@@ -5061,7 +5061,7 @@ var SortableList = ({
|
|
|
5061
5061
|
next.splice(toIndex, 0, moved);
|
|
5062
5062
|
onReorder?.(next);
|
|
5063
5063
|
if (reorderEvent) {
|
|
5064
|
-
const payload = { items: next, fromIndex, toIndex };
|
|
5064
|
+
const payload = { items: next.map((item) => ({ ...item })), fromIndex, toIndex };
|
|
5065
5065
|
eventBus.emit(`UI:${reorderEvent}`, payload);
|
|
5066
5066
|
}
|
|
5067
5067
|
return next;
|
|
@@ -5697,4 +5697,4 @@ export {
|
|
|
5697
5697
|
Lightbox,
|
|
5698
5698
|
ScaledDiagram
|
|
5699
5699
|
};
|
|
5700
|
-
//# sourceMappingURL=chunk-
|
|
5700
|
+
//# sourceMappingURL=chunk-T33BAIMJ.js.map
|