@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.
Files changed (433) hide show
  1. package/README.md +203 -0
  2. package/dist/chunk-6RVITGGH.js +167 -0
  3. package/dist/chunk-6RVITGGH.js.map +1 -0
  4. package/dist/chunk-7C5JCLLY.js +1125 -0
  5. package/dist/chunk-7C5JCLLY.js.map +1 -0
  6. package/dist/chunk-CA6Z3OTE.js +247 -0
  7. package/dist/chunk-CA6Z3OTE.js.map +1 -0
  8. package/dist/chunk-CUAWHLEK.js +119 -0
  9. package/dist/chunk-CUAWHLEK.js.map +1 -0
  10. package/dist/chunk-DMLYJFYQ.js +816 -0
  11. package/dist/chunk-DMLYJFYQ.js.map +1 -0
  12. package/dist/chunk-DY52O4T3.js +795 -0
  13. package/dist/chunk-DY52O4T3.js.map +1 -0
  14. package/dist/chunk-LFHVNHVA.js +176 -0
  15. package/dist/chunk-LFHVNHVA.js.map +1 -0
  16. package/dist/chunk-MFU7Q7LU.js +206 -0
  17. package/dist/chunk-MFU7Q7LU.js.map +1 -0
  18. package/dist/chunk-S2IT7WZT.js +71 -0
  19. package/dist/chunk-S2IT7WZT.js.map +1 -0
  20. package/dist/chunk-T77JPOTP.js +11789 -0
  21. package/dist/chunk-T77JPOTP.js.map +1 -0
  22. package/dist/chunk-VLUJ7BXN.js +36 -0
  23. package/dist/chunk-VLUJ7BXN.js.map +1 -0
  24. package/dist/chunk-YMJZLYLV.js +4086 -0
  25. package/dist/chunk-YMJZLYLV.js.map +1 -0
  26. package/dist/chunk-YTVYMEKU.js +7 -0
  27. package/dist/chunk-YTVYMEKU.js.map +1 -0
  28. package/dist/components/atoms/Avatar.d.ts +17 -0
  29. package/dist/components/atoms/Avatar.d.ts.map +1 -0
  30. package/dist/components/atoms/Badge.d.ts +18 -0
  31. package/dist/components/atoms/Badge.d.ts.map +1 -0
  32. package/dist/components/atoms/Button.d.ts +20 -0
  33. package/dist/components/atoms/Button.d.ts.map +1 -0
  34. package/dist/components/atoms/Card.d.ts +21 -0
  35. package/dist/components/atoms/Card.d.ts.map +1 -0
  36. package/dist/components/atoms/Center.d.ts +14 -0
  37. package/dist/components/atoms/Center.d.ts.map +1 -0
  38. package/dist/components/atoms/Checkbox.d.ts +21 -0
  39. package/dist/components/atoms/Checkbox.d.ts.map +1 -0
  40. package/dist/components/atoms/ConditionalWrapper.d.ts +34 -0
  41. package/dist/components/atoms/ConditionalWrapper.d.ts.map +1 -0
  42. package/dist/components/atoms/Divider.d.ts +11 -0
  43. package/dist/components/atoms/Divider.d.ts.map +1 -0
  44. package/dist/components/atoms/Icon.d.ts +11 -0
  45. package/dist/components/atoms/Icon.d.ts.map +1 -0
  46. package/dist/components/atoms/Input.d.ts +21 -0
  47. package/dist/components/atoms/Input.d.ts.map +1 -0
  48. package/dist/components/atoms/Label.d.ts +12 -0
  49. package/dist/components/atoms/Label.d.ts.map +1 -0
  50. package/dist/components/atoms/Overlay.d.ts +16 -0
  51. package/dist/components/atoms/Overlay.d.ts.map +1 -0
  52. package/dist/components/atoms/ProgressBar.d.ts +18 -0
  53. package/dist/components/atoms/ProgressBar.d.ts.map +1 -0
  54. package/dist/components/atoms/Radio.d.ts +21 -0
  55. package/dist/components/atoms/Radio.d.ts.map +1 -0
  56. package/dist/components/atoms/Select.d.ts +27 -0
  57. package/dist/components/atoms/Select.d.ts.map +1 -0
  58. package/dist/components/atoms/Spacer.d.ts +20 -0
  59. package/dist/components/atoms/Spacer.d.ts.map +1 -0
  60. package/dist/components/atoms/Spinner.d.ts +11 -0
  61. package/dist/components/atoms/Spinner.d.ts.map +1 -0
  62. package/dist/components/atoms/Stack.d.ts +45 -0
  63. package/dist/components/atoms/Stack.d.ts.map +1 -0
  64. package/dist/components/atoms/Switch.d.ts +21 -0
  65. package/dist/components/atoms/Switch.d.ts.map +1 -0
  66. package/dist/components/atoms/Textarea.d.ts +22 -0
  67. package/dist/components/atoms/Textarea.d.ts.map +1 -0
  68. package/dist/components/atoms/Typography.d.ts +20 -0
  69. package/dist/components/atoms/Typography.d.ts.map +1 -0
  70. package/dist/components/atoms/game/ControlButton.d.ts +30 -0
  71. package/dist/components/atoms/game/ControlButton.d.ts.map +1 -0
  72. package/dist/components/atoms/game/HealthBar.d.ts +18 -0
  73. package/dist/components/atoms/game/HealthBar.d.ts.map +1 -0
  74. package/dist/components/atoms/game/ScoreDisplay.d.ts +20 -0
  75. package/dist/components/atoms/game/ScoreDisplay.d.ts.map +1 -0
  76. package/dist/components/atoms/game/Sprite.d.ts +41 -0
  77. package/dist/components/atoms/game/Sprite.d.ts.map +1 -0
  78. package/dist/components/atoms/game/StateIndicator.d.ts +22 -0
  79. package/dist/components/atoms/game/StateIndicator.d.ts.map +1 -0
  80. package/dist/components/atoms/game/index.d.ts +11 -0
  81. package/dist/components/atoms/game/index.d.ts.map +1 -0
  82. package/dist/components/atoms/index.d.ts +45 -0
  83. package/dist/components/atoms/index.d.ts.map +1 -0
  84. package/dist/components/atoms/index.js +69 -0
  85. package/dist/components/atoms/index.js.map +1 -0
  86. package/dist/components/index.d.ts +4 -0
  87. package/dist/components/index.d.ts.map +1 -0
  88. package/dist/components/index.js +317 -0
  89. package/dist/components/index.js.map +1 -0
  90. package/dist/components/molecules/Alert.d.ts +22 -0
  91. package/dist/components/molecules/Alert.d.ts.map +1 -0
  92. package/dist/components/molecules/Breadcrumb.d.ts +16 -0
  93. package/dist/components/molecules/Breadcrumb.d.ts.map +1 -0
  94. package/dist/components/molecules/ButtonGroup.d.ts +23 -0
  95. package/dist/components/molecules/ButtonGroup.d.ts.map +1 -0
  96. package/dist/components/molecules/CodeBlock.d.ts +26 -0
  97. package/dist/components/molecules/CodeBlock.d.ts.map +1 -0
  98. package/dist/components/molecules/Container.d.ts +20 -0
  99. package/dist/components/molecules/Container.d.ts.map +1 -0
  100. package/dist/components/molecules/Drawer.d.ts +11 -0
  101. package/dist/components/molecules/Drawer.d.ts.map +1 -0
  102. package/dist/components/molecules/EmptyState.d.ts +7 -0
  103. package/dist/components/molecules/EmptyState.d.ts.map +1 -0
  104. package/dist/components/molecules/ErrorBoundary.d.ts +29 -0
  105. package/dist/components/molecules/ErrorBoundary.d.ts.map +1 -0
  106. package/dist/components/molecules/ErrorState.d.ts +7 -0
  107. package/dist/components/molecules/ErrorState.d.ts.map +1 -0
  108. package/dist/components/molecules/FilterGroup.d.ts +54 -0
  109. package/dist/components/molecules/FilterGroup.d.ts.map +1 -0
  110. package/dist/components/molecules/Flex.d.ts +31 -0
  111. package/dist/components/molecules/Flex.d.ts.map +1 -0
  112. package/dist/components/molecules/FloatingActionButton.d.ts +33 -0
  113. package/dist/components/molecules/FloatingActionButton.d.ts.map +1 -0
  114. package/dist/components/molecules/FormField.d.ts +12 -0
  115. package/dist/components/molecules/FormField.d.ts.map +1 -0
  116. package/dist/components/molecules/FormSectionHeader.d.ts +15 -0
  117. package/dist/components/molecules/FormSectionHeader.d.ts.map +1 -0
  118. package/dist/components/molecules/Grid.d.ts +24 -0
  119. package/dist/components/molecules/Grid.d.ts.map +1 -0
  120. package/dist/components/molecules/InputGroup.d.ts +18 -0
  121. package/dist/components/molecules/InputGroup.d.ts.map +1 -0
  122. package/dist/components/molecules/List.d.ts +16 -0
  123. package/dist/components/molecules/List.d.ts.map +1 -0
  124. package/dist/components/molecules/LoadingState.d.ts +6 -0
  125. package/dist/components/molecules/LoadingState.d.ts.map +1 -0
  126. package/dist/components/molecules/MarkdownContent.d.ts +18 -0
  127. package/dist/components/molecules/MarkdownContent.d.ts.map +1 -0
  128. package/dist/components/molecules/Menu.d.ts +19 -0
  129. package/dist/components/molecules/Menu.d.ts.map +1 -0
  130. package/dist/components/molecules/Meter.d.ts +58 -0
  131. package/dist/components/molecules/Meter.d.ts.map +1 -0
  132. package/dist/components/molecules/Modal.d.ts +22 -0
  133. package/dist/components/molecules/Modal.d.ts.map +1 -0
  134. package/dist/components/molecules/Navigation.d.ts +72 -0
  135. package/dist/components/molecules/Navigation.d.ts.map +1 -0
  136. package/dist/components/molecules/Pagination.d.ts +30 -0
  137. package/dist/components/molecules/Pagination.d.ts.map +1 -0
  138. package/dist/components/molecules/Popover.d.ts +11 -0
  139. package/dist/components/molecules/Popover.d.ts.map +1 -0
  140. package/dist/components/molecules/QuizBlock.d.ts +35 -0
  141. package/dist/components/molecules/QuizBlock.d.ts.map +1 -0
  142. package/dist/components/molecules/RelationSelect.d.ts +38 -0
  143. package/dist/components/molecules/RelationSelect.d.ts.map +1 -0
  144. package/dist/components/molecules/RepeatableFormSection.d.ts +46 -0
  145. package/dist/components/molecules/RepeatableFormSection.d.ts.map +1 -0
  146. package/dist/components/molecules/ScaledDiagram.d.ts +41 -0
  147. package/dist/components/molecules/ScaledDiagram.d.ts.map +1 -0
  148. package/dist/components/molecules/SearchInput.d.ts +22 -0
  149. package/dist/components/molecules/SearchInput.d.ts.map +1 -0
  150. package/dist/components/molecules/SidePanel.d.ts +49 -0
  151. package/dist/components/molecules/SidePanel.d.ts.map +1 -0
  152. package/dist/components/molecules/SimpleGrid.d.ts +17 -0
  153. package/dist/components/molecules/SimpleGrid.d.ts.map +1 -0
  154. package/dist/components/molecules/Skeleton.d.ts +12 -0
  155. package/dist/components/molecules/Skeleton.d.ts.map +1 -0
  156. package/dist/components/molecules/Tabs.d.ts +25 -0
  157. package/dist/components/molecules/Tabs.d.ts.map +1 -0
  158. package/dist/components/molecules/Toast.d.ts +18 -0
  159. package/dist/components/molecules/Toast.d.ts.map +1 -0
  160. package/dist/components/molecules/Tooltip.d.ts +11 -0
  161. package/dist/components/molecules/Tooltip.d.ts.map +1 -0
  162. package/dist/components/molecules/WizardNavigation.d.ts +36 -0
  163. package/dist/components/molecules/WizardNavigation.d.ts.map +1 -0
  164. package/dist/components/molecules/WizardProgress.d.ts +26 -0
  165. package/dist/components/molecules/WizardProgress.d.ts.map +1 -0
  166. package/dist/components/molecules/game/ActionButtons.d.ts +30 -0
  167. package/dist/components/molecules/game/ActionButtons.d.ts.map +1 -0
  168. package/dist/components/molecules/game/DPad.d.ts +19 -0
  169. package/dist/components/molecules/game/DPad.d.ts.map +1 -0
  170. package/dist/components/molecules/game/StatBadge.d.ts +26 -0
  171. package/dist/components/molecules/game/StatBadge.d.ts.map +1 -0
  172. package/dist/components/molecules/game/index.d.ts +7 -0
  173. package/dist/components/molecules/game/index.d.ts.map +1 -0
  174. package/dist/components/molecules/index.d.ts +79 -0
  175. package/dist/components/molecules/index.d.ts.map +1 -0
  176. package/dist/components/molecules/index.js +96 -0
  177. package/dist/components/molecules/index.js.map +1 -0
  178. package/dist/components/organisms/CardGrid.d.ts +16 -0
  179. package/dist/components/organisms/CardGrid.d.ts.map +1 -0
  180. package/dist/components/organisms/Chart.d.ts +26 -0
  181. package/dist/components/organisms/Chart.d.ts.map +1 -0
  182. package/dist/components/organisms/CodeViewer.d.ts +29 -0
  183. package/dist/components/organisms/CodeViewer.d.ts.map +1 -0
  184. package/dist/components/organisms/ComponentPatterns.d.ts +34 -0
  185. package/dist/components/organisms/ComponentPatterns.d.ts.map +1 -0
  186. package/dist/components/organisms/ConfirmDialog.d.ts +46 -0
  187. package/dist/components/organisms/ConfirmDialog.d.ts.map +1 -0
  188. package/dist/components/organisms/ContentRenderer.d.ts +37 -0
  189. package/dist/components/organisms/ContentRenderer.d.ts.map +1 -0
  190. package/dist/components/organisms/CustomPattern.d.ts +36 -0
  191. package/dist/components/organisms/CustomPattern.d.ts.map +1 -0
  192. package/dist/components/organisms/DataTable.d.ts +22 -0
  193. package/dist/components/organisms/DataTable.d.ts.map +1 -0
  194. package/dist/components/organisms/DetailPanel.d.ts +17 -0
  195. package/dist/components/organisms/DetailPanel.d.ts.map +1 -0
  196. package/dist/components/organisms/DocumentViewer.d.ts +34 -0
  197. package/dist/components/organisms/DocumentViewer.d.ts.map +1 -0
  198. package/dist/components/organisms/DrawerSlot.d.ts +38 -0
  199. package/dist/components/organisms/DrawerSlot.d.ts.map +1 -0
  200. package/dist/components/organisms/EntityCard.d.ts +11 -0
  201. package/dist/components/organisms/EntityCard.d.ts.map +1 -0
  202. package/dist/components/organisms/EntityList.d.ts +17 -0
  203. package/dist/components/organisms/EntityList.d.ts.map +1 -0
  204. package/dist/components/organisms/Form.d.ts +49 -0
  205. package/dist/components/organisms/Form.d.ts.map +1 -0
  206. package/dist/components/organisms/FormSection.d.ts +9 -0
  207. package/dist/components/organisms/FormSection.d.ts.map +1 -0
  208. package/dist/components/organisms/Header.d.ts +24 -0
  209. package/dist/components/organisms/Header.d.ts.map +1 -0
  210. package/dist/components/organisms/LayoutPatterns.d.ts +39 -0
  211. package/dist/components/organisms/LayoutPatterns.d.ts.map +1 -0
  212. package/dist/components/organisms/MasterDetail.d.ts +39 -0
  213. package/dist/components/organisms/MasterDetail.d.ts.map +1 -0
  214. package/dist/components/organisms/MediaGallery.d.ts +35 -0
  215. package/dist/components/organisms/MediaGallery.d.ts.map +1 -0
  216. package/dist/components/organisms/ModalSlot.d.ts +35 -0
  217. package/dist/components/organisms/ModalSlot.d.ts.map +1 -0
  218. package/dist/components/organisms/PageHeader.d.ts +15 -0
  219. package/dist/components/organisms/PageHeader.d.ts.map +1 -0
  220. package/dist/components/organisms/Section.d.ts +52 -0
  221. package/dist/components/organisms/Section.d.ts.map +1 -0
  222. package/dist/components/organisms/Sidebar.d.ts +54 -0
  223. package/dist/components/organisms/Sidebar.d.ts.map +1 -0
  224. package/dist/components/organisms/SignaturePad.d.ts +44 -0
  225. package/dist/components/organisms/SignaturePad.d.ts.map +1 -0
  226. package/dist/components/organisms/Split.d.ts +34 -0
  227. package/dist/components/organisms/Split.d.ts.map +1 -0
  228. package/dist/components/organisms/StatCard.d.ts +20 -0
  229. package/dist/components/organisms/StatCard.d.ts.map +1 -0
  230. package/dist/components/organisms/StateMachineView.d.ts +41 -0
  231. package/dist/components/organisms/StateMachineView.d.ts.map +1 -0
  232. package/dist/components/organisms/Table.d.ts +104 -0
  233. package/dist/components/organisms/Table.d.ts.map +1 -0
  234. package/dist/components/organisms/Timeline.d.ts +19 -0
  235. package/dist/components/organisms/Timeline.d.ts.map +1 -0
  236. package/dist/components/organisms/ToastSlot.d.ts +30 -0
  237. package/dist/components/organisms/ToastSlot.d.ts.map +1 -0
  238. package/dist/components/organisms/UISlotRenderer.d.ts +35 -0
  239. package/dist/components/organisms/UISlotRenderer.d.ts.map +1 -0
  240. package/dist/components/organisms/WizardContainer.d.ts +25 -0
  241. package/dist/components/organisms/WizardContainer.d.ts.map +1 -0
  242. package/dist/components/organisms/book/BookChapterView.d.ts +26 -0
  243. package/dist/components/organisms/book/BookChapterView.d.ts.map +1 -0
  244. package/dist/components/organisms/book/BookCoverPage.d.ts +38 -0
  245. package/dist/components/organisms/book/BookCoverPage.d.ts.map +1 -0
  246. package/dist/components/organisms/book/BookNavBar.d.ts +40 -0
  247. package/dist/components/organisms/book/BookNavBar.d.ts.map +1 -0
  248. package/dist/components/organisms/book/BookTableOfContents.d.ts +32 -0
  249. package/dist/components/organisms/book/BookTableOfContents.d.ts.map +1 -0
  250. package/dist/components/organisms/book/BookViewer.d.ts +36 -0
  251. package/dist/components/organisms/book/BookViewer.d.ts.map +1 -0
  252. package/dist/components/organisms/book/index.d.ts +11 -0
  253. package/dist/components/organisms/book/index.d.ts.map +1 -0
  254. package/dist/components/organisms/game/BattleBoard.d.ts +38 -0
  255. package/dist/components/organisms/game/BattleBoard.d.ts.map +1 -0
  256. package/dist/components/organisms/game/CanvasEffect.d.ts +26 -0
  257. package/dist/components/organisms/game/CanvasEffect.d.ts.map +1 -0
  258. package/dist/components/organisms/game/CastleBoard.d.ts +30 -0
  259. package/dist/components/organisms/game/CastleBoard.d.ts.map +1 -0
  260. package/dist/components/organisms/game/CombatLog.d.ts +23 -0
  261. package/dist/components/organisms/game/CombatLog.d.ts.map +1 -0
  262. package/dist/components/organisms/game/DialogueBox.d.ts +40 -0
  263. package/dist/components/organisms/game/DialogueBox.d.ts.map +1 -0
  264. package/dist/components/organisms/game/GameAudioProvider.d.ts +50 -0
  265. package/dist/components/organisms/game/GameAudioProvider.d.ts.map +1 -0
  266. package/dist/components/organisms/game/GameAudioToggle.d.ts +18 -0
  267. package/dist/components/organisms/game/GameAudioToggle.d.ts.map +1 -0
  268. package/dist/components/organisms/game/GameCanvas3D.d.ts +53 -0
  269. package/dist/components/organisms/game/GameCanvas3D.d.ts.map +1 -0
  270. package/dist/components/organisms/game/GameHud.d.ts +40 -0
  271. package/dist/components/organisms/game/GameHud.d.ts.map +1 -0
  272. package/dist/components/organisms/game/GameMenu.d.ts +34 -0
  273. package/dist/components/organisms/game/GameMenu.d.ts.map +1 -0
  274. package/dist/components/organisms/game/GameOverScreen.d.ts +36 -0
  275. package/dist/components/organisms/game/GameOverScreen.d.ts.map +1 -0
  276. package/dist/components/organisms/game/InventoryPanel.d.ts +38 -0
  277. package/dist/components/organisms/game/InventoryPanel.d.ts.map +1 -0
  278. package/dist/components/organisms/game/IsometricCanvas.d.ts +54 -0
  279. package/dist/components/organisms/game/IsometricCanvas.d.ts.map +1 -0
  280. package/dist/components/organisms/game/TraitSlot.d.ts +29 -0
  281. package/dist/components/organisms/game/TraitSlot.d.ts.map +1 -0
  282. package/dist/components/organisms/game/TraitStateViewer.d.ts +28 -0
  283. package/dist/components/organisms/game/TraitStateViewer.d.ts.map +1 -0
  284. package/dist/components/organisms/game/UncontrolledBattleBoard.d.ts +30 -0
  285. package/dist/components/organisms/game/UncontrolledBattleBoard.d.ts.map +1 -0
  286. package/dist/components/organisms/game/WorldMapBoard.d.ts +40 -0
  287. package/dist/components/organisms/game/WorldMapBoard.d.ts.map +1 -0
  288. package/dist/components/organisms/game/index.d.ts +37 -0
  289. package/dist/components/organisms/game/index.d.ts.map +1 -0
  290. package/dist/components/organisms/game/physics-sim/SimulationCanvas.d.ts +41 -0
  291. package/dist/components/organisms/game/physics-sim/SimulationCanvas.d.ts.map +1 -0
  292. package/dist/components/organisms/game/physics-sim/SimulationControls.d.ts +38 -0
  293. package/dist/components/organisms/game/physics-sim/SimulationControls.d.ts.map +1 -0
  294. package/dist/components/organisms/game/physics-sim/SimulationGraph.d.ts +35 -0
  295. package/dist/components/organisms/game/physics-sim/SimulationGraph.d.ts.map +1 -0
  296. package/dist/components/organisms/game/physics-sim/index.d.ts +7 -0
  297. package/dist/components/organisms/game/physics-sim/index.d.ts.map +1 -0
  298. package/dist/components/organisms/game/puzzles/builder/BuilderBoard.d.ts +55 -0
  299. package/dist/components/organisms/game/puzzles/builder/BuilderBoard.d.ts.map +1 -0
  300. package/dist/components/organisms/game/puzzles/builder/index.d.ts +3 -0
  301. package/dist/components/organisms/game/puzzles/builder/index.d.ts.map +1 -0
  302. package/dist/components/organisms/game/puzzles/classifier/ClassifierBoard.d.ts +56 -0
  303. package/dist/components/organisms/game/puzzles/classifier/ClassifierBoard.d.ts.map +1 -0
  304. package/dist/components/organisms/game/puzzles/classifier/index.d.ts +3 -0
  305. package/dist/components/organisms/game/puzzles/classifier/index.d.ts.map +1 -0
  306. package/dist/components/organisms/game/puzzles/debugger/DebuggerBoard.d.ts +48 -0
  307. package/dist/components/organisms/game/puzzles/debugger/DebuggerBoard.d.ts.map +1 -0
  308. package/dist/components/organisms/game/puzzles/debugger/index.d.ts +3 -0
  309. package/dist/components/organisms/game/puzzles/debugger/index.d.ts.map +1 -0
  310. package/dist/components/organisms/game/puzzles/event-handler/EventHandlerBoard.d.ts +56 -0
  311. package/dist/components/organisms/game/puzzles/event-handler/EventHandlerBoard.d.ts.map +1 -0
  312. package/dist/components/organisms/game/puzzles/event-handler/EventLog.d.ts +33 -0
  313. package/dist/components/organisms/game/puzzles/event-handler/EventLog.d.ts.map +1 -0
  314. package/dist/components/organisms/game/puzzles/event-handler/ObjectRulePanel.d.ts +41 -0
  315. package/dist/components/organisms/game/puzzles/event-handler/ObjectRulePanel.d.ts.map +1 -0
  316. package/dist/components/organisms/game/puzzles/event-handler/RuleEditor.d.ts +39 -0
  317. package/dist/components/organisms/game/puzzles/event-handler/RuleEditor.d.ts.map +1 -0
  318. package/dist/components/organisms/game/puzzles/event-handler/index.d.ts +9 -0
  319. package/dist/components/organisms/game/puzzles/event-handler/index.d.ts.map +1 -0
  320. package/dist/components/organisms/game/puzzles/index.d.ts +49 -0
  321. package/dist/components/organisms/game/puzzles/index.d.ts.map +1 -0
  322. package/dist/components/organisms/game/puzzles/negotiator/NegotiatorBoard.d.ts +54 -0
  323. package/dist/components/organisms/game/puzzles/negotiator/NegotiatorBoard.d.ts.map +1 -0
  324. package/dist/components/organisms/game/puzzles/negotiator/index.d.ts +3 -0
  325. package/dist/components/organisms/game/puzzles/negotiator/index.d.ts.map +1 -0
  326. package/dist/components/organisms/game/puzzles/sequencer/ActionPalette.d.ts +32 -0
  327. package/dist/components/organisms/game/puzzles/sequencer/ActionPalette.d.ts.map +1 -0
  328. package/dist/components/organisms/game/puzzles/sequencer/ActionTile.d.ts +27 -0
  329. package/dist/components/organisms/game/puzzles/sequencer/ActionTile.d.ts.map +1 -0
  330. package/dist/components/organisms/game/puzzles/sequencer/SequenceBar.d.ts +31 -0
  331. package/dist/components/organisms/game/puzzles/sequencer/SequenceBar.d.ts.map +1 -0
  332. package/dist/components/organisms/game/puzzles/sequencer/SequencerBoard.d.ts +67 -0
  333. package/dist/components/organisms/game/puzzles/sequencer/SequencerBoard.d.ts.map +1 -0
  334. package/dist/components/organisms/game/puzzles/sequencer/index.d.ts +3 -0
  335. package/dist/components/organisms/game/puzzles/sequencer/index.d.ts.map +1 -0
  336. package/dist/components/organisms/game/puzzles/simulator/SimulatorBoard.d.ts +55 -0
  337. package/dist/components/organisms/game/puzzles/simulator/SimulatorBoard.d.ts.map +1 -0
  338. package/dist/components/organisms/game/puzzles/simulator/index.d.ts +3 -0
  339. package/dist/components/organisms/game/puzzles/simulator/index.d.ts.map +1 -0
  340. package/dist/components/organisms/game/puzzles/state-architect/CodeView.d.ts +40 -0
  341. package/dist/components/organisms/game/puzzles/state-architect/CodeView.d.ts.map +1 -0
  342. package/dist/components/organisms/game/puzzles/state-architect/StateArchitectBoard.d.ts +78 -0
  343. package/dist/components/organisms/game/puzzles/state-architect/StateArchitectBoard.d.ts.map +1 -0
  344. package/dist/components/organisms/game/puzzles/state-architect/StateNode.d.ts +29 -0
  345. package/dist/components/organisms/game/puzzles/state-architect/StateNode.d.ts.map +1 -0
  346. package/dist/components/organisms/game/puzzles/state-architect/TransitionArrow.d.ts +33 -0
  347. package/dist/components/organisms/game/puzzles/state-architect/TransitionArrow.d.ts.map +1 -0
  348. package/dist/components/organisms/game/puzzles/state-architect/VariablePanel.d.ts +38 -0
  349. package/dist/components/organisms/game/puzzles/state-architect/VariablePanel.d.ts.map +1 -0
  350. package/dist/components/organisms/game/puzzles/state-architect/index.d.ts +3 -0
  351. package/dist/components/organisms/game/puzzles/state-architect/index.d.ts.map +1 -0
  352. package/dist/components/organisms/index.d.ts +68 -0
  353. package/dist/components/organisms/index.d.ts.map +1 -0
  354. package/dist/components/organisms/index.js +168 -0
  355. package/dist/components/organisms/index.js.map +1 -0
  356. package/dist/components/organisms/layout/DashboardGrid.d.ts +25 -0
  357. package/dist/components/organisms/layout/DashboardGrid.d.ts.map +1 -0
  358. package/dist/components/organisms/layout/SplitPane.d.ts +25 -0
  359. package/dist/components/organisms/layout/SplitPane.d.ts.map +1 -0
  360. package/dist/components/organisms/layout/TabbedContainer.d.ts +26 -0
  361. package/dist/components/organisms/layout/TabbedContainer.d.ts.map +1 -0
  362. package/dist/components/organisms/layout/index.d.ts +7 -0
  363. package/dist/components/organisms/layout/index.d.ts.map +1 -0
  364. package/dist/components/templates/AuthLayout.d.ts +20 -0
  365. package/dist/components/templates/AuthLayout.d.ts.map +1 -0
  366. package/dist/components/templates/BattleTemplate.d.ts +31 -0
  367. package/dist/components/templates/BattleTemplate.d.ts.map +1 -0
  368. package/dist/components/templates/CastleTemplate.d.ts +32 -0
  369. package/dist/components/templates/CastleTemplate.d.ts.map +1 -0
  370. package/dist/components/templates/CounterTemplate.d.ts +32 -0
  371. package/dist/components/templates/CounterTemplate.d.ts.map +1 -0
  372. package/dist/components/templates/DashboardLayout.d.ts +20 -0
  373. package/dist/components/templates/DashboardLayout.d.ts.map +1 -0
  374. package/dist/components/templates/GameShell.d.ts +29 -0
  375. package/dist/components/templates/GameShell.d.ts.map +1 -0
  376. package/dist/components/templates/GameTemplate.d.ts +55 -0
  377. package/dist/components/templates/GameTemplate.d.ts.map +1 -0
  378. package/dist/components/templates/WorldMapTemplate.d.ts +35 -0
  379. package/dist/components/templates/WorldMapTemplate.d.ts.map +1 -0
  380. package/dist/components/templates/index.d.ts +17 -0
  381. package/dist/components/templates/index.d.ts.map +1 -0
  382. package/dist/hooks/index.d.ts +17 -0
  383. package/dist/hooks/index.d.ts.map +1 -0
  384. package/dist/hooks/index.js +34 -0
  385. package/dist/hooks/index.js.map +1 -0
  386. package/dist/hooks/useEventBus.d.ts +2 -0
  387. package/dist/hooks/useEventBus.d.ts.map +1 -0
  388. package/dist/hooks/useInfiniteScroll.d.ts +32 -0
  389. package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
  390. package/dist/hooks/useKeyboard.d.ts +11 -0
  391. package/dist/hooks/useKeyboard.d.ts.map +1 -0
  392. package/dist/hooks/useNavigation.d.ts +41 -0
  393. package/dist/hooks/useNavigation.d.ts.map +1 -0
  394. package/dist/hooks/usePullToRefresh.d.ts +29 -0
  395. package/dist/hooks/usePullToRefresh.d.ts.map +1 -0
  396. package/dist/hooks/useSafeAreaInsets.d.ts +29 -0
  397. package/dist/hooks/useSafeAreaInsets.d.ts.map +1 -0
  398. package/dist/hooks/useScrollHeader.d.ts +33 -0
  399. package/dist/hooks/useScrollHeader.d.ts.map +1 -0
  400. package/dist/hooks/useThemeStyles.d.ts +26 -0
  401. package/dist/hooks/useThemeStyles.d.ts.map +1 -0
  402. package/dist/hooks/useTraitState.d.ts +11 -0
  403. package/dist/hooks/useTraitState.d.ts.map +1 -0
  404. package/dist/hooks/useUIEvents.d.ts +2 -0
  405. package/dist/hooks/useUIEvents.d.ts.map +1 -0
  406. package/dist/index.d.ts +15 -0
  407. package/dist/index.d.ts.map +1 -0
  408. package/dist/index.js +1264 -0
  409. package/dist/index.js.map +1 -0
  410. package/dist/lib/cn.d.ts +2 -0
  411. package/dist/lib/cn.d.ts.map +1 -0
  412. package/dist/lib/index.d.ts +6 -0
  413. package/dist/lib/index.d.ts.map +1 -0
  414. package/dist/lib/index.js +18 -0
  415. package/dist/lib/index.js.map +1 -0
  416. package/dist/lib/theme.d.ts +13 -0
  417. package/dist/lib/theme.d.ts.map +1 -0
  418. package/dist/providers/EventBusProvider.d.ts +2 -0
  419. package/dist/providers/EventBusProvider.d.ts.map +1 -0
  420. package/dist/providers/ThemeContext.d.ts +91 -0
  421. package/dist/providers/ThemeContext.d.ts.map +1 -0
  422. package/dist/providers/ThemeProvider.d.ts +10 -0
  423. package/dist/providers/ThemeProvider.d.ts.map +1 -0
  424. package/dist/providers/index.d.ts +6 -0
  425. package/dist/providers/index.d.ts.map +1 -0
  426. package/dist/providers/index.js +14 -0
  427. package/dist/providers/index.js.map +1 -0
  428. package/dist/themes/almadar.d.ts +8 -0
  429. package/dist/themes/almadar.d.ts.map +1 -0
  430. package/dist/themes/index.d.ts +90 -0
  431. package/dist/themes/index.d.ts.map +1 -0
  432. package/index.js +10 -0
  433. package/package.json +109 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/molecules/EmptyState.tsx","../src/components/molecules/List.tsx","../src/components/molecules/Modal.tsx","../src/components/molecules/Drawer.tsx","../src/components/molecules/Tabs.tsx","../src/components/molecules/Toast.tsx","../src/components/molecules/CodeBlock.tsx","../src/components/molecules/game/StatBadge.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { Typography } from '../atoms/Typography';\nimport { VStack } from '../atoms/Stack';\n\nexport interface EmptyStateProps {\n message?: string;\n icon?: React.ReactNode;\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n message = 'No data available',\n icon,\n}) => {\n return (\n <VStack align=\"center\" spacing={12} style={styles.container}>\n {icon}\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\nEmptyState.displayName = 'EmptyState';\n","import React from 'react';\nimport { \n FlatList, \n FlatListProps\n} from 'react-native';\nimport { EmptyState } from './EmptyState';\nimport { LoadingState } from './LoadingState';\nimport { ErrorState } from './ErrorState';\n\nexport interface ListProps<T> extends Omit<FlatListProps<T>, 'renderItem'> {\n data: T[];\n renderItem: (item: T) => React.ReactElement;\n keyExtractor: (item: T) => string;\n isLoading?: boolean;\n isError?: boolean;\n onRetry?: () => void;\n emptyMessage?: string;\n}\n\nexport function List<T>({\n data,\n renderItem,\n keyExtractor,\n isLoading,\n isError,\n onRetry,\n emptyMessage = 'No items found',\n ...flatListProps\n}: ListProps<T>) {\n if (isLoading) {\n return <LoadingState />;\n }\n\n if (isError) {\n return <ErrorState onRetry={onRetry} />;\n }\n\n if (!data || data.length === 0) {\n return <EmptyState message={emptyMessage} />;\n }\n\n return (\n <FlatList\n data={data}\n renderItem={({ item }) => renderItem(item)}\n keyExtractor={keyExtractor}\n {...flatListProps}\n />\n );\n}\n\nList.displayName = 'List';\n","import React, { useCallback } from 'react';\nimport { \n Modal as RNModal, \n View, \n TouchableOpacity, \n StyleSheet,\n ViewStyle\n} from 'react-native';\nimport { Card } from '../atoms/Card';\nimport { Typography } from '../atoms/Typography';\nimport { VStack, HStack } from '../atoms/Stack';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n showCloseButton?: boolean;\n closeOnBackdrop?: boolean;\n animationType?: 'none' | 'slide' | 'fade';\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n footer,\n size = 'md',\n showCloseButton = true,\n closeOnBackdrop = true,\n animationType = 'fade',\n ...modalProps\n}) => {\n const handleBackdropPress = useCallback(() => {\n if (closeOnBackdrop) {\n onClose();\n }\n }, [closeOnBackdrop, onClose]);\n\n const transparent = animationType !== 'slide';\n\n return (\n <RNModal\n visible={isOpen}\n animationType={animationType}\n transparent={transparent}\n onRequestClose={onClose}\n {...modalProps}\n >\n <TouchableOpacity\n style={styles.overlay}\n activeOpacity={1}\n onPress={handleBackdropPress}\n >\n <View style={styles.centeredView}>\n <TouchableOpacity activeOpacity={1} onPress={(e) => e.stopPropagation()}>\n <Card style={[styles.modalCard, styles[size] as ViewStyle]}>\n <VStack spacing={16}>\n {/* Header */}\n {title && (\n <HStack justify=\"space-between\" align=\"center\">\n <Typography variant=\"h4\">{title}</Typography>\n {showCloseButton && (\n <TouchableOpacity onPress={onClose}>\n <Typography variant=\"body\" color=\"#6b7280\">✕</Typography>\n </TouchableOpacity>\n )}\n </HStack>\n )}\n\n {/* Content */}\n <View>{children}</View>\n\n {/* Footer */}\n {footer && (\n <HStack justify=\"flex-end\" spacing={12}>\n {footer}\n </HStack>\n )}\n </VStack>\n </Card>\n </TouchableOpacity>\n </View>\n </TouchableOpacity>\n </RNModal>\n );\n};\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n centeredView: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 20,\n },\n modalCard: {\n width: '100%',\n maxWidth: 400,\n },\n sm: {\n maxWidth: 300,\n },\n md: {\n maxWidth: 400,\n },\n lg: {\n maxWidth: 600,\n },\n});\n\nModal.displayName = 'Modal';\n\n// Confirm Modal\nexport interface ConfirmModalProps extends Omit<ModalProps, 'children' | 'footer'> {\n message: string;\n onConfirm: () => void;\n confirmLabel?: string;\n cancelLabel?: string;\n isLoading?: boolean;\n}\n\nexport const ConfirmModal: React.FC<ConfirmModalProps> = ({\n isOpen,\n onClose,\n onConfirm,\n title = 'Confirm',\n message = 'Are you sure you want to proceed?',\n confirmLabel = 'Confirm',\n cancelLabel = 'Cancel',\n \n}) => {\n return (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n title={title}\n footer={\n <>\n <Typography variant=\"body\" color=\"#6b7280\" onPress={onClose}>\n {cancelLabel}\n </Typography>\n <Typography variant=\"body\" color=\"#ef4444\" onPress={onConfirm}>\n {confirmLabel}\n </Typography>\n </>\n }\n >\n <Typography variant=\"body\">{message}</Typography>\n </Modal>\n );\n};\n\nConfirmModal.displayName = 'ConfirmModal';\n","import React from 'react';\nimport {\n View,\n StyleSheet,\n TouchableOpacity,\n Animated,\n Dimensions,\n} from 'react-native';\nimport { Typography } from '../atoms/Typography';\nimport { VStack } from '../atoms/Stack';\n\nconst { width: SCREEN_WIDTH } = Dimensions.get('window');\n\nexport interface DrawerProps {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n title?: string;\n placement?: 'left' | 'right';\n width?: number;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose,\n children,\n title,\n placement = 'right',\n width = SCREEN_WIDTH * 0.8,\n}) => {\n const translateX = React.useRef(\n new Animated.Value(placement === 'right' ? SCREEN_WIDTH : -SCREEN_WIDTH)\n ).current;\n\n React.useEffect(() => {\n Animated.timing(translateX, {\n toValue: isOpen ? 0 : placement === 'right' ? width : -width,\n duration: 250,\n useNativeDriver: true,\n }).start();\n }, [isOpen, placement, translateX, width]);\n\n if (!isOpen) return null;\n\n return (\n <View style={styles.overlay}>\n {/* Backdrop */}\n <TouchableOpacity\n style={styles.backdrop}\n activeOpacity={1}\n onPress={onClose}\n />\n \n {/* Drawer Panel */}\n <Animated.View\n style={[\n styles.drawer,\n {\n width,\n [placement]: 0,\n transform: [{ translateX }],\n },\n ]}\n >\n <View style={styles.content}>\n {/* Header */}\n {(title || true) && (\n <View style={styles.header}>\n <TouchableOpacity onPress={onClose} style={styles.closeButton}>\n <Typography variant=\"body\" color=\"#6b7280\">✕</Typography>\n </TouchableOpacity>\n {title && <Typography variant=\"h4\">{title}</Typography>}\n </View>\n )}\n\n {/* Drawer Content */}\n <VStack spacing={0} style={styles.children}>\n {children}\n </VStack>\n </View>\n </Animated.View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n flexDirection: 'row',\n },\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n drawer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n backgroundColor: '#ffffff',\n shadowColor: '#000',\n shadowOffset: { width: -2, height: 0 },\n shadowOpacity: 0.25,\n shadowRadius: 5,\n elevation: 5,\n },\n content: {\n flex: 1,\n },\n header: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: 16,\n borderBottomWidth: 1,\n borderBottomColor: '#e5e7eb',\n gap: 12,\n },\n closeButton: {\n padding: 4,\n },\n children: {\n flex: 1,\n padding: 16,\n },\n});\n\nDrawer.displayName = 'Drawer';\n","import React, { useState } from 'react';\nimport { \n View, \n TouchableOpacity, \n StyleSheet, \n ViewStyle,\n ScrollView \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { Typography } from '../atoms/Typography';\nimport { LoadingState } from './LoadingState';\nimport { ErrorState } from './ErrorState';\nimport { HStack } from '../atoms/Stack';\n\nexport interface Tab {\n id: string;\n label: string;\n icon?: React.ReactNode;\n badge?: number;\n}\n\nexport interface TabsProps {\n tabs: Tab[];\n activeTab?: string;\n onChange?: (tabId: string) => void;\n style?: ViewStyle;\n variant?: 'default' | 'pills' | 'underlined';\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}\n\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n activeTab,\n onChange,\n style,\n variant = 'default',\n isLoading,\n error,\n changeEvent,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n const [internalActiveTab, setInternalActiveTab] = useState(tabs[0]?.id);\n const currentTab = activeTab ?? internalActiveTab;\n\n const handleTabPress = (tabId: string) => {\n setInternalActiveTab(tabId);\n if (changeEvent) {\n eventBus.emit(`UI:${changeEvent}`, { tabId });\n }\n onChange?.(tabId);\n };\n\n if (isLoading) {\n return (\n <View style={[styles.container, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.container, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const getTabStyle = (isActive: boolean) => {\n switch (variant) {\n case 'pills':\n return {\n backgroundColor: isActive ? theme.colors.primary : 'transparent',\n borderRadius: theme.borderRadius.full,\n };\n case 'underlined':\n return {\n borderBottomWidth: 2,\n borderBottomColor: isActive ? theme.colors.primary : 'transparent',\n backgroundColor: 'transparent',\n };\n default:\n return {\n backgroundColor: isActive ? theme.colors.card : 'transparent',\n borderRadius: theme.borderRadius.md,\n ...theme.shadows.sm,\n };\n }\n };\n\n return (\n <View style={[styles.container, style]}>\n <ScrollView \n horizontal \n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.scrollContent}\n >\n <HStack spacing={8}>\n {tabs.map((tab) => {\n const isActive = currentTab === tab.id;\n return (\n <TouchableOpacity\n key={tab.id}\n onPress={() => handleTabPress(tab.id)}\n style={[\n styles.tab,\n getTabStyle(isActive),\n ]}\n >\n <HStack spacing={4} align=\"center\">\n {tab.icon}\n <Typography \n variant=\"body\" \n style={{ \n color: isActive && variant === 'pills' \n ? theme.colors['primary-foreground'] \n : theme.colors.foreground \n }}\n >\n {tab.label}\n </Typography>\n {tab.badge !== undefined && tab.badge > 0 && (\n <View style={[styles.badge, { backgroundColor: theme.colors.error }]}>\n <Typography variant=\"caption\" style={{ color: theme.colors['error-foreground'] }}>\n {tab.badge > 99 ? '99+' : tab.badge}\n </Typography>\n </View>\n )}\n </HStack>\n </TouchableOpacity>\n );\n })}\n </HStack>\n </ScrollView>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n scrollContent: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n },\n tab: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n },\n badge: {\n minWidth: 18,\n height: 18,\n borderRadius: 9,\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 4,\n },\n});\n\nTabs.displayName = 'Tabs';\n","import React, { useEffect } from 'react';\nimport { \n TouchableOpacity,\n StyleSheet, \n ViewStyle,\n Animated\n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { Typography } from '../atoms/Typography';\nimport { HStack } from '../atoms/Stack';\n\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error';\n\nexport interface ToastProps {\n id: string;\n message: string;\n variant?: ToastVariant;\n duration?: number;\n onDismiss?: (id: string) => void;\n dismissAction?: string;\n style?: ViewStyle;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Payload for dismiss action */\n actionPayload?: Record<string, unknown>;\n}\n\nexport const Toast: React.FC<ToastProps> = ({\n id,\n message,\n variant = 'info',\n duration = 5000,\n onDismiss,\n dismissAction,\n style,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n const translateY = React.useRef(new Animated.Value(-100)).current;\n const opacity = React.useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n Animated.parallel([\n Animated.timing(translateY, {\n toValue: 0,\n duration: 300,\n useNativeDriver: true,\n }),\n Animated.timing(opacity, {\n toValue: 1,\n duration: 300,\n useNativeDriver: true,\n }),\n ]).start();\n\n if (duration > 0) {\n const timer = setTimeout(() => {\n handleDismiss();\n }, duration);\n\n return () => clearTimeout(timer);\n }\n }, [duration]);\n\n const handleDismiss = () => {\n Animated.parallel([\n Animated.timing(translateY, {\n toValue: -100,\n duration: 200,\n useNativeDriver: true,\n }),\n Animated.timing(opacity, {\n toValue: 0,\n duration: 200,\n useNativeDriver: true,\n }),\n ]).start(() => {\n if (dismissAction) {\n eventBus.emit(`UI:${dismissAction}`, { ...actionPayload, toastId: id });\n }\n onDismiss?.(id);\n });\n };\n\n const variantStyles: Record<ToastVariant, { bg: string }> = {\n info: { bg: theme.colors.info },\n success: { bg: theme.colors.success },\n warning: { bg: theme.colors.warning },\n error: { bg: theme.colors.error },\n };\n\n const { bg } = variantStyles[variant];\n const textColor = variant === 'warning' ? '#000000' : '#ffffff';\n\n return (\n <Animated.View\n style={[\n styles.container,\n { backgroundColor: bg },\n { transform: [{ translateY }], opacity },\n style,\n ]}\n >\n <HStack spacing={12} align=\"center\" justify=\"space-between\">\n <Typography variant=\"body\" style={{ color: textColor, flex: 1 }}>\n {message}\n </Typography>\n \n <TouchableOpacity onPress={handleDismiss} style={styles.dismiss}>\n <Typography variant=\"body\" style={{ color: textColor }}>\n ✕\n </Typography>\n </TouchableOpacity>\n </HStack>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 8,\n padding: 12,\n marginHorizontal: 16,\n marginVertical: 4,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.2,\n shadowRadius: 4,\n elevation: 4,\n },\n dismiss: {\n padding: 4,\n },\n});\n\nToast.displayName = 'Toast';\n","import React from 'react';\nimport { View, ScrollView, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { Typography } from '../atoms/Typography';\nimport { Card } from '../atoms/Card';\nimport { HStack } from '../atoms/Stack';\nimport { Button } from '../atoms/Button';\nimport { LoadingState } from './LoadingState';\nimport { ErrorState } from './ErrorState';\n\nexport interface CodeBlockProps {\n /** Code content to display */\n code: string;\n /** Programming language for syntax highlighting hint */\n language?: string;\n /** Whether to show line numbers */\n showLineNumbers?: boolean;\n /** Whether to show copy button */\n showCopyButton?: boolean;\n /** Whether to allow horizontal scrolling */\n scrollable?: boolean;\n /** Style override */\n style?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Declarative copy event name - emits UI:${copyEvent} via eventBus */\n copyEvent?: string;\n}\n\n// Simple syntax highlighting tokens\ninterface Token {\n text: string;\n style: 'keyword' | 'string' | 'comment' | 'number' | 'function' | 'default';\n}\n\nconst KEYWORDS = [\n 'const', 'let', 'var', 'function', 'return', 'if', 'else', 'for', 'while',\n 'import', 'export', 'from', 'class', 'interface', 'type', 'async', 'await',\n 'try', 'catch', 'throw', 'new', 'this', 'true', 'false', 'null', 'undefined',\n];\n\nconst TOKEN_COLORS: Record<Token['style'], string> = {\n keyword: '#c678dd',\n string: '#98c379',\n comment: '#5c6370',\n number: '#d19a66',\n function: '#61afef',\n default: '#abb2bf',\n};\n\n/**\n * Simple tokenizer for basic syntax highlighting\n */\nconst tokenizeCode = (code: string): Token[][] => {\n const lines = code.split('\\n');\n\n return lines.map((line) => {\n const tokens: Token[] = [];\n let remaining = line;\n\n while (remaining.length > 0) {\n let matched = false;\n\n // Check for comments\n if (remaining.startsWith('//')) {\n tokens.push({ text: remaining, style: 'comment' });\n break;\n }\n\n // Check for strings (double quotes)\n if (remaining.startsWith('\"')) {\n const endIndex = remaining.indexOf('\"', 1);\n if (endIndex > 0) {\n tokens.push({ text: remaining.slice(0, endIndex + 1), style: 'string' });\n remaining = remaining.slice(endIndex + 1);\n matched = true;\n continue;\n }\n }\n\n // Check for strings (single quotes)\n if (remaining.startsWith(\"'\")) {\n const endIndex = remaining.indexOf(\"'\", 1);\n if (endIndex > 0) {\n tokens.push({ text: remaining.slice(0, endIndex + 1), style: 'string' });\n remaining = remaining.slice(endIndex + 1);\n matched = true;\n continue;\n }\n }\n\n // Check for strings (template literals)\n if (remaining.startsWith('`')) {\n const endIndex = remaining.indexOf('`', 1);\n if (endIndex > 0) {\n tokens.push({ text: remaining.slice(0, endIndex + 1), style: 'string' });\n remaining = remaining.slice(endIndex + 1);\n matched = true;\n continue;\n }\n }\n\n // Check for numbers\n const numberMatch = remaining.match(/^\\d+(\\.\\d+)?/);\n if (numberMatch) {\n tokens.push({ text: numberMatch[0], style: 'number' });\n remaining = remaining.slice(numberMatch[0].length);\n matched = true;\n continue;\n }\n\n // Check for keywords and identifiers\n const wordMatch = remaining.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);\n if (wordMatch) {\n const word = wordMatch[0];\n const style: Token['style'] = KEYWORDS.includes(word) ? 'keyword' : 'default';\n tokens.push({ text: word, style });\n remaining = remaining.slice(word.length);\n matched = true;\n continue;\n }\n\n // Check for function calls (identifier followed by opening paren)\n const funcMatch = remaining.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(/);\n if (funcMatch && !KEYWORDS.includes(funcMatch[1])) {\n tokens.pop(); // Remove the identifier we just added\n tokens.push({ text: funcMatch[1], style: 'function' });\n tokens.push({ text: '(', style: 'default' });\n remaining = remaining.slice(funcMatch[0].length - 1);\n matched = true;\n continue;\n }\n\n // If nothing matched, take the first character as default\n if (!matched) {\n tokens.push({ text: remaining[0], style: 'default' });\n remaining = remaining.slice(1);\n }\n }\n\n return tokens;\n });\n};\n\nexport const CodeBlock: React.FC<CodeBlockProps> = ({\n code,\n language,\n showLineNumbers = true,\n showCopyButton = true,\n scrollable = true,\n style,\n isLoading,\n error,\n copyEvent,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handleCopy = () => {\n if (copyEvent) {\n eventBus.emit(`UI:${copyEvent}`, { code, language });\n }\n };\n\n if (isLoading) {\n return (\n <Card style={[styles.container, style || {}]}>\n <LoadingState message=\"Loading code...\" />\n </Card>\n );\n }\n\n if (error) {\n return (\n <Card style={[styles.container, style || {}]}>\n <ErrorState message={error.message} />\n </Card>\n );\n }\n\n const tokenizedLines = tokenizeCode(code);\n const lineNumberWidth = String(tokenizedLines.length).length * 10 + 16;\n\n const CodeContent = (\n <View style={styles.codeContainer}>\n {tokenizedLines.map((tokens, lineIndex) => (\n <View key={lineIndex} style={styles.line}>\n {showLineNumbers && (\n <View style={[styles.lineNumber, { width: lineNumberWidth }]}>\n <Typography\n variant=\"caption\"\n style={{ color: theme.colors['muted-foreground'] }}\n >\n {lineIndex + 1}\n </Typography>\n </View>\n )}\n <View style={styles.lineContent}>\n {tokens.length === 0 ? (\n <Typography variant=\"body\"> </Typography>\n ) : (\n <Typography variant=\"body\">\n {tokens.map((token, tokenIndex) => (\n <Typography\n key={tokenIndex}\n variant=\"body\"\n style={{\n color: TOKEN_COLORS[token.style],\n fontFamily: 'monospace',\n }}\n >\n {token.text}\n </Typography>\n ))}\n </Typography>\n )}\n </View>\n </View>\n ))}\n </View>\n );\n\n return (\n <Card style={[styles.container, style || {}]} padding=\"none\">\n {(language || showCopyButton) && (\n <HStack\n spacing={8}\n align=\"center\"\n justify=\"space-between\"\n style={[\n styles.header,\n { backgroundColor: theme.colors.muted, borderBottomColor: theme.colors.border },\n ]}\n >\n {language ? (\n <Typography\n variant=\"caption\"\n style={{\n color: theme.colors['muted-foreground'],\n textTransform: 'uppercase',\n }}\n >\n {language}\n </Typography>\n ) : (\n <View />\n )}\n {showCopyButton && (\n <Button variant=\"ghost\" size=\"sm\" onPress={handleCopy}>\n Copy\n </Button>\n )}\n </HStack>\n )}\n\n {scrollable ? (\n <ScrollView horizontal showsHorizontalScrollIndicator={true}>\n {CodeContent}\n </ScrollView>\n ) : (\n CodeContent\n )}\n </Card>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n header: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n borderBottomWidth: 1,\n },\n codeContainer: {\n padding: 16,\n },\n line: {\n flexDirection: 'row',\n },\n lineNumber: {\n alignItems: 'flex-end',\n paddingRight: 16,\n opacity: 0.5,\n },\n lineContent: {\n flex: 1,\n },\n});\n\nCodeBlock.displayName = 'CodeBlock';\n","import React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../../providers/ThemeContext';\nimport { HealthBar } from '../../atoms/game/HealthBar';\nimport { ScoreDisplay } from '../../atoms/game/ScoreDisplay';\n\nexport interface StatBadgeProps {\n /** Stat label */\n label: string;\n /** Current value (defaults to 0 if not provided) */\n value?: number | string;\n /** Maximum value (for bar/hearts format) */\n max?: number;\n /** Data source entity name (for schema config) */\n source?: string;\n /** Field name in the source (for schema config) */\n field?: string;\n /** Display format */\n format?: 'number' | 'hearts' | 'bar' | 'text' | string;\n /** Icon component or emoji */\n icon?: React.ReactNode;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg' | string;\n /** Visual variant */\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | string;\n /** Additional styles */\n style?: ViewStyle;\n}\n\nconst sizeMap: Record<string, { padding: number; fontSize: number }> = {\n sm: { padding: 8, fontSize: 12 },\n md: { padding: 12, fontSize: 14 },\n lg: { padding: 16, fontSize: 16 },\n};\n\nconst variantMap: Record<string, { backgroundColor: string; borderColor: string }> = {\n default: { backgroundColor: 'rgba(31, 41, 55, 0.8)', borderColor: '#374151' },\n primary: { backgroundColor: 'rgba(30, 58, 138, 0.8)', borderColor: '#1d4ed8' },\n success: { backgroundColor: 'rgba(20, 83, 45, 0.8)', borderColor: '#15803d' },\n warning: { backgroundColor: 'rgba(113, 63, 18, 0.8)', borderColor: '#a16207' },\n danger: { backgroundColor: 'rgba(127, 29, 29, 0.8)', borderColor: '#b91c1c' },\n};\n\nexport const StatBadge: React.FC<StatBadgeProps> = ({\n label,\n value = 0,\n max,\n format = 'number',\n icon,\n size = 'md',\n variant = 'default',\n style,\n // Ignored config props (used for schema binding)\n source: _source,\n field: _field,\n}) => {\n const theme = useTheme();\n const numValue = typeof value === 'number' ? value : parseInt(String(value), 10) || 0;\n const sizeStyles = sizeMap[size] ?? sizeMap.md;\n const variantStyles = variantMap[variant] ?? variantMap.default;\n\n return (\n <View\n style={[\n styles.container,\n {\n backgroundColor: variantStyles.backgroundColor,\n borderColor: variantStyles.borderColor,\n padding: sizeStyles.padding,\n },\n style as never,\n ]}\n >\n {icon && (\n <Text style={{ fontSize: 18, marginRight: 8 }}>\n {icon as string}\n </Text>\n )}\n \n <Text\n style={{\n fontSize: sizeStyles.fontSize,\n color: theme.colors['muted-foreground'],\n fontWeight: '500',\n marginRight: 8,\n }}\n >\n {label}\n </Text>\n \n {format === 'hearts' && max && (\n <HealthBar\n current={numValue}\n max={max}\n format=\"hearts\"\n size={size === 'lg' ? 'md' : 'sm'}\n />\n )}\n \n {format === 'bar' && max && (\n <HealthBar\n current={numValue}\n max={max}\n format=\"bar\"\n size={size === 'lg' ? 'md' : 'sm'}\n />\n )}\n \n {format === 'number' && (\n <ScoreDisplay\n value={numValue}\n size={size === 'lg' ? 'md' : 'sm'}\n animated\n />\n )}\n \n {format === 'text' && (\n <Text\n style={{\n fontSize: sizeStyles.fontSize,\n color: theme.colors['primary-foreground'],\n fontWeight: '700',\n }}\n >\n {value}\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 8,\n borderWidth: 1,\n },\n});\n\nStatBadge.displayName = 'StatBadge';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,SAAS,kBAAkB;AASpB,IAAM,aAAwC,CAAC;AAAA,EACpD,UAAU;AAAA,EACV;AACF,MAAM;AACJ,SACE,oCAAC,UAAO,OAAM,UAAS,SAAS,IAAI,OAAO,OAAO,aAC/C,MACD,oCAAC,cAAW,SAAQ,QAAO,OAAM,aAC9B,OACH,CACF;AAEJ;AAEA,IAAM,SAAS,WAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAClB;AACF,CAAC;AAED,WAAW,cAAc;;;AChCzB,OAAOA,YAAW;AAClB;AAAA,EACE;AAAA,OAEK;AAeA,SAAS,KAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,GAAiB;AACf,MAAI,WAAW;AACb,WAAO,gBAAAC,OAAA,cAAC,kBAAa;AAAA,EACvB;AAEA,MAAI,SAAS;AACX,WAAO,gBAAAA,OAAA,cAAC,cAAW,SAAkB;AAAA,EACvC;AAEA,MAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAC9B,WAAO,gBAAAA,OAAA,cAAC,cAAW,SAAS,cAAc;AAAA,EAC5C;AAEA,SACE,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,YAAY,CAAC,EAAE,KAAK,MAAM,WAAW,IAAI;AAAA,MACzC;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,KAAK,cAAc;;;ACnDnB,OAAOC,UAAS,mBAAmB;AACnC;AAAA,EACE,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,OAEK;AAiBA,IAAM,QAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,GAAG;AACL,MAAM;AACJ,QAAM,sBAAsB,YAAY,MAAM;AAC5C,QAAI,iBAAiB;AACnB,cAAQ;AAAA,IACV;AAAA,EACF,GAAG,CAAC,iBAAiB,OAAO,CAAC;AAE7B,QAAM,cAAc,kBAAkB;AAEtC,SACE,gBAAAC,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MACf,GAAG;AAAA;AAAA,IAEJ,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAOC,QAAO;AAAA,QACd,eAAe;AAAA,QACf,SAAS;AAAA;AAAA,MAET,gBAAAD,OAAA,cAAC,QAAK,OAAOC,QAAO,gBAClB,gBAAAD,OAAA,cAAC,oBAAiB,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,gBAAgB,KACpE,gBAAAA,OAAA,cAAC,QAAK,OAAO,CAACC,QAAO,WAAWA,QAAO,IAAI,CAAc,KACvD,gBAAAD,OAAA,cAAC,UAAO,SAAS,MAEd,SACC,gBAAAA,OAAA,cAAC,UAAO,SAAQ,iBAAgB,OAAM,YACpC,gBAAAA,OAAA,cAAC,cAAW,SAAQ,QAAM,KAAM,GAC/B,mBACC,gBAAAA,OAAA,cAAC,oBAAiB,SAAS,WACzB,gBAAAA,OAAA,cAAC,cAAW,SAAQ,QAAO,OAAM,aAAU,QAAC,CAC9C,CAEJ,GAIF,gBAAAA,OAAA,cAAC,YAAM,QAAS,GAGf,UACC,gBAAAA,OAAA,cAAC,UAAO,SAAQ,YAAW,SAAS,MACjC,MACH,CAEJ,CACF,CACF,CACF;AAAA,IACF;AAAA,EACF;AAEJ;AAEA,IAAMC,UAASC,YAAW,OAAO;AAAA,EAC/B,SAAS;AAAA,IACP,MAAM;AAAA,IACN,iBAAiB;AAAA,EACnB;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AAAA,EACA,WAAW;AAAA,IACT,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,UAAU;AAAA,EACZ;AACF,CAAC;AAED,MAAM,cAAc;AAWb,IAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,eAAe;AAAA,EACf,cAAc;AAEhB,MAAM;AACJ,SACE,gBAAAF,OAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,QACE,gBAAAA,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA,cAAC,cAAW,SAAQ,QAAO,OAAM,WAAU,SAAS,WACjD,WACH,GACA,gBAAAA,OAAA,cAAC,cAAW,SAAQ,QAAO,OAAM,WAAU,SAAS,aACjD,YACH,CACF;AAAA;AAAA,IAGF,gBAAAA,OAAA,cAAC,cAAW,SAAQ,UAAQ,OAAQ;AAAA,EACtC;AAEJ;AAEA,aAAa,cAAc;;;AC/J3B,OAAOG,YAAW;AAClB;AAAA,EACE,QAAAC;AAAA,EACA,cAAAC;AAAA,EACA,oBAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,IAAM,EAAE,OAAO,aAAa,IAAI,WAAW,IAAI,QAAQ;AAWhD,IAAM,SAAgC,CAAC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,eAAe;AACzB,MAAM;AACJ,QAAM,aAAaC,OAAM;AAAA,IACvB,IAAI,SAAS,MAAM,cAAc,UAAU,eAAe,CAAC,YAAY;AAAA,EACzE,EAAE;AAEF,EAAAA,OAAM,UAAU,MAAM;AACpB,aAAS,OAAO,YAAY;AAAA,MAC1B,SAAS,SAAS,IAAI,cAAc,UAAU,QAAQ,CAAC;AAAA,MACvD,UAAU;AAAA,MACV,iBAAiB;AAAA,IACnB,CAAC,EAAE,MAAM;AAAA,EACX,GAAG,CAAC,QAAQ,WAAW,YAAY,KAAK,CAAC;AAEzC,MAAI,CAAC,OAAQ,QAAO;AAEpB,SACE,gBAAAA,OAAA,cAACC,OAAA,EAAK,OAAOC,QAAO,WAElB,gBAAAF,OAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,OAAOD,QAAO;AAAA,MACd,eAAe;AAAA,MACf,SAAS;AAAA;AAAA,EACX,GAGA,gBAAAF,OAAA;AAAA,IAAC,SAAS;AAAA,IAAT;AAAA,MACC,OAAO;AAAA,QACLE,QAAO;AAAA,QACP;AAAA,UACE;AAAA,UACA,CAAC,SAAS,GAAG;AAAA,UACb,WAAW,CAAC,EAAE,WAAW,CAAC;AAAA,QAC5B;AAAA,MACF;AAAA;AAAA,IAEA,gBAAAF,OAAA,cAACC,OAAA,EAAK,OAAOC,QAAO,YAEhB,SAAS,SACT,gBAAAF,OAAA,cAACC,OAAA,EAAK,OAAOC,QAAO,UAClB,gBAAAF,OAAA,cAACG,mBAAA,EAAiB,SAAS,SAAS,OAAOD,QAAO,eAChD,gBAAAF,OAAA,cAAC,cAAW,SAAQ,QAAO,OAAM,aAAU,QAAC,CAC9C,GACC,SAAS,gBAAAA,OAAA,cAAC,cAAW,SAAQ,QAAM,KAAM,CAC5C,GAIF,gBAAAA,OAAA,cAAC,UAAO,SAAS,GAAG,OAAOE,QAAO,YAC/B,QACH,CACF;AAAA,EACF,CACF;AAEJ;AAEA,IAAMA,UAASE,YAAW,OAAO;AAAA,EAC/B,SAAS;AAAA,IACP,GAAGA,YAAW;AAAA,IACd,QAAQ;AAAA,IACR,eAAe;AAAA,EACjB;AAAA,EACA,UAAU;AAAA,IACR,GAAGA,YAAW;AAAA,IACd,iBAAiB;AAAA,EACnB;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,cAAc,EAAE,OAAO,IAAI,QAAQ,EAAE;AAAA,IACrC,eAAe;AAAA,IACf,cAAc;AAAA,IACd,WAAW;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,QAAQ;AAAA,IACN,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,KAAK;AAAA,EACP;AAAA,EACA,aAAa;AAAA,IACX,SAAS;AAAA,EACX;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF,CAAC;AAED,OAAO,cAAc;;;AC9HrB,OAAOC,UAAS,gBAAgB;AAChC;AAAA,EACE,QAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,cAAAC;AAAA,EAEA;AAAA,OACK;AA+BA,IAAM,OAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,SAAS;AACvB,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,KAAK,CAAC,GAAG,EAAE;AACtE,QAAM,aAAa,aAAa;AAEhC,QAAM,iBAAiB,CAAC,UAAkB;AACxC,yBAAqB,KAAK;AAC1B,QAAI,aAAa;AACf,eAAS,KAAK,MAAM,WAAW,IAAI,EAAE,MAAM,CAAC;AAAA,IAC9C;AACA,eAAW,KAAK;AAAA,EAClB;AAEA,MAAI,WAAW;AACb,WACE,gBAAAC,OAAA,cAACC,OAAA,EAAK,OAAO,CAACC,QAAO,WAAW,KAAK,KACnC,gBAAAF,OAAA,cAAC,gBAAa,SAAQ,cAAa,CACrC;AAAA,EAEJ;AAEA,MAAI,OAAO;AACT,WACE,gBAAAA,OAAA,cAACC,OAAA,EAAK,OAAO,CAACC,QAAO,WAAW,KAAK,KACnC,gBAAAF,OAAA,cAAC,cAAW,SAAS,MAAM,SAAS,CACtC;AAAA,EAEJ;AAEA,QAAM,cAAc,CAAC,aAAsB;AACzC,YAAQ,SAAS;AAAA,MACf,KAAK;AACH,eAAO;AAAA,UACL,iBAAiB,WAAW,MAAM,OAAO,UAAU;AAAA,UACnD,cAAc,MAAM,aAAa;AAAA,QACnC;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,mBAAmB;AAAA,UACnB,mBAAmB,WAAW,MAAM,OAAO,UAAU;AAAA,UACrD,iBAAiB;AAAA,QACnB;AAAA,MACF;AACE,eAAO;AAAA,UACL,iBAAiB,WAAW,MAAM,OAAO,OAAO;AAAA,UAChD,cAAc,MAAM,aAAa;AAAA,UACjC,GAAG,MAAM,QAAQ;AAAA,QACnB;AAAA,IACJ;AAAA,EACF;AAEA,SACE,gBAAAA,OAAA,cAACC,OAAA,EAAK,OAAO,CAACC,QAAO,WAAW,KAAK,KACnC,gBAAAF,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,YAAU;AAAA,MACV,gCAAgC;AAAA,MAChC,uBAAuBE,QAAO;AAAA;AAAA,IAE9B,gBAAAF,OAAA,cAAC,UAAO,SAAS,KACd,KAAK,IAAI,CAAC,QAAQ;AACjB,YAAM,WAAW,eAAe,IAAI;AACpC,aACE,gBAAAA,OAAA;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,KAAK,IAAI;AAAA,UACT,SAAS,MAAM,eAAe,IAAI,EAAE;AAAA,UACpC,OAAO;AAAA,YACLD,QAAO;AAAA,YACP,YAAY,QAAQ;AAAA,UACtB;AAAA;AAAA,QAEA,gBAAAF,OAAA,cAAC,UAAO,SAAS,GAAG,OAAM,YACvB,IAAI,MACL,gBAAAA,OAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAO;AAAA,cACL,OAAO,YAAY,YAAY,UAC3B,MAAM,OAAO,oBAAoB,IACjC,MAAM,OAAO;AAAA,YACnB;AAAA;AAAA,UAEC,IAAI;AAAA,QACP,GACC,IAAI,UAAU,UAAa,IAAI,QAAQ,KACtC,gBAAAA,OAAA,cAACC,OAAA,EAAK,OAAO,CAACC,QAAO,OAAO,EAAE,iBAAiB,MAAM,OAAO,MAAM,CAAC,KACjE,gBAAAF,OAAA,cAAC,cAAW,SAAQ,WAAU,OAAO,EAAE,OAAO,MAAM,OAAO,kBAAkB,EAAE,KAC5E,IAAI,QAAQ,KAAK,QAAQ,IAAI,KAChC,CACF,CAEJ;AAAA,MACF;AAAA,IAEJ,CAAC,CACH;AAAA,EACF,CACF;AAEJ;AAEA,IAAME,UAASE,YAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,eAAe;AAAA,IACb,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,EACnB;AAAA,EACA,KAAK;AAAA,IACH,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,EACnB;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,EACrB;AACF,CAAC;AAED,KAAK,cAAc;;;ACzKnB,OAAOC,UAAS,iBAAiB;AACjC;AAAA,EACE,oBAAAC;AAAA,EACA,cAAAC;AAAA,EAEA,YAAAC;AAAA,OACK;AAsBA,IAAM,QAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,SAAS;AACvB,QAAM,WAAW,YAAY;AAC7B,QAAM,aAAaC,OAAM,OAAO,IAAIC,UAAS,MAAM,IAAI,CAAC,EAAE;AAC1D,QAAM,UAAUD,OAAM,OAAO,IAAIC,UAAS,MAAM,CAAC,CAAC,EAAE;AAEpD,YAAU,MAAM;AACd,IAAAA,UAAS,SAAS;AAAA,MAChBA,UAAS,OAAO,YAAY;AAAA,QAC1B,SAAS;AAAA,QACT,UAAU;AAAA,QACV,iBAAiB;AAAA,MACnB,CAAC;AAAA,MACDA,UAAS,OAAO,SAAS;AAAA,QACvB,SAAS;AAAA,QACT,UAAU;AAAA,QACV,iBAAiB;AAAA,MACnB,CAAC;AAAA,IACH,CAAC,EAAE,MAAM;AAET,QAAI,WAAW,GAAG;AAChB,YAAM,QAAQ,WAAW,MAAM;AAC7B,sBAAc;AAAA,MAChB,GAAG,QAAQ;AAEX,aAAO,MAAM,aAAa,KAAK;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,gBAAgB,MAAM;AAC1B,IAAAA,UAAS,SAAS;AAAA,MAChBA,UAAS,OAAO,YAAY;AAAA,QAC1B,SAAS;AAAA,QACT,UAAU;AAAA,QACV,iBAAiB;AAAA,MACnB,CAAC;AAAA,MACDA,UAAS,OAAO,SAAS;AAAA,QACvB,SAAS;AAAA,QACT,UAAU;AAAA,QACV,iBAAiB;AAAA,MACnB,CAAC;AAAA,IACH,CAAC,EAAE,MAAM,MAAM;AACb,UAAI,eAAe;AACjB,iBAAS,KAAK,MAAM,aAAa,IAAI,EAAE,GAAG,eAAe,SAAS,GAAG,CAAC;AAAA,MACxE;AACA,kBAAY,EAAE;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,QAAM,gBAAsD;AAAA,IAC1D,MAAM,EAAE,IAAI,MAAM,OAAO,KAAK;AAAA,IAC9B,SAAS,EAAE,IAAI,MAAM,OAAO,QAAQ;AAAA,IACpC,SAAS,EAAE,IAAI,MAAM,OAAO,QAAQ;AAAA,IACpC,OAAO,EAAE,IAAI,MAAM,OAAO,MAAM;AAAA,EAClC;AAEA,QAAM,EAAE,GAAG,IAAI,cAAc,OAAO;AACpC,QAAM,YAAY,YAAY,YAAY,YAAY;AAEtD,SACE,gBAAAD,OAAA;AAAA,IAACC,UAAS;AAAA,IAAT;AAAA,MACC,OAAO;AAAA,QACLC,QAAO;AAAA,QACP,EAAE,iBAAiB,GAAG;AAAA,QACtB,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,QAAQ;AAAA,QACvC;AAAA,MACF;AAAA;AAAA,IAEA,gBAAAF,OAAA,cAAC,UAAO,SAAS,IAAI,OAAM,UAAS,SAAQ,mBAC1C,gBAAAA,OAAA,cAAC,cAAW,SAAQ,QAAO,OAAO,EAAE,OAAO,WAAW,MAAM,EAAE,KAC3D,OACH,GAEA,gBAAAA,OAAA,cAACG,mBAAA,EAAiB,SAAS,eAAe,OAAOD,QAAO,WACtD,gBAAAF,OAAA,cAAC,cAAW,SAAQ,QAAO,OAAO,EAAE,OAAO,UAAU,KAAG,QAExD,CACF,CACF;AAAA,EACF;AAEJ;AAEA,IAAME,UAASE,YAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,cAAc;AAAA,IACd,SAAS;AAAA,IACT,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,cAAc,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,IACpC,eAAe;AAAA,IACf,cAAc;AAAA,IACd,WAAW;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,EACX;AACF,CAAC;AAED,MAAM,cAAc;;;ACzIpB,OAAOC,YAAW;AAClB,SAAS,QAAAC,OAAM,cAAAC,aAAY,cAAAC,mBAA6B;AAuCxD,IAAM,WAAW;AAAA,EACf;AAAA,EAAS;AAAA,EAAO;AAAA,EAAO;AAAA,EAAY;AAAA,EAAU;AAAA,EAAM;AAAA,EAAQ;AAAA,EAAO;AAAA,EAClE;AAAA,EAAU;AAAA,EAAU;AAAA,EAAQ;AAAA,EAAS;AAAA,EAAa;AAAA,EAAQ;AAAA,EAAS;AAAA,EACnE;AAAA,EAAO;AAAA,EAAS;AAAA,EAAS;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAS;AAAA,EAAQ;AACnE;AAEA,IAAM,eAA+C;AAAA,EACnD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AACX;AAKA,IAAM,eAAe,CAAC,SAA4B;AAChD,QAAM,QAAQ,KAAK,MAAM,IAAI;AAE7B,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,UAAM,SAAkB,CAAC;AACzB,QAAI,YAAY;AAEhB,WAAO,UAAU,SAAS,GAAG;AAC3B,UAAI,UAAU;AAGd,UAAI,UAAU,WAAW,IAAI,GAAG;AAC9B,eAAO,KAAK,EAAE,MAAM,WAAW,OAAO,UAAU,CAAC;AACjD;AAAA,MACF;AAGA,UAAI,UAAU,WAAW,GAAG,GAAG;AAC7B,cAAM,WAAW,UAAU,QAAQ,KAAK,CAAC;AACzC,YAAI,WAAW,GAAG;AAChB,iBAAO,KAAK,EAAE,MAAM,UAAU,MAAM,GAAG,WAAW,CAAC,GAAG,OAAO,SAAS,CAAC;AACvE,sBAAY,UAAU,MAAM,WAAW,CAAC;AACxC,oBAAU;AACV;AAAA,QACF;AAAA,MACF;AAGA,UAAI,UAAU,WAAW,GAAG,GAAG;AAC7B,cAAM,WAAW,UAAU,QAAQ,KAAK,CAAC;AACzC,YAAI,WAAW,GAAG;AAChB,iBAAO,KAAK,EAAE,MAAM,UAAU,MAAM,GAAG,WAAW,CAAC,GAAG,OAAO,SAAS,CAAC;AACvE,sBAAY,UAAU,MAAM,WAAW,CAAC;AACxC,oBAAU;AACV;AAAA,QACF;AAAA,MACF;AAGA,UAAI,UAAU,WAAW,GAAG,GAAG;AAC7B,cAAM,WAAW,UAAU,QAAQ,KAAK,CAAC;AACzC,YAAI,WAAW,GAAG;AAChB,iBAAO,KAAK,EAAE,MAAM,UAAU,MAAM,GAAG,WAAW,CAAC,GAAG,OAAO,SAAS,CAAC;AACvE,sBAAY,UAAU,MAAM,WAAW,CAAC;AACxC,oBAAU;AACV;AAAA,QACF;AAAA,MACF;AAGA,YAAM,cAAc,UAAU,MAAM,cAAc;AAClD,UAAI,aAAa;AACf,eAAO,KAAK,EAAE,MAAM,YAAY,CAAC,GAAG,OAAO,SAAS,CAAC;AACrD,oBAAY,UAAU,MAAM,YAAY,CAAC,EAAE,MAAM;AACjD,kBAAU;AACV;AAAA,MACF;AAGA,YAAM,YAAY,UAAU,MAAM,yBAAyB;AAC3D,UAAI,WAAW;AACb,cAAM,OAAO,UAAU,CAAC;AACxB,cAAM,QAAwB,SAAS,SAAS,IAAI,IAAI,YAAY;AACpE,eAAO,KAAK,EAAE,MAAM,MAAM,MAAM,CAAC;AACjC,oBAAY,UAAU,MAAM,KAAK,MAAM;AACvC,kBAAU;AACV;AAAA,MACF;AAGA,YAAM,YAAY,UAAU,MAAM,gCAAgC;AAClE,UAAI,aAAa,CAAC,SAAS,SAAS,UAAU,CAAC,CAAC,GAAG;AACjD,eAAO,IAAI;AACX,eAAO,KAAK,EAAE,MAAM,UAAU,CAAC,GAAG,OAAO,WAAW,CAAC;AACrD,eAAO,KAAK,EAAE,MAAM,KAAK,OAAO,UAAU,CAAC;AAC3C,oBAAY,UAAU,MAAM,UAAU,CAAC,EAAE,SAAS,CAAC;AACnD,kBAAU;AACV;AAAA,MACF;AAGA,UAAI,CAAC,SAAS;AACZ,eAAO,KAAK,EAAE,MAAM,UAAU,CAAC,GAAG,OAAO,UAAU,CAAC;AACpD,oBAAY,UAAU,MAAM,CAAC;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO;AAAA,EACT,CAAC;AACH;AAEO,IAAM,YAAsC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,SAAS;AACvB,QAAM,WAAW,YAAY;AAE7B,QAAM,aAAa,MAAM;AACvB,QAAI,WAAW;AACb,eAAS,KAAK,MAAM,SAAS,IAAI,EAAE,MAAM,SAAS,CAAC;AAAA,IACrD;AAAA,EACF;AAEA,MAAI,WAAW;AACb,WACE,gBAAAC,OAAA,cAAC,QAAK,OAAO,CAACC,QAAO,WAAW,SAAS,CAAC,CAAC,KACzC,gBAAAD,OAAA,cAAC,gBAAa,SAAQ,mBAAkB,CAC1C;AAAA,EAEJ;AAEA,MAAI,OAAO;AACT,WACE,gBAAAA,OAAA,cAAC,QAAK,OAAO,CAACC,QAAO,WAAW,SAAS,CAAC,CAAC,KACzC,gBAAAD,OAAA,cAAC,cAAW,SAAS,MAAM,SAAS,CACtC;AAAA,EAEJ;AAEA,QAAM,iBAAiB,aAAa,IAAI;AACxC,QAAM,kBAAkB,OAAO,eAAe,MAAM,EAAE,SAAS,KAAK;AAEpE,QAAM,cACJ,gBAAAA,OAAA,cAACE,OAAA,EAAK,OAAOD,QAAO,iBACjB,eAAe,IAAI,CAAC,QAAQ,cAC3B,gBAAAD,OAAA,cAACE,OAAA,EAAK,KAAK,WAAW,OAAOD,QAAO,QACjC,mBACC,gBAAAD,OAAA,cAACE,OAAA,EAAK,OAAO,CAACD,QAAO,YAAY,EAAE,OAAO,gBAAgB,CAAC,KACzD,gBAAAD,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,OAAO,EAAE,OAAO,MAAM,OAAO,kBAAkB,EAAE;AAAA;AAAA,IAEhD,YAAY;AAAA,EACf,CACF,GAEF,gBAAAA,OAAA,cAACE,OAAA,EAAK,OAAOD,QAAO,eACjB,OAAO,WAAW,IACjB,gBAAAD,OAAA,cAAC,cAAW,SAAQ,UAAO,GAAC,IAE5B,gBAAAA,OAAA,cAAC,cAAW,SAAQ,UACjB,OAAO,IAAI,CAAC,OAAO,eAClB,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,SAAQ;AAAA,MACR,OAAO;AAAA,QACL,OAAO,aAAa,MAAM,KAAK;AAAA,QAC/B,YAAY;AAAA,MACd;AAAA;AAAA,IAEC,MAAM;AAAA,EACT,CACD,CACH,CAEJ,CACF,CACD,CACH;AAGF,SACE,gBAAAA,OAAA,cAAC,QAAK,OAAO,CAACC,QAAO,WAAW,SAAS,CAAC,CAAC,GAAG,SAAQ,WAClD,YAAY,mBACZ,gBAAAD,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,OAAO;AAAA,QACLC,QAAO;AAAA,QACP,EAAE,iBAAiB,MAAM,OAAO,OAAO,mBAAmB,MAAM,OAAO,OAAO;AAAA,MAChF;AAAA;AAAA,IAEC,WACC,gBAAAD,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,OAAO;AAAA,UACL,OAAO,MAAM,OAAO,kBAAkB;AAAA,UACtC,eAAe;AAAA,QACjB;AAAA;AAAA,MAEC;AAAA,IACH,IAEA,gBAAAA,OAAA,cAACE,OAAA,IAAK;AAAA,IAEP,kBACC,gBAAAF,OAAA,cAAC,UAAO,SAAQ,SAAQ,MAAK,MAAK,SAAS,cAAY,MAEvD;AAAA,EAEJ,GAGD,aACC,gBAAAA,OAAA,cAACG,aAAA,EAAW,YAAU,MAAC,gCAAgC,QACpD,WACH,IAEA,WAEJ;AAEJ;AAEA,IAAMF,UAASG,YAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,QAAQ;AAAA,IACN,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,EACrB;AAAA,EACA,eAAe;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,eAAe;AAAA,EACjB;AAAA,EACA,YAAY;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,EACR;AACF,CAAC;AAED,UAAU,cAAc;;;ACxSxB,OAAOC,YAAW;AAClB,SAAS,QAAAC,OAAM,MAAM,cAAAC,mBAA6B;AA4BlD,IAAM,UAAiE;AAAA,EACrE,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG;AAAA,EAC/B,IAAI,EAAE,SAAS,IAAI,UAAU,GAAG;AAAA,EAChC,IAAI,EAAE,SAAS,IAAI,UAAU,GAAG;AAClC;AAEA,IAAM,aAA+E;AAAA,EACnF,SAAS,EAAE,iBAAiB,yBAAyB,aAAa,UAAU;AAAA,EAC5E,SAAS,EAAE,iBAAiB,0BAA0B,aAAa,UAAU;AAAA,EAC7E,SAAS,EAAE,iBAAiB,yBAAyB,aAAa,UAAU;AAAA,EAC5E,SAAS,EAAE,iBAAiB,0BAA0B,aAAa,UAAU;AAAA,EAC7E,QAAQ,EAAE,iBAAiB,0BAA0B,aAAa,UAAU;AAC9E;AAEO,IAAM,YAAsC,CAAC;AAAA,EAClD;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV;AAAA;AAAA,EAEA,QAAQ;AAAA,EACR,OAAO;AACT,MAAM;AACJ,QAAM,QAAQ,SAAS;AACvB,QAAM,WAAW,OAAO,UAAU,WAAW,QAAQ,SAAS,OAAO,KAAK,GAAG,EAAE,KAAK;AACpF,QAAM,aAAa,QAAQ,IAAI,KAAK,QAAQ;AAC5C,QAAM,gBAAgB,WAAW,OAAO,KAAK,WAAW;AAExD,SACE,gBAAAC,OAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACLC,QAAO;AAAA,QACP;AAAA,UACE,iBAAiB,cAAc;AAAA,UAC/B,aAAa,cAAc;AAAA,UAC3B,SAAS,WAAW;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAAA;AAAA,IAEC,QACC,gBAAAF,OAAA,cAAC,QAAK,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,KACzC,IACH;AAAA,IAGF,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU,WAAW;AAAA,UACrB,OAAO,MAAM,OAAO,kBAAkB;AAAA,UACtC,YAAY;AAAA,UACZ,aAAa;AAAA,QACf;AAAA;AAAA,MAEC;AAAA,IACH;AAAA,IAEC,WAAW,YAAY,OACtB,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT;AAAA,QACA,QAAO;AAAA,QACP,MAAM,SAAS,OAAO,OAAO;AAAA;AAAA,IAC/B;AAAA,IAGD,WAAW,SAAS,OACnB,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT;AAAA,QACA,QAAO;AAAA,QACP,MAAM,SAAS,OAAO,OAAO;AAAA;AAAA,IAC/B;AAAA,IAGD,WAAW,YACV,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,MAAM,SAAS,OAAO,OAAO;AAAA,QAC7B,UAAQ;AAAA;AAAA,IACV;AAAA,IAGD,WAAW,UACV,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU,WAAW;AAAA,UACrB,OAAO,MAAM,OAAO,oBAAoB;AAAA,UACxC,YAAY;AAAA,QACd;AAAA;AAAA,MAEC;AAAA,IACH;AAAA,EAEJ;AAEJ;AAEA,IAAME,UAASC,YAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,aAAa;AAAA,EACf;AACF,CAAC;AAED,UAAU,cAAc;","names":["React","React","React","StyleSheet","React","styles","StyleSheet","React","View","StyleSheet","TouchableOpacity","React","View","styles","TouchableOpacity","StyleSheet","React","View","TouchableOpacity","StyleSheet","React","View","styles","TouchableOpacity","StyleSheet","React","TouchableOpacity","StyleSheet","Animated","React","Animated","styles","TouchableOpacity","StyleSheet","React","View","ScrollView","StyleSheet","React","styles","View","ScrollView","StyleSheet","React","View","StyleSheet","React","View","styles","StyleSheet"]}
@@ -0,0 +1,176 @@
1
+ import {
2
+ ErrorState,
3
+ LoadingState
4
+ } from "./chunk-7C5JCLLY.js";
5
+ import {
6
+ useEventBus
7
+ } from "./chunk-YTVYMEKU.js";
8
+ import {
9
+ useTheme
10
+ } from "./chunk-CUAWHLEK.js";
11
+
12
+ // src/components/atoms/Checkbox.tsx
13
+ import React from "react";
14
+ import {
15
+ TouchableOpacity,
16
+ View,
17
+ StyleSheet
18
+ } from "react-native";
19
+ var Checkbox = ({
20
+ checked = false,
21
+ onChange,
22
+ disabled = false,
23
+ size = "md",
24
+ style,
25
+ isLoading,
26
+ error,
27
+ changeEvent,
28
+ actionPayload
29
+ }) => {
30
+ const theme = useTheme();
31
+ const eventBus = useEventBus();
32
+ const handlePress = () => {
33
+ if (disabled || isLoading) return;
34
+ const newValue = !checked;
35
+ if (changeEvent) {
36
+ eventBus.emit(`UI:${changeEvent}`, { ...actionPayload, checked: newValue });
37
+ }
38
+ onChange?.(newValue);
39
+ };
40
+ if (isLoading) {
41
+ return /* @__PURE__ */ React.createElement(View, { style: [styles.container, style] }, /* @__PURE__ */ React.createElement(LoadingState, { message: "Loading..." }));
42
+ }
43
+ if (error) {
44
+ return /* @__PURE__ */ React.createElement(View, { style: [styles.container, style] }, /* @__PURE__ */ React.createElement(ErrorState, { message: error.message }));
45
+ }
46
+ const sizeStyles = {
47
+ sm: { box: 18, check: 10 },
48
+ md: { box: 24, check: 14 },
49
+ lg: { box: 32, check: 18 }
50
+ };
51
+ const { box, check } = sizeStyles[size];
52
+ return /* @__PURE__ */ React.createElement(
53
+ TouchableOpacity,
54
+ {
55
+ onPress: handlePress,
56
+ disabled,
57
+ activeOpacity: 0.8,
58
+ style: [
59
+ styles.container,
60
+ {
61
+ width: box,
62
+ height: box,
63
+ borderRadius: theme.borderRadius.sm,
64
+ borderWidth: 2,
65
+ borderColor: checked ? theme.colors.primary : theme.colors.border,
66
+ backgroundColor: checked ? theme.colors.primary : theme.colors.card,
67
+ opacity: disabled ? 0.5 : 1
68
+ },
69
+ style
70
+ ]
71
+ },
72
+ checked && /* @__PURE__ */ React.createElement(
73
+ View,
74
+ {
75
+ style: {
76
+ width: check,
77
+ height: check,
78
+ backgroundColor: theme.colors["primary-foreground"],
79
+ transform: [{ rotate: "45deg" }]
80
+ }
81
+ }
82
+ )
83
+ );
84
+ };
85
+ var styles = StyleSheet.create({
86
+ container: {
87
+ alignItems: "center",
88
+ justifyContent: "center"
89
+ }
90
+ });
91
+ Checkbox.displayName = "Checkbox";
92
+
93
+ // src/components/atoms/Icon.tsx
94
+ import React2 from "react";
95
+ import { View as View2, Text, StyleSheet as StyleSheet2 } from "react-native";
96
+ var iconMap = {
97
+ home: "\u{1F3E0}",
98
+ user: "\u{1F464}",
99
+ settings: "\u2699\uFE0F",
100
+ "arrow-right": "\u2192",
101
+ "arrow-left": "\u2190",
102
+ check: "\u2713",
103
+ x: "\u2715",
104
+ plus: "+",
105
+ minus: "\u2212",
106
+ search: "\u{1F50D}",
107
+ menu: "\u2630",
108
+ "more-vertical": "\u22EE",
109
+ "chevron-right": "\u203A",
110
+ "chevron-left": "\u2039",
111
+ "chevron-down": "\u2304",
112
+ "chevron-up": "\u2303"
113
+ };
114
+ var Icon = ({
115
+ name,
116
+ size = 24,
117
+ color = "#374151",
118
+ style
119
+ }) => {
120
+ return /* @__PURE__ */ React2.createElement(View2, { style: [styles2.container, { width: size, height: size }, style] }, /* @__PURE__ */ React2.createElement(Text, { style: [
121
+ styles2.icon,
122
+ { fontSize: size * 0.7, color, lineHeight: size }
123
+ ] }, iconMap[name] || "?"));
124
+ };
125
+ var styles2 = StyleSheet2.create({
126
+ container: {
127
+ alignItems: "center",
128
+ justifyContent: "center"
129
+ },
130
+ icon: {
131
+ textAlign: "center"
132
+ }
133
+ });
134
+ Icon.displayName = "Icon";
135
+
136
+ // src/components/atoms/Divider.tsx
137
+ import React3 from "react";
138
+ import { View as View3, StyleSheet as StyleSheet3 } from "react-native";
139
+ var Divider = ({
140
+ orientation = "horizontal",
141
+ thickness = 1,
142
+ style
143
+ }) => {
144
+ const theme = useTheme();
145
+ return /* @__PURE__ */ React3.createElement(
146
+ View3,
147
+ {
148
+ style: [
149
+ orientation === "horizontal" ? styles3.horizontal : styles3.vertical,
150
+ {
151
+ backgroundColor: theme.colors.border,
152
+ ...orientation === "horizontal" ? { height: thickness } : { width: thickness }
153
+ },
154
+ style
155
+ ]
156
+ }
157
+ );
158
+ };
159
+ var styles3 = StyleSheet3.create({
160
+ horizontal: {
161
+ width: "100%",
162
+ marginVertical: 8
163
+ },
164
+ vertical: {
165
+ height: "100%",
166
+ marginHorizontal: 8
167
+ }
168
+ });
169
+ Divider.displayName = "Divider";
170
+
171
+ export {
172
+ Checkbox,
173
+ Icon,
174
+ Divider
175
+ };
176
+ //# sourceMappingURL=chunk-LFHVNHVA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/atoms/Checkbox.tsx","../src/components/atoms/Icon.tsx","../src/components/atoms/Divider.tsx"],"sourcesContent":["import React from 'react';\nimport { \n TouchableOpacity, \n View, \n StyleSheet, \n ViewStyle \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface CheckboxProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n style?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Declarative change event name - emits UI:${changeEvent} via eventBus */\n changeEvent?: string;\n /** Payload to include with the change event */\n actionPayload?: Record<string, unknown>;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n checked = false,\n onChange,\n disabled = false,\n size = 'md',\n style,\n isLoading,\n error,\n changeEvent,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handlePress = () => {\n if (disabled || isLoading) return;\n \n const newValue = !checked;\n if (changeEvent) {\n eventBus.emit(`UI:${changeEvent}`, { ...actionPayload, checked: newValue });\n }\n onChange?.(newValue);\n };\n\n if (isLoading) {\n return (\n <View style={[styles.container, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.container, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const sizeStyles: Record<string, { box: number; check: number }> = {\n sm: { box: 18, check: 10 },\n md: { box: 24, check: 14 },\n lg: { box: 32, check: 18 },\n };\n\n const { box, check } = sizeStyles[size];\n\n return (\n <TouchableOpacity\n onPress={handlePress}\n disabled={disabled}\n activeOpacity={0.8}\n style={[\n styles.container,\n {\n width: box,\n height: box,\n borderRadius: theme.borderRadius.sm,\n borderWidth: 2,\n borderColor: checked \n ? theme.colors.primary \n : theme.colors.border,\n backgroundColor: checked \n ? theme.colors.primary \n : theme.colors.card,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n {checked && (\n <View\n style={{\n width: check,\n height: check,\n backgroundColor: theme.colors['primary-foreground'],\n transform: [{ rotate: '45deg' }],\n }}\n />\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nCheckbox.displayName = 'Checkbox';\n","import React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\n\n// For now, using a simple text-based icon approach\n// In production, this would use react-native-vector-icons\nexport type IconName = \n | 'home' \n | 'user' \n | 'settings' \n | 'arrow-right' \n | 'arrow-left'\n | 'check'\n | 'x'\n | 'plus'\n | 'minus'\n | 'search'\n | 'menu'\n | 'more-vertical'\n | 'chevron-right'\n | 'chevron-left'\n | 'chevron-down'\n | 'chevron-up';\n\nexport interface IconProps {\n name: IconName;\n size?: number;\n color?: string;\n style?: ViewStyle;\n}\n\n// Simple emoji/icon mapping for initial implementation\nconst iconMap: Record<IconName, string> = {\n home: '🏠',\n user: '👤',\n settings: '⚙️',\n 'arrow-right': '→',\n 'arrow-left': '←',\n check: '✓',\n x: '✕',\n plus: '+',\n minus: '−',\n search: '🔍',\n menu: '☰',\n 'more-vertical': '⋮',\n 'chevron-right': '›',\n 'chevron-left': '‹',\n 'chevron-down': '⌄',\n 'chevron-up': '⌃',\n};\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n size = 24,\n color = '#374151',\n style,\n}) => {\n return (\n <View style={[styles.container, { width: size, height: size }, style]}>\n <Text style={[\n styles.icon,\n { fontSize: size * 0.7, color, lineHeight: size },\n ]}>\n {iconMap[name] || '?'}\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n icon: {\n textAlign: 'center',\n },\n});\n\nIcon.displayName = 'Icon';\n","import React from 'react';\nimport { View, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\n\nexport interface DividerProps {\n orientation?: 'horizontal' | 'vertical';\n thickness?: number;\n style?: ViewStyle;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const Divider: React.FC<DividerProps> = ({\n orientation = 'horizontal',\n thickness = 1,\n style,\n}) => {\n const theme = useTheme();\n\n return (\n <View\n style={[\n orientation === 'horizontal' ? styles.horizontal : styles.vertical,\n {\n backgroundColor: theme.colors.border,\n ...(orientation === 'horizontal'\n ? { height: thickness }\n : { width: thickness }),\n },\n style,\n ]}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n horizontal: {\n width: '100%',\n marginVertical: 8,\n },\n vertical: {\n height: '100%',\n marginHorizontal: 8,\n },\n});\n\nDivider.displayName = 'Divider';\n"],"mappings":"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","names":["React","View","StyleSheet","styles","React","View","StyleSheet","React","View","styles","StyleSheet"]}
@@ -0,0 +1,206 @@
1
+ // src/themes/almadar.ts
2
+ var almadarLight = {
3
+ // Colors - matching CSS variable names
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: "rgba(20, 184, 166, 0.3)",
21
+ input: "rgba(20, 184, 166, 0.2)",
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
+ // Additional colors for mobile
32
+ "border-solid": "#e2e8f0",
33
+ "border-teal": "rgba(20, 184, 166, 0.3)",
34
+ "input-bg": "rgba(20, 184, 166, 0.1)"
35
+ },
36
+ // Border radius - matching CSS variables
37
+ borderRadius: {
38
+ none: 0,
39
+ sm: 6,
40
+ md: 10,
41
+ lg: 14,
42
+ xl: 20,
43
+ full: 9999
44
+ },
45
+ // Spacing
46
+ spacing: {
47
+ 0: 0,
48
+ 1: 4,
49
+ 2: 8,
50
+ 3: 12,
51
+ 4: 16,
52
+ 5: 20,
53
+ 6: 24,
54
+ 8: 32,
55
+ 10: 40,
56
+ 12: 48
57
+ },
58
+ // Typography
59
+ typography: {
60
+ fontFamily: "Inter",
61
+ fontWeight: {
62
+ normal: "400",
63
+ medium: "500",
64
+ bold: "600"
65
+ },
66
+ letterSpacing: -0.02,
67
+ lineHeight: 1.6,
68
+ sizes: {
69
+ xs: 12,
70
+ sm: 14,
71
+ base: 16,
72
+ lg: 18,
73
+ xl: 20,
74
+ "2xl": 24,
75
+ "3xl": 30,
76
+ "4xl": 36
77
+ }
78
+ },
79
+ // Shadows (React Native elevation/shadows)
80
+ shadows: {
81
+ none: {
82
+ shadowColor: "transparent",
83
+ shadowOffset: { width: 0, height: 0 },
84
+ shadowOpacity: 0,
85
+ shadowRadius: 0,
86
+ elevation: 0
87
+ },
88
+ sm: {
89
+ shadowColor: "rgba(20, 184, 166, 0.08)",
90
+ shadowOffset: { width: 0, height: 2 },
91
+ shadowOpacity: 1,
92
+ shadowRadius: 4,
93
+ elevation: 2
94
+ },
95
+ main: {
96
+ shadowColor: "rgba(20, 184, 166, 0.12)",
97
+ shadowOffset: { width: 0, height: 4 },
98
+ shadowOpacity: 1,
99
+ shadowRadius: 14,
100
+ elevation: 4
101
+ },
102
+ lg: {
103
+ shadowColor: "rgba(20, 184, 166, 0.18)",
104
+ shadowOffset: { width: 0, height: 8 },
105
+ shadowOpacity: 1,
106
+ shadowRadius: 30,
107
+ elevation: 8
108
+ },
109
+ hover: {
110
+ shadowColor: "rgba(20, 184, 166, 0.2)",
111
+ shadowOffset: { width: 0, height: 12 },
112
+ shadowOpacity: 1,
113
+ shadowRadius: 40,
114
+ elevation: 12
115
+ }
116
+ },
117
+ // Transitions (for animated components)
118
+ transitions: {
119
+ fast: 150,
120
+ normal: 250,
121
+ slow: 400
122
+ },
123
+ // Icon styling
124
+ icon: {
125
+ strokeWidth: 1.75,
126
+ color: "#0d9488"
127
+ }
128
+ };
129
+ var almadarDark = {
130
+ colors: {
131
+ primary: "#14b8a6",
132
+ "primary-hover": "#2dd4bf",
133
+ "primary-foreground": "#042f2e",
134
+ secondary: "#1e293b",
135
+ "secondary-hover": "#334155",
136
+ "secondary-foreground": "#f1f5f9",
137
+ accent: "#06b6d4",
138
+ "accent-foreground": "#083344",
139
+ muted: "#1e293b",
140
+ "muted-foreground": "#94a3b8",
141
+ background: "#0f172a",
142
+ foreground: "#f1f5f9",
143
+ card: "#1e293b",
144
+ "card-foreground": "#f1f5f9",
145
+ surface: "#1e293b",
146
+ border: "rgba(20, 184, 166, 0.25)",
147
+ input: "rgba(20, 184, 166, 0.3)",
148
+ ring: "#14b8a6",
149
+ error: "#f87171",
150
+ "error-foreground": "#000000",
151
+ success: "#4ade80",
152
+ "success-foreground": "#000000",
153
+ warning: "#fbbf24",
154
+ "warning-foreground": "#000000",
155
+ info: "#38bdf8",
156
+ "info-foreground": "#000000",
157
+ "border-solid": "#334155",
158
+ "border-teal": "rgba(20, 184, 166, 0.25)",
159
+ "input-bg": "rgba(20, 184, 166, 0.15)"
160
+ },
161
+ borderRadius: almadarLight.borderRadius,
162
+ spacing: almadarLight.spacing,
163
+ typography: almadarLight.typography,
164
+ shadows: {
165
+ none: almadarLight.shadows.none,
166
+ sm: {
167
+ shadowColor: "rgba(20, 184, 166, 0.1)",
168
+ shadowOffset: { width: 0, height: 2 },
169
+ shadowOpacity: 1,
170
+ shadowRadius: 4,
171
+ elevation: 2
172
+ },
173
+ main: {
174
+ shadowColor: "rgba(20, 184, 166, 0.15)",
175
+ shadowOffset: { width: 0, height: 4 },
176
+ shadowOpacity: 1,
177
+ shadowRadius: 14,
178
+ elevation: 4
179
+ },
180
+ lg: {
181
+ shadowColor: "rgba(20, 184, 166, 0.25)",
182
+ shadowOffset: { width: 0, height: 8 },
183
+ shadowOpacity: 1,
184
+ shadowRadius: 30,
185
+ elevation: 8
186
+ },
187
+ hover: {
188
+ shadowColor: "rgba(20, 184, 166, 0.35)",
189
+ shadowOffset: { width: 0, height: 12 },
190
+ shadowOpacity: 1,
191
+ shadowRadius: 40,
192
+ elevation: 12
193
+ }
194
+ },
195
+ transitions: almadarLight.transitions,
196
+ icon: {
197
+ strokeWidth: 1.75,
198
+ color: "#14b8a6"
199
+ }
200
+ };
201
+
202
+ export {
203
+ almadarLight,
204
+ almadarDark
205
+ };
206
+ //# sourceMappingURL=chunk-MFU7Q7LU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/themes/almadar.ts"],"sourcesContent":["/**\n * Almadar Theme for React Native\n * Mirrors CSS variable names from @almadar/ui for cross-platform consistency\n */\n\nimport { RNTheme } from '../providers/ThemeContext';\n\nexport const almadarLight: RNTheme = {\n // Colors - matching CSS variable names\n colors: {\n primary: '#14b8a6',\n 'primary-hover': '#0d9488',\n 'primary-foreground': '#ffffff',\n\n secondary: '#f1f5f9',\n 'secondary-hover': '#e2e8f0',\n 'secondary-foreground': '#0f172a',\n\n accent: '#06b6d4',\n 'accent-foreground': '#ffffff',\n\n muted: '#f1f5f9',\n 'muted-foreground': '#64748b',\n\n background: '#f8fafc',\n foreground: '#0f172a',\n card: '#ffffff',\n 'card-foreground': '#0f172a',\n surface: '#f1f5f9',\n border: 'rgba(20, 184, 166, 0.3)',\n input: 'rgba(20, 184, 166, 0.2)',\n ring: '#14b8a6',\n\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 // Additional colors for mobile\n 'border-solid': '#e2e8f0',\n 'border-teal': 'rgba(20, 184, 166, 0.3)',\n 'input-bg': 'rgba(20, 184, 166, 0.1)',\n },\n\n // Border radius - matching CSS variables\n borderRadius: {\n none: 0,\n sm: 6,\n md: 10,\n lg: 14,\n xl: 20,\n full: 9999,\n },\n\n // Spacing\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\n // Typography\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\n // Shadows (React Native elevation/shadows)\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(20, 184, 166, 0.08)',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 1,\n shadowRadius: 4,\n elevation: 2,\n },\n main: {\n shadowColor: 'rgba(20, 184, 166, 0.12)',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 1,\n shadowRadius: 14,\n elevation: 4,\n },\n lg: {\n shadowColor: 'rgba(20, 184, 166, 0.18)',\n shadowOffset: { width: 0, height: 8 },\n shadowOpacity: 1,\n shadowRadius: 30,\n elevation: 8,\n },\n hover: {\n shadowColor: 'rgba(20, 184, 166, 0.2)',\n shadowOffset: { width: 0, height: 12 },\n shadowOpacity: 1,\n shadowRadius: 40,\n elevation: 12,\n },\n },\n\n // Transitions (for animated components)\n transitions: {\n fast: 150,\n normal: 250,\n slow: 400,\n },\n\n // Icon styling\n icon: {\n strokeWidth: 1.75,\n color: '#0d9488',\n },\n};\n\nexport const almadarDark: RNTheme = {\n colors: {\n primary: '#14b8a6',\n 'primary-hover': '#2dd4bf',\n 'primary-foreground': '#042f2e',\n\n secondary: '#1e293b',\n 'secondary-hover': '#334155',\n 'secondary-foreground': '#f1f5f9',\n\n accent: '#06b6d4',\n 'accent-foreground': '#083344',\n\n muted: '#1e293b',\n 'muted-foreground': '#94a3b8',\n\n background: '#0f172a',\n foreground: '#f1f5f9',\n card: '#1e293b',\n 'card-foreground': '#f1f5f9',\n surface: '#1e293b',\n border: 'rgba(20, 184, 166, 0.25)',\n input: 'rgba(20, 184, 166, 0.3)',\n ring: '#14b8a6',\n\n error: '#f87171',\n 'error-foreground': '#000000',\n success: '#4ade80',\n 'success-foreground': '#000000',\n warning: '#fbbf24',\n 'warning-foreground': '#000000',\n info: '#38bdf8',\n 'info-foreground': '#000000',\n\n 'border-solid': '#334155',\n 'border-teal': 'rgba(20, 184, 166, 0.25)',\n 'input-bg': 'rgba(20, 184, 166, 0.15)',\n },\n\n borderRadius: almadarLight.borderRadius,\n spacing: almadarLight.spacing,\n typography: almadarLight.typography,\n\n shadows: {\n none: almadarLight.shadows.none,\n sm: {\n shadowColor: 'rgba(20, 184, 166, 0.1)',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 1,\n shadowRadius: 4,\n elevation: 2,\n },\n main: {\n shadowColor: 'rgba(20, 184, 166, 0.15)',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 1,\n shadowRadius: 14,\n elevation: 4,\n },\n lg: {\n shadowColor: 'rgba(20, 184, 166, 0.25)',\n shadowOffset: { width: 0, height: 8 },\n shadowOpacity: 1,\n shadowRadius: 30,\n elevation: 8,\n },\n hover: {\n shadowColor: 'rgba(20, 184, 166, 0.35)',\n shadowOffset: { width: 0, height: 12 },\n shadowOpacity: 1,\n shadowRadius: 40,\n elevation: 12,\n },\n },\n\n transitions: almadarLight.transitions,\n\n icon: {\n strokeWidth: 1.75,\n color: '#14b8a6',\n },\n};\n"],"mappings":";AAOO,IAAM,eAAwB;AAAA;AAAA,EAEnC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IAEtB,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IAExB,QAAQ;AAAA,IACR,qBAAqB;AAAA,IAErB,OAAO;AAAA,IACP,oBAAoB;AAAA,IAEpB,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IAEN,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,MAAM;AAAA,IACN,mBAAmB;AAAA;AAAA,IAGnB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA;AAAA,EAGA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACR;AAAA;AAAA,EAGA,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;AAAA,EAGA,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;AAAA,EAGA,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,IACA,OAAO;AAAA,MACL,aAAa;AAAA,MACb,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG;AAAA,MACrC,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,EACF;AAAA;AAAA,EAGA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,EACR;AAAA;AAAA,EAGA,MAAM;AAAA,IACJ,aAAa;AAAA,IACb,OAAO;AAAA,EACT;AACF;AAEO,IAAM,cAAuB;AAAA,EAClC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IAEtB,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IAExB,QAAQ;AAAA,IACR,qBAAqB;AAAA,IAErB,OAAO;AAAA,IACP,oBAAoB;AAAA,IAEpB,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IAEN,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,MAAM;AAAA,IACN,mBAAmB;AAAA,IAEnB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EAEA,cAAc,aAAa;AAAA,EAC3B,SAAS,aAAa;AAAA,EACtB,YAAY,aAAa;AAAA,EAEzB,SAAS;AAAA,IACP,MAAM,aAAa,QAAQ;AAAA,IAC3B,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,IACA,OAAO;AAAA,MACL,aAAa;AAAA,MACb,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG;AAAA,MACrC,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EAEA,aAAa,aAAa;AAAA,EAE1B,MAAM;AAAA,IACJ,aAAa;AAAA,IACb,OAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,71 @@
1
+ // src/lib/cn.ts
2
+ import { cn } from "@almadar/ui/lib";
3
+
4
+ // src/lib/theme.ts
5
+ function convertThemeToRN(webTheme) {
6
+ const spacing = convertSpacing(webTheme.spacing);
7
+ const borderRadius = convertSpacing(webTheme.borderRadius);
8
+ return {
9
+ colors: webTheme.colors,
10
+ spacing: {
11
+ xs: spacing.xs || 4,
12
+ sm: spacing.sm || 8,
13
+ md: spacing.md || 16,
14
+ lg: spacing.lg || 24,
15
+ xl: spacing.xl || 32,
16
+ ...spacing
17
+ },
18
+ borderRadius: {
19
+ none: 0,
20
+ sm: borderRadius.sm || 4,
21
+ md: borderRadius.md || 8,
22
+ lg: borderRadius.lg || 12,
23
+ xl: borderRadius.xl || 16,
24
+ full: 9999
25
+ }
26
+ };
27
+ }
28
+ function convertSpacing(spacing) {
29
+ const result = {};
30
+ for (const [key, value] of Object.entries(spacing)) {
31
+ const num = parseFloat(value);
32
+ result[key] = isNaN(num) ? 0 : num;
33
+ }
34
+ return result;
35
+ }
36
+ var defaultRNTheme = {
37
+ colors: {
38
+ primary: "#6366f1",
39
+ secondary: "#e2e8f0",
40
+ destructive: "#ef4444",
41
+ background: "#ffffff",
42
+ foreground: "#0f172a",
43
+ muted: "#f1f5f9",
44
+ "muted-foreground": "#64748b",
45
+ border: "#e2e8f0",
46
+ card: "#ffffff",
47
+ "card-foreground": "#0f172a"
48
+ },
49
+ spacing: {
50
+ xs: 4,
51
+ sm: 8,
52
+ md: 16,
53
+ lg: 24,
54
+ xl: 32
55
+ },
56
+ borderRadius: {
57
+ none: 0,
58
+ sm: 4,
59
+ md: 8,
60
+ lg: 12,
61
+ xl: 16,
62
+ full: 9999
63
+ }
64
+ };
65
+
66
+ export {
67
+ cn,
68
+ convertThemeToRN,
69
+ defaultRNTheme
70
+ };
71
+ //# sourceMappingURL=chunk-S2IT7WZT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/cn.ts","../src/lib/theme.ts"],"sourcesContent":["// Re-export from @almadar/ui - no code duplication\nexport { cn } from '@almadar/ui/lib';\n","import type { RNTheme } from '../providers/ThemeContext';\n\n// Re-export RNTheme from providers\nexport type { RNTheme } from '../providers/ThemeContext';\n\n// Web theme structure (from @almadar/ui)\nexport interface WebTheme {\n colors: Record<string, string>;\n spacing: Record<string, string>;\n borderRadius: Record<string, string>;\n}\n\n/**\n * Convert web theme (CSS values) to React Native theme (numeric values)\n */\nexport function convertThemeToRN(webTheme: WebTheme): Partial<RNTheme> {\n const spacing = convertSpacing(webTheme.spacing);\n const borderRadius = convertSpacing(webTheme.borderRadius);\n \n return {\n colors: webTheme.colors as RNTheme['colors'],\n spacing: {\n xs: spacing.xs || 4,\n sm: spacing.sm || 8,\n md: spacing.md || 16,\n lg: spacing.lg || 24,\n xl: spacing.xl || 32,\n ...spacing,\n },\n borderRadius: {\n none: 0,\n sm: borderRadius.sm || 4,\n md: borderRadius.md || 8,\n lg: borderRadius.lg || 12,\n xl: borderRadius.xl || 16,\n full: 9999,\n },\n } as Partial<RNTheme>;\n}\n\nfunction convertSpacing(spacing: Record<string, string>): Record<string, number> {\n const result: Record<string, number> = {};\n for (const [key, value] of Object.entries(spacing)) {\n const num = parseFloat(value);\n result[key] = isNaN(num) ? 0 : num;\n }\n return result;\n}\n\nexport const defaultRNTheme: Partial<RNTheme> = {\n colors: {\n primary: '#6366f1',\n secondary: '#e2e8f0',\n destructive: '#ef4444',\n background: '#ffffff',\n foreground: '#0f172a',\n muted: '#f1f5f9',\n 'muted-foreground': '#64748b',\n border: '#e2e8f0',\n card: '#ffffff',\n 'card-foreground': '#0f172a',\n } as never,\n spacing: {\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32,\n },\n borderRadius: {\n none: 0,\n sm: 4,\n md: 8,\n lg: 12,\n xl: 16,\n full: 9999,\n },\n};\n"],"mappings":";AACA,SAAS,UAAU;;;ACcZ,SAAS,iBAAiB,UAAsC;AACrE,QAAM,UAAU,eAAe,SAAS,OAAO;AAC/C,QAAM,eAAe,eAAe,SAAS,YAAY;AAEzD,SAAO;AAAA,IACL,QAAQ,SAAS;AAAA,IACjB,SAAS;AAAA,MACP,IAAI,QAAQ,MAAM;AAAA,MAClB,IAAI,QAAQ,MAAM;AAAA,MAClB,IAAI,QAAQ,MAAM;AAAA,MAClB,IAAI,QAAQ,MAAM;AAAA,MAClB,IAAI,QAAQ,MAAM;AAAA,MAClB,GAAG;AAAA,IACL;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,IAAI,aAAa,MAAM;AAAA,MACvB,IAAI,aAAa,MAAM;AAAA,MACvB,IAAI,aAAa,MAAM;AAAA,MACvB,IAAI,aAAa,MAAM;AAAA,MACvB,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,eAAe,SAAyD;AAC/E,QAAM,SAAiC,CAAC;AACxC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,UAAM,MAAM,WAAW,KAAK;AAC5B,WAAO,GAAG,IAAI,MAAM,GAAG,IAAI,IAAI;AAAA,EACjC;AACA,SAAO;AACT;AAEO,IAAM,iBAAmC;AAAA,EAC9C,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,mBAAmB;AAAA,EACrB;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACR;AACF;","names":[]}