@almadar/mobile 1.1.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/README.md +203 -0
- package/dist/chunk-6RVITGGH.js +167 -0
- package/dist/chunk-6RVITGGH.js.map +1 -0
- package/dist/chunk-7C5JCLLY.js +1125 -0
- package/dist/chunk-7C5JCLLY.js.map +1 -0
- package/dist/chunk-CA6Z3OTE.js +247 -0
- package/dist/chunk-CA6Z3OTE.js.map +1 -0
- package/dist/chunk-CUAWHLEK.js +119 -0
- package/dist/chunk-CUAWHLEK.js.map +1 -0
- package/dist/chunk-DMLYJFYQ.js +816 -0
- package/dist/chunk-DMLYJFYQ.js.map +1 -0
- package/dist/chunk-DY52O4T3.js +795 -0
- package/dist/chunk-DY52O4T3.js.map +1 -0
- package/dist/chunk-LFHVNHVA.js +176 -0
- package/dist/chunk-LFHVNHVA.js.map +1 -0
- package/dist/chunk-MFU7Q7LU.js +206 -0
- package/dist/chunk-MFU7Q7LU.js.map +1 -0
- package/dist/chunk-S2IT7WZT.js +71 -0
- package/dist/chunk-S2IT7WZT.js.map +1 -0
- package/dist/chunk-T77JPOTP.js +11789 -0
- package/dist/chunk-T77JPOTP.js.map +1 -0
- package/dist/chunk-VLUJ7BXN.js +36 -0
- package/dist/chunk-VLUJ7BXN.js.map +1 -0
- package/dist/chunk-YMJZLYLV.js +4086 -0
- package/dist/chunk-YMJZLYLV.js.map +1 -0
- package/dist/chunk-YTVYMEKU.js +7 -0
- package/dist/chunk-YTVYMEKU.js.map +1 -0
- package/dist/components/atoms/Avatar.d.ts +17 -0
- package/dist/components/atoms/Avatar.d.ts.map +1 -0
- package/dist/components/atoms/Badge.d.ts +18 -0
- package/dist/components/atoms/Badge.d.ts.map +1 -0
- package/dist/components/atoms/Button.d.ts +20 -0
- package/dist/components/atoms/Button.d.ts.map +1 -0
- package/dist/components/atoms/Card.d.ts +21 -0
- package/dist/components/atoms/Card.d.ts.map +1 -0
- package/dist/components/atoms/Center.d.ts +14 -0
- package/dist/components/atoms/Center.d.ts.map +1 -0
- package/dist/components/atoms/Checkbox.d.ts +21 -0
- package/dist/components/atoms/Checkbox.d.ts.map +1 -0
- package/dist/components/atoms/ConditionalWrapper.d.ts +34 -0
- package/dist/components/atoms/ConditionalWrapper.d.ts.map +1 -0
- package/dist/components/atoms/Divider.d.ts +11 -0
- package/dist/components/atoms/Divider.d.ts.map +1 -0
- package/dist/components/atoms/Icon.d.ts +11 -0
- package/dist/components/atoms/Icon.d.ts.map +1 -0
- package/dist/components/atoms/Input.d.ts +21 -0
- package/dist/components/atoms/Input.d.ts.map +1 -0
- package/dist/components/atoms/Label.d.ts +12 -0
- package/dist/components/atoms/Label.d.ts.map +1 -0
- package/dist/components/atoms/Overlay.d.ts +16 -0
- package/dist/components/atoms/Overlay.d.ts.map +1 -0
- package/dist/components/atoms/ProgressBar.d.ts +18 -0
- package/dist/components/atoms/ProgressBar.d.ts.map +1 -0
- package/dist/components/atoms/Radio.d.ts +21 -0
- package/dist/components/atoms/Radio.d.ts.map +1 -0
- package/dist/components/atoms/Select.d.ts +27 -0
- package/dist/components/atoms/Select.d.ts.map +1 -0
- package/dist/components/atoms/Spacer.d.ts +20 -0
- package/dist/components/atoms/Spacer.d.ts.map +1 -0
- package/dist/components/atoms/Spinner.d.ts +11 -0
- package/dist/components/atoms/Spinner.d.ts.map +1 -0
- package/dist/components/atoms/Stack.d.ts +45 -0
- package/dist/components/atoms/Stack.d.ts.map +1 -0
- package/dist/components/atoms/Switch.d.ts +21 -0
- package/dist/components/atoms/Switch.d.ts.map +1 -0
- package/dist/components/atoms/Textarea.d.ts +22 -0
- package/dist/components/atoms/Textarea.d.ts.map +1 -0
- package/dist/components/atoms/Typography.d.ts +20 -0
- package/dist/components/atoms/Typography.d.ts.map +1 -0
- package/dist/components/atoms/game/ControlButton.d.ts +30 -0
- package/dist/components/atoms/game/ControlButton.d.ts.map +1 -0
- package/dist/components/atoms/game/HealthBar.d.ts +18 -0
- package/dist/components/atoms/game/HealthBar.d.ts.map +1 -0
- package/dist/components/atoms/game/ScoreDisplay.d.ts +20 -0
- package/dist/components/atoms/game/ScoreDisplay.d.ts.map +1 -0
- package/dist/components/atoms/game/Sprite.d.ts +41 -0
- package/dist/components/atoms/game/Sprite.d.ts.map +1 -0
- package/dist/components/atoms/game/StateIndicator.d.ts +22 -0
- package/dist/components/atoms/game/StateIndicator.d.ts.map +1 -0
- package/dist/components/atoms/game/index.d.ts +11 -0
- package/dist/components/atoms/game/index.d.ts.map +1 -0
- package/dist/components/atoms/index.d.ts +45 -0
- package/dist/components/atoms/index.d.ts.map +1 -0
- package/dist/components/atoms/index.js +69 -0
- package/dist/components/atoms/index.js.map +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +317 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/molecules/Alert.d.ts +22 -0
- package/dist/components/molecules/Alert.d.ts.map +1 -0
- package/dist/components/molecules/Breadcrumb.d.ts +16 -0
- package/dist/components/molecules/Breadcrumb.d.ts.map +1 -0
- package/dist/components/molecules/ButtonGroup.d.ts +23 -0
- package/dist/components/molecules/ButtonGroup.d.ts.map +1 -0
- package/dist/components/molecules/CodeBlock.d.ts +26 -0
- package/dist/components/molecules/CodeBlock.d.ts.map +1 -0
- package/dist/components/molecules/Container.d.ts +20 -0
- package/dist/components/molecules/Container.d.ts.map +1 -0
- package/dist/components/molecules/Drawer.d.ts +11 -0
- package/dist/components/molecules/Drawer.d.ts.map +1 -0
- package/dist/components/molecules/EmptyState.d.ts +7 -0
- package/dist/components/molecules/EmptyState.d.ts.map +1 -0
- package/dist/components/molecules/ErrorBoundary.d.ts +29 -0
- package/dist/components/molecules/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/molecules/ErrorState.d.ts +7 -0
- package/dist/components/molecules/ErrorState.d.ts.map +1 -0
- package/dist/components/molecules/FilterGroup.d.ts +54 -0
- package/dist/components/molecules/FilterGroup.d.ts.map +1 -0
- package/dist/components/molecules/Flex.d.ts +31 -0
- package/dist/components/molecules/Flex.d.ts.map +1 -0
- package/dist/components/molecules/FloatingActionButton.d.ts +33 -0
- package/dist/components/molecules/FloatingActionButton.d.ts.map +1 -0
- package/dist/components/molecules/FormField.d.ts +12 -0
- package/dist/components/molecules/FormField.d.ts.map +1 -0
- package/dist/components/molecules/FormSectionHeader.d.ts +15 -0
- package/dist/components/molecules/FormSectionHeader.d.ts.map +1 -0
- package/dist/components/molecules/Grid.d.ts +24 -0
- package/dist/components/molecules/Grid.d.ts.map +1 -0
- package/dist/components/molecules/InputGroup.d.ts +18 -0
- package/dist/components/molecules/InputGroup.d.ts.map +1 -0
- package/dist/components/molecules/List.d.ts +16 -0
- package/dist/components/molecules/List.d.ts.map +1 -0
- package/dist/components/molecules/LoadingState.d.ts +6 -0
- package/dist/components/molecules/LoadingState.d.ts.map +1 -0
- package/dist/components/molecules/MarkdownContent.d.ts +18 -0
- package/dist/components/molecules/MarkdownContent.d.ts.map +1 -0
- package/dist/components/molecules/Menu.d.ts +19 -0
- package/dist/components/molecules/Menu.d.ts.map +1 -0
- package/dist/components/molecules/Meter.d.ts +58 -0
- package/dist/components/molecules/Meter.d.ts.map +1 -0
- package/dist/components/molecules/Modal.d.ts +22 -0
- package/dist/components/molecules/Modal.d.ts.map +1 -0
- package/dist/components/molecules/Navigation.d.ts +72 -0
- package/dist/components/molecules/Navigation.d.ts.map +1 -0
- package/dist/components/molecules/Pagination.d.ts +30 -0
- package/dist/components/molecules/Pagination.d.ts.map +1 -0
- package/dist/components/molecules/Popover.d.ts +11 -0
- package/dist/components/molecules/Popover.d.ts.map +1 -0
- package/dist/components/molecules/QuizBlock.d.ts +35 -0
- package/dist/components/molecules/QuizBlock.d.ts.map +1 -0
- package/dist/components/molecules/RelationSelect.d.ts +38 -0
- package/dist/components/molecules/RelationSelect.d.ts.map +1 -0
- package/dist/components/molecules/RepeatableFormSection.d.ts +46 -0
- package/dist/components/molecules/RepeatableFormSection.d.ts.map +1 -0
- package/dist/components/molecules/ScaledDiagram.d.ts +41 -0
- package/dist/components/molecules/ScaledDiagram.d.ts.map +1 -0
- package/dist/components/molecules/SearchInput.d.ts +22 -0
- package/dist/components/molecules/SearchInput.d.ts.map +1 -0
- package/dist/components/molecules/SidePanel.d.ts +49 -0
- package/dist/components/molecules/SidePanel.d.ts.map +1 -0
- package/dist/components/molecules/SimpleGrid.d.ts +17 -0
- package/dist/components/molecules/SimpleGrid.d.ts.map +1 -0
- package/dist/components/molecules/Skeleton.d.ts +12 -0
- package/dist/components/molecules/Skeleton.d.ts.map +1 -0
- package/dist/components/molecules/Tabs.d.ts +25 -0
- package/dist/components/molecules/Tabs.d.ts.map +1 -0
- package/dist/components/molecules/Toast.d.ts +18 -0
- package/dist/components/molecules/Toast.d.ts.map +1 -0
- package/dist/components/molecules/Tooltip.d.ts +11 -0
- package/dist/components/molecules/Tooltip.d.ts.map +1 -0
- package/dist/components/molecules/WizardNavigation.d.ts +36 -0
- package/dist/components/molecules/WizardNavigation.d.ts.map +1 -0
- package/dist/components/molecules/WizardProgress.d.ts +26 -0
- package/dist/components/molecules/WizardProgress.d.ts.map +1 -0
- package/dist/components/molecules/game/ActionButtons.d.ts +30 -0
- package/dist/components/molecules/game/ActionButtons.d.ts.map +1 -0
- package/dist/components/molecules/game/DPad.d.ts +19 -0
- package/dist/components/molecules/game/DPad.d.ts.map +1 -0
- package/dist/components/molecules/game/StatBadge.d.ts +26 -0
- package/dist/components/molecules/game/StatBadge.d.ts.map +1 -0
- package/dist/components/molecules/game/index.d.ts +7 -0
- package/dist/components/molecules/game/index.d.ts.map +1 -0
- package/dist/components/molecules/index.d.ts +79 -0
- package/dist/components/molecules/index.d.ts.map +1 -0
- package/dist/components/molecules/index.js +96 -0
- package/dist/components/molecules/index.js.map +1 -0
- package/dist/components/organisms/CardGrid.d.ts +16 -0
- package/dist/components/organisms/CardGrid.d.ts.map +1 -0
- package/dist/components/organisms/Chart.d.ts +26 -0
- package/dist/components/organisms/Chart.d.ts.map +1 -0
- package/dist/components/organisms/CodeViewer.d.ts +29 -0
- package/dist/components/organisms/CodeViewer.d.ts.map +1 -0
- package/dist/components/organisms/ComponentPatterns.d.ts +34 -0
- package/dist/components/organisms/ComponentPatterns.d.ts.map +1 -0
- package/dist/components/organisms/ConfirmDialog.d.ts +46 -0
- package/dist/components/organisms/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/organisms/ContentRenderer.d.ts +37 -0
- package/dist/components/organisms/ContentRenderer.d.ts.map +1 -0
- package/dist/components/organisms/CustomPattern.d.ts +36 -0
- package/dist/components/organisms/CustomPattern.d.ts.map +1 -0
- package/dist/components/organisms/DataTable.d.ts +22 -0
- package/dist/components/organisms/DataTable.d.ts.map +1 -0
- package/dist/components/organisms/DetailPanel.d.ts +17 -0
- package/dist/components/organisms/DetailPanel.d.ts.map +1 -0
- package/dist/components/organisms/DocumentViewer.d.ts +34 -0
- package/dist/components/organisms/DocumentViewer.d.ts.map +1 -0
- package/dist/components/organisms/DrawerSlot.d.ts +38 -0
- package/dist/components/organisms/DrawerSlot.d.ts.map +1 -0
- package/dist/components/organisms/EntityCard.d.ts +11 -0
- package/dist/components/organisms/EntityCard.d.ts.map +1 -0
- package/dist/components/organisms/EntityList.d.ts +17 -0
- package/dist/components/organisms/EntityList.d.ts.map +1 -0
- package/dist/components/organisms/Form.d.ts +49 -0
- package/dist/components/organisms/Form.d.ts.map +1 -0
- package/dist/components/organisms/FormSection.d.ts +9 -0
- package/dist/components/organisms/FormSection.d.ts.map +1 -0
- package/dist/components/organisms/Header.d.ts +24 -0
- package/dist/components/organisms/Header.d.ts.map +1 -0
- package/dist/components/organisms/LayoutPatterns.d.ts +39 -0
- package/dist/components/organisms/LayoutPatterns.d.ts.map +1 -0
- package/dist/components/organisms/MasterDetail.d.ts +39 -0
- package/dist/components/organisms/MasterDetail.d.ts.map +1 -0
- package/dist/components/organisms/MediaGallery.d.ts +35 -0
- package/dist/components/organisms/MediaGallery.d.ts.map +1 -0
- package/dist/components/organisms/ModalSlot.d.ts +35 -0
- package/dist/components/organisms/ModalSlot.d.ts.map +1 -0
- package/dist/components/organisms/PageHeader.d.ts +15 -0
- package/dist/components/organisms/PageHeader.d.ts.map +1 -0
- package/dist/components/organisms/Section.d.ts +52 -0
- package/dist/components/organisms/Section.d.ts.map +1 -0
- package/dist/components/organisms/Sidebar.d.ts +54 -0
- package/dist/components/organisms/Sidebar.d.ts.map +1 -0
- package/dist/components/organisms/SignaturePad.d.ts +44 -0
- package/dist/components/organisms/SignaturePad.d.ts.map +1 -0
- package/dist/components/organisms/Split.d.ts +34 -0
- package/dist/components/organisms/Split.d.ts.map +1 -0
- package/dist/components/organisms/StatCard.d.ts +20 -0
- package/dist/components/organisms/StatCard.d.ts.map +1 -0
- package/dist/components/organisms/StateMachineView.d.ts +41 -0
- package/dist/components/organisms/StateMachineView.d.ts.map +1 -0
- package/dist/components/organisms/Table.d.ts +104 -0
- package/dist/components/organisms/Table.d.ts.map +1 -0
- package/dist/components/organisms/Timeline.d.ts +19 -0
- package/dist/components/organisms/Timeline.d.ts.map +1 -0
- package/dist/components/organisms/ToastSlot.d.ts +30 -0
- package/dist/components/organisms/ToastSlot.d.ts.map +1 -0
- package/dist/components/organisms/UISlotRenderer.d.ts +35 -0
- package/dist/components/organisms/UISlotRenderer.d.ts.map +1 -0
- package/dist/components/organisms/WizardContainer.d.ts +25 -0
- package/dist/components/organisms/WizardContainer.d.ts.map +1 -0
- package/dist/components/organisms/book/BookChapterView.d.ts +26 -0
- package/dist/components/organisms/book/BookChapterView.d.ts.map +1 -0
- package/dist/components/organisms/book/BookCoverPage.d.ts +38 -0
- package/dist/components/organisms/book/BookCoverPage.d.ts.map +1 -0
- package/dist/components/organisms/book/BookNavBar.d.ts +40 -0
- package/dist/components/organisms/book/BookNavBar.d.ts.map +1 -0
- package/dist/components/organisms/book/BookTableOfContents.d.ts +32 -0
- package/dist/components/organisms/book/BookTableOfContents.d.ts.map +1 -0
- package/dist/components/organisms/book/BookViewer.d.ts +36 -0
- package/dist/components/organisms/book/BookViewer.d.ts.map +1 -0
- package/dist/components/organisms/book/index.d.ts +11 -0
- package/dist/components/organisms/book/index.d.ts.map +1 -0
- package/dist/components/organisms/game/BattleBoard.d.ts +38 -0
- package/dist/components/organisms/game/BattleBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/CanvasEffect.d.ts +26 -0
- package/dist/components/organisms/game/CanvasEffect.d.ts.map +1 -0
- package/dist/components/organisms/game/CastleBoard.d.ts +30 -0
- package/dist/components/organisms/game/CastleBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/CombatLog.d.ts +23 -0
- package/dist/components/organisms/game/CombatLog.d.ts.map +1 -0
- package/dist/components/organisms/game/DialogueBox.d.ts +40 -0
- package/dist/components/organisms/game/DialogueBox.d.ts.map +1 -0
- package/dist/components/organisms/game/GameAudioProvider.d.ts +50 -0
- package/dist/components/organisms/game/GameAudioProvider.d.ts.map +1 -0
- package/dist/components/organisms/game/GameAudioToggle.d.ts +18 -0
- package/dist/components/organisms/game/GameAudioToggle.d.ts.map +1 -0
- package/dist/components/organisms/game/GameCanvas3D.d.ts +53 -0
- package/dist/components/organisms/game/GameCanvas3D.d.ts.map +1 -0
- package/dist/components/organisms/game/GameHud.d.ts +40 -0
- package/dist/components/organisms/game/GameHud.d.ts.map +1 -0
- package/dist/components/organisms/game/GameMenu.d.ts +34 -0
- package/dist/components/organisms/game/GameMenu.d.ts.map +1 -0
- package/dist/components/organisms/game/GameOverScreen.d.ts +36 -0
- package/dist/components/organisms/game/GameOverScreen.d.ts.map +1 -0
- package/dist/components/organisms/game/InventoryPanel.d.ts +38 -0
- package/dist/components/organisms/game/InventoryPanel.d.ts.map +1 -0
- package/dist/components/organisms/game/IsometricCanvas.d.ts +54 -0
- package/dist/components/organisms/game/IsometricCanvas.d.ts.map +1 -0
- package/dist/components/organisms/game/TraitSlot.d.ts +29 -0
- package/dist/components/organisms/game/TraitSlot.d.ts.map +1 -0
- package/dist/components/organisms/game/TraitStateViewer.d.ts +28 -0
- package/dist/components/organisms/game/TraitStateViewer.d.ts.map +1 -0
- package/dist/components/organisms/game/UncontrolledBattleBoard.d.ts +30 -0
- package/dist/components/organisms/game/UncontrolledBattleBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/WorldMapBoard.d.ts +40 -0
- package/dist/components/organisms/game/WorldMapBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/index.d.ts +37 -0
- package/dist/components/organisms/game/index.d.ts.map +1 -0
- package/dist/components/organisms/game/physics-sim/SimulationCanvas.d.ts +41 -0
- package/dist/components/organisms/game/physics-sim/SimulationCanvas.d.ts.map +1 -0
- package/dist/components/organisms/game/physics-sim/SimulationControls.d.ts +38 -0
- package/dist/components/organisms/game/physics-sim/SimulationControls.d.ts.map +1 -0
- package/dist/components/organisms/game/physics-sim/SimulationGraph.d.ts +35 -0
- package/dist/components/organisms/game/physics-sim/SimulationGraph.d.ts.map +1 -0
- package/dist/components/organisms/game/physics-sim/index.d.ts +7 -0
- package/dist/components/organisms/game/physics-sim/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/builder/BuilderBoard.d.ts +55 -0
- package/dist/components/organisms/game/puzzles/builder/BuilderBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/builder/index.d.ts +3 -0
- package/dist/components/organisms/game/puzzles/builder/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/classifier/ClassifierBoard.d.ts +56 -0
- package/dist/components/organisms/game/puzzles/classifier/ClassifierBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/classifier/index.d.ts +3 -0
- package/dist/components/organisms/game/puzzles/classifier/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/debugger/DebuggerBoard.d.ts +48 -0
- package/dist/components/organisms/game/puzzles/debugger/DebuggerBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/debugger/index.d.ts +3 -0
- package/dist/components/organisms/game/puzzles/debugger/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/event-handler/EventHandlerBoard.d.ts +56 -0
- package/dist/components/organisms/game/puzzles/event-handler/EventHandlerBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/event-handler/EventLog.d.ts +33 -0
- package/dist/components/organisms/game/puzzles/event-handler/EventLog.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/event-handler/ObjectRulePanel.d.ts +41 -0
- package/dist/components/organisms/game/puzzles/event-handler/ObjectRulePanel.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/event-handler/RuleEditor.d.ts +39 -0
- package/dist/components/organisms/game/puzzles/event-handler/RuleEditor.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/event-handler/index.d.ts +9 -0
- package/dist/components/organisms/game/puzzles/event-handler/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/index.d.ts +49 -0
- package/dist/components/organisms/game/puzzles/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/negotiator/NegotiatorBoard.d.ts +54 -0
- package/dist/components/organisms/game/puzzles/negotiator/NegotiatorBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/negotiator/index.d.ts +3 -0
- package/dist/components/organisms/game/puzzles/negotiator/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/sequencer/ActionPalette.d.ts +32 -0
- package/dist/components/organisms/game/puzzles/sequencer/ActionPalette.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/sequencer/ActionTile.d.ts +27 -0
- package/dist/components/organisms/game/puzzles/sequencer/ActionTile.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/sequencer/SequenceBar.d.ts +31 -0
- package/dist/components/organisms/game/puzzles/sequencer/SequenceBar.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/sequencer/SequencerBoard.d.ts +67 -0
- package/dist/components/organisms/game/puzzles/sequencer/SequencerBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/sequencer/index.d.ts +3 -0
- package/dist/components/organisms/game/puzzles/sequencer/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/simulator/SimulatorBoard.d.ts +55 -0
- package/dist/components/organisms/game/puzzles/simulator/SimulatorBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/simulator/index.d.ts +3 -0
- package/dist/components/organisms/game/puzzles/simulator/index.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/state-architect/CodeView.d.ts +40 -0
- package/dist/components/organisms/game/puzzles/state-architect/CodeView.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/state-architect/StateArchitectBoard.d.ts +78 -0
- package/dist/components/organisms/game/puzzles/state-architect/StateArchitectBoard.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/state-architect/StateNode.d.ts +29 -0
- package/dist/components/organisms/game/puzzles/state-architect/StateNode.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/state-architect/TransitionArrow.d.ts +33 -0
- package/dist/components/organisms/game/puzzles/state-architect/TransitionArrow.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/state-architect/VariablePanel.d.ts +38 -0
- package/dist/components/organisms/game/puzzles/state-architect/VariablePanel.d.ts.map +1 -0
- package/dist/components/organisms/game/puzzles/state-architect/index.d.ts +3 -0
- package/dist/components/organisms/game/puzzles/state-architect/index.d.ts.map +1 -0
- package/dist/components/organisms/index.d.ts +68 -0
- package/dist/components/organisms/index.d.ts.map +1 -0
- package/dist/components/organisms/index.js +168 -0
- package/dist/components/organisms/index.js.map +1 -0
- package/dist/components/organisms/layout/DashboardGrid.d.ts +25 -0
- package/dist/components/organisms/layout/DashboardGrid.d.ts.map +1 -0
- package/dist/components/organisms/layout/SplitPane.d.ts +25 -0
- package/dist/components/organisms/layout/SplitPane.d.ts.map +1 -0
- package/dist/components/organisms/layout/TabbedContainer.d.ts +26 -0
- package/dist/components/organisms/layout/TabbedContainer.d.ts.map +1 -0
- package/dist/components/organisms/layout/index.d.ts +7 -0
- package/dist/components/organisms/layout/index.d.ts.map +1 -0
- package/dist/components/templates/AuthLayout.d.ts +20 -0
- package/dist/components/templates/AuthLayout.d.ts.map +1 -0
- package/dist/components/templates/BattleTemplate.d.ts +31 -0
- package/dist/components/templates/BattleTemplate.d.ts.map +1 -0
- package/dist/components/templates/CastleTemplate.d.ts +32 -0
- package/dist/components/templates/CastleTemplate.d.ts.map +1 -0
- package/dist/components/templates/CounterTemplate.d.ts +32 -0
- package/dist/components/templates/CounterTemplate.d.ts.map +1 -0
- package/dist/components/templates/DashboardLayout.d.ts +20 -0
- package/dist/components/templates/DashboardLayout.d.ts.map +1 -0
- package/dist/components/templates/GameShell.d.ts +29 -0
- package/dist/components/templates/GameShell.d.ts.map +1 -0
- package/dist/components/templates/GameTemplate.d.ts +55 -0
- package/dist/components/templates/GameTemplate.d.ts.map +1 -0
- package/dist/components/templates/WorldMapTemplate.d.ts +35 -0
- package/dist/components/templates/WorldMapTemplate.d.ts.map +1 -0
- package/dist/components/templates/index.d.ts +17 -0
- package/dist/components/templates/index.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +17 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +34 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useEventBus.d.ts +2 -0
- package/dist/hooks/useEventBus.d.ts.map +1 -0
- package/dist/hooks/useInfiniteScroll.d.ts +32 -0
- package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
- package/dist/hooks/useKeyboard.d.ts +11 -0
- package/dist/hooks/useKeyboard.d.ts.map +1 -0
- package/dist/hooks/useNavigation.d.ts +41 -0
- package/dist/hooks/useNavigation.d.ts.map +1 -0
- package/dist/hooks/usePullToRefresh.d.ts +29 -0
- package/dist/hooks/usePullToRefresh.d.ts.map +1 -0
- package/dist/hooks/useSafeAreaInsets.d.ts +29 -0
- package/dist/hooks/useSafeAreaInsets.d.ts.map +1 -0
- package/dist/hooks/useScrollHeader.d.ts +33 -0
- package/dist/hooks/useScrollHeader.d.ts.map +1 -0
- package/dist/hooks/useThemeStyles.d.ts +26 -0
- package/dist/hooks/useThemeStyles.d.ts.map +1 -0
- package/dist/hooks/useTraitState.d.ts +11 -0
- package/dist/hooks/useTraitState.d.ts.map +1 -0
- package/dist/hooks/useUIEvents.d.ts +2 -0
- package/dist/hooks/useUIEvents.d.ts.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1264 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cn.d.ts +2 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/index.d.ts +6 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +18 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/theme.d.ts +13 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/providers/EventBusProvider.d.ts +2 -0
- package/dist/providers/EventBusProvider.d.ts.map +1 -0
- package/dist/providers/ThemeContext.d.ts +91 -0
- package/dist/providers/ThemeContext.d.ts.map +1 -0
- package/dist/providers/ThemeProvider.d.ts +10 -0
- package/dist/providers/ThemeProvider.d.ts.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +14 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/themes/almadar.d.ts +8 -0
- package/dist/themes/almadar.d.ts.map +1 -0
- package/dist/themes/index.d.ts +90 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/index.js +10 -0
- package/package.json +109 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/atoms/Typography.tsx","../src/components/molecules/LoadingState.tsx","../src/components/atoms/Stack.tsx","../src/components/molecules/ErrorState.tsx","../src/components/atoms/Button.tsx","../src/components/atoms/Input.tsx","../src/components/atoms/Select.tsx","../src/components/atoms/Card.tsx","../src/components/atoms/Badge.tsx","../src/components/atoms/ProgressBar.tsx","../src/components/atoms/game/HealthBar.tsx","../src/components/atoms/game/ScoreDisplay.tsx"],"sourcesContent":["import React from 'react';\nimport { Text, StyleSheet, TextStyle, TextProps } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\n\nexport type TypographyVariant = \n | 'h1' \n | 'h2' \n | 'h3' \n | 'h4' \n | 'body' \n | 'caption' \n | 'label';\n\nexport interface TypographyProps extends TextProps {\n variant?: TypographyVariant;\n color?: string;\n align?: 'left' | 'center' | 'right';\n children: React.ReactNode;\n /** Loading state indicator - renders as skeleton when true */\n isLoading?: boolean;\n /** Error state - can affect styling */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport function Typography({\n variant = 'body',\n color,\n align = 'left',\n children,\n style,\n isLoading,\n error,\n ...rest\n}: TypographyProps) {\n const theme = useTheme();\n\n // When loading, return a skeleton-like placeholder\n if (isLoading) {\n return (\n <Text\n style={[\n styles.skeleton,\n {\n backgroundColor: theme.colors.muted,\n width: '60%',\n },\n style,\n ]}\n {...rest}\n >\n {' '}\n </Text>\n );\n }\n\n const variantStyles: Record<TypographyVariant, TextStyle> = {\n h1: {\n fontSize: theme.typography.sizes['4xl'],\n fontWeight: theme.typography.fontWeight.bold as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes['4xl'],\n color: theme.colors.foreground,\n },\n h2: {\n fontSize: theme.typography.sizes['3xl'],\n fontWeight: theme.typography.fontWeight.bold as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes['3xl'],\n color: theme.colors.foreground,\n },\n h3: {\n fontSize: theme.typography.sizes['2xl'],\n fontWeight: theme.typography.fontWeight.bold as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes['2xl'],\n color: theme.colors.foreground,\n },\n h4: {\n fontSize: theme.typography.sizes.xl,\n fontWeight: theme.typography.fontWeight.medium as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes.xl,\n color: theme.colors.foreground,\n },\n body: {\n fontSize: theme.typography.sizes.base,\n fontWeight: theme.typography.fontWeight.normal as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes.base,\n color: theme.colors.foreground,\n },\n caption: {\n fontSize: theme.typography.sizes.sm,\n fontWeight: theme.typography.fontWeight.normal as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes.sm,\n color: theme.colors['muted-foreground'],\n },\n label: {\n fontSize: theme.typography.sizes.xs,\n fontWeight: theme.typography.fontWeight.medium as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes.xs,\n color: theme.colors['muted-foreground'],\n textTransform: 'uppercase',\n },\n };\n\n const textColor = error ? theme.colors.error : (color || variantStyles[variant].color);\n\n return (\n <Text\n style={[\n variantStyles[variant],\n { textAlign: align, color: textColor },\n style,\n ]}\n {...rest}\n >\n {children}\n </Text>\n );\n}\n\nconst styles = StyleSheet.create({\n skeleton: {\n borderRadius: 4,\n },\n});\n\nTypography.displayName = 'Typography';\n","import React from 'react';\nimport { ActivityIndicator, StyleSheet } from 'react-native';\nimport { VStack } from '../atoms/Stack';\nimport { Typography } from '../atoms/Typography';\n\nexport interface LoadingStateProps {\n message?: string;\n}\n\nexport const LoadingState: React.FC<LoadingStateProps> = ({\n message = 'Loading...',\n}) => {\n return (\n <VStack align=\"center\" spacing={12} style={styles.container}>\n <ActivityIndicator size=\"large\" color=\"#6366f1\" />\n <Typography variant=\"body\" color=\"#6b7280\">\n {message}\n </Typography>\n </VStack>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n padding: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nLoadingState.displayName = 'LoadingState';\n","import React from 'react';\nimport { View, StyleSheet, ViewStyle } from 'react-native';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface VStackProps {\n spacing?: number;\n align?: 'flex-start' | 'center' | 'flex-end' | 'stretch';\n justify?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around';\n children: React.ReactNode;\n style?: ViewStyle | ViewStyle[] | undefined;\n testID?: string;\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 VStack: React.FC<VStackProps> = ({\n spacing = 8,\n align = 'stretch',\n justify = 'flex-start',\n children,\n style,\n testID,\n isLoading,\n error,\n}) => {\n if (isLoading) {\n return (\n <View style={[styles.vstack, style]}>\n <LoadingState />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.vstack, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const stackStyles: ViewStyle[] = [\n styles.vstack,\n { gap: spacing, alignItems: align, justifyContent: justify },\n ];\n \n if (Array.isArray(style)) {\n stackStyles.push(...style);\n } else if (style) {\n stackStyles.push(style);\n }\n\n return (\n <View testID={testID} style={stackStyles}>\n {children}\n </View>\n );\n};\n\nexport interface HStackProps {\n spacing?: number;\n align?: 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline';\n justify?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n children: React.ReactNode;\n style?: ViewStyle | ViewStyle[] | undefined;\n testID?: string;\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 HStack: React.FC<HStackProps> = ({\n spacing = 8,\n align = 'center',\n justify = 'flex-start',\n children,\n style,\n testID,\n isLoading,\n error,\n}) => {\n if (isLoading) {\n return (\n <View style={[styles.hstack, style]}>\n <LoadingState />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.hstack, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const stackStyles: ViewStyle[] = [\n styles.hstack,\n { gap: spacing, alignItems: align, justifyContent: justify },\n ];\n \n if (Array.isArray(style)) {\n stackStyles.push(...style);\n } else if (style) {\n stackStyles.push(style);\n }\n\n return (\n <View testID={testID} style={stackStyles}>\n {children}\n </View>\n );\n};\n\nexport interface BoxProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[] | undefined;\n testID?: string;\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 Box: React.FC<BoxProps> = ({ \n children, \n style, \n testID,\n isLoading,\n error,\n}) => {\n if (isLoading) {\n return (\n <View style={[styles.box, style]}>\n <LoadingState />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.box, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const boxStyles: ViewStyle[] = [styles.box];\n \n if (Array.isArray(style)) {\n boxStyles.push(...style);\n } else if (style) {\n boxStyles.push(style);\n }\n\n return <View testID={testID} style={boxStyles}>{children}</View>;\n};\n\nconst styles = StyleSheet.create({\n vstack: {\n flexDirection: 'column',\n },\n hstack: {\n flexDirection: 'row',\n },\n box: {\n // Base box styles - mostly empty to allow full customization\n },\n});\n\nVStack.displayName = 'VStack';\nHStack.displayName = 'HStack';\nBox.displayName = 'Box';\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { Typography } from '../atoms/Typography';\nimport { Button } from '../atoms/Button';\nimport { VStack } from '../atoms/Stack';\n\nexport interface ErrorStateProps {\n message?: string;\n onRetry?: () => void;\n}\n\nexport const ErrorState: React.FC<ErrorStateProps> = ({\n message = 'Something went wrong',\n onRetry,\n}) => {\n return (\n <VStack align=\"center\" spacing={16} style={styles.container}>\n <Typography variant=\"body\" color=\"#ef4444\">\n {message}\n </Typography>\n {onRetry && (\n <Button variant=\"secondary\" onPress={onRetry}>\n Retry\n </Button>\n )}\n </VStack>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n padding: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nErrorState.displayName = 'ErrorState';\n","import React from 'react';\nimport { \n TouchableOpacity, \n Text, \n StyleSheet, \n ActivityIndicator,\n ViewStyle,\n TextStyle \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\n\nexport interface ButtonProps {\n onPress?: () => void;\n children: React.ReactNode;\n variant?: 'default' | 'primary' | 'secondary' | 'ghost' | 'destructive';\n size?: 'sm' | 'md' | 'lg';\n disabled?: boolean;\n isLoading?: boolean;\n style?: ViewStyle;\n textStyle?: TextStyle;\n /** Declarative event name - emits UI:${action} via eventBus on press */\n action?: string;\n /** Payload to include with the action event */\n actionPayload?: Record<string, unknown>;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n onPress,\n children,\n variant = 'default',\n size = 'md',\n disabled = false,\n isLoading = false,\n style,\n textStyle,\n action,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handlePress = () => {\n if (action) {\n eventBus.emit(`UI:${action}`, actionPayload);\n }\n onPress?.();\n };\n\n const getVariantStyles = (): { container: ViewStyle; text: TextStyle } => {\n switch (variant) {\n case 'primary':\n return {\n container: {\n backgroundColor: theme.colors.primary,\n },\n text: {\n color: theme.colors['primary-foreground'],\n },\n };\n case 'secondary':\n return {\n container: {\n backgroundColor: theme.colors.secondary,\n },\n text: {\n color: theme.colors['secondary-foreground'],\n },\n };\n case 'ghost':\n return {\n container: {\n backgroundColor: 'transparent',\n },\n text: {\n color: theme.colors.primary,\n },\n };\n case 'destructive':\n return {\n container: {\n backgroundColor: theme.colors.error,\n },\n text: {\n color: theme.colors['error-foreground'],\n },\n };\n default:\n return {\n container: {\n backgroundColor: theme.colors.card,\n borderWidth: 1,\n borderColor: theme.colors.border,\n },\n text: {\n color: theme.colors.foreground,\n },\n };\n }\n };\n\n const sizeStyles: Record<string, { container: ViewStyle; text: TextStyle }> = {\n sm: {\n container: {\n paddingVertical: theme.spacing[1],\n paddingHorizontal: theme.spacing[3],\n borderRadius: theme.borderRadius.md,\n },\n text: {\n fontSize: theme.typography.sizes.sm,\n },\n },\n md: {\n container: {\n paddingVertical: theme.spacing[2],\n paddingHorizontal: theme.spacing[4],\n borderRadius: theme.borderRadius.md,\n },\n text: {\n fontSize: theme.typography.sizes.base,\n },\n },\n lg: {\n container: {\n paddingVertical: theme.spacing[3],\n paddingHorizontal: theme.spacing[6],\n borderRadius: theme.borderRadius.lg,\n },\n text: {\n fontSize: theme.typography.sizes.lg,\n },\n },\n };\n\n const variantStyle = getVariantStyles();\n const sizeStyle = sizeStyles[size];\n\n return (\n <TouchableOpacity\n onPress={handlePress}\n disabled={disabled || isLoading}\n activeOpacity={0.8}\n style={[\n styles.button,\n variantStyle.container,\n sizeStyle.container,\n (disabled || isLoading) && { opacity: 0.5 },\n style,\n ]}\n >\n {isLoading ? (\n <ActivityIndicator color={variantStyle.text.color} size=\"small\" />\n ) : (\n <Text style={[styles.text, variantStyle.text, sizeStyle.text, textStyle]}>\n {children}\n </Text>\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n fontWeight: '500',\n },\n});\n\nButton.displayName = 'Button';\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 InputProps extends Omit<TextInputProps, 'onChange'> {\n label?: string;\n /** String error message for form validation */\n errorMessage?: string;\n helperText?: string;\n containerStyle?: ViewStyle;\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 Input: React.FC<InputProps> = ({\n label,\n errorMessage,\n helperText,\n containerStyle,\n style,\n isLoading,\n error,\n changeEvent,\n focusEvent,\n onChangeText,\n onFocus,\n onBlur,\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 style={[\n styles.input,\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 onBlur={onBlur}\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 input: {\n borderWidth: 1,\n borderRadius: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n fontSize: 16,\n },\n errorText: {\n fontSize: 12,\n marginTop: 4,\n },\n helperText: {\n fontSize: 12,\n marginTop: 4,\n },\n});\n\nInput.displayName = 'Input';\n","import React, { useState } from 'react';\nimport { \n TouchableOpacity, \n View, \n Text, \n StyleSheet, \n ViewStyle,\n TextStyle,\n Modal,\n FlatList,\n SafeAreaView,\n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nexport interface SelectProps {\n options: SelectOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n style?: ViewStyle;\n textStyle?: TextStyle;\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?: string;\n /** Payload base to include with the change event */\n actionPayload?: Record<string, unknown>;\n}\n\nexport const Select: React.FC<SelectProps> = ({\n options,\n value,\n onChange,\n placeholder = 'Select...',\n disabled = false,\n style,\n textStyle,\n isLoading,\n error,\n changeEvent,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n const [isOpen, setIsOpen] = useState(false);\n\n const selectedOption = options.find(opt => opt.value === value);\n\n const handleSelect = (selectedValue: string) => {\n if (changeEvent) {\n eventBus.emit(`UI:${changeEvent}`, { ...actionPayload, value: selectedValue });\n }\n onChange?.(selectedValue);\n setIsOpen(false);\n };\n\n const handleOpen = () => {\n if (!disabled && !isLoading) {\n setIsOpen(true);\n }\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 return (\n <>\n <TouchableOpacity\n onPress={handleOpen}\n disabled={disabled}\n activeOpacity={0.8}\n style={[\n styles.button,\n {\n borderColor: theme.colors.border,\n backgroundColor: theme.colors.card,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n <Text\n style={[\n styles.buttonText,\n {\n color: selectedOption \n ? theme.colors.foreground \n : theme.colors['muted-foreground'],\n },\n textStyle,\n ]}\n numberOfLines={1}\n >\n {selectedOption?.label || placeholder}\n </Text>\n <Text style={[styles.chevron, { color: theme.colors['muted-foreground'] }]}>\n ▼\n </Text>\n </TouchableOpacity>\n\n <Modal\n visible={isOpen}\n transparent\n animationType=\"slide\"\n onRequestClose={() => setIsOpen(false)}\n >\n <SafeAreaView style={[styles.modalContainer, { backgroundColor: theme.colors.background }]}>\n <View style={styles.modalHeader}>\n <TouchableOpacity onPress={() => setIsOpen(false)}>\n <Text style={[styles.closeButton, { color: theme.colors.primary }]}>\n Close\n </Text>\n </TouchableOpacity>\n </View>\n <FlatList\n data={options}\n keyExtractor={(item) => item.value}\n renderItem={({ item }) => (\n <TouchableOpacity\n style={[\n styles.option,\n {\n backgroundColor: item.value === value \n ? theme.colors.primary \n : theme.colors.card,\n borderBottomColor: theme.colors.border,\n },\n ]}\n onPress={() => handleSelect(item.value)}\n >\n <Text\n style={{\n color: item.value === value \n ? theme.colors['primary-foreground'] \n : theme.colors.foreground,\n }}\n >\n {item.label}\n </Text>\n </TouchableOpacity>\n )}\n />\n </SafeAreaView>\n </Modal>\n </>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n button: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderWidth: 1,\n borderRadius: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n },\n buttonText: {\n fontSize: 16,\n flex: 1,\n },\n chevron: {\n fontSize: 12,\n marginLeft: 8,\n },\n modalContainer: {\n flex: 1,\n },\n modalHeader: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n padding: 16,\n borderBottomWidth: 1,\n borderBottomColor: '#e2e8f0',\n },\n closeButton: {\n fontSize: 16,\n fontWeight: '500',\n },\n option: {\n padding: 16,\n borderBottomWidth: 1,\n },\n});\n\nSelect.displayName = 'Select';\n","import React from 'react';\nimport { View, StyleSheet, ViewStyle, TouchableOpacity } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface CardProps {\n children: React.ReactNode;\n onPress?: () => void;\n style?: ViewStyle | ViewStyle[] | undefined;\n padding?: 'none' | 'sm' | 'md' | 'lg';\n variant?: 'default' | 'elevated' | 'outlined';\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 event name - emits UI:${action} via eventBus on press */\n action?: string;\n /** Payload to include with the action event */\n actionPayload?: Record<string, unknown>;\n}\n\nexport const Card: React.FC<CardProps> = ({\n children,\n onPress,\n style,\n padding = 'md',\n variant = 'default',\n isLoading,\n error,\n action,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handlePress = () => {\n if (action) {\n eventBus.emit(`UI:${action}`, actionPayload);\n }\n onPress?.();\n };\n\n if (isLoading) {\n return (\n <View style={[styles.card, style]}>\n <LoadingState />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.card, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const paddingStyles: Record<string, ViewStyle> = {\n none: { padding: 0 },\n sm: { padding: theme.spacing[3] },\n md: { padding: theme.spacing[4] },\n lg: { padding: theme.spacing[6] },\n };\n\n const variantStyles: Record<string, ViewStyle> = {\n default: {\n backgroundColor: theme.colors.card,\n ...theme.shadows.main,\n },\n elevated: {\n backgroundColor: theme.colors.card,\n ...theme.shadows.lg,\n },\n outlined: {\n backgroundColor: theme.colors.card,\n borderWidth: 1,\n borderColor: theme.colors.border,\n ...theme.shadows.none,\n },\n };\n\n const cardStyles: ViewStyle[] = [\n styles.card,\n variantStyles[variant],\n paddingStyles[padding],\n ];\n\n if (Array.isArray(style)) {\n cardStyles.push(...style);\n } else if (style) {\n cardStyles.push(style);\n }\n\n const content = <View style={cardStyles}>{children}</View>;\n\n if (onPress || action) {\n return (\n <TouchableOpacity onPress={handlePress} activeOpacity={0.9}>\n {content}\n </TouchableOpacity>\n );\n }\n\n return content;\n};\n\nconst styles = StyleSheet.create({\n card: {\n borderRadius: 12,\n },\n});\n\nCard.displayName = 'Card';\n","import React from 'react';\nimport { View, Text, StyleSheet, ViewStyle, TextStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport type BadgeVariant = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\nexport type BadgeSize = 'sm' | 'md';\n\nexport interface BadgeProps {\n children: React.ReactNode;\n variant?: BadgeVariant;\n size?: BadgeSize;\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 Badge: React.FC<BadgeProps> = ({\n children,\n variant = 'default',\n size = 'md',\n style,\n isLoading,\n error,\n}) => {\n const theme = useTheme();\n\n if (isLoading) {\n return (\n <View style={[styles.badge, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.badge, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const variantStyles: Record<BadgeVariant, { container: ViewStyle; text: TextStyle }> = {\n default: {\n container: {\n backgroundColor: theme.colors.secondary,\n },\n text: {\n color: theme.colors['secondary-foreground'],\n },\n },\n primary: {\n container: {\n backgroundColor: theme.colors.primary,\n },\n text: {\n color: theme.colors['primary-foreground'],\n },\n },\n secondary: {\n container: {\n backgroundColor: theme.colors['secondary-hover'],\n },\n text: {\n color: theme.colors['secondary-foreground'],\n },\n },\n success: {\n container: {\n backgroundColor: theme.colors.success,\n },\n text: {\n color: theme.colors['success-foreground'],\n },\n },\n warning: {\n container: {\n backgroundColor: theme.colors.warning,\n },\n text: {\n color: theme.colors['warning-foreground'],\n },\n },\n error: {\n container: {\n backgroundColor: theme.colors.error,\n },\n text: {\n color: theme.colors['error-foreground'],\n },\n },\n };\n\n const sizeStyles: Record<BadgeSize, { container: ViewStyle; text: TextStyle }> = {\n sm: {\n container: {\n paddingHorizontal: theme.spacing[2],\n paddingVertical: 2,\n borderRadius: theme.borderRadius.full,\n },\n text: {\n fontSize: theme.typography.sizes.xs,\n },\n },\n md: {\n container: {\n paddingHorizontal: theme.spacing[3],\n paddingVertical: theme.spacing[1],\n borderRadius: theme.borderRadius.full,\n },\n text: {\n fontSize: theme.typography.sizes.sm,\n },\n },\n };\n\n const variantStyle = variantStyles[variant];\n const sizeStyle = sizeStyles[size];\n\n return (\n <View style={[styles.badge, variantStyle.container, sizeStyle.container, style]}>\n <Text style={[styles.text, variantStyle.text, sizeStyle.text]}>{children}</Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n badge: {\n alignSelf: 'flex-start',\n },\n text: {\n fontWeight: '500',\n },\n});\n\nBadge.displayName = 'Badge';\n","import React from 'react';\nimport { View, StyleSheet, ViewStyle, Text } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface ProgressBarProps {\n progress: number; // 0 to 100\n showLabel?: boolean;\n size?: 'sm' | 'md' | 'lg';\n style?: ViewStyle;\n trackStyle?: ViewStyle;\n fillStyle?: 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 ProgressBar: React.FC<ProgressBarProps> = ({\n progress,\n showLabel = false,\n size = 'md',\n style,\n trackStyle,\n fillStyle,\n isLoading,\n error,\n}) => {\n const theme = useTheme();\n\n const clampedProgress = Math.max(0, Math.min(100, progress));\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 heightMap: Record<string, number> = {\n sm: 4,\n md: 8,\n lg: 12,\n };\n\n const height = heightMap[size];\n\n return (\n <View style={[styles.container, style]}>\n <View\n style={[\n styles.track,\n {\n height,\n backgroundColor: theme.colors.muted,\n borderRadius: height / 2,\n },\n trackStyle,\n ]}\n >\n <View\n style={[\n styles.fill,\n {\n width: `${clampedProgress}%`,\n height: '100%',\n backgroundColor: theme.colors.primary,\n borderRadius: height / 2,\n },\n fillStyle,\n ]}\n />\n </View>\n {showLabel && (\n <Text style={[styles.label, { color: theme.colors.foreground }]}>\n {Math.round(clampedProgress)}%\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n track: {\n width: '100%',\n overflow: 'hidden',\n },\n fill: {\n // Animated fill\n },\n label: {\n marginTop: 4,\n fontSize: 12,\n fontWeight: '500',\n textAlign: 'right',\n },\n});\n\nProgressBar.displayName = 'ProgressBar';\n","import React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../../providers/ThemeContext';\n\nexport interface HealthBarProps {\n /** Current health value */\n current: number;\n /** Maximum health value */\n max: number;\n /** Display format */\n format?: 'hearts' | 'bar' | 'numeric';\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Additional styles */\n style?: ViewStyle;\n /** Animation on change */\n animated?: boolean;\n}\n\nconst sizeMap = {\n sm: { heart: 16, bar: 8, text: 12 },\n md: { heart: 24, bar: 12, text: 16 },\n lg: { heart: 32, bar: 16, text: 20 },\n};\n\nconst HeartIcon: React.FC<{ filled: boolean; size: number; color: string }> = ({ \n filled, \n size, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n color \n}) => (\n <View\n style={{\n width: size,\n height: size,\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Text\n style={{\n fontSize: size * 0.8,\n color: filled ? '#ef4444' : '#9ca3af',\n }}\n >\n {filled ? '♥' : '♡'}\n </Text>\n </View>\n);\n\nexport const HealthBar: React.FC<HealthBarProps> = ({\n current,\n max,\n format = 'hearts',\n size = 'md',\n style,\n animated = true,\n}) => {\n const theme = useTheme();\n const sizes = sizeMap[size];\n const percentage = Math.max(0, Math.min(100, (current / max) * 100));\n\n if (format === 'hearts') {\n return (\n <View style={[styles.heartsContainer, style]}>\n {Array.from({ length: max }).map((_, i) => (\n <View\n key={i}\n style={[\n animated && styles.animatedHeart,\n ]}\n >\n <HeartIcon\n filled={i < current}\n size={sizes.heart}\n color={theme.colors.error}\n />\n </View>\n ))}\n </View>\n );\n }\n\n if (format === 'bar') {\n const barColor = percentage > 66 \n ? '#22c55e' // green\n : percentage > 33 \n ? '#eab308' // yellow\n : '#ef4444'; // red\n\n return (\n <View\n style={[\n styles.barContainer,\n {\n height: sizes.bar,\n backgroundColor: theme.colors.muted,\n },\n style,\n ]}\n >\n <View\n style={[\n styles.barFill,\n {\n width: `${percentage}%`,\n backgroundColor: barColor,\n },\n animated && styles.animatedBar,\n ]}\n />\n </View>\n );\n }\n\n // Numeric format\n return (\n <Text\n style={[\n styles.numericText,\n {\n fontSize: sizes.text,\n color: theme.colors.foreground,\n },\n style as never,\n ]}\n >\n {current}/{max}\n </Text>\n );\n};\n\nconst styles = StyleSheet.create({\n heartsContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n animatedHeart: {\n // React Native transform animation could be added here\n },\n barContainer: {\n width: 96,\n borderRadius: 9999,\n overflow: 'hidden',\n },\n barFill: {\n height: '100%',\n borderRadius: 9999,\n },\n animatedBar: {\n // LayoutAnimation could be configured\n },\n numericText: {\n fontFamily: 'monospace',\n fontWeight: '700',\n },\n});\n\nHealthBar.displayName = 'HealthBar';\n","import React, { useState, useEffect } from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../../providers/ThemeContext';\n\nexport interface ScoreDisplayProps {\n /** Current score value */\n value: number;\n /** Label to display before score */\n label?: string;\n /** Icon component or emoji */\n icon?: React.ReactNode;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** Additional styles */\n style?: ViewStyle;\n /** Animation on value change */\n animated?: boolean;\n /** Number formatting locale */\n locale?: string;\n}\n\nconst sizeMap: Record<string, { fontSize: number }> = {\n sm: { fontSize: 14 },\n md: { fontSize: 18 },\n lg: { fontSize: 24 },\n xl: { fontSize: 36 },\n};\n\nexport const ScoreDisplay: React.FC<ScoreDisplayProps> = ({\n value,\n label,\n icon,\n size = 'md',\n style,\n animated = true,\n locale = 'en-US',\n}) => {\n const theme = useTheme();\n const [displayValue, setDisplayValue] = useState(value);\n const [isAnimating, setIsAnimating] = useState(false);\n\n const sizeConfig = sizeMap[size] ?? sizeMap.md;\n\n useEffect(() => {\n if (!animated || displayValue === value) {\n setDisplayValue(value);\n return;\n }\n\n setIsAnimating(true);\n const diff = value - displayValue;\n const steps = Math.min(Math.abs(diff), 20);\n const increment = diff / steps;\n let current = displayValue;\n let step = 0;\n\n const timer = setInterval(() => {\n step++;\n current += increment;\n setDisplayValue(Math.round(current));\n\n if (step >= steps) {\n clearInterval(timer);\n setDisplayValue(value);\n setIsAnimating(false);\n }\n }, 50);\n\n return () => clearInterval(timer);\n }, [value, animated]);\n\n const formattedValue = new Intl.NumberFormat(locale).format(displayValue);\n\n return (\n <View\n style={[\n styles.container,\n {\n opacity: isAnimating ? 0.7 : 1,\n },\n style as never,\n ]}\n >\n {icon && (\n <Text style={{ fontSize: sizeConfig.fontSize, marginRight: 8 }}>\n {icon as string}\n </Text>\n )}\n {label && (\n <Text\n style={{\n fontSize: sizeConfig.fontSize,\n color: theme.colors['muted-foreground'],\n marginRight: 8,\n }}\n >\n {label}\n </Text>\n )}\n <Text\n style={{\n fontSize: sizeConfig.fontSize,\n color: theme.colors.foreground,\n fontWeight: '700',\n fontVariant: ['tabular-nums'],\n }}\n >\n {formattedValue}\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n});\n\nScoreDisplay.displayName = 'ScoreDisplay';\n"],"mappings":"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","names":["React","ActivityIndicator","StyleSheet","React","StyleSheet","React","StyleSheet","React","Text","StyleSheet","React","styles","Text","StyleSheet","React","styles","StyleSheet","React","styles","StyleSheet","React","styles","ActivityIndicator","StyleSheet","React","StyleSheet","View","Text","React","View","styles","Text","StyleSheet","React","TouchableOpacity","View","Text","StyleSheet","React","View","styles","TouchableOpacity","Text","StyleSheet","React","View","StyleSheet","TouchableOpacity","React","View","styles","TouchableOpacity","StyleSheet","React","View","Text","StyleSheet","React","View","styles","Text","StyleSheet","React","View","StyleSheet","Text","React","View","styles","Text","StyleSheet","React","View","Text","StyleSheet","React","View","Text","styles","StyleSheet","React","useState","View","Text","StyleSheet","sizeMap","useState","React","View","styles","Text","StyleSheet"]}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useTheme
|
|
3
|
+
} from "./chunk-CUAWHLEK.js";
|
|
4
|
+
|
|
5
|
+
// src/hooks/useTraitState.ts
|
|
6
|
+
import { useState, useCallback } from "react";
|
|
7
|
+
function useTraitState(initialState) {
|
|
8
|
+
const [state, setStateRaw] = useState(initialState);
|
|
9
|
+
const setState = useCallback((updates) => {
|
|
10
|
+
setStateRaw((prev) => ({ ...prev, ...updates }));
|
|
11
|
+
}, []);
|
|
12
|
+
const getValue = useCallback((key) => {
|
|
13
|
+
return state[key];
|
|
14
|
+
}, [state]);
|
|
15
|
+
const setValue = useCallback((key, value) => {
|
|
16
|
+
setStateRaw((prev) => ({ ...prev, [key]: value }));
|
|
17
|
+
}, []);
|
|
18
|
+
return {
|
|
19
|
+
state,
|
|
20
|
+
setState,
|
|
21
|
+
getValue,
|
|
22
|
+
setValue
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// src/hooks/useUIEvents.ts
|
|
27
|
+
import { useUIEvents } from "@almadar/ui/hooks";
|
|
28
|
+
|
|
29
|
+
// src/hooks/useNavigation.ts
|
|
30
|
+
import { useCallback as useCallback2 } from "react";
|
|
31
|
+
import { useNavigation as useRNNavigation, useRoute } from "@react-navigation/native";
|
|
32
|
+
function useNavigation() {
|
|
33
|
+
const navigation = useRNNavigation();
|
|
34
|
+
const route = useRoute();
|
|
35
|
+
const navigateTo = useCallback2((screenName, params, options) => {
|
|
36
|
+
const screen = String(screenName);
|
|
37
|
+
if (options?.replace) {
|
|
38
|
+
navigation.replace(screen, params);
|
|
39
|
+
} else if (options?.reset) {
|
|
40
|
+
navigation.reset({
|
|
41
|
+
index: 0,
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
routes: [{ name: screen, params }]
|
|
44
|
+
});
|
|
45
|
+
} else {
|
|
46
|
+
navigation.navigate(screen, params);
|
|
47
|
+
}
|
|
48
|
+
}, [navigation]);
|
|
49
|
+
const goBack = useCallback2(() => {
|
|
50
|
+
navigation.goBack();
|
|
51
|
+
}, [navigation]);
|
|
52
|
+
const getParam = useCallback2((key, defaultValue) => {
|
|
53
|
+
const params = route.params;
|
|
54
|
+
return params?.[key] ?? defaultValue;
|
|
55
|
+
}, [route.params]);
|
|
56
|
+
return {
|
|
57
|
+
navigateTo,
|
|
58
|
+
goBack,
|
|
59
|
+
getParam,
|
|
60
|
+
currentRoute: String(route.name),
|
|
61
|
+
// Route params come as unknown from React Navigation
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
params: route.params
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function useParams() {
|
|
67
|
+
const route = useRoute();
|
|
68
|
+
return route.params || {};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// src/hooks/useKeyboard.ts
|
|
72
|
+
import { useEffect, useState as useState2, useCallback as useCallback3 } from "react";
|
|
73
|
+
import { Keyboard, Platform } from "react-native";
|
|
74
|
+
function useKeyboard() {
|
|
75
|
+
const [keyboardState, setKeyboardState] = useState2({
|
|
76
|
+
isVisible: false,
|
|
77
|
+
height: 0
|
|
78
|
+
});
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
const showEvent = Platform.OS === "ios" ? "keyboardWillShow" : "keyboardDidShow";
|
|
81
|
+
const hideEvent = Platform.OS === "ios" ? "keyboardWillHide" : "keyboardDidHide";
|
|
82
|
+
const onKeyboardShow = (event) => {
|
|
83
|
+
setKeyboardState({
|
|
84
|
+
isVisible: true,
|
|
85
|
+
height: event.endCoordinates.height
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const onKeyboardHide = () => {
|
|
89
|
+
setKeyboardState({
|
|
90
|
+
isVisible: false,
|
|
91
|
+
height: 0
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
const showSubscription = Keyboard.addListener(showEvent, onKeyboardShow);
|
|
95
|
+
const hideSubscription = Keyboard.addListener(hideEvent, onKeyboardHide);
|
|
96
|
+
return () => {
|
|
97
|
+
showSubscription.remove();
|
|
98
|
+
hideSubscription.remove();
|
|
99
|
+
};
|
|
100
|
+
}, []);
|
|
101
|
+
const dismissKeyboard = useCallback3(() => {
|
|
102
|
+
Keyboard.dismiss();
|
|
103
|
+
}, []);
|
|
104
|
+
return {
|
|
105
|
+
...keyboardState,
|
|
106
|
+
dismissKeyboard
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function useKeyboardHeight() {
|
|
110
|
+
const [keyboardHeight, setKeyboardHeight] = useState2(0);
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
const showEvent = Platform.OS === "ios" ? "keyboardWillShow" : "keyboardDidShow";
|
|
113
|
+
const hideEvent = Platform.OS === "ios" ? "keyboardWillHide" : "keyboardDidHide";
|
|
114
|
+
const onKeyboardShow = (event) => {
|
|
115
|
+
setKeyboardHeight(event.endCoordinates.height);
|
|
116
|
+
};
|
|
117
|
+
const onKeyboardHide = () => {
|
|
118
|
+
setKeyboardHeight(0);
|
|
119
|
+
};
|
|
120
|
+
const showSubscription = Keyboard.addListener(showEvent, onKeyboardShow);
|
|
121
|
+
const hideSubscription = Keyboard.addListener(hideEvent, onKeyboardHide);
|
|
122
|
+
return () => {
|
|
123
|
+
showSubscription.remove();
|
|
124
|
+
hideSubscription.remove();
|
|
125
|
+
};
|
|
126
|
+
}, []);
|
|
127
|
+
return keyboardHeight;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// src/hooks/useThemeStyles.ts
|
|
131
|
+
import { useMemo } from "react";
|
|
132
|
+
import { StyleSheet } from "react-native";
|
|
133
|
+
function useThemeStyles(styleCreator) {
|
|
134
|
+
const theme = useTheme();
|
|
135
|
+
return useMemo(() => {
|
|
136
|
+
const styles = styleCreator(theme);
|
|
137
|
+
return StyleSheet.create(styles);
|
|
138
|
+
}, [theme, styleCreator]);
|
|
139
|
+
}
|
|
140
|
+
function useThemeValue(selector) {
|
|
141
|
+
const theme = useTheme();
|
|
142
|
+
return useMemo(() => selector(theme), [theme, selector]);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// src/hooks/useScrollHeader.ts
|
|
146
|
+
import { useState as useState3, useCallback as useCallback4 } from "react";
|
|
147
|
+
function useScrollHeader(options = {}) {
|
|
148
|
+
const { threshold = 50 } = options;
|
|
149
|
+
const [isCollapsed, setIsCollapsed] = useState3(false);
|
|
150
|
+
const onScroll = useCallback4(
|
|
151
|
+
(event) => {
|
|
152
|
+
const offsetY = event.nativeEvent.contentOffset.y;
|
|
153
|
+
const shouldCollapse = offsetY > threshold;
|
|
154
|
+
if (shouldCollapse !== isCollapsed) {
|
|
155
|
+
setIsCollapsed(shouldCollapse);
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
[threshold, isCollapsed]
|
|
159
|
+
);
|
|
160
|
+
return { isCollapsed, onScroll };
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// src/hooks/useSafeAreaInsets.ts
|
|
164
|
+
import { useState as useState4, useEffect as useEffect2 } from "react";
|
|
165
|
+
import { Dimensions } from "react-native";
|
|
166
|
+
function useSafeAreaInsets() {
|
|
167
|
+
const [screen, setScreen] = useState4(Dimensions.get("window"));
|
|
168
|
+
useEffect2(() => {
|
|
169
|
+
const subscription = Dimensions.addEventListener("change", ({ window }) => {
|
|
170
|
+
setScreen(window);
|
|
171
|
+
});
|
|
172
|
+
return () => subscription?.remove();
|
|
173
|
+
}, []);
|
|
174
|
+
const isIPhoneXOrLater = screen.height >= 812 || screen.width >= 812;
|
|
175
|
+
return {
|
|
176
|
+
top: isIPhoneXOrLater ? 44 : 20,
|
|
177
|
+
bottom: isIPhoneXOrLater ? 34 : 0,
|
|
178
|
+
left: 0,
|
|
179
|
+
right: 0
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// src/hooks/usePullToRefresh.ts
|
|
184
|
+
import { useState as useState5, useCallback as useCallback5 } from "react";
|
|
185
|
+
function usePullToRefresh(options) {
|
|
186
|
+
const { onRefresh } = options;
|
|
187
|
+
const [refreshing, setRefreshing] = useState5(false);
|
|
188
|
+
const handleRefresh = useCallback5(async () => {
|
|
189
|
+
setRefreshing(true);
|
|
190
|
+
try {
|
|
191
|
+
await onRefresh();
|
|
192
|
+
} finally {
|
|
193
|
+
setRefreshing(false);
|
|
194
|
+
}
|
|
195
|
+
}, [onRefresh]);
|
|
196
|
+
return {
|
|
197
|
+
refreshing,
|
|
198
|
+
onRefresh: handleRefresh,
|
|
199
|
+
refreshControlProps: {
|
|
200
|
+
refreshing,
|
|
201
|
+
onRefresh: handleRefresh
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// src/hooks/useInfiniteScroll.ts
|
|
207
|
+
import { useState as useState6, useCallback as useCallback6 } from "react";
|
|
208
|
+
function useInfiniteScroll(options) {
|
|
209
|
+
const { onLoadMore, hasMore, threshold = 100 } = options;
|
|
210
|
+
const [loadingMore, setLoadingMore] = useState6(false);
|
|
211
|
+
const onScroll = useCallback6(
|
|
212
|
+
async (event) => {
|
|
213
|
+
if (loadingMore || !hasMore) return;
|
|
214
|
+
const { layoutMeasurement, contentOffset, contentSize } = event.nativeEvent;
|
|
215
|
+
const isCloseToBottom = layoutMeasurement.height + contentOffset.y >= contentSize.height - threshold;
|
|
216
|
+
if (isCloseToBottom) {
|
|
217
|
+
setLoadingMore(true);
|
|
218
|
+
try {
|
|
219
|
+
await onLoadMore();
|
|
220
|
+
} finally {
|
|
221
|
+
setLoadingMore(false);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
[loadingMore, hasMore, threshold, onLoadMore]
|
|
226
|
+
);
|
|
227
|
+
return {
|
|
228
|
+
loadingMore,
|
|
229
|
+
onScroll
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export {
|
|
234
|
+
useTraitState,
|
|
235
|
+
useUIEvents,
|
|
236
|
+
useNavigation,
|
|
237
|
+
useParams,
|
|
238
|
+
useKeyboard,
|
|
239
|
+
useKeyboardHeight,
|
|
240
|
+
useThemeStyles,
|
|
241
|
+
useThemeValue,
|
|
242
|
+
useScrollHeader,
|
|
243
|
+
useSafeAreaInsets,
|
|
244
|
+
usePullToRefresh,
|
|
245
|
+
useInfiniteScroll
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=chunk-CA6Z3OTE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useTraitState.ts","../src/hooks/useUIEvents.ts","../src/hooks/useNavigation.ts","../src/hooks/useKeyboard.ts","../src/hooks/useThemeStyles.ts","../src/hooks/useScrollHeader.ts","../src/hooks/useSafeAreaInsets.ts","../src/hooks/usePullToRefresh.ts","../src/hooks/useInfiniteScroll.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\n\nexport interface TraitState {\n [key: string]: unknown;\n}\n\nexport interface UseTraitStateReturn<T extends TraitState> {\n state: T;\n setState: (updates: Partial<T>) => void;\n getValue: <K extends keyof T>(key: K) => T[K];\n setValue: <K extends keyof T>(key: K, value: T[K]) => void;\n}\n\nexport function useTraitState<T extends TraitState>(initialState: T): UseTraitStateReturn<T> {\n const [state, setStateRaw] = useState<T>(initialState);\n\n const setState = useCallback((updates: Partial<T>) => {\n setStateRaw(prev => ({ ...prev, ...updates }));\n }, []);\n\n const getValue = useCallback(<K extends keyof T>(key: K): T[K] => {\n return state[key];\n }, [state]);\n\n const setValue = useCallback(<K extends keyof T>(key: K, value: T[K]) => {\n setStateRaw(prev => ({ ...prev, [key]: value }));\n }, []);\n\n return {\n state,\n setState,\n getValue,\n setValue,\n };\n}\n","// Re-export from @almadar/ui - no code duplication\nexport { useUIEvents } from '@almadar/ui/hooks';\n","import { useCallback } from 'react';\nimport { useNavigation as useRNNavigation, useRoute } from '@react-navigation/native';\nimport type { NavigationProp, RouteProp, ParamListBase } from '@react-navigation/native';\n\nexport interface NavigationOptions {\n replace?: boolean;\n reset?: boolean;\n}\n\n/**\n * Hook for navigation in React Native apps.\n * \n * This hook wraps React Navigation's useNavigation and useRoute\n * with a simpler API for common navigation patterns.\n * \n * @example\n * // With typed navigation (recommended)\n * type RootStackParamList = {\n * Home: undefined;\n * Profile: { userId: string };\n * };\n * const navigation = useNavigation<RootStackParamList>();\n * \n * // Navigate to a screen\n * navigation.navigateTo('Profile', { userId: '123' });\n * \n * // Get a route param\n * const userId = navigation.getParam<string>('userId');\n */\nexport function useNavigation<T extends ParamListBase = ParamListBase>() {\n // Cast to NavigationProp<T> for generic type support\n // The actual React Navigation hook returns more specific types based on context\n const navigation = useRNNavigation<NavigationProp<T>>();\n const route = useRoute<RouteProp<T, keyof T>>();\n\n const navigateTo = useCallback(<K extends keyof T>(\n screenName: K,\n params?: T[K],\n options?: NavigationOptions\n ): void => {\n const screen = String(screenName);\n \n if (options?.replace) {\n // Stack navigator specific - cast for compatibility\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (navigation as any).replace(screen, params);\n } else if (options?.reset) {\n navigation.reset({\n index: 0,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routes: [{ name: screen, params } as any],\n });\n } else {\n // Use navigation.navigate with proper typing\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (navigation.navigate as any)(screen, params);\n }\n }, [navigation]);\n\n const goBack = useCallback((): void => {\n navigation.goBack();\n }, [navigation]);\n\n const getParam = useCallback(<V,>(key: string, defaultValue?: V): V | undefined => {\n // Route params come as unknown from React Navigation\n // Cast to Record for safe property access\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params = route.params as Record<string, any> | undefined;\n return params?.[key] ?? defaultValue;\n }, [route.params]);\n\n return {\n navigateTo,\n goBack,\n getParam,\n currentRoute: String(route.name),\n // Route params come as unknown from React Navigation\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: route.params as Record<string, any> | undefined,\n };\n}\n\n/**\n * Hook to access route params directly with type safety.\n * \n * @example\n * type ProfileParams = { userId: string; name?: string };\n * const { userId, name } = useParams<ProfileParams>();\n */\nexport function useParams<T extends Record<string, unknown>>(): T {\n const route = useRoute();\n // Route params from React Navigation are typed as object | undefined\n // Cast to consumer's expected type for type safety\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (route.params as any) || ({} as T);\n}\n","import { useEffect, useState, useCallback } from 'react';\nimport { Keyboard, KeyboardEvent, Platform } from 'react-native';\n\nexport interface KeyboardState {\n isVisible: boolean;\n height: number;\n}\n\nexport function useKeyboard() {\n const [keyboardState, setKeyboardState] = useState<KeyboardState>({\n isVisible: false,\n height: 0,\n });\n\n useEffect(() => {\n const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide';\n\n const onKeyboardShow = (event: KeyboardEvent) => {\n setKeyboardState({\n isVisible: true,\n height: event.endCoordinates.height,\n });\n };\n\n const onKeyboardHide = () => {\n setKeyboardState({\n isVisible: false,\n height: 0,\n });\n };\n\n const showSubscription = Keyboard.addListener(showEvent, onKeyboardShow);\n const hideSubscription = Keyboard.addListener(hideEvent, onKeyboardHide);\n\n return () => {\n showSubscription.remove();\n hideSubscription.remove();\n };\n }, []);\n\n const dismissKeyboard = useCallback(() => {\n Keyboard.dismiss();\n }, []);\n\n return {\n ...keyboardState,\n dismissKeyboard,\n };\n}\n\nexport function useKeyboardHeight() {\n const [keyboardHeight, setKeyboardHeight] = useState(0);\n\n useEffect(() => {\n const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide';\n\n const onKeyboardShow = (event: KeyboardEvent) => {\n setKeyboardHeight(event.endCoordinates.height);\n };\n\n const onKeyboardHide = () => {\n setKeyboardHeight(0);\n };\n\n const showSubscription = Keyboard.addListener(showEvent, onKeyboardShow);\n const hideSubscription = Keyboard.addListener(hideEvent, onKeyboardHide);\n\n return () => {\n showSubscription.remove();\n hideSubscription.remove();\n };\n }, []);\n\n return keyboardHeight;\n}\n","import { useMemo } from 'react';\nimport { StyleSheet, ViewStyle, TextStyle, ImageStyle } from 'react-native';\nimport { useTheme } from '../providers/ThemeContext';\n\n/**\n * Hook for creating theme-aware styles\n * \n * @example\n * const styles = useThemeStyles((theme) => ({\n * container: {\n * backgroundColor: theme.colors.background,\n * padding: theme.spacing[4],\n * },\n * text: {\n * color: theme.colors.foreground,\n * fontSize: theme.typography.sizes.base,\n * },\n * }));\n */\nexport function useThemeStyles<T extends Record<string, ViewStyle | TextStyle | ImageStyle>>(\n styleCreator: (theme: ReturnType<typeof useTheme>) => T\n): T {\n const theme = useTheme();\n \n return useMemo(() => {\n const styles = styleCreator(theme);\n return StyleSheet.create(styles) as T;\n }, [theme, styleCreator]);\n}\n\n/**\n * Get a single theme value\n * \n * @example\n * const bgColor = useThemeValue((t) => t.colors.background);\n */\nexport function useThemeValue<T>(selector: (theme: ReturnType<typeof useTheme>) => T): T {\n const theme = useTheme();\n return useMemo(() => selector(theme), [theme, selector]);\n}\n","import { useState, useCallback } from 'react';\nimport { NativeScrollEvent, NativeSyntheticEvent } from 'react-native';\n\nexport interface UseScrollHeaderOptions {\n threshold?: number;\n}\n\nexport interface UseScrollHeaderReturn {\n isCollapsed: boolean;\n onScroll: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;\n}\n\n/**\n * Hook for creating collapsible header behavior on scroll.\n * \n * @example\n * ```tsx\n * const { isCollapsed, onScroll } = useScrollHeader({ threshold: 50 });\n * \n * return (\n * <>\n * <Header \n * title=\"My Page\" \n * style={{ \n * height: isCollapsed ? 40 : 56,\n * opacity: isCollapsed ? 0.9 : 1\n * }} \n * />\n * <ScrollView onScroll={onScroll} scrollEventThrottle={16}>\n * {content}\n * </ScrollView>\n * </>\n * );\n * ```\n */\nexport function useScrollHeader(\n options: UseScrollHeaderOptions = {}\n): UseScrollHeaderReturn {\n const { threshold = 50 } = options;\n const [isCollapsed, setIsCollapsed] = useState(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n const offsetY = event.nativeEvent.contentOffset.y;\n const shouldCollapse = offsetY > threshold;\n \n if (shouldCollapse !== isCollapsed) {\n setIsCollapsed(shouldCollapse);\n }\n },\n [threshold, isCollapsed]\n );\n\n return { isCollapsed, onScroll };\n}\n","import { useState, useEffect } from 'react';\nimport { Dimensions, ScaledSize } from 'react-native';\n\nexport interface SafeAreaInsets {\n top: number;\n bottom: number;\n left: number;\n right: number;\n}\n\n/**\n * Hook to get safe area insets for handling notched devices.\n * Uses screen dimensions to estimate safe areas.\n * \n * Note: For production apps, consider using react-native-safe-area-context\n * which provides the actual safe area insets from the native platform.\n * \n * @example\n * ```tsx\n * const insets = useSafeAreaInsets();\n * \n * return (\n * <View style={{ \n * paddingTop: insets.top,\n * paddingBottom: insets.bottom \n * }}>\n * {children}\n * </View>\n * );\n * ```\n */\nexport function useSafeAreaInsets(): SafeAreaInsets {\n const [screen, setScreen] = useState<ScaledSize>(Dimensions.get('window'));\n\n useEffect(() => {\n const subscription = Dimensions.addEventListener('change', ({ window }) => {\n setScreen(window);\n });\n\n return () => subscription?.remove();\n }, []);\n\n // Estimate safe areas based on common device dimensions\n // iPhone X and later have 44pt top and 34pt bottom safe areas\n // Other devices typically have 20pt top (status bar) and 0 bottom\n const isIPhoneXOrLater = \n screen.height >= 812 || screen.width >= 812;\n\n return {\n top: isIPhoneXOrLater ? 44 : 20,\n bottom: isIPhoneXOrLater ? 34 : 0,\n left: 0,\n right: 0,\n };\n}\n","import { useState, useCallback } from 'react';\nimport { RefreshControlProps } from 'react-native';\n\nexport interface UsePullToRefreshOptions {\n onRefresh: () => Promise<void> | void;\n}\n\nexport interface UsePullToRefreshReturn {\n refreshing: boolean;\n onRefresh: () => void;\n refreshControlProps: Pick<RefreshControlProps, 'refreshing' | 'onRefresh'>;\n}\n\n/**\n * Hook for implementing pull-to-refresh functionality.\n * \n * @example\n * ```tsx\n * const { refreshControlProps } = usePullToRefresh({\n * onRefresh: async () => {\n * await refetchData();\n * }\n * });\n * \n * return (\n * <ScrollView refreshControl={<RefreshControl {...refreshControlProps} />}>\n * {content}\n * </ScrollView>\n * );\n * ```\n */\nexport function usePullToRefresh(\n options: UsePullToRefreshOptions\n): UsePullToRefreshReturn {\n const { onRefresh } = options;\n const [refreshing, setRefreshing] = useState(false);\n\n const handleRefresh = useCallback(async () => {\n setRefreshing(true);\n try {\n await onRefresh();\n } finally {\n setRefreshing(false);\n }\n }, [onRefresh]);\n\n return {\n refreshing,\n onRefresh: handleRefresh,\n refreshControlProps: {\n refreshing,\n onRefresh: handleRefresh,\n },\n };\n}\n","import { useState, useCallback } from 'react';\nimport { NativeScrollEvent, NativeSyntheticEvent } from 'react-native';\n\nexport interface UseInfiniteScrollOptions {\n onLoadMore: () => Promise<void> | void;\n hasMore: boolean;\n threshold?: number;\n}\n\nexport interface UseInfiniteScrollReturn {\n loadingMore: boolean;\n onScroll: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;\n}\n\n/**\n * Hook for implementing infinite scroll functionality.\n * \n * @example\n * ```tsx\n * const { loadingMore, onScroll } = useInfiniteScroll({\n * onLoadMore: async () => {\n * await loadNextPage();\n * },\n * hasMore: hasNextPage,\n * });\n * \n * return (\n * <ScrollView onScroll={onScroll} scrollEventThrottle={16}>\n * {items.map(renderItem)}\n * {loadingMore && <ActivityIndicator />}\n * </ScrollView>\n * );\n * ```\n */\nexport function useInfiniteScroll(\n options: UseInfiniteScrollOptions\n): UseInfiniteScrollReturn {\n const { onLoadMore, hasMore, threshold = 100 } = options;\n const [loadingMore, setLoadingMore] = useState(false);\n\n const onScroll = useCallback(\n async (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n if (loadingMore || !hasMore) return;\n\n const { layoutMeasurement, contentOffset, contentSize } = event.nativeEvent;\n const isCloseToBottom = \n layoutMeasurement.height + contentOffset.y >= \n contentSize.height - threshold;\n\n if (isCloseToBottom) {\n setLoadingMore(true);\n try {\n await onLoadMore();\n } finally {\n setLoadingMore(false);\n }\n }\n },\n [loadingMore, hasMore, threshold, onLoadMore]\n );\n\n return {\n loadingMore,\n onScroll,\n };\n}\n"],"mappings":"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","names":["useCallback","useState","useCallback","useState","useCallback","useState","useEffect","useState","useCallback","useState","useCallback"]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// src/providers/ThemeContext.ts
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
var defaultTheme = {
|
|
4
|
+
colors: {
|
|
5
|
+
primary: "#14b8a6",
|
|
6
|
+
"primary-hover": "#0d9488",
|
|
7
|
+
"primary-foreground": "#ffffff",
|
|
8
|
+
secondary: "#f1f5f9",
|
|
9
|
+
"secondary-hover": "#e2e8f0",
|
|
10
|
+
"secondary-foreground": "#0f172a",
|
|
11
|
+
accent: "#06b6d4",
|
|
12
|
+
"accent-foreground": "#ffffff",
|
|
13
|
+
muted: "#f1f5f9",
|
|
14
|
+
"muted-foreground": "#64748b",
|
|
15
|
+
background: "#f8fafc",
|
|
16
|
+
foreground: "#0f172a",
|
|
17
|
+
card: "#ffffff",
|
|
18
|
+
"card-foreground": "#0f172a",
|
|
19
|
+
surface: "#f1f5f9",
|
|
20
|
+
border: "#e2e8f0",
|
|
21
|
+
input: "#e2e8f0",
|
|
22
|
+
ring: "#14b8a6",
|
|
23
|
+
error: "#dc2626",
|
|
24
|
+
"error-foreground": "#ffffff",
|
|
25
|
+
success: "#16a34a",
|
|
26
|
+
"success-foreground": "#ffffff",
|
|
27
|
+
warning: "#ca8a04",
|
|
28
|
+
"warning-foreground": "#000000",
|
|
29
|
+
info: "#0ea5e9",
|
|
30
|
+
"info-foreground": "#ffffff"
|
|
31
|
+
},
|
|
32
|
+
borderRadius: {
|
|
33
|
+
none: 0,
|
|
34
|
+
sm: 4,
|
|
35
|
+
md: 8,
|
|
36
|
+
lg: 12,
|
|
37
|
+
xl: 16,
|
|
38
|
+
full: 9999
|
|
39
|
+
},
|
|
40
|
+
spacing: {
|
|
41
|
+
0: 0,
|
|
42
|
+
1: 4,
|
|
43
|
+
2: 8,
|
|
44
|
+
3: 12,
|
|
45
|
+
4: 16,
|
|
46
|
+
5: 20,
|
|
47
|
+
6: 24,
|
|
48
|
+
8: 32,
|
|
49
|
+
10: 40,
|
|
50
|
+
12: 48
|
|
51
|
+
},
|
|
52
|
+
typography: {
|
|
53
|
+
fontFamily: "Inter",
|
|
54
|
+
fontWeight: {
|
|
55
|
+
normal: "400",
|
|
56
|
+
medium: "500",
|
|
57
|
+
bold: "600"
|
|
58
|
+
},
|
|
59
|
+
letterSpacing: -0.02,
|
|
60
|
+
lineHeight: 1.6,
|
|
61
|
+
sizes: {
|
|
62
|
+
xs: 12,
|
|
63
|
+
sm: 14,
|
|
64
|
+
base: 16,
|
|
65
|
+
lg: 18,
|
|
66
|
+
xl: 20,
|
|
67
|
+
"2xl": 24,
|
|
68
|
+
"3xl": 30,
|
|
69
|
+
"4xl": 36
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
shadows: {
|
|
73
|
+
none: {
|
|
74
|
+
shadowColor: "transparent",
|
|
75
|
+
shadowOffset: { width: 0, height: 0 },
|
|
76
|
+
shadowOpacity: 0,
|
|
77
|
+
shadowRadius: 0,
|
|
78
|
+
elevation: 0
|
|
79
|
+
},
|
|
80
|
+
sm: {
|
|
81
|
+
shadowColor: "rgba(0,0,0,0.1)",
|
|
82
|
+
shadowOffset: { width: 0, height: 1 },
|
|
83
|
+
shadowOpacity: 1,
|
|
84
|
+
shadowRadius: 2,
|
|
85
|
+
elevation: 2
|
|
86
|
+
},
|
|
87
|
+
main: {
|
|
88
|
+
shadowColor: "rgba(0,0,0,0.1)",
|
|
89
|
+
shadowOffset: { width: 0, height: 4 },
|
|
90
|
+
shadowOpacity: 1,
|
|
91
|
+
shadowRadius: 8,
|
|
92
|
+
elevation: 4
|
|
93
|
+
},
|
|
94
|
+
lg: {
|
|
95
|
+
shadowColor: "rgba(0,0,0,0.15)",
|
|
96
|
+
shadowOffset: { width: 0, height: 8 },
|
|
97
|
+
shadowOpacity: 1,
|
|
98
|
+
shadowRadius: 16,
|
|
99
|
+
elevation: 8
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
transitions: {
|
|
103
|
+
fast: 150,
|
|
104
|
+
normal: 250,
|
|
105
|
+
slow: 400
|
|
106
|
+
},
|
|
107
|
+
icon: {
|
|
108
|
+
strokeWidth: 1.75,
|
|
109
|
+
color: "#0d9488"
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
var ThemeContext = createContext(defaultTheme);
|
|
113
|
+
var useTheme = () => useContext(ThemeContext);
|
|
114
|
+
|
|
115
|
+
export {
|
|
116
|
+
ThemeContext,
|
|
117
|
+
useTheme
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=chunk-CUAWHLEK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/providers/ThemeContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * React Native Theme Structure\n * Mirrors CSS variable names from @almadar/ui\n */\nexport interface RNTheme {\n colors: {\n primary: string;\n 'primary-hover': string;\n 'primary-foreground': string;\n secondary: string;\n 'secondary-hover': string;\n 'secondary-foreground': string;\n accent: string;\n 'accent-foreground': string;\n muted: string;\n 'muted-foreground': string;\n background: string;\n foreground: string;\n card: string;\n 'card-foreground': string;\n surface: string;\n border: string;\n input: string;\n ring: string;\n error: string;\n 'error-foreground': string;\n success: string;\n 'success-foreground': string;\n warning: string;\n 'warning-foreground': string;\n info: string;\n 'info-foreground': string;\n [key: string]: string;\n };\n borderRadius: {\n none: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n full: number;\n };\n spacing: {\n [key: string]: number;\n };\n typography: {\n fontFamily: string;\n fontWeight: {\n normal: string;\n medium: string;\n bold: string;\n };\n letterSpacing: number;\n lineHeight: number;\n sizes: {\n xs: number;\n sm: number;\n base: number;\n lg: number;\n xl: number;\n '2xl': number;\n '3xl': number;\n '4xl': number;\n };\n };\n shadows: {\n [key: string]: {\n shadowColor: string;\n shadowOffset: { width: number; height: number };\n shadowOpacity: number;\n shadowRadius: number;\n elevation: number;\n };\n };\n transitions: {\n fast: number;\n normal: number;\n slow: number;\n };\n icon: {\n strokeWidth: number;\n color: string;\n };\n}\n\nexport const defaultTheme: RNTheme = {\n colors: {\n primary: '#14b8a6',\n 'primary-hover': '#0d9488',\n 'primary-foreground': '#ffffff',\n secondary: '#f1f5f9',\n 'secondary-hover': '#e2e8f0',\n 'secondary-foreground': '#0f172a',\n accent: '#06b6d4',\n 'accent-foreground': '#ffffff',\n muted: '#f1f5f9',\n 'muted-foreground': '#64748b',\n background: '#f8fafc',\n foreground: '#0f172a',\n card: '#ffffff',\n 'card-foreground': '#0f172a',\n surface: '#f1f5f9',\n border: '#e2e8f0',\n input: '#e2e8f0',\n ring: '#14b8a6',\n error: '#dc2626',\n 'error-foreground': '#ffffff',\n success: '#16a34a',\n 'success-foreground': '#ffffff',\n warning: '#ca8a04',\n 'warning-foreground': '#000000',\n info: '#0ea5e9',\n 'info-foreground': '#ffffff',\n },\n borderRadius: {\n none: 0,\n sm: 4,\n md: 8,\n lg: 12,\n xl: 16,\n full: 9999,\n },\n spacing: {\n 0: 0,\n 1: 4,\n 2: 8,\n 3: 12,\n 4: 16,\n 5: 20,\n 6: 24,\n 8: 32,\n 10: 40,\n 12: 48,\n },\n typography: {\n fontFamily: 'Inter',\n fontWeight: {\n normal: '400',\n medium: '500',\n bold: '600',\n },\n letterSpacing: -0.02,\n lineHeight: 1.6,\n sizes: {\n xs: 12,\n sm: 14,\n base: 16,\n lg: 18,\n xl: 20,\n '2xl': 24,\n '3xl': 30,\n '4xl': 36,\n },\n },\n shadows: {\n none: {\n shadowColor: 'transparent',\n shadowOffset: { width: 0, height: 0 },\n shadowOpacity: 0,\n shadowRadius: 0,\n elevation: 0,\n },\n sm: {\n shadowColor: 'rgba(0,0,0,0.1)',\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 1,\n shadowRadius: 2,\n elevation: 2,\n },\n main: {\n shadowColor: 'rgba(0,0,0,0.1)',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 1,\n shadowRadius: 8,\n elevation: 4,\n },\n lg: {\n shadowColor: 'rgba(0,0,0,0.15)',\n shadowOffset: { width: 0, height: 8 },\n shadowOpacity: 1,\n shadowRadius: 16,\n elevation: 8,\n },\n },\n transitions: {\n fast: 150,\n normal: 250,\n slow: 400,\n },\n icon: {\n strokeWidth: 1.75,\n color: '#0d9488',\n },\n};\n\nexport const ThemeContext = createContext<RNTheme>(defaultTheme);\n\nexport const useTheme = () => useContext(ThemeContext);\n"],"mappings":";AAAA,SAAS,eAAe,kBAAkB;AAuFnC,IAAM,eAAwB;AAAA,EACnC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,QAAQ;AAAA,IACR,qBAAqB;AAAA,IACrB,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,MAAM;AAAA,IACN,mBAAmB;AAAA,EACrB;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EACA,YAAY;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,MACJ,aAAa;AAAA,MACb,cAAc,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,MACpC,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,IACA,IAAI;AAAA,MACF,aAAa;AAAA,MACb,cAAc,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,MACpC,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,IACA,MAAM;AAAA,MACJ,aAAa;AAAA,MACb,cAAc,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,MACpC,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,IACA,IAAI;AAAA,MACF,aAAa;AAAA,MACb,cAAc,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,MACpC,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,IACJ,aAAa;AAAA,IACb,OAAO;AAAA,EACT;AACF;AAEO,IAAM,eAAe,cAAuB,YAAY;AAExD,IAAM,WAAW,MAAM,WAAW,YAAY;","names":[]}
|