@superblocksteam/vite-plugin-file-sync 2.0.7 → 2.0.8-next.1

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 (289) hide show
  1. package/dist/ai-service/app-interface/linter.js +1 -1
  2. package/dist/ai-service/app-interface/linter.js.map +1 -1
  3. package/dist/ai-service/const.d.ts +2 -2
  4. package/dist/ai-service/const.d.ts.map +1 -1
  5. package/dist/ai-service/const.js +2 -2
  6. package/dist/ai-service/const.js.map +1 -1
  7. package/dist/ai-service/integration-validator.d.ts +4 -0
  8. package/dist/ai-service/integration-validator.d.ts.map +1 -0
  9. package/dist/ai-service/integration-validator.js +54 -0
  10. package/dist/ai-service/integration-validator.js.map +1 -0
  11. package/dist/ai-service/integrations/from-prompt-context.js +1 -1
  12. package/dist/ai-service/integrations/from-prompt-context.js.map +1 -1
  13. package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.d.ts +1 -1
  14. package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.d.ts.map +1 -1
  15. package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.js +16 -16
  16. package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.d.ts +1 -1
  17. package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.d.ts.map +1 -1
  18. package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.js +49 -49
  19. package/dist/ai-service/prompts/generated/library-components/ButtonPropsDocs.d.ts +2 -0
  20. package/dist/ai-service/prompts/generated/library-components/ButtonPropsDocs.d.ts.map +1 -0
  21. package/dist/ai-service/prompts/generated/library-components/ButtonPropsDocs.js +6 -0
  22. package/dist/ai-service/prompts/generated/library-components/ButtonPropsDocs.js.map +1 -0
  23. package/dist/ai-service/prompts/generated/library-components/CheckboxPropsDocs.d.ts +2 -0
  24. package/dist/ai-service/prompts/generated/library-components/CheckboxPropsDocs.d.ts.map +1 -0
  25. package/dist/ai-service/prompts/generated/library-components/CheckboxPropsDocs.js +6 -0
  26. package/dist/ai-service/prompts/generated/library-components/CheckboxPropsDocs.js.map +1 -0
  27. package/dist/ai-service/prompts/generated/library-components/ColumnPropsDocs.d.ts +2 -0
  28. package/dist/ai-service/prompts/generated/library-components/ColumnPropsDocs.d.ts.map +1 -0
  29. package/dist/ai-service/prompts/generated/library-components/ColumnPropsDocs.js +6 -0
  30. package/dist/ai-service/prompts/generated/library-components/ColumnPropsDocs.js.map +1 -0
  31. package/dist/ai-service/prompts/generated/library-components/ContainerPropsDocs.d.ts +2 -0
  32. package/dist/ai-service/prompts/generated/library-components/ContainerPropsDocs.d.ts.map +1 -0
  33. package/dist/ai-service/prompts/generated/library-components/ContainerPropsDocs.js +6 -0
  34. package/dist/ai-service/prompts/generated/library-components/ContainerPropsDocs.js.map +1 -0
  35. package/dist/ai-service/prompts/generated/library-components/DatePickerPropsDocs.d.ts +2 -0
  36. package/dist/ai-service/prompts/generated/library-components/DatePickerPropsDocs.d.ts.map +1 -0
  37. package/dist/ai-service/prompts/generated/library-components/DatePickerPropsDocs.js +6 -0
  38. package/dist/ai-service/prompts/generated/library-components/DatePickerPropsDocs.js.map +1 -0
  39. package/dist/ai-service/prompts/generated/library-components/DropdownPropsDocs.d.ts +2 -0
  40. package/dist/ai-service/prompts/generated/library-components/DropdownPropsDocs.d.ts.map +1 -0
  41. package/dist/ai-service/prompts/generated/library-components/DropdownPropsDocs.js +6 -0
  42. package/dist/ai-service/prompts/generated/library-components/DropdownPropsDocs.js.map +1 -0
  43. package/dist/ai-service/prompts/generated/library-components/IconPropsDocs.d.ts +2 -0
  44. package/dist/ai-service/prompts/generated/library-components/IconPropsDocs.d.ts.map +1 -0
  45. package/dist/ai-service/prompts/generated/library-components/IconPropsDocs.js +6 -0
  46. package/dist/ai-service/prompts/generated/library-components/IconPropsDocs.js.map +1 -0
  47. package/dist/ai-service/prompts/generated/library-components/ImagePropsDocs.d.ts +2 -0
  48. package/dist/ai-service/prompts/generated/library-components/ImagePropsDocs.d.ts.map +1 -0
  49. package/dist/ai-service/prompts/generated/library-components/ImagePropsDocs.js +6 -0
  50. package/dist/ai-service/prompts/generated/library-components/ImagePropsDocs.js.map +1 -0
  51. package/dist/ai-service/prompts/generated/library-components/InputPropsDocs.d.ts +2 -0
  52. package/dist/ai-service/prompts/generated/library-components/InputPropsDocs.d.ts.map +1 -0
  53. package/dist/ai-service/prompts/generated/library-components/InputPropsDocs.js +6 -0
  54. package/dist/ai-service/prompts/generated/library-components/InputPropsDocs.js.map +1 -0
  55. package/dist/ai-service/prompts/generated/library-components/ModalPropsDocs.d.ts +2 -0
  56. package/dist/ai-service/prompts/generated/library-components/ModalPropsDocs.d.ts.map +1 -0
  57. package/dist/ai-service/prompts/generated/library-components/ModalPropsDocs.js +6 -0
  58. package/dist/ai-service/prompts/generated/library-components/ModalPropsDocs.js.map +1 -0
  59. package/dist/ai-service/prompts/generated/library-components/PagePropsDocs.d.ts +2 -0
  60. package/dist/ai-service/prompts/generated/library-components/PagePropsDocs.d.ts.map +1 -0
  61. package/dist/ai-service/prompts/generated/library-components/PagePropsDocs.js +6 -0
  62. package/dist/ai-service/prompts/generated/library-components/PagePropsDocs.js.map +1 -0
  63. package/dist/ai-service/prompts/generated/library-components/SectionPropsDocs.d.ts +2 -0
  64. package/dist/ai-service/prompts/generated/library-components/SectionPropsDocs.d.ts.map +1 -0
  65. package/dist/ai-service/prompts/generated/library-components/SectionPropsDocs.js +6 -0
  66. package/dist/ai-service/prompts/generated/library-components/SectionPropsDocs.js.map +1 -0
  67. package/dist/ai-service/prompts/generated/library-components/SlideoutPropsDocs.d.ts +2 -0
  68. package/dist/ai-service/prompts/generated/library-components/SlideoutPropsDocs.d.ts.map +1 -0
  69. package/dist/ai-service/prompts/generated/library-components/SlideoutPropsDocs.js +6 -0
  70. package/dist/ai-service/prompts/generated/library-components/SlideoutPropsDocs.js.map +1 -0
  71. package/dist/ai-service/prompts/generated/library-components/SwitchPropsDocs.d.ts +2 -0
  72. package/dist/ai-service/prompts/generated/library-components/SwitchPropsDocs.d.ts.map +1 -0
  73. package/dist/ai-service/prompts/generated/library-components/SwitchPropsDocs.js +6 -0
  74. package/dist/ai-service/prompts/generated/library-components/SwitchPropsDocs.js.map +1 -0
  75. package/dist/ai-service/prompts/generated/library-components/TablePropsDocs.d.ts +2 -0
  76. package/dist/ai-service/prompts/generated/library-components/TablePropsDocs.d.ts.map +1 -0
  77. package/dist/ai-service/prompts/generated/library-components/TablePropsDocs.js +6 -0
  78. package/dist/ai-service/prompts/generated/library-components/TablePropsDocs.js.map +1 -0
  79. package/dist/ai-service/prompts/generated/library-components/TextPropsDocs.d.ts +2 -0
  80. package/dist/ai-service/prompts/generated/library-components/TextPropsDocs.d.ts.map +1 -0
  81. package/dist/ai-service/prompts/generated/library-components/TextPropsDocs.js +6 -0
  82. package/dist/ai-service/prompts/generated/library-components/TextPropsDocs.js.map +1 -0
  83. package/dist/ai-service/prompts/generated/library-components/index.d.ts +16 -16
  84. package/dist/ai-service/prompts/generated/library-components/index.d.ts.map +1 -1
  85. package/dist/ai-service/prompts/generated/library-components/index.js +16 -16
  86. package/dist/ai-service/prompts/generated/library-components/index.js.map +1 -1
  87. package/dist/ai-service/prompts/generated/library-typedefs/Dim.js +1 -1
  88. package/dist/ai-service/prompts/generated/library-typedefs/EventFlow.d.ts +2 -0
  89. package/dist/ai-service/prompts/generated/library-typedefs/EventFlow.d.ts.map +1 -0
  90. package/dist/ai-service/prompts/generated/library-typedefs/EventFlow.js +6 -0
  91. package/dist/ai-service/prompts/generated/library-typedefs/EventFlow.js.map +1 -0
  92. package/dist/ai-service/prompts/generated/library-typedefs/TextStyleWithVariant.js +1 -1
  93. package/dist/ai-service/prompts/generated/library-typedefs/index.d.ts +1 -1
  94. package/dist/ai-service/prompts/generated/library-typedefs/index.d.ts.map +1 -1
  95. package/dist/ai-service/prompts/generated/library-typedefs/index.js +1 -1
  96. package/dist/ai-service/prompts/generated/library-typedefs/index.js.map +1 -1
  97. package/dist/ai-service/prompts/generated/subprompts/full-examples.d.ts +1 -1
  98. package/dist/ai-service/prompts/generated/subprompts/full-examples.d.ts.map +1 -1
  99. package/dist/ai-service/prompts/generated/subprompts/full-examples.js +2 -2
  100. package/dist/ai-service/prompts/generated/subprompts/full-examples.js.map +1 -1
  101. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts +1 -1
  102. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts.map +1 -1
  103. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js +2 -2
  104. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js.map +1 -1
  105. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.d.ts +1 -1
  106. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.d.ts.map +1 -1
  107. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js +2 -2
  108. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js.map +1 -1
  109. package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.js +1 -1
  110. package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.d.ts +1 -1
  111. package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.d.ts.map +1 -1
  112. package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.js +2 -2
  113. package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.js.map +1 -1
  114. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.d.ts +1 -1
  115. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.d.ts.map +1 -1
  116. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js +2 -2
  117. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js.map +1 -1
  118. package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.d.ts +1 -1
  119. package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.d.ts.map +1 -1
  120. package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.js +2 -2
  121. package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.js.map +1 -1
  122. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.d.ts +1 -1
  123. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.d.ts.map +1 -1
  124. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js +2 -2
  125. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js.map +1 -1
  126. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.d.ts +1 -1
  127. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.d.ts.map +1 -1
  128. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js +2 -2
  129. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js.map +1 -1
  130. package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.d.ts +1 -1
  131. package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.d.ts.map +1 -1
  132. package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.js +2 -2
  133. package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.js.map +1 -1
  134. package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.js +1 -1
  135. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.d.ts +1 -1
  136. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.d.ts.map +1 -1
  137. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js +2 -2
  138. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js.map +1 -1
  139. package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.js +1 -1
  140. package/dist/ai-service/prompts/generated/subprompts/system.d.ts +1 -1
  141. package/dist/ai-service/prompts/generated/subprompts/system.d.ts.map +1 -1
  142. package/dist/ai-service/prompts/generated/subprompts/system.js +2 -2
  143. package/dist/ai-service/prompts/generated/subprompts/system.js.map +1 -1
  144. package/dist/ai-service/prompts/markdown-loader.d.ts +1 -1
  145. package/dist/ai-service/prompts/markdown-loader.js +1 -1
  146. package/dist/ai-service/prompts/system.js +1 -1
  147. package/dist/ai-service/prompts/system.js.map +1 -1
  148. package/dist/ai-service/state-machine/clark-fsm.d.ts +4 -2
  149. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  150. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  151. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  152. package/dist/ai-service/state-machine/handlers/agent-planning.js +29 -4
  153. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  154. package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
  155. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +9 -2
  156. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
  157. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts +1 -1
  158. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js +98 -98
  159. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts +1 -1
  160. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js +22 -22
  161. package/dist/codegen.d.ts.map +1 -1
  162. package/dist/file-system-manager.js +12 -12
  163. package/dist/file-system-manager.js.map +1 -1
  164. package/dist/parsing/computed/to-code-computed.js +1 -1
  165. package/dist/parsing/computed/to-code-computed.js.map +1 -1
  166. package/dist/parsing/computed/to-value-computed.d.ts +1 -1
  167. package/dist/parsing/computed/to-value-computed.d.ts.map +1 -1
  168. package/dist/parsing/computed/to-value-computed.js +19 -7
  169. package/dist/parsing/computed/to-value-computed.js.map +1 -1
  170. package/dist/parsing/dim/index.js +1 -1
  171. package/dist/parsing/dim/index.js.map +1 -1
  172. package/dist/parsing/dim/to-value-dimensions.d.ts +2 -1
  173. package/dist/parsing/dim/to-value-dimensions.d.ts.map +1 -1
  174. package/dist/parsing/dim/to-value-dimensions.js +4 -3
  175. package/dist/parsing/dim/to-value-dimensions.js.map +1 -1
  176. package/dist/parsing/events/index.d.ts +1 -1
  177. package/dist/parsing/events/index.d.ts.map +1 -1
  178. package/dist/parsing/events/index.js.map +1 -1
  179. package/dist/parsing/events/to-code-events.d.ts.map +1 -1
  180. package/dist/parsing/events/to-code-events.js +13 -4
  181. package/dist/parsing/events/to-code-events.js.map +1 -1
  182. package/dist/parsing/events/to-value-events.d.ts +2 -2
  183. package/dist/parsing/events/to-value-events.d.ts.map +1 -1
  184. package/dist/parsing/events/to-value-events.js +100 -18
  185. package/dist/parsing/events/to-value-events.js.map +1 -1
  186. package/dist/parsing/ids.js +6 -6
  187. package/dist/parsing/ids.js.map +1 -1
  188. package/dist/parsing/imports.js +4 -4
  189. package/dist/parsing/imports.js.map +1 -1
  190. package/dist/parsing/jsx-utils.d.ts +4 -2
  191. package/dist/parsing/jsx-utils.d.ts.map +1 -1
  192. package/dist/parsing/jsx-utils.js +37 -13
  193. package/dist/parsing/jsx-utils.js.map +1 -1
  194. package/dist/parsing/jsx.d.ts +1 -0
  195. package/dist/parsing/jsx.d.ts.map +1 -1
  196. package/dist/parsing/jsx.js +24 -19
  197. package/dist/parsing/jsx.js.map +1 -1
  198. package/dist/parsing/page.d.ts.map +1 -1
  199. package/dist/parsing/page.js +13 -3
  200. package/dist/parsing/page.js.map +1 -1
  201. package/dist/parsing/properties.js +3 -3
  202. package/dist/parsing/properties.js.map +1 -1
  203. package/dist/parsing/scope.d.ts +2 -2
  204. package/dist/parsing/scope.js +8 -8
  205. package/dist/parsing/scope.js.map +1 -1
  206. package/dist/parsing/template/index.d.ts.map +1 -1
  207. package/dist/parsing/template/index.js.map +1 -1
  208. package/dist/parsing/type-parsing-registry.d.ts +1 -1
  209. package/dist/parsing/types.d.ts +1 -1
  210. package/dist/parsing/types.d.ts.map +1 -1
  211. package/dist/parsing/util.d.ts +3 -3
  212. package/dist/parsing/util.d.ts.map +1 -1
  213. package/dist/parsing/util.js +20 -7
  214. package/dist/parsing/util.js.map +1 -1
  215. package/dist/refactor/entities.js +1 -1
  216. package/dist/refactor/entities.js.map +1 -1
  217. package/dist/rename-manager.js +1 -1
  218. package/dist/rename-manager.js.map +1 -1
  219. package/dist/source-tracker.js +8 -8
  220. package/dist/source-tracker.js.map +1 -1
  221. package/package.json +5 -5
  222. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts +0 -2
  223. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts.map +0 -1
  224. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js +0 -6
  225. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js.map +0 -1
  226. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts +0 -2
  227. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts.map +0 -1
  228. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js +0 -6
  229. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js.map +0 -1
  230. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts +0 -2
  231. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts.map +0 -1
  232. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js +0 -6
  233. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js.map +0 -1
  234. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts +0 -2
  235. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts.map +0 -1
  236. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js +0 -6
  237. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js.map +0 -1
  238. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts +0 -2
  239. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts.map +0 -1
  240. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js +0 -6
  241. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js.map +0 -1
  242. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts +0 -2
  243. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts.map +0 -1
  244. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js +0 -6
  245. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js.map +0 -1
  246. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts +0 -2
  247. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts.map +0 -1
  248. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js +0 -6
  249. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js.map +0 -1
  250. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts +0 -2
  251. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts.map +0 -1
  252. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js +0 -6
  253. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js.map +0 -1
  254. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts +0 -2
  255. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts.map +0 -1
  256. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js +0 -6
  257. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js.map +0 -1
  258. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts +0 -2
  259. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts.map +0 -1
  260. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js +0 -6
  261. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js.map +0 -1
  262. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts +0 -2
  263. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts.map +0 -1
  264. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js +0 -6
  265. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js.map +0 -1
  266. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts +0 -2
  267. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts.map +0 -1
  268. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js +0 -6
  269. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js.map +0 -1
  270. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts +0 -2
  271. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts.map +0 -1
  272. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js +0 -6
  273. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js.map +0 -1
  274. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts +0 -2
  275. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts.map +0 -1
  276. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js +0 -6
  277. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js.map +0 -1
  278. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts +0 -2
  279. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts.map +0 -1
  280. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js +0 -6
  281. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js.map +0 -1
  282. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts +0 -2
  283. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts.map +0 -1
  284. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js +0 -6
  285. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js.map +0 -1
  286. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.d.ts +0 -2
  287. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.d.ts.map +0 -1
  288. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js +0 -6
  289. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js.map +0 -1
@@ -1,3 +1,3 @@
1
- declare const _default: "BUILDING APPLICATION FROM MOCK RESPONSE: I'll create a comprehensive order management app with CRUD operations using the DemoOrders and DemoShipping databases.\n\n<boltArtifact id=\"order-management-app\" title=\"Order Management App\">\n<boltAction type=\"file\" filePath=\"routes.json\">\n{\n \"/\": {\n \"file\": \"Page1/index.tsx\"\n }\n}\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/scope.ts\">\nimport {\n createSbScope,\n SbApi,\n SbVariable,\n SbVariablePersistence,\n sbComputed,\n} from \"@superblocksteam/library\";\n\nexport const Page1Scope = createSbScope<{\n OrdersTable: any;\n ProductFilterInput: any;\n CreateOrderModal: any;\n EditOrderModal: any;\n OrderDetailsModal: any;\n CreateOrderButton: any;\n NewOrderProductInput: any;\n NewOrderUserEmailInput: any;\n NewOrderPriceInput: any;\n NewOrderImageInput: any;\n EditOrderProductInput: any;\n EditOrderUserEmailInput: any;\n EditOrderPriceInput: any;\n EditOrderImageInput: any;\n}>(\n ({\n entities: {\n OrdersTable,\n ProductFilterInput,\n getMetricsApi,\n getOrdersApi,\n getOrderDetailsApi,\n getShippingInfoApi,\n createOrderApi,\n updateOrderApi,\n deleteOrderApi,\n NewOrderProductInput,\n NewOrderUserEmailInput,\n NewOrderPriceInput,\n NewOrderImageInput,\n EditOrderProductInput,\n EditOrderUserEmailInput,\n EditOrderPriceInput,\n EditOrderImageInput,\n },\n }) => ({\n getMetricsApi: SbApi({}),\n getOrdersApi: SbApi({}),\n getOrderDetailsApi: SbApi({}),\n getShippingInfoApi: SbApi({}),\n createOrderApi: SbApi({}),\n updateOrderApi: SbApi({}),\n deleteOrderApi: SbApi({}),\n \n filteredOrdersVar: SbVariable({\n defaultValue: sbComputed(() => {\n const orders = getOrdersApi.response || [];\n const filterText = ProductFilterInput.value?.toLowerCase() || '';\n \n if (!filterText) return orders;\n \n return orders.filter((order: any) =>\n order.product?.toLowerCase().includes(filterText)\n );\n }),\n persistence: SbVariablePersistence.TEMPORARY,\n }),\n }),\n {\n name: \"Page1\",\n }\n);\n\nexport const Page1 = Page1Scope.entities;\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/index.tsx\">\nimport {\n SbPage,\n Dim,\n SbSection,\n SbColumn,\n registerPage,\n SbTable,\n sbComputed,\n SbContainer,\n SbInput,\n SbButton,\n SbEventFlow,\n SbModal,\n SbText,\n Theme,\n} from \"@superblocksteam/library\";\nimport MetricCard from \"components/MetricCard/MetricCard\";\nimport AppHeader from \"components/AppHeader/AppHeader\";\nimport KeyValue from \"components/KeyValue\";\nimport { Page1, Page1Scope } from \"./scope\";\n\nfunction Page() {\n const {\n OrdersTable,\n ProductFilterInput,\n CreateOrderModal,\n EditOrderModal,\n CreateOrderButton,\n OrderDetailsModal,\n NewOrderProductInput,\n NewOrderUserEmailInput,\n NewOrderPriceInput,\n NewOrderImageInput,\n EditOrderProductInput,\n EditOrderUserEmailInput,\n EditOrderPriceInput,\n EditOrderImageInput,\n getMetricsApi,\n getOrdersApi,\n getOrderDetailsApi,\n getShippingInfoApi,\n createOrderApi,\n updateOrderApi,\n deleteOrderApi,\n filteredOrdersVar,\n } = Page1;\n\n return (\n <SbPage\n name=\"Page1\"\n height={Dim.fill()}\n width={Dim.fill()}\n onLoad={SbEventFlow.runApis([getMetricsApi, getOrdersApi])}\n >\n <SbSection height={Dim.fill()}>\n <SbColumn width={Dim.fill()} spacing={Dim.px(0)}>\n <AppHeader\n title=\"Order Management\"\n avatarUrl=\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=40&h=40&fit=crop&crop=face\"\n userEmail=\"admin@company.com\"\n height={Dim.fit()}\n />\n \n <SbContainer\n layout=\"vertical\"\n spacing={Dim.px(24)}\n padding={{\n top: Dim.px(24),\n bottom: Dim.px(24),\n left: Dim.px(24),\n right: Dim.px(24),\n }}\n height={Dim.fill()}\n >\n {/* Metrics Cards */}\n <SbContainer layout=\"horizontal\" spacing={Dim.px(16)}>\n <MetricCard\n title=\"Total Orders\"\n value={sbComputed(() => getMetricsApi.response?.totalOrders?.toString() || \"0\")}\n icon=\"receipt_long\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Total Revenue\"\n value={sbComputed(() => `$${getMetricsApi.response?.totalRevenue?.toLocaleString() || \"0\"}`)}\n icon=\"attach_money\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Orders This Month\"\n value={sbComputed(() => getMetricsApi.response?.ordersThisMonth?.toString() || \"0\")}\n icon=\"calendar_today\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Active Shipments\"\n value={sbComputed(() => getMetricsApi.response?.activeShipments?.toString() || \"0\")}\n icon=\"local_shipping\"\n width={Dim.fill()}\n />\n </SbContainer>\n\n {/* Orders Section */}\n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} variant=\"card\">\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} verticalAlign=\"bottom\">\n <SbInput\n bind={ProductFilterInput}\n label=\"Filter by Product\"\n placeholder=\"Search products...\"\n width={Dim.px(300)}\n />\n <SbButton\n bind={CreateOrderButton}\n label=\"Create Order\"\n variant=\"primary\"\n icon=\"add\"\n onClick={SbEventFlow.controlModal(CreateOrderModal, \"open\")}\n />\n </SbContainer>\n\n <SbTable\n bind={OrdersTable}\n tableData={sbComputed(() => filteredOrdersVar.value)}\n columns={{\n id: {\n label: \"Order ID\",\n columnType: \"text\",\n },\n product: {\n label: \"Product\",\n columnType: \"text\",\n },\n user_email: {\n label: \"Customer Email\",\n columnType: \"email\",\n },\n date_purchased: {\n label: \"Date Purchased\",\n columnType: \"date\",\n inputFormat: \"YYYY-MM-DD\",\n outputFormat: \"MM/DD/YYYY\",\n },\n price: {\n label: \"Price\",\n columnType: \"currency\",\n currency: \"USD\",\n },\n actions: {\n label: \"Actions\",\n columnType: \"button\",\n buttonLabel: \"View Details\",\n onClick: SbEventFlow.runJS(() => {\n getOrderDetailsApi.run();\n getShippingInfoApi.run();\n }).controlModal(OrderDetailsModal, \"open\"),\n },\n }}\n onRowClick={SbEventFlow.runJS(() => {\n EditOrderProductInput.text = OrdersTable.selectedRow?.product || \"\";\n EditOrderUserEmailInput.text = OrdersTable.selectedRow?.user_email || \"\";\n EditOrderPriceInput.text = OrdersTable.selectedRow?.price?.toString() || \"\";\n EditOrderImageInput.text = OrdersTable.selectedRow?.image || \"\";\n }).controlModal(EditOrderModal, \"open\")}\n height={Dim.px(400)}\n />\n </SbContainer>\n </SbContainer>\n </SbColumn>\n </SbSection>\n\n {/* Create Order Modal */}\n <SbModal bind={CreateOrderModal}>\n <SbContainer layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <SbText text=\"Create New Order\" textStyle={{ variant: \"heading3\" }} />\n \n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <SbInput\n bind={NewOrderProductInput}\n label=\"Product Name\"\n placeholder=\"Enter product name\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={NewOrderUserEmailInput}\n label=\"Customer Email\"\n placeholder=\"Enter customer email\"\n inputType=\"EMAIL\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={NewOrderPriceInput}\n label=\"Price\"\n placeholder=\"Enter price\"\n inputType=\"NUMBER\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={NewOrderImageInput}\n label=\"Product Image URL\"\n placeholder=\"Enter image URL (optional)\"\n width={Dim.fill()}\n />\n </SbContainer>\n\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <SbButton\n label=\"Cancel\"\n variant=\"secondary\"\n onClick={SbEventFlow.runJS(() => {\n NewOrderProductInput.text = \"\";\n NewOrderUserEmailInput.text = \"\";\n NewOrderPriceInput.text = \"\";\n NewOrderImageInput.text = \"\";\n }).controlModal(CreateOrderModal, \"close\")}\n />\n <SbButton\n label=\"Create Order\"\n variant=\"primary\"\n onClick={SbEventFlow.runApis([createOrderApi])\n .runApis([getMetricsApi, getOrdersApi])\n .runJS(() => {\n NewOrderProductInput.text = \"\";\n NewOrderUserEmailInput.text = \"\";\n NewOrderPriceInput.text = \"\";\n NewOrderImageInput.text = \"\";\n })\n .controlModal(CreateOrderModal, \"close\")}\n />\n </SbContainer>\n </SbContainer>\n </SbModal>\n\n {/* Edit Order Modal */}\n <SbModal bind={EditOrderModal}>\n <SbContainer layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"space-between\" width={Dim.fill()}>\n <SbText \n width={Dim.fit()}\n text={sbComputed(() => `Edit Order #${OrdersTable.selectedRow?.id || \"\"}`)} \n textStyle={{ variant: \"heading3\" }} \n />\n </SbContainer>\n \n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <SbInput\n bind={EditOrderProductInput}\n label=\"Product Name\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={EditOrderUserEmailInput}\n label=\"Customer Email\"\n inputType=\"EMAIL\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={EditOrderPriceInput}\n label=\"Price\"\n inputType=\"NUMBER\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={EditOrderImageInput}\n label=\"Product Image URL\"\n width={Dim.fill()}\n />\n </SbContainer>\n\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <SbButton\n label=\"Cancel\"\n variant=\"secondary\"\n onClick={SbEventFlow.controlModal(EditOrderModal, \"close\")}\n />\n <SbButton\n label=\"Update Order\"\n variant=\"primary\"\n onClick={SbEventFlow.runApis([updateOrderApi])\n .runApis([getMetricsApi, getOrdersApi])\n .controlModal(EditOrderModal, \"close\")}\n />\n </SbContainer>\n </SbContainer>\n </SbModal>\n\n {/* Order Details Modal */}\n <SbModal bind={OrderDetailsModal}>\n <SbContainer layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <SbText \n text={sbComputed(() => `Order Details #${OrdersTable.selectedRow?.id || \"\"}`)} \n textStyle={{ variant: \"heading3\" }} \n />\n \n <SbContainer layout=\"horizontal\" spacing={Dim.px(24)} width={Dim.fill()}>\n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <KeyValue\n label=\"Order Information\"\n data={sbComputed(() => getOrderDetailsApi.response || {})}\n />\n </SbContainer>\n \n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <KeyValue\n label=\"Shipping Information\"\n data={sbComputed(() => getShippingInfoApi.response || {})}\n />\n </SbContainer>\n </SbContainer>\n\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <SbButton\n label=\"Close\"\n variant=\"secondary\"\n onClick={SbEventFlow.controlModal(OrderDetailsModal, \"close\")}\n />\n </SbContainer>\n </SbContainer>\n </SbModal>\n </SbPage>\n );\n}\n\nexport default registerPage(Page, Page1Scope);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getMetricsApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getMetricsApi\", [\n new JavaScript(\"getMetrics\", {\n fn: () => {\n return {\n totalOrders: 45,\n totalRevenue: 12489.50,\n ordersThisMonth: 8,\n activeShipments: 12,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getOrdersApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getOrdersApi\", [\n new JavaScript(\"getOrders\", {\n fn: () => {\n return [\n {\n id: 1,\n product: \"Wireless Headphones\",\n user_email: \"john.doe@example.com\",\n date_purchased: \"2024-01-15\",\n price: 199.99,\n image: \"https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=200&h=200&fit=crop\",\n },\n {\n id: 2,\n product: \"Smart Watch\",\n user_email: \"jane.smith@example.com\",\n date_purchased: \"2024-01-14\",\n price: 299.99,\n image: \"https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=200&h=200&fit=crop\",\n },\n {\n id: 3,\n product: \"Laptop Stand\",\n user_email: \"mike.johnson@example.com\",\n date_purchased: \"2024-01-13\",\n price: 49.99,\n image: \"https://images.unsplash.com/photo-1527864550417-7fd91fc51a46?w=200&h=200&fit=crop\",\n },\n {\n id: 4,\n product: \"Bluetooth Speaker\",\n user_email: \"sarah.wilson@example.com\",\n date_purchased: \"2024-01-12\",\n price: 79.99,\n image: \"https://images.unsplash.com/photo-1608043152269-423dbba4e7e1?w=200&h=200&fit=crop\",\n },\n {\n id: 5,\n product: \"Gaming Mouse\",\n user_email: \"alex.brown@example.com\",\n date_purchased: \"2024-01-11\",\n price: 89.99,\n image: \"https://images.unsplash.com/photo-1527814050087-3793815479db?w=200&h=200&fit=crop\",\n },\n {\n id: 6,\n product: \"USB-C Hub\",\n user_email: \"emily.davis@example.com\",\n date_purchased: \"2024-01-10\",\n price: 39.99,\n image: \"https://images.unsplash.com/photo-1558618047-3c8c76ca7d13?w=200&h=200&fit=crop\",\n },\n {\n id: 7,\n product: \"Phone Case\",\n user_email: \"david.miller@example.com\",\n date_purchased: \"2024-01-09\",\n price: 24.99,\n image: \"https://images.unsplash.com/photo-1601944177325-f8867652837f?w=200&h=200&fit=crop\",\n },\n {\n id: 8,\n product: \"Tablet Stand\",\n user_email: \"lisa.garcia@example.com\",\n date_purchased: \"2024-01-08\",\n price: 34.99,\n image: \"https://images.unsplash.com/photo-1544244015-0df4b3ffc6b0?w=200&h=200&fit=crop\",\n },\n ];\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getOrderDetailsApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getOrderDetailsApi\", [\n new JavaScript(\"getOrderDetails\", {\n fn: ({ OrdersTable }) => {\n const order = OrdersTable.selectedRow;\n if (!order) return {};\n \n // Generate a user_id if not present (for display purposes)\n const userId = order.user_id || Math.floor(Math.random() * 10000) + 1000;\n \n return {\n \"Order ID\": order.id,\n \"Product\": order.product,\n \"Customer Email\": order.user_email,\n \"User ID\": userId,\n \"Date Purchased\": order.date_purchased,\n \"Price\": `$${order.price}`,\n \"Image URL\": order.image || \"N/A\",\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getShippingInfoApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getShippingInfoApi\", [\n new JavaScript(\"getShippingInfo\", {\n fn: ({ OrdersTable }) => {\n const order = OrdersTable.selectedRow;\n if (!order) return { \"Shipping Status\": \"No shipping info\" };\n \n const orderId = order.id;\n \n // Generate shipping data based on order ID patterns\n const shippingStatuses = [\"Processing\", \"In Transit\", \"Delivered\", \"Out for Delivery\"];\n const locations = [\"Los Angeles, CA\", \"Phoenix, AZ\", \"Denver, CO\", \"Chicago, IL\", \"Miami, FL\"];\n const activities = [\"Order received\", \"Package shipped\", \"In transit\", \"Out for delivery\", \"Delivered\"];\n \n const statusIndex = orderId % shippingStatuses.length;\n const status = shippingStatuses[statusIndex];\n \n // Generate 2-3 shipping activities\n const numActivities = 2 + (orderId % 2);\n const history = [];\n \n for (let i = 0; i < numActivities; i++) {\n const date = new Date();\n date.setDate(date.getDate() - (numActivities - i));\n const timestamp = date.toISOString().replace('T', ' ').substring(0, 19);\n \n history.push({\n TIMESTAMP: timestamp,\n ACTIVITY: activities[i % activities.length],\n LOCATION: locations[i % locations.length],\n });\n }\n \n const result = {\n \"Shipping Status\": status,\n };\n \n history.forEach((item, index) => {\n result[`Activity ${index + 1}`] = `${item.ACTIVITY} - ${item.LOCATION} (${item.TIMESTAMP})`;\n });\n \n return result;\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/createOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"createOrderApi\", [\n new Conditional(\"validateInputs\", {\n if: {\n when: ({ NewOrderProductInput, NewOrderUserEmailInput, NewOrderPriceInput }) =>\n !NewOrderProductInput.value || \n !NewOrderUserEmailInput.value || \n !NewOrderPriceInput.value,\n then: [\n new Throw(\"validation_error\", {\n error: \"Product name, customer email, and price are required\",\n }),\n ],\n },\n }),\n \n new JavaScript(\"createOrder\", {\n fn: ({ NewOrderProductInput, NewOrderUserEmailInput, NewOrderPriceInput, NewOrderImageInput }) => {\n // Generate a new order ID and user ID\n const orderId = Math.floor(Math.random() * 1000) + 100;\n const userId = Math.floor(Math.random() * 10000) + 1;\n const currentDate = new Date().toISOString().split('T')[0];\n \n // Simulate order creation\n console.log(\"Creating order:\", {\n id: orderId,\n user_id: userId,\n product: NewOrderProductInput.value,\n user_email: NewOrderUserEmailInput.value,\n price: NewOrderPriceInput.value,\n date_purchased: currentDate,\n image: NewOrderImageInput.value || \"\",\n });\n \n return {\n success: true,\n message: \"Order created successfully\",\n orderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/updateOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"updateOrderApi\", [\n new Conditional(\"validateInputs\", {\n if: {\n when: ({ EditOrderProductInput, EditOrderUserEmailInput, EditOrderPriceInput }) =>\n !EditOrderProductInput.value || \n !EditOrderUserEmailInput.value || \n !EditOrderPriceInput.value,\n then: [\n new Throw(\"validation_error\", {\n error: \"Product name, customer email, and price are required\",\n }),\n ],\n },\n }),\n \n new JavaScript(\"updateOrder\", {\n fn: ({ OrdersTable, EditOrderProductInput, EditOrderUserEmailInput, EditOrderPriceInput, EditOrderImageInput }) => {\n const orderId = OrdersTable.selectedRow?.id;\n if (!orderId) {\n throw new Error(\"No order selected for update\");\n }\n \n // Simulate order update\n console.log(\"Updating order:\", {\n id: orderId,\n product: EditOrderProductInput.value,\n user_email: EditOrderUserEmailInput.value,\n price: EditOrderPriceInput.value,\n image: EditOrderImageInput.value || \"\",\n });\n \n return {\n success: true,\n message: \"Order updated successfully\",\n orderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/deleteOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"deleteOrderApi\", [\n new JavaScript(\"deleteOrder\", {\n fn: ({ OrdersTable }) => {\n const orderId = OrdersTable.selectedRow?.id;\n if (!orderId) {\n throw new Error(\"No order selected for deletion\");\n }\n \n // Simulate order deletion\n console.log(\"Deleting order:\", {\n id: orderId,\n product: OrdersTable.selectedRow?.product,\n user_email: OrdersTable.selectedRow?.user_email,\n });\n \n return {\n success: true,\n message: \"Order deleted successfully\",\n deletedOrderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n</boltArtifact>\n\nThe order management app is now complete with all the requested features:\n\n## **Key Features:**\n\n### **Metrics Dashboard**\n- **Total Orders**: Count of all records from DemoOrders\n- **Total Revenue**: Sum of price field from DemoOrders \n- **Orders This Month**: Count of orders from current month\n- **Active Shipments**: Count of records in DemoShipping SHIPPING_STATUS table\n\n### **Orders Management**\n- **Orders Table**: Displays all orders with id, product, user_email, date_purchased, price\n- **Product Filter**: Real-time text filtering on product names\n- **CRUD Operations**:\n - **Create**: Add new orders with product, email, price, and optional image\n - **Update**: Edit existing orders (click row to edit)\n - **Delete**: Remove orders (delete button in edit modal)\n - **View Details**: See full order info plus shipping status (click \"View Details\" button)\n\n### **Shipping Integration**\n- **Order Details Modal**: Shows order information plus shipping status and recent activity from DemoShipping tables\n- **Real-time Data**: Fetches shipping status and history by ORDER_ID\n\n### **User Experience**\n- Clean, professional interface with metric cards\n- Intuitive modals for all CRUD operations\n- Real-time filtering and data updates\n- Proper validation and error handling\n- Responsive design with consistent spacing\n\nThe app automatically loads metrics and orders data on page load, and all operations refresh the data to keep everything in sync.";
1
+ declare const _default: "BUILDING APPLICATION FROM MOCK RESPONSE: I'll create a comprehensive order management app with CRUD operations using the DemoOrders and DemoShipping databases.\n\n<boltArtifact id=\"order-management-app\" title=\"Order Management App\">\n<boltAction type=\"file\" filePath=\"routes.json\">\n{\n \"/\": {\n \"file\": \"Page1/index.tsx\"\n }\n}\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/scope.ts\">\nimport {\n createScope,\n SbApi,\n SbVariable,\n SbVariablePersistence,\n computed,\n} from \"@superblocksteam/library\";\n\nexport const Page1Scope = createScope<{\n OrdersTable: any;\n ProductFilterInput: any;\n CreateOrderModal: any;\n EditOrderModal: any;\n OrderDetailsModal: any;\n CreateOrderButton: any;\n NewOrderProductInput: any;\n NewOrderUserEmailInput: any;\n NewOrderPriceInput: any;\n NewOrderImageInput: any;\n EditOrderProductInput: any;\n EditOrderUserEmailInput: any;\n EditOrderPriceInput: any;\n EditOrderImageInput: any;\n}>(\n ({\n entities: {\n OrdersTable,\n ProductFilterInput,\n getMetricsApi,\n getOrdersApi,\n getOrderDetailsApi,\n getShippingInfoApi,\n createOrderApi,\n updateOrderApi,\n deleteOrderApi,\n NewOrderProductInput,\n NewOrderUserEmailInput,\n NewOrderPriceInput,\n NewOrderImageInput,\n EditOrderProductInput,\n EditOrderUserEmailInput,\n EditOrderPriceInput,\n EditOrderImageInput,\n },\n }) => ({\n getMetricsApi: SbApi({}),\n getOrdersApi: SbApi({}),\n getOrderDetailsApi: SbApi({}),\n getShippingInfoApi: SbApi({}),\n createOrderApi: SbApi({}),\n updateOrderApi: SbApi({}),\n deleteOrderApi: SbApi({}),\n \n filteredOrdersVar: SbVariable({\n defaultValue: computed(() => {\n const orders = getOrdersApi.response || [];\n const filterText = ProductFilterInput.value?.toLowerCase() || '';\n \n if (!filterText) return orders;\n \n return orders.filter((order: any) =>\n order.product?.toLowerCase().includes(filterText)\n );\n }),\n persistence: SbVariablePersistence.TEMPORARY,\n }),\n }),\n {\n name: \"Page1\",\n }\n);\n\nexport const Page1 = Page1Scope.entities;\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/index.tsx\">\nimport {\n Page,\n Dim,\n Section,\n Column,\n registerPage,\n Table,\n computed,\n Container,\n Input,\n Button,\n EventFlow,\n Modal,\n Text,\n Theme,\n} from \"@superblocksteam/library\";\nimport MetricCard from \"components/MetricCard/MetricCard\";\nimport AppHeader from \"components/AppHeader/AppHeader\";\nimport KeyValue from \"components/KeyValue\";\nimport { Page1, Page1Scope } from \"./scope\";\n\nfunction PageContent() {\n const {\n OrdersTable,\n ProductFilterInput,\n CreateOrderModal,\n EditOrderModal,\n CreateOrderButton,\n OrderDetailsModal,\n NewOrderProductInput,\n NewOrderUserEmailInput,\n NewOrderPriceInput,\n NewOrderImageInput,\n EditOrderProductInput,\n EditOrderUserEmailInput,\n EditOrderPriceInput,\n EditOrderImageInput,\n getMetricsApi,\n getOrdersApi,\n getOrderDetailsApi,\n getShippingInfoApi,\n createOrderApi,\n updateOrderApi,\n deleteOrderApi,\n filteredOrdersVar,\n } = Page1;\n\n return (\n <Page\n name=\"Page1\"\n height={Dim.fill()}\n width={Dim.fill()}\n onLoad={EventFlow.runApis([getMetricsApi, getOrdersApi])}\n >\n <Section height={Dim.fill()}>\n <Column width={Dim.fill()} spacing={Dim.px(0)}>\n <AppHeader\n title=\"Order Management\"\n avatarUrl=\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=40&h=40&fit=crop&crop=face\"\n userEmail=\"admin@company.com\"\n height={Dim.fit()}\n />\n \n <Container\n layout=\"vertical\"\n spacing={Dim.px(24)}\n padding={{\n top: Dim.px(24),\n bottom: Dim.px(24),\n left: Dim.px(24),\n right: Dim.px(24),\n }}\n height={Dim.fill()}\n >\n {/* Metrics Cards */}\n <Container layout=\"horizontal\" spacing={Dim.px(16)}>\n <MetricCard\n title=\"Total Orders\"\n value={computed(() => getMetricsApi.response?.totalOrders?.toString() || \"0\")}\n icon=\"receipt_long\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Total Revenue\"\n value={computed(() => `$${getMetricsApi.response?.totalRevenue?.toLocaleString() || \"0\"}`)}\n icon=\"attach_money\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Orders This Month\"\n value={computed(() => getMetricsApi.response?.ordersThisMonth?.toString() || \"0\")}\n icon=\"calendar_today\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Active Shipments\"\n value={computed(() => getMetricsApi.response?.activeShipments?.toString() || \"0\")}\n icon=\"local_shipping\"\n width={Dim.fill()}\n />\n </Container>\n\n {/* Orders Section */}\n <Container layout=\"vertical\" spacing={Dim.px(16)} variant=\"card\">\n <Container layout=\"horizontal\" spacing={Dim.px(12)} verticalAlign=\"bottom\">\n <Input\n bind={ProductFilterInput}\n label=\"Filter by Product\"\n placeholder=\"Search products...\"\n width={Dim.px(300)}\n />\n <Button\n bind={CreateOrderButton}\n label=\"Create Order\"\n variant=\"primary\"\n icon=\"add\"\n onClick={EventFlow.controlModal(CreateOrderModal, \"open\")}\n />\n </Container>\n\n <Table\n bind={OrdersTable}\n tableData={computed(() => filteredOrdersVar.value)}\n columns={{\n id: {\n label: \"Order ID\",\n columnType: \"text\",\n },\n product: {\n label: \"Product\",\n columnType: \"text\",\n },\n user_email: {\n label: \"Customer Email\",\n columnType: \"email\",\n },\n date_purchased: {\n label: \"Date Purchased\",\n columnType: \"date\",\n inputFormat: \"YYYY-MM-DD\",\n outputFormat: \"MM/DD/YYYY\",\n },\n price: {\n label: \"Price\",\n columnType: \"currency\",\n currency: \"USD\",\n },\n actions: {\n label: \"Actions\",\n columnType: \"button\",\n buttonLabel: \"View Details\",\n onClick: EventFlow.runJS(() => {\n getOrderDetailsApi.run();\n getShippingInfoApi.run();\n }).controlModal(OrderDetailsModal, \"open\"),\n },\n }}\n onRowClick={EventFlow.runJS(() => {\n EditOrderProductInput.text = OrdersTable.selectedRow?.product || \"\";\n EditOrderUserEmailInput.text = OrdersTable.selectedRow?.user_email || \"\";\n EditOrderPriceInput.text = OrdersTable.selectedRow?.price?.toString() || \"\";\n EditOrderImageInput.text = OrdersTable.selectedRow?.image || \"\";\n }).controlModal(EditOrderModal, \"open\")}\n height={Dim.px(400)}\n />\n </Container>\n </Container>\n </Column>\n </Section>\n\n {/* Create Order Modal */}\n <Modal bind={CreateOrderModal}>\n <Container layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <Text text=\"Create New Order\" textStyle={{ variant: \"heading3\" }} />\n \n <Container layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <Input\n bind={NewOrderProductInput}\n label=\"Product Name\"\n placeholder=\"Enter product name\"\n width={Dim.fill()}\n isRequired={true}\n />\n <Input\n bind={NewOrderUserEmailInput}\n label=\"Customer Email\"\n placeholder=\"Enter customer email\"\n inputType=\"EMAIL\"\n width={Dim.fill()}\n isRequired={true}\n />\n <Input\n bind={NewOrderPriceInput}\n label=\"Price\"\n placeholder=\"Enter price\"\n inputType=\"NUMBER\"\n width={Dim.fill()}\n isRequired={true}\n />\n <Input\n bind={NewOrderImageInput}\n label=\"Product Image URL\"\n placeholder=\"Enter image URL (optional)\"\n width={Dim.fill()}\n />\n </Container>\n\n <Container layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <Button\n label=\"Cancel\"\n variant=\"secondary\"\n onClick={EventFlow.runJS(() => {\n NewOrderProductInput.text = \"\";\n NewOrderUserEmailInput.text = \"\";\n NewOrderPriceInput.text = \"\";\n NewOrderImageInput.text = \"\";\n }).controlModal(CreateOrderModal, \"close\")}\n />\n <Button\n label=\"Create Order\"\n variant=\"primary\"\n onClick={EventFlow.runApis([createOrderApi])\n .runApis([getMetricsApi, getOrdersApi])\n .runJS(() => {\n NewOrderProductInput.text = \"\";\n NewOrderUserEmailInput.text = \"\";\n NewOrderPriceInput.text = \"\";\n NewOrderImageInput.text = \"\";\n })\n .controlModal(CreateOrderModal, \"close\")}\n />\n </Container>\n </Container>\n </Modal>\n\n {/* Edit Order Modal */}\n <Modal bind={EditOrderModal}>\n <Container layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <Container layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"space-between\" width={Dim.fill()}>\n <Text \n width={Dim.fit()}\n text={computed(() => `Edit Order #${OrdersTable.selectedRow?.id || \"\"}`)} \n textStyle={{ variant: \"heading3\" }} \n />\n </Container>\n \n <Container layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <Input\n bind={EditOrderProductInput}\n label=\"Product Name\"\n width={Dim.fill()}\n isRequired={true}\n />\n <Input\n bind={EditOrderUserEmailInput}\n label=\"Customer Email\"\n inputType=\"EMAIL\"\n width={Dim.fill()}\n isRequired={true}\n />\n <Input\n bind={EditOrderPriceInput}\n label=\"Price\"\n inputType=\"NUMBER\"\n width={Dim.fill()}\n isRequired={true}\n />\n <Input\n bind={EditOrderImageInput}\n label=\"Product Image URL\"\n width={Dim.fill()}\n />\n </Container>\n\n <Container layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <Button\n label=\"Cancel\"\n variant=\"secondary\"\n onClick={EventFlow.controlModal(EditOrderModal, \"close\")}\n />\n <Button\n label=\"Update Order\"\n variant=\"primary\"\n onClick={EventFlow.runApis([updateOrderApi])\n .runApis([getMetricsApi, getOrdersApi])\n .controlModal(EditOrderModal, \"close\")}\n />\n </Container>\n </Container>\n </Modal>\n\n {/* Order Details Modal */}\n <Modal bind={OrderDetailsModal}>\n <Container layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <Text \n text={computed(() => `Order Details #${OrdersTable.selectedRow?.id || \"\"}`)} \n textStyle={{ variant: \"heading3\" }} \n />\n \n <Container layout=\"horizontal\" spacing={Dim.px(24)} width={Dim.fill()}>\n <Container layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <KeyValue\n label=\"Order Information\"\n data={computed(() => getOrderDetailsApi.response || {})}\n />\n </Container>\n \n <Container layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <KeyValue\n label=\"Shipping Information\"\n data={computed(() => getShippingInfoApi.response || {})}\n />\n </Container>\n </Container>\n\n <Container layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <Button\n label=\"Close\"\n variant=\"secondary\"\n onClick={EventFlow.controlModal(OrderDetailsModal, \"close\")}\n />\n </Container>\n </Container>\n </Modal>\n </Page>\n );\n}\n\nexport default registerPage(PageContent, Page1Scope);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getMetricsApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getMetricsApi\", [\n new JavaScript(\"getMetrics\", {\n fn: () => {\n return {\n totalOrders: 45,\n totalRevenue: 12489.50,\n ordersThisMonth: 8,\n activeShipments: 12,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getOrdersApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getOrdersApi\", [\n new JavaScript(\"getOrders\", {\n fn: () => {\n return [\n {\n id: 1,\n product: \"Wireless Headphones\",\n user_email: \"john.doe@example.com\",\n date_purchased: \"2024-01-15\",\n price: 199.99,\n image: \"https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=200&h=200&fit=crop\",\n },\n {\n id: 2,\n product: \"Smart Watch\",\n user_email: \"jane.smith@example.com\",\n date_purchased: \"2024-01-14\",\n price: 299.99,\n image: \"https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=200&h=200&fit=crop\",\n },\n {\n id: 3,\n product: \"Laptop Stand\",\n user_email: \"mike.johnson@example.com\",\n date_purchased: \"2024-01-13\",\n price: 49.99,\n image: \"https://images.unsplash.com/photo-1527864550417-7fd91fc51a46?w=200&h=200&fit=crop\",\n },\n {\n id: 4,\n product: \"Bluetooth Speaker\",\n user_email: \"sarah.wilson@example.com\",\n date_purchased: \"2024-01-12\",\n price: 79.99,\n image: \"https://images.unsplash.com/photo-1608043152269-423dbba4e7e1?w=200&h=200&fit=crop\",\n },\n {\n id: 5,\n product: \"Gaming Mouse\",\n user_email: \"alex.brown@example.com\",\n date_purchased: \"2024-01-11\",\n price: 89.99,\n image: \"https://images.unsplash.com/photo-1527814050087-3793815479db?w=200&h=200&fit=crop\",\n },\n {\n id: 6,\n product: \"USB-C Hub\",\n user_email: \"emily.davis@example.com\",\n date_purchased: \"2024-01-10\",\n price: 39.99,\n image: \"https://images.unsplash.com/photo-1558618047-3c8c76ca7d13?w=200&h=200&fit=crop\",\n },\n {\n id: 7,\n product: \"Phone Case\",\n user_email: \"david.miller@example.com\",\n date_purchased: \"2024-01-09\",\n price: 24.99,\n image: \"https://images.unsplash.com/photo-1601944177325-f8867652837f?w=200&h=200&fit=crop\",\n },\n {\n id: 8,\n product: \"Tablet Stand\",\n user_email: \"lisa.garcia@example.com\",\n date_purchased: \"2024-01-08\",\n price: 34.99,\n image: \"https://images.unsplash.com/photo-1544244015-0df4b3ffc6b0?w=200&h=200&fit=crop\",\n },\n ];\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getOrderDetailsApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getOrderDetailsApi\", [\n new JavaScript(\"getOrderDetails\", {\n fn: ({ OrdersTable }) => {\n const order = OrdersTable.selectedRow;\n if (!order) return {};\n \n // Generate a user_id if not present (for display purposes)\n const userId = order.user_id || Math.floor(Math.random() * 10000) + 1000;\n \n return {\n \"Order ID\": order.id,\n \"Product\": order.product,\n \"Customer Email\": order.user_email,\n \"User ID\": userId,\n \"Date Purchased\": order.date_purchased,\n \"Price\": `$${order.price}`,\n \"Image URL\": order.image || \"N/A\",\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getShippingInfoApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getShippingInfoApi\", [\n new JavaScript(\"getShippingInfo\", {\n fn: ({ OrdersTable }) => {\n const order = OrdersTable.selectedRow;\n if (!order) return { \"Shipping Status\": \"No shipping info\" };\n \n const orderId = order.id;\n \n // Generate shipping data based on order ID patterns\n const shippingStatuses = [\"Processing\", \"In Transit\", \"Delivered\", \"Out for Delivery\"];\n const locations = [\"Los Angeles, CA\", \"Phoenix, AZ\", \"Denver, CO\", \"Chicago, IL\", \"Miami, FL\"];\n const activities = [\"Order received\", \"Package shipped\", \"In transit\", \"Out for delivery\", \"Delivered\"];\n \n const statusIndex = orderId % shippingStatuses.length;\n const status = shippingStatuses[statusIndex];\n \n // Generate 2-3 shipping activities\n const numActivities = 2 + (orderId % 2);\n const history = [];\n \n for (let i = 0; i < numActivities; i++) {\n const date = new Date();\n date.setDate(date.getDate() - (numActivities - i));\n const timestamp = date.toISOString().replace('T', ' ').substring(0, 19);\n \n history.push({\n TIMESTAMP: timestamp,\n ACTIVITY: activities[i % activities.length],\n LOCATION: locations[i % locations.length],\n });\n }\n \n const result = {\n \"Shipping Status\": status,\n };\n \n history.forEach((item, index) => {\n result[`Activity ${index + 1}`] = `${item.ACTIVITY} - ${item.LOCATION} (${item.TIMESTAMP})`;\n });\n \n return result;\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/createOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"createOrderApi\", [\n new Conditional(\"validateInputs\", {\n if: {\n when: ({ NewOrderProductInput, NewOrderUserEmailInput, NewOrderPriceInput }) =>\n !NewOrderProductInput.value || \n !NewOrderUserEmailInput.value || \n !NewOrderPriceInput.value,\n then: [\n new Throw(\"validation_error\", {\n error: \"Product name, customer email, and price are required\",\n }),\n ],\n },\n }),\n \n new JavaScript(\"createOrder\", {\n fn: ({ NewOrderProductInput, NewOrderUserEmailInput, NewOrderPriceInput, NewOrderImageInput }) => {\n // Generate a new order ID and user ID\n const orderId = Math.floor(Math.random() * 1000) + 100;\n const userId = Math.floor(Math.random() * 10000) + 1;\n const currentDate = new Date().toISOString().split('T')[0];\n \n // Simulate order creation\n console.log(\"Creating order:\", {\n id: orderId,\n user_id: userId,\n product: NewOrderProductInput.value,\n user_email: NewOrderUserEmailInput.value,\n price: NewOrderPriceInput.value,\n date_purchased: currentDate,\n image: NewOrderImageInput.value || \"\",\n });\n \n return {\n success: true,\n message: \"Order created successfully\",\n orderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/updateOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"updateOrderApi\", [\n new Conditional(\"validateInputs\", {\n if: {\n when: ({ EditOrderProductInput, EditOrderUserEmailInput, EditOrderPriceInput }) =>\n !EditOrderProductInput.value || \n !EditOrderUserEmailInput.value || \n !EditOrderPriceInput.value,\n then: [\n new Throw(\"validation_error\", {\n error: \"Product name, customer email, and price are required\",\n }),\n ],\n },\n }),\n \n new JavaScript(\"updateOrder\", {\n fn: ({ OrdersTable, EditOrderProductInput, EditOrderUserEmailInput, EditOrderPriceInput, EditOrderImageInput }) => {\n const orderId = OrdersTable.selectedRow?.id;\n if (!orderId) {\n throw new Error(\"No order selected for update\");\n }\n \n // Simulate order update\n console.log(\"Updating order:\", {\n id: orderId,\n product: EditOrderProductInput.value,\n user_email: EditOrderUserEmailInput.value,\n price: EditOrderPriceInput.value,\n image: EditOrderImageInput.value || \"\",\n });\n \n return {\n success: true,\n message: \"Order updated successfully\",\n orderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/deleteOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"deleteOrderApi\", [\n new JavaScript(\"deleteOrder\", {\n fn: ({ OrdersTable }) => {\n const orderId = OrdersTable.selectedRow?.id;\n if (!orderId) {\n throw new Error(\"No order selected for deletion\");\n }\n \n // Simulate order deletion\n console.log(\"Deleting order:\", {\n id: orderId,\n product: OrdersTable.selectedRow?.product,\n user_email: OrdersTable.selectedRow?.user_email,\n });\n \n return {\n success: true,\n message: \"Order deleted successfully\",\n deletedOrderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n</boltArtifact>\n\nThe order management app is now complete with all the requested features:\n\n## **Key Features:**\n\n### **Metrics Dashboard**\n- **Total Orders**: Count of all records from DemoOrders\n- **Total Revenue**: Sum of price field from DemoOrders \n- **Orders This Month**: Count of orders from current month\n- **Active Shipments**: Count of records in DemoShipping SHIPPING_STATUS table\n\n### **Orders Management**\n- **Orders Table**: Displays all orders with id, product, user_email, date_purchased, price\n- **Product Filter**: Real-time text filtering on product names\n- **CRUD Operations**:\n - **Create**: Add new orders with product, email, price, and optional image\n - **Update**: Edit existing orders (click row to edit)\n - **Delete**: Remove orders (delete button in edit modal)\n - **View Details**: See full order info plus shipping status (click \"View Details\" button)\n\n### **Shipping Integration**\n- **Order Details Modal**: Shows order information plus shipping status and recent activity from DemoShipping tables\n- **Real-time Data**: Fetches shipping status and history by ORDER_ID\n\n### **User Experience**\n- Clean, professional interface with metric cards\n- Intuitive modals for all CRUD operations\n- Real-time filtering and data updates\n- Proper validation and error handling\n- Responsive design with consistent spacing\n\nThe app automatically loads metrics and orders data on page load, and all operations refresh the data to keep everything in sync.";
2
2
  export default _default;
3
3
  //# sourceMappingURL=orders-app.d.ts.map
@@ -11,14 +11,14 @@ export default `BUILDING APPLICATION FROM MOCK RESPONSE: I'll create a comprehen
11
11
 
12
12
  <boltAction type="file" filePath="pages/Page1/scope.ts">
13
13
  import {
14
- createSbScope,
14
+ createScope,
15
15
  SbApi,
16
16
  SbVariable,
17
17
  SbVariablePersistence,
18
- sbComputed,
18
+ computed,
19
19
  } from "@superblocksteam/library";
20
20
 
21
- export const Page1Scope = createSbScope<{
21
+ export const Page1Scope = createScope<{
22
22
  OrdersTable: any;
23
23
  ProductFilterInput: any;
24
24
  CreateOrderModal: any;
@@ -64,7 +64,7 @@ export const Page1Scope = createSbScope<{
64
64
  deleteOrderApi: SbApi({}),
65
65
 
66
66
  filteredOrdersVar: SbVariable({
67
- defaultValue: sbComputed(() => {
67
+ defaultValue: computed(() => {
68
68
  const orders = getOrdersApi.response || [];
69
69
  const filterText = ProductFilterInput.value?.toLowerCase() || '';
70
70
 
@@ -87,19 +87,19 @@ export const Page1 = Page1Scope.entities;
87
87
 
88
88
  <boltAction type="file" filePath="pages/Page1/index.tsx">
89
89
  import {
90
- SbPage,
90
+ Page,
91
91
  Dim,
92
- SbSection,
93
- SbColumn,
92
+ Section,
93
+ Column,
94
94
  registerPage,
95
- SbTable,
96
- sbComputed,
97
- SbContainer,
98
- SbInput,
99
- SbButton,
100
- SbEventFlow,
101
- SbModal,
102
- SbText,
95
+ Table,
96
+ computed,
97
+ Container,
98
+ Input,
99
+ Button,
100
+ EventFlow,
101
+ Modal,
102
+ Text,
103
103
  Theme,
104
104
  } from "@superblocksteam/library";
105
105
  import MetricCard from "components/MetricCard/MetricCard";
@@ -107,7 +107,7 @@ import AppHeader from "components/AppHeader/AppHeader";
107
107
  import KeyValue from "components/KeyValue";
108
108
  import { Page1, Page1Scope } from "./scope";
109
109
 
110
- function Page() {
110
+ function PageContent() {
111
111
  const {
112
112
  OrdersTable,
113
113
  ProductFilterInput,
@@ -134,14 +134,14 @@ function Page() {
134
134
  } = Page1;
135
135
 
136
136
  return (
137
- <SbPage
137
+ <Page
138
138
  name="Page1"
139
139
  height={Dim.fill()}
140
140
  width={Dim.fill()}
141
- onLoad={SbEventFlow.runApis([getMetricsApi, getOrdersApi])}
141
+ onLoad={EventFlow.runApis([getMetricsApi, getOrdersApi])}
142
142
  >
143
- <SbSection height={Dim.fill()}>
144
- <SbColumn width={Dim.fill()} spacing={Dim.px(0)}>
143
+ <Section height={Dim.fill()}>
144
+ <Column width={Dim.fill()} spacing={Dim.px(0)}>
145
145
  <AppHeader
146
146
  title="Order Management"
147
147
  avatarUrl="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=40&h=40&fit=crop&crop=face"
@@ -149,7 +149,7 @@ function Page() {
149
149
  height={Dim.fit()}
150
150
  />
151
151
 
152
- <SbContainer
152
+ <Container
153
153
  layout="vertical"
154
154
  spacing={Dim.px(24)}
155
155
  padding={{
@@ -161,54 +161,54 @@ function Page() {
161
161
  height={Dim.fill()}
162
162
  >
163
163
  {/* Metrics Cards */}
164
- <SbContainer layout="horizontal" spacing={Dim.px(16)}>
164
+ <Container layout="horizontal" spacing={Dim.px(16)}>
165
165
  <MetricCard
166
166
  title="Total Orders"
167
- value={sbComputed(() => getMetricsApi.response?.totalOrders?.toString() || "0")}
167
+ value={computed(() => getMetricsApi.response?.totalOrders?.toString() || "0")}
168
168
  icon="receipt_long"
169
169
  width={Dim.fill()}
170
170
  />
171
171
  <MetricCard
172
172
  title="Total Revenue"
173
- value={sbComputed(() => \`$\${getMetricsApi.response?.totalRevenue?.toLocaleString() || "0"}\`)}
173
+ value={computed(() => \`$\${getMetricsApi.response?.totalRevenue?.toLocaleString() || "0"}\`)}
174
174
  icon="attach_money"
175
175
  width={Dim.fill()}
176
176
  />
177
177
  <MetricCard
178
178
  title="Orders This Month"
179
- value={sbComputed(() => getMetricsApi.response?.ordersThisMonth?.toString() || "0")}
179
+ value={computed(() => getMetricsApi.response?.ordersThisMonth?.toString() || "0")}
180
180
  icon="calendar_today"
181
181
  width={Dim.fill()}
182
182
  />
183
183
  <MetricCard
184
184
  title="Active Shipments"
185
- value={sbComputed(() => getMetricsApi.response?.activeShipments?.toString() || "0")}
185
+ value={computed(() => getMetricsApi.response?.activeShipments?.toString() || "0")}
186
186
  icon="local_shipping"
187
187
  width={Dim.fill()}
188
188
  />
189
- </SbContainer>
189
+ </Container>
190
190
 
191
191
  {/* Orders Section */}
192
- <SbContainer layout="vertical" spacing={Dim.px(16)} variant="card">
193
- <SbContainer layout="horizontal" spacing={Dim.px(12)} verticalAlign="bottom">
194
- <SbInput
192
+ <Container layout="vertical" spacing={Dim.px(16)} variant="card">
193
+ <Container layout="horizontal" spacing={Dim.px(12)} verticalAlign="bottom">
194
+ <Input
195
195
  bind={ProductFilterInput}
196
196
  label="Filter by Product"
197
197
  placeholder="Search products..."
198
198
  width={Dim.px(300)}
199
199
  />
200
- <SbButton
200
+ <Button
201
201
  bind={CreateOrderButton}
202
202
  label="Create Order"
203
203
  variant="primary"
204
204
  icon="add"
205
- onClick={SbEventFlow.controlModal(CreateOrderModal, "open")}
205
+ onClick={EventFlow.controlModal(CreateOrderModal, "open")}
206
206
  />
207
- </SbContainer>
207
+ </Container>
208
208
 
209
- <SbTable
209
+ <Table
210
210
  bind={OrdersTable}
211
- tableData={sbComputed(() => filteredOrdersVar.value)}
211
+ tableData={computed(() => filteredOrdersVar.value)}
212
212
  columns={{
213
213
  id: {
214
214
  label: "Order ID",
@@ -237,13 +237,13 @@ function Page() {
237
237
  label: "Actions",
238
238
  columnType: "button",
239
239
  buttonLabel: "View Details",
240
- onClick: SbEventFlow.runJS(() => {
240
+ onClick: EventFlow.runJS(() => {
241
241
  getOrderDetailsApi.run();
242
242
  getShippingInfoApi.run();
243
243
  }).controlModal(OrderDetailsModal, "open"),
244
244
  },
245
245
  }}
246
- onRowClick={SbEventFlow.runJS(() => {
246
+ onRowClick={EventFlow.runJS(() => {
247
247
  EditOrderProductInput.text = OrdersTable.selectedRow?.product || "";
248
248
  EditOrderUserEmailInput.text = OrdersTable.selectedRow?.user_email || "";
249
249
  EditOrderPriceInput.text = OrdersTable.selectedRow?.price?.toString() || "";
@@ -251,25 +251,25 @@ function Page() {
251
251
  }).controlModal(EditOrderModal, "open")}
252
252
  height={Dim.px(400)}
253
253
  />
254
- </SbContainer>
255
- </SbContainer>
256
- </SbColumn>
257
- </SbSection>
254
+ </Container>
255
+ </Container>
256
+ </Column>
257
+ </Section>
258
258
 
259
259
  {/* Create Order Modal */}
260
- <SbModal bind={CreateOrderModal}>
261
- <SbContainer layout="vertical" spacing={Dim.px(24)} width={Dim.fill()}>
262
- <SbText text="Create New Order" textStyle={{ variant: "heading3" }} />
260
+ <Modal bind={CreateOrderModal}>
261
+ <Container layout="vertical" spacing={Dim.px(24)} width={Dim.fill()}>
262
+ <Text text="Create New Order" textStyle={{ variant: "heading3" }} />
263
263
 
264
- <SbContainer layout="vertical" spacing={Dim.px(16)} width={Dim.fill()}>
265
- <SbInput
264
+ <Container layout="vertical" spacing={Dim.px(16)} width={Dim.fill()}>
265
+ <Input
266
266
  bind={NewOrderProductInput}
267
267
  label="Product Name"
268
268
  placeholder="Enter product name"
269
269
  width={Dim.fill()}
270
270
  isRequired={true}
271
271
  />
272
- <SbInput
272
+ <Input
273
273
  bind={NewOrderUserEmailInput}
274
274
  label="Customer Email"
275
275
  placeholder="Enter customer email"
@@ -277,7 +277,7 @@ function Page() {
277
277
  width={Dim.fill()}
278
278
  isRequired={true}
279
279
  />
280
- <SbInput
280
+ <Input
281
281
  bind={NewOrderPriceInput}
282
282
  label="Price"
283
283
  placeholder="Enter price"
@@ -285,29 +285,29 @@ function Page() {
285
285
  width={Dim.fill()}
286
286
  isRequired={true}
287
287
  />
288
- <SbInput
288
+ <Input
289
289
  bind={NewOrderImageInput}
290
290
  label="Product Image URL"
291
291
  placeholder="Enter image URL (optional)"
292
292
  width={Dim.fill()}
293
293
  />
294
- </SbContainer>
294
+ </Container>
295
295
 
296
- <SbContainer layout="horizontal" spacing={Dim.px(12)} horizontalAlign="right" width={Dim.fill()}>
297
- <SbButton
296
+ <Container layout="horizontal" spacing={Dim.px(12)} horizontalAlign="right" width={Dim.fill()}>
297
+ <Button
298
298
  label="Cancel"
299
299
  variant="secondary"
300
- onClick={SbEventFlow.runJS(() => {
300
+ onClick={EventFlow.runJS(() => {
301
301
  NewOrderProductInput.text = "";
302
302
  NewOrderUserEmailInput.text = "";
303
303
  NewOrderPriceInput.text = "";
304
304
  NewOrderImageInput.text = "";
305
305
  }).controlModal(CreateOrderModal, "close")}
306
306
  />
307
- <SbButton
307
+ <Button
308
308
  label="Create Order"
309
309
  variant="primary"
310
- onClick={SbEventFlow.runApis([createOrderApi])
310
+ onClick={EventFlow.runApis([createOrderApi])
311
311
  .runApis([getMetricsApi, getOrdersApi])
312
312
  .runJS(() => {
313
313
  NewOrderProductInput.text = "";
@@ -317,104 +317,104 @@ function Page() {
317
317
  })
318
318
  .controlModal(CreateOrderModal, "close")}
319
319
  />
320
- </SbContainer>
321
- </SbContainer>
322
- </SbModal>
320
+ </Container>
321
+ </Container>
322
+ </Modal>
323
323
 
324
324
  {/* Edit Order Modal */}
325
- <SbModal bind={EditOrderModal}>
326
- <SbContainer layout="vertical" spacing={Dim.px(24)} width={Dim.fill()}>
327
- <SbContainer layout="horizontal" spacing={Dim.px(12)} horizontalAlign="space-between" width={Dim.fill()}>
328
- <SbText
325
+ <Modal bind={EditOrderModal}>
326
+ <Container layout="vertical" spacing={Dim.px(24)} width={Dim.fill()}>
327
+ <Container layout="horizontal" spacing={Dim.px(12)} horizontalAlign="space-between" width={Dim.fill()}>
328
+ <Text
329
329
  width={Dim.fit()}
330
- text={sbComputed(() => \`Edit Order #\${OrdersTable.selectedRow?.id || ""}\`)}
330
+ text={computed(() => \`Edit Order #\${OrdersTable.selectedRow?.id || ""}\`)}
331
331
  textStyle={{ variant: "heading3" }}
332
332
  />
333
- </SbContainer>
333
+ </Container>
334
334
 
335
- <SbContainer layout="vertical" spacing={Dim.px(16)} width={Dim.fill()}>
336
- <SbInput
335
+ <Container layout="vertical" spacing={Dim.px(16)} width={Dim.fill()}>
336
+ <Input
337
337
  bind={EditOrderProductInput}
338
338
  label="Product Name"
339
339
  width={Dim.fill()}
340
340
  isRequired={true}
341
341
  />
342
- <SbInput
342
+ <Input
343
343
  bind={EditOrderUserEmailInput}
344
344
  label="Customer Email"
345
345
  inputType="EMAIL"
346
346
  width={Dim.fill()}
347
347
  isRequired={true}
348
348
  />
349
- <SbInput
349
+ <Input
350
350
  bind={EditOrderPriceInput}
351
351
  label="Price"
352
352
  inputType="NUMBER"
353
353
  width={Dim.fill()}
354
354
  isRequired={true}
355
355
  />
356
- <SbInput
356
+ <Input
357
357
  bind={EditOrderImageInput}
358
358
  label="Product Image URL"
359
359
  width={Dim.fill()}
360
360
  />
361
- </SbContainer>
361
+ </Container>
362
362
 
363
- <SbContainer layout="horizontal" spacing={Dim.px(12)} horizontalAlign="right" width={Dim.fill()}>
364
- <SbButton
363
+ <Container layout="horizontal" spacing={Dim.px(12)} horizontalAlign="right" width={Dim.fill()}>
364
+ <Button
365
365
  label="Cancel"
366
366
  variant="secondary"
367
- onClick={SbEventFlow.controlModal(EditOrderModal, "close")}
367
+ onClick={EventFlow.controlModal(EditOrderModal, "close")}
368
368
  />
369
- <SbButton
369
+ <Button
370
370
  label="Update Order"
371
371
  variant="primary"
372
- onClick={SbEventFlow.runApis([updateOrderApi])
372
+ onClick={EventFlow.runApis([updateOrderApi])
373
373
  .runApis([getMetricsApi, getOrdersApi])
374
374
  .controlModal(EditOrderModal, "close")}
375
375
  />
376
- </SbContainer>
377
- </SbContainer>
378
- </SbModal>
376
+ </Container>
377
+ </Container>
378
+ </Modal>
379
379
 
380
380
  {/* Order Details Modal */}
381
- <SbModal bind={OrderDetailsModal}>
382
- <SbContainer layout="vertical" spacing={Dim.px(24)} width={Dim.fill()}>
383
- <SbText
384
- text={sbComputed(() => \`Order Details #\${OrdersTable.selectedRow?.id || ""}\`)}
381
+ <Modal bind={OrderDetailsModal}>
382
+ <Container layout="vertical" spacing={Dim.px(24)} width={Dim.fill()}>
383
+ <Text
384
+ text={computed(() => \`Order Details #\${OrdersTable.selectedRow?.id || ""}\`)}
385
385
  textStyle={{ variant: "heading3" }}
386
386
  />
387
387
 
388
- <SbContainer layout="horizontal" spacing={Dim.px(24)} width={Dim.fill()}>
389
- <SbContainer layout="vertical" spacing={Dim.px(16)} width={Dim.fill()}>
388
+ <Container layout="horizontal" spacing={Dim.px(24)} width={Dim.fill()}>
389
+ <Container layout="vertical" spacing={Dim.px(16)} width={Dim.fill()}>
390
390
  <KeyValue
391
391
  label="Order Information"
392
- data={sbComputed(() => getOrderDetailsApi.response || {})}
392
+ data={computed(() => getOrderDetailsApi.response || {})}
393
393
  />
394
- </SbContainer>
394
+ </Container>
395
395
 
396
- <SbContainer layout="vertical" spacing={Dim.px(16)} width={Dim.fill()}>
396
+ <Container layout="vertical" spacing={Dim.px(16)} width={Dim.fill()}>
397
397
  <KeyValue
398
398
  label="Shipping Information"
399
- data={sbComputed(() => getShippingInfoApi.response || {})}
399
+ data={computed(() => getShippingInfoApi.response || {})}
400
400
  />
401
- </SbContainer>
402
- </SbContainer>
401
+ </Container>
402
+ </Container>
403
403
 
404
- <SbContainer layout="horizontal" spacing={Dim.px(12)} horizontalAlign="right" width={Dim.fill()}>
405
- <SbButton
404
+ <Container layout="horizontal" spacing={Dim.px(12)} horizontalAlign="right" width={Dim.fill()}>
405
+ <Button
406
406
  label="Close"
407
407
  variant="secondary"
408
- onClick={SbEventFlow.controlModal(OrderDetailsModal, "close")}
408
+ onClick={EventFlow.controlModal(OrderDetailsModal, "close")}
409
409
  />
410
- </SbContainer>
411
- </SbContainer>
412
- </SbModal>
413
- </SbPage>
410
+ </Container>
411
+ </Container>
412
+ </Modal>
413
+ </Page>
414
414
  );
415
415
  }
416
416
 
417
- export default registerPage(Page, Page1Scope);
417
+ export default registerPage(PageContent, Page1Scope);
418
418
  </boltAction>
419
419
 
420
420
  <boltAction type="file" filePath="pages/Page1/apis/getMetricsApi.ts">
@@ -1,3 +1,3 @@
1
- declare const _default: "BUILDING APPLICATION FROM MOCK RESPONSE: I'll create an app with an API that returns \"Hello World from API App Generation\" and connect it to a text component.\n\n<boltArtifact id=\"hello-world-api-app\" title=\"Hello World API App\">\n<boltAction type=\"file\" filePath=\"pages/Page1/scope.ts\">\nimport { createSbScope, SbApi } from \"@superblocksteam/library\";\n\nexport const Page1Scope = createSbScope<{\n HelloText: any;\n}>(\n () => ({\n getHelloWorldApi: SbApi({}),\n }),\n {\n name: \"Page1\",\n }\n);\n\nexport const Page1 = Page1Scope.entities;\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/index.tsx\">\nimport {\n SbPage,\n Dim,\n SbSection,\n SbColumn,\n SbText,\n SbButton,\n SbEventFlow,\n sbComputed,\n registerPage,\n} from \"@superblocksteam/library\";\nimport { Page1, Page1Scope } from \"./scope\";\n\nfunction Page() {\n const { HelloText, getHelloWorldApi } = Page1;\n\n return (\n <SbPage \n name=\"Page1\" \n height={Dim.fill()} \n width={Dim.fill()}\n onLoad={SbEventFlow.runApis([getHelloWorldApi])}\n >\n <SbSection height={Dim.fill()}>\n <SbColumn width={Dim.fill()} layout=\"vertical\" spacing={Dim.px(12)}>\n <SbButton\n label=\"Fetch Hello World\"\n onClick={SbEventFlow.runApis([getHelloWorldApi])}\n />\n <SbText\n width={Dim.fit()}\n height={Dim.fit()}\n text={sbComputed(() => `${getHelloWorldApi.response || \"\"}`)}\n bind={HelloText}\n />\n </SbColumn>\n </SbSection>\n </SbPage>\n );\n}\n\nexport default registerPage(Page, Page1Scope);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getHelloWorldApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getHelloWorldApi\", [\n new JavaScript(\"returnHelloWorld\", {\n fn: () => {\n return \"Hello World from API App Generation\";\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"routes.json\">\n{\n \"/\": {\n \"file\": \"Page1/index.tsx\"\n }\n}\n</boltAction>\n</boltArtifact>\n\nThe app is now set up with:\n\n1. **API**: `getHelloWorldApi` that returns the string \"Hello World from API App Generation\"\n2. **Text**: Connected to display the API response value\n3. **Button**: To manually trigger the API call\n4. **Auto-load**: The API runs automatically when the page loads\n\nThe text will show the API response, and you can click the button to refresh the data from the API.";
1
+ declare const _default: "BUILDING APPLICATION FROM MOCK RESPONSE: I'll create an app with an API that returns \"Hello World from API App Generation\" and connect it to a text component.\n\n<boltArtifact id=\"hello-world-api-app\" title=\"Hello World API App\">\n<boltAction type=\"file\" filePath=\"pages/Page1/scope.ts\">\nimport { createScope, SbApi } from \"@superblocksteam/library\";\n\nexport const Page1Scope = createScope<{\n HelloText: any;\n}>(\n () => ({\n getHelloWorldApi: SbApi({}),\n }),\n {\n name: \"Page1\",\n }\n);\n\nexport const Page1 = Page1Scope.entities;\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/index.tsx\">\nimport {\n Page,\n Dim,\n Section,\n Column,\n Text,\n Button,\n EventFlow,\n computed,\n registerPage,\n} from \"@superblocksteam/library\";\nimport { Page1, Page1Scope } from \"./scope\";\n\nfunction PageContent() {\n const { HelloText, getHelloWorldApi } = Page1;\n\n return (\n <Page \n name=\"Page1\" \n height={Dim.fill()} \n width={Dim.fill()}\n onLoad={EventFlow.runApis([getHelloWorldApi])}\n >\n <Section height={Dim.fill()}>\n <Column width={Dim.fill()} layout=\"vertical\" spacing={Dim.px(12)}>\n <Button\n label=\"Fetch Hello World\"\n onClick={EventFlow.runApis([getHelloWorldApi])}\n />\n <Text\n width={Dim.fit()}\n height={Dim.fit()}\n text={computed(() => `${getHelloWorldApi.response || \"\"}`)}\n bind={HelloText}\n />\n </Column>\n </Section>\n </Page>\n );\n}\n\nexport default registerPage(PageContent, Page1Scope);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getHelloWorldApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getHelloWorldApi\", [\n new JavaScript(\"returnHelloWorld\", {\n fn: () => {\n return \"Hello World from API App Generation\";\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"routes.json\">\n{\n \"/\": {\n \"file\": \"Page1/index.tsx\"\n }\n}\n</boltAction>\n</boltArtifact>\n\nThe app is now set up with:\n\n1. **API**: `getHelloWorldApi` that returns the string \"Hello World from API App Generation\"\n2. **Text**: Connected to display the API response value\n3. **Button**: To manually trigger the API call\n4. **Auto-load**: The API runs automatically when the page loads\n\nThe text will show the API response, and you can click the button to refresh the data from the API.";
2
2
  export default _default;
3
3
  //# sourceMappingURL=smoketest.d.ts.map