@cratis/scene.blueprint.default 0.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 (558) hide show
  1. package/.storybook/main.ts +32 -0
  2. package/.storybook/preview.ts +20 -0
  3. package/ComponentName.ts +60 -0
  4. package/README.md +204 -0
  5. package/configuration/ColorScheme.ts +17 -0
  6. package/configuration/LayoutConfigProvider.tsx +182 -0
  7. package/configuration/LayoutConfigState.ts +46 -0
  8. package/configuration/LayoutMode.ts +50 -0
  9. package/configuration/MenuTheme.ts +24 -0
  10. package/configuration/index.ts +11 -0
  11. package/configuration/layoutConfigStorage.ts +102 -0
  12. package/configuration/layoutConfigTransitions.ts +150 -0
  13. package/configuration/layoutWrapperClasses.ts +68 -0
  14. package/defaultBlueprint.ts +66 -0
  15. package/defaultBlueprintComponents.ts +51 -0
  16. package/dist/cjs/ComponentName.js +33 -0
  17. package/dist/cjs/ComponentName.js.map +1 -0
  18. package/dist/cjs/configuration/ColorScheme.js +23 -0
  19. package/dist/cjs/configuration/ColorScheme.js.map +1 -0
  20. package/dist/cjs/configuration/LayoutConfigProvider.js +96 -0
  21. package/dist/cjs/configuration/LayoutConfigProvider.js.map +1 -0
  22. package/dist/cjs/configuration/LayoutMode.js +38 -0
  23. package/dist/cjs/configuration/LayoutMode.js.map +1 -0
  24. package/dist/cjs/configuration/MenuTheme.js +26 -0
  25. package/dist/cjs/configuration/MenuTheme.js.map +1 -0
  26. package/dist/cjs/configuration/layoutConfigStorage.js +85 -0
  27. package/dist/cjs/configuration/layoutConfigStorage.js.map +1 -0
  28. package/dist/cjs/configuration/layoutConfigTransitions.js +158 -0
  29. package/dist/cjs/configuration/layoutConfigTransitions.js.map +1 -0
  30. package/dist/cjs/configuration/layoutWrapperClasses.js +62 -0
  31. package/dist/cjs/configuration/layoutWrapperClasses.js.map +1 -0
  32. package/dist/cjs/defaultBlueprint.js +92 -0
  33. package/dist/cjs/defaultBlueprint.js.map +1 -0
  34. package/dist/cjs/defaultBlueprintComponents.js +54 -0
  35. package/dist/cjs/defaultBlueprintComponents.js.map +1 -0
  36. package/dist/cjs/gallery/GalleryScreenPreview.js +63 -0
  37. package/dist/cjs/gallery/GalleryScreenPreview.js.map +1 -0
  38. package/dist/cjs/gallery/TemplateSlotName.js +25 -0
  39. package/dist/cjs/gallery/TemplateSlotName.js.map +1 -0
  40. package/dist/cjs/gallery/applicationChrome.js +134 -0
  41. package/dist/cjs/gallery/applicationChrome.js.map +1 -0
  42. package/dist/cjs/gallery/authTemplates.js +234 -0
  43. package/dist/cjs/gallery/authTemplates.js.map +1 -0
  44. package/dist/cjs/gallery/componentNames.js +53 -0
  45. package/dist/cjs/gallery/componentNames.js.map +1 -0
  46. package/dist/cjs/gallery/composeScreen.js +99 -0
  47. package/dist/cjs/gallery/composeScreen.js.map +1 -0
  48. package/dist/cjs/gallery/dependencyComponentNames.js +72 -0
  49. package/dist/cjs/gallery/dependencyComponentNames.js.map +1 -0
  50. package/dist/cjs/gallery/dialogTemplates.js +161 -0
  51. package/dist/cjs/gallery/dialogTemplates.js.map +1 -0
  52. package/dist/cjs/gallery/elements.js +80 -0
  53. package/dist/cjs/gallery/elements.js.map +1 -0
  54. package/dist/cjs/gallery/navigation.js +129 -0
  55. package/dist/cjs/gallery/navigation.js.map +1 -0
  56. package/dist/cjs/gallery/nesting.js +129 -0
  57. package/dist/cjs/gallery/nesting.js.map +1 -0
  58. package/dist/cjs/gallery/previewProfile.js +68 -0
  59. package/dist/cjs/gallery/previewProfile.js.map +1 -0
  60. package/dist/cjs/gallery/resolveElementNames.js +63 -0
  61. package/dist/cjs/gallery/resolveElementNames.js.map +1 -0
  62. package/dist/cjs/gallery/screens.js +222 -0
  63. package/dist/cjs/gallery/screens.js.map +1 -0
  64. package/dist/cjs/gallery/statusTemplates.js +190 -0
  65. package/dist/cjs/gallery/statusTemplates.js.map +1 -0
  66. package/dist/cjs/gallery/supportTemplates.js +319 -0
  67. package/dist/cjs/gallery/supportTemplates.js.map +1 -0
  68. package/dist/cjs/gallery/widgets.js +94 -0
  69. package/dist/cjs/gallery/widgets.js.map +1 -0
  70. package/dist/cjs/gallery/workspaceTemplates.js +395 -0
  71. package/dist/cjs/gallery/workspaceTemplates.js.map +1 -0
  72. package/dist/cjs/index.js +220 -0
  73. package/dist/cjs/index.js.map +1 -0
  74. package/dist/cjs/layouts/LayoutName.js +19 -0
  75. package/dist/cjs/layouts/LayoutName.js.map +1 -0
  76. package/dist/cjs/layouts/SlotName.js +31 -0
  77. package/dist/cjs/layouts/SlotName.js.map +1 -0
  78. package/dist/cjs/layouts/appShell.js +160 -0
  79. package/dist/cjs/layouts/appShell.js.map +1 -0
  80. package/dist/cjs/layouts/defaultLayouts.js +20 -0
  81. package/dist/cjs/layouts/defaultLayouts.js.map +1 -0
  82. package/dist/cjs/layouts/flowBuilders.js +66 -0
  83. package/dist/cjs/layouts/flowBuilders.js.map +1 -0
  84. package/dist/cjs/layouts/fullPage.js +78 -0
  85. package/dist/cjs/layouts/fullPage.js.map +1 -0
  86. package/dist/cjs/layouts/shellComponents.js +29 -0
  87. package/dist/cjs/layouts/shellComponents.js.map +1 -0
  88. package/dist/cjs/package.json +3 -0
  89. package/dist/cjs/packageName.js +15 -0
  90. package/dist/cjs/packageName.js.map +1 -0
  91. package/dist/cjs/shell/AppShell.js +88 -0
  92. package/dist/cjs/shell/AppShell.js.map +1 -0
  93. package/dist/cjs/shell/Breadcrumb.js +33 -0
  94. package/dist/cjs/shell/Breadcrumb.js.map +1 -0
  95. package/dist/cjs/shell/ConfigPanel.js +128 -0
  96. package/dist/cjs/shell/ConfigPanel.js.map +1 -0
  97. package/dist/cjs/shell/Footer.js +28 -0
  98. package/dist/cjs/shell/Footer.js.map +1 -0
  99. package/dist/cjs/shell/FullPageShell.js +53 -0
  100. package/dist/cjs/shell/FullPageShell.js.map +1 -0
  101. package/dist/cjs/shell/LayoutModeSwitcher.js +58 -0
  102. package/dist/cjs/shell/LayoutModeSwitcher.js.map +1 -0
  103. package/dist/cjs/shell/Logo.js +44 -0
  104. package/dist/cjs/shell/Logo.js.map +1 -0
  105. package/dist/cjs/shell/Mask.js +34 -0
  106. package/dist/cjs/shell/Mask.js.map +1 -0
  107. package/dist/cjs/shell/Menu.js +36 -0
  108. package/dist/cjs/shell/Menu.js.map +1 -0
  109. package/dist/cjs/shell/MenuItem.js +65 -0
  110. package/dist/cjs/shell/MenuItem.js.map +1 -0
  111. package/dist/cjs/shell/PageHeader.js +43 -0
  112. package/dist/cjs/shell/PageHeader.js.map +1 -0
  113. package/dist/cjs/shell/RightPanel.js +30 -0
  114. package/dist/cjs/shell/RightPanel.js.map +1 -0
  115. package/dist/cjs/shell/Sidebar.js +51 -0
  116. package/dist/cjs/shell/Sidebar.js.map +1 -0
  117. package/dist/cjs/shell/ThemeOption.js +42 -0
  118. package/dist/cjs/shell/ThemeOption.js.map +1 -0
  119. package/dist/cjs/shell/ThemeSwitcher.js +50 -0
  120. package/dist/cjs/shell/ThemeSwitcher.js.map +1 -0
  121. package/dist/cjs/shell/Topbar.js +54 -0
  122. package/dist/cjs/shell/Topbar.js.map +1 -0
  123. package/dist/cjs/shell/UserMenu.js +68 -0
  124. package/dist/cjs/shell/UserMenu.js.map +1 -0
  125. package/dist/cjs/shell/elementProperties.js +56 -0
  126. package/dist/cjs/shell/elementProperties.js.map +1 -0
  127. package/dist/cjs/themes/LayoutThemeProvider.js +33 -0
  128. package/dist/cjs/themes/LayoutThemeProvider.js.map +1 -0
  129. package/dist/cjs/themes/blueprintThemeCompatibility.js +28 -0
  130. package/dist/cjs/themes/blueprintThemeCompatibility.js.map +1 -0
  131. package/dist/cjs/themes/dark.js +40 -0
  132. package/dist/cjs/themes/dark.js.map +1 -0
  133. package/dist/cjs/themes/defaultBlueprintThemes.js +19 -0
  134. package/dist/cjs/themes/defaultBlueprintThemes.js.map +1 -0
  135. package/dist/cjs/themes/light.js +43 -0
  136. package/dist/cjs/themes/light.js.map +1 -0
  137. package/dist/esm/ComponentName.d.ts +19 -0
  138. package/dist/esm/ComponentName.d.ts.map +1 -0
  139. package/dist/esm/ComponentName.js +31 -0
  140. package/dist/esm/ComponentName.js.map +1 -0
  141. package/dist/esm/configuration/ColorScheme.d.ts +6 -0
  142. package/dist/esm/configuration/ColorScheme.d.ts.map +1 -0
  143. package/dist/esm/configuration/ColorScheme.js +20 -0
  144. package/dist/esm/configuration/ColorScheme.js.map +1 -0
  145. package/dist/esm/configuration/LayoutConfigProvider.d.ts +29 -0
  146. package/dist/esm/configuration/LayoutConfigProvider.d.ts.map +1 -0
  147. package/dist/esm/configuration/LayoutConfigProvider.js +92 -0
  148. package/dist/esm/configuration/LayoutConfigProvider.js.map +1 -0
  149. package/dist/esm/configuration/LayoutConfigState.d.ts +14 -0
  150. package/dist/esm/configuration/LayoutConfigState.d.ts.map +1 -0
  151. package/dist/esm/configuration/LayoutConfigState.js +2 -0
  152. package/dist/esm/configuration/LayoutConfigState.js.map +1 -0
  153. package/dist/esm/configuration/LayoutMode.d.ts +12 -0
  154. package/dist/esm/configuration/LayoutMode.d.ts.map +1 -0
  155. package/dist/esm/configuration/LayoutMode.js +35 -0
  156. package/dist/esm/configuration/LayoutMode.js.map +1 -0
  157. package/dist/esm/configuration/MenuTheme.d.ts +7 -0
  158. package/dist/esm/configuration/MenuTheme.d.ts.map +1 -0
  159. package/dist/esm/configuration/MenuTheme.js +23 -0
  160. package/dist/esm/configuration/MenuTheme.js.map +1 -0
  161. package/dist/esm/configuration/index.d.ts +9 -0
  162. package/dist/esm/configuration/index.d.ts.map +1 -0
  163. package/dist/esm/configuration/index.js +9 -0
  164. package/dist/esm/configuration/index.js.map +1 -0
  165. package/dist/esm/configuration/layoutConfigStorage.d.ts +6 -0
  166. package/dist/esm/configuration/layoutConfigStorage.d.ts.map +1 -0
  167. package/dist/esm/configuration/layoutConfigStorage.js +81 -0
  168. package/dist/esm/configuration/layoutConfigStorage.js.map +1 -0
  169. package/dist/esm/configuration/layoutConfigTransitions.d.ts +22 -0
  170. package/dist/esm/configuration/layoutConfigTransitions.d.ts.map +1 -0
  171. package/dist/esm/configuration/layoutConfigTransitions.js +140 -0
  172. package/dist/esm/configuration/layoutConfigTransitions.js.map +1 -0
  173. package/dist/esm/configuration/layoutWrapperClasses.d.ts +4 -0
  174. package/dist/esm/configuration/layoutWrapperClasses.d.ts.map +1 -0
  175. package/dist/esm/configuration/layoutWrapperClasses.js +59 -0
  176. package/dist/esm/configuration/layoutWrapperClasses.js.map +1 -0
  177. package/dist/esm/defaultBlueprint.d.ts +5 -0
  178. package/dist/esm/defaultBlueprint.d.ts.map +1 -0
  179. package/dist/esm/defaultBlueprint.js +89 -0
  180. package/dist/esm/defaultBlueprint.js.map +1 -0
  181. package/dist/esm/defaultBlueprintComponents.d.ts +3 -0
  182. package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -0
  183. package/dist/esm/defaultBlueprintComponents.js +52 -0
  184. package/dist/esm/defaultBlueprintComponents.js.map +1 -0
  185. package/dist/esm/for_AppShell/when_rendering_a_gallery_screen.d.ts +2 -0
  186. package/dist/esm/for_AppShell/when_rendering_a_gallery_screen.d.ts.map +1 -0
  187. package/dist/esm/for_AppShell/when_rendering_a_gallery_screen.js +60 -0
  188. package/dist/esm/for_AppShell/when_rendering_a_gallery_screen.js.map +1 -0
  189. package/dist/esm/for_LayoutConfigProvider/when_switching_mode_and_reloading.d.ts +2 -0
  190. package/dist/esm/for_LayoutConfigProvider/when_switching_mode_and_reloading.d.ts.map +1 -0
  191. package/dist/esm/for_LayoutConfigProvider/when_switching_mode_and_reloading.js +60 -0
  192. package/dist/esm/for_LayoutConfigProvider/when_switching_mode_and_reloading.js.map +1 -0
  193. package/dist/esm/for_appShellLayout/when_evaluating_the_arrangement_at_each_size_class.d.ts +2 -0
  194. package/dist/esm/for_appShellLayout/when_evaluating_the_arrangement_at_each_size_class.d.ts.map +1 -0
  195. package/dist/esm/for_appShellLayout/when_evaluating_the_arrangement_at_each_size_class.js +26 -0
  196. package/dist/esm/for_appShellLayout/when_evaluating_the_arrangement_at_each_size_class.js.map +1 -0
  197. package/dist/esm/for_defaultBlueprint/when_validating_the_bundle.d.ts +2 -0
  198. package/dist/esm/for_defaultBlueprint/when_validating_the_bundle.d.ts.map +1 -0
  199. package/dist/esm/for_defaultBlueprint/when_validating_the_bundle.js +32 -0
  200. package/dist/esm/for_defaultBlueprint/when_validating_the_bundle.js.map +1 -0
  201. package/dist/esm/for_defaultBlueprintThemes/when_checking_attribution_and_tokens.d.ts +2 -0
  202. package/dist/esm/for_defaultBlueprintThemes/when_checking_attribution_and_tokens.d.ts.map +1 -0
  203. package/dist/esm/for_defaultBlueprintThemes/when_checking_attribution_and_tokens.js +40 -0
  204. package/dist/esm/for_defaultBlueprintThemes/when_checking_attribution_and_tokens.js.map +1 -0
  205. package/dist/esm/for_fullPageLayout/when_evaluating_the_arrangement_at_each_size_class.d.ts +2 -0
  206. package/dist/esm/for_fullPageLayout/when_evaluating_the_arrangement_at_each_size_class.d.ts.map +1 -0
  207. package/dist/esm/for_fullPageLayout/when_evaluating_the_arrangement_at_each_size_class.js +27 -0
  208. package/dist/esm/for_fullPageLayout/when_evaluating_the_arrangement_at_each_size_class.js.map +1 -0
  209. package/dist/esm/for_galleryScreenTemplates/when_checking_that_arrangements_reference_declared_slots.d.ts +2 -0
  210. package/dist/esm/for_galleryScreenTemplates/when_checking_that_arrangements_reference_declared_slots.d.ts.map +1 -0
  211. package/dist/esm/for_galleryScreenTemplates/when_checking_that_arrangements_reference_declared_slots.js +41 -0
  212. package/dist/esm/for_galleryScreenTemplates/when_checking_that_arrangements_reference_declared_slots.js.map +1 -0
  213. package/dist/esm/for_galleryScreenTemplates/when_following_the_nesting_chain.d.ts +2 -0
  214. package/dist/esm/for_galleryScreenTemplates/when_following_the_nesting_chain.d.ts.map +1 -0
  215. package/dist/esm/for_galleryScreenTemplates/when_following_the_nesting_chain.js +31 -0
  216. package/dist/esm/for_galleryScreenTemplates/when_following_the_nesting_chain.js.map +1 -0
  217. package/dist/esm/for_galleryScreens/when_checking_the_layouts_and_slots_they_fill.d.ts +2 -0
  218. package/dist/esm/for_galleryScreens/when_checking_the_layouts_and_slots_they_fill.d.ts.map +1 -0
  219. package/dist/esm/for_galleryScreens/when_checking_the_layouts_and_slots_they_fill.js +33 -0
  220. package/dist/esm/for_galleryScreens/when_checking_the_layouts_and_slots_they_fill.js.map +1 -0
  221. package/dist/esm/for_galleryScreens/when_resolving_the_component_names_they_reference.d.ts +2 -0
  222. package/dist/esm/for_galleryScreens/when_resolving_the_component_names_they_reference.d.ts.map +1 -0
  223. package/dist/esm/for_galleryScreens/when_resolving_the_component_names_they_reference.js +44 -0
  224. package/dist/esm/for_galleryScreens/when_resolving_the_component_names_they_reference.js.map +1 -0
  225. package/dist/esm/for_layoutConfigStorage/when_restoring_a_persisted_configuration.d.ts +2 -0
  226. package/dist/esm/for_layoutConfigStorage/when_restoring_a_persisted_configuration.d.ts.map +1 -0
  227. package/dist/esm/for_layoutConfigStorage/when_restoring_a_persisted_configuration.js +60 -0
  228. package/dist/esm/for_layoutConfigStorage/when_restoring_a_persisted_configuration.js.map +1 -0
  229. package/dist/esm/for_layoutConfigTransitions/when_anchoring_a_reveal_sidebar.d.ts +2 -0
  230. package/dist/esm/for_layoutConfigTransitions/when_anchoring_a_reveal_sidebar.d.ts.map +1 -0
  231. package/dist/esm/for_layoutConfigTransitions/when_anchoring_a_reveal_sidebar.js +28 -0
  232. package/dist/esm/for_layoutConfigTransitions/when_anchoring_a_reveal_sidebar.js.map +1 -0
  233. package/dist/esm/for_layoutConfigTransitions/when_the_viewport_crosses_the_mobile_breakpoint.d.ts +2 -0
  234. package/dist/esm/for_layoutConfigTransitions/when_the_viewport_crosses_the_mobile_breakpoint.d.ts.map +1 -0
  235. package/dist/esm/for_layoutConfigTransitions/when_the_viewport_crosses_the_mobile_breakpoint.js +38 -0
  236. package/dist/esm/for_layoutConfigTransitions/when_the_viewport_crosses_the_mobile_breakpoint.js.map +1 -0
  237. package/dist/esm/for_layoutWrapperClasses/when_rendering_each_mode.d.ts +2 -0
  238. package/dist/esm/for_layoutWrapperClasses/when_rendering_each_mode.d.ts.map +1 -0
  239. package/dist/esm/for_layoutWrapperClasses/when_rendering_each_mode.js +39 -0
  240. package/dist/esm/for_layoutWrapperClasses/when_rendering_each_mode.js.map +1 -0
  241. package/dist/esm/for_navigation/when_aggregating_the_navigation_contributions.d.ts +2 -0
  242. package/dist/esm/for_navigation/when_aggregating_the_navigation_contributions.d.ts.map +1 -0
  243. package/dist/esm/for_navigation/when_aggregating_the_navigation_contributions.js +37 -0
  244. package/dist/esm/for_navigation/when_aggregating_the_navigation_contributions.js.map +1 -0
  245. package/dist/esm/gallery/ApplicationScreens.stories.d.ts +31 -0
  246. package/dist/esm/gallery/ApplicationScreens.stories.d.ts.map +1 -0
  247. package/dist/esm/gallery/ApplicationScreens.stories.js +29 -0
  248. package/dist/esm/gallery/ApplicationScreens.stories.js.map +1 -0
  249. package/dist/esm/gallery/FullPageScreens.stories.d.ts +28 -0
  250. package/dist/esm/gallery/FullPageScreens.stories.d.ts.map +1 -0
  251. package/dist/esm/gallery/FullPageScreens.stories.js +26 -0
  252. package/dist/esm/gallery/FullPageScreens.stories.js.map +1 -0
  253. package/dist/esm/gallery/GalleryScreenPreview.d.ts +12 -0
  254. package/dist/esm/gallery/GalleryScreenPreview.d.ts.map +1 -0
  255. package/dist/esm/gallery/GalleryScreenPreview.js +60 -0
  256. package/dist/esm/gallery/GalleryScreenPreview.js.map +1 -0
  257. package/dist/esm/gallery/NavigationEntry.d.ts +8 -0
  258. package/dist/esm/gallery/NavigationEntry.d.ts.map +1 -0
  259. package/dist/esm/gallery/NavigationEntry.js +2 -0
  260. package/dist/esm/gallery/NavigationEntry.js.map +1 -0
  261. package/dist/esm/gallery/TemplateSlotName.d.ts +11 -0
  262. package/dist/esm/gallery/TemplateSlotName.d.ts.map +1 -0
  263. package/dist/esm/gallery/TemplateSlotName.js +23 -0
  264. package/dist/esm/gallery/TemplateSlotName.js.map +1 -0
  265. package/dist/esm/gallery/applicationChrome.d.ts +8 -0
  266. package/dist/esm/gallery/applicationChrome.d.ts.map +1 -0
  267. package/dist/esm/gallery/applicationChrome.js +131 -0
  268. package/dist/esm/gallery/applicationChrome.js.map +1 -0
  269. package/dist/esm/gallery/authTemplates.d.ts +9 -0
  270. package/dist/esm/gallery/authTemplates.d.ts.map +1 -0
  271. package/dist/esm/gallery/authTemplates.js +226 -0
  272. package/dist/esm/gallery/authTemplates.js.map +1 -0
  273. package/dist/esm/gallery/componentNames.d.ts +4 -0
  274. package/dist/esm/gallery/componentNames.d.ts.map +1 -0
  275. package/dist/esm/gallery/componentNames.js +50 -0
  276. package/dist/esm/gallery/componentNames.js.map +1 -0
  277. package/dist/esm/gallery/composeScreen.d.ts +5 -0
  278. package/dist/esm/gallery/composeScreen.d.ts.map +1 -0
  279. package/dist/esm/gallery/composeScreen.js +95 -0
  280. package/dist/esm/gallery/composeScreen.js.map +1 -0
  281. package/dist/esm/gallery/dependencyComponentNames.d.ts +4 -0
  282. package/dist/esm/gallery/dependencyComponentNames.d.ts.map +1 -0
  283. package/dist/esm/gallery/dependencyComponentNames.js +68 -0
  284. package/dist/esm/gallery/dependencyComponentNames.js.map +1 -0
  285. package/dist/esm/gallery/dialogTemplates.d.ts +6 -0
  286. package/dist/esm/gallery/dialogTemplates.d.ts.map +1 -0
  287. package/dist/esm/gallery/dialogTemplates.js +156 -0
  288. package/dist/esm/gallery/dialogTemplates.js.map +1 -0
  289. package/dist/esm/gallery/elements.d.ts +7 -0
  290. package/dist/esm/gallery/elements.d.ts.map +1 -0
  291. package/dist/esm/gallery/elements.js +74 -0
  292. package/dist/esm/gallery/elements.js.map +1 -0
  293. package/dist/esm/gallery/index.d.ts +20 -0
  294. package/dist/esm/gallery/index.d.ts.map +1 -0
  295. package/dist/esm/gallery/index.js +20 -0
  296. package/dist/esm/gallery/index.js.map +1 -0
  297. package/dist/esm/gallery/navigation.d.ts +9 -0
  298. package/dist/esm/gallery/navigation.d.ts.map +1 -0
  299. package/dist/esm/gallery/navigation.js +122 -0
  300. package/dist/esm/gallery/navigation.js.map +1 -0
  301. package/dist/esm/gallery/nesting.d.ts +6 -0
  302. package/dist/esm/gallery/nesting.d.ts.map +1 -0
  303. package/dist/esm/gallery/nesting.js +124 -0
  304. package/dist/esm/gallery/nesting.js.map +1 -0
  305. package/dist/esm/gallery/previewProfile.d.ts +6 -0
  306. package/dist/esm/gallery/previewProfile.d.ts.map +1 -0
  307. package/dist/esm/gallery/previewProfile.js +64 -0
  308. package/dist/esm/gallery/previewProfile.js.map +1 -0
  309. package/dist/esm/gallery/resolveElementNames.d.ts +4 -0
  310. package/dist/esm/gallery/resolveElementNames.d.ts.map +1 -0
  311. package/dist/esm/gallery/resolveElementNames.js +61 -0
  312. package/dist/esm/gallery/resolveElementNames.js.map +1 -0
  313. package/dist/esm/gallery/screens.d.ts +5 -0
  314. package/dist/esm/gallery/screens.d.ts.map +1 -0
  315. package/dist/esm/gallery/screens.js +218 -0
  316. package/dist/esm/gallery/screens.js.map +1 -0
  317. package/dist/esm/gallery/statusTemplates.d.ts +7 -0
  318. package/dist/esm/gallery/statusTemplates.d.ts.map +1 -0
  319. package/dist/esm/gallery/statusTemplates.js +184 -0
  320. package/dist/esm/gallery/statusTemplates.js.map +1 -0
  321. package/dist/esm/gallery/supportTemplates.d.ts +8 -0
  322. package/dist/esm/gallery/supportTemplates.d.ts.map +1 -0
  323. package/dist/esm/gallery/supportTemplates.js +312 -0
  324. package/dist/esm/gallery/supportTemplates.js.map +1 -0
  325. package/dist/esm/gallery/widgets.d.ts +12 -0
  326. package/dist/esm/gallery/widgets.d.ts.map +1 -0
  327. package/dist/esm/gallery/widgets.js +86 -0
  328. package/dist/esm/gallery/widgets.js.map +1 -0
  329. package/dist/esm/gallery/workspaceTemplates.d.ts +8 -0
  330. package/dist/esm/gallery/workspaceTemplates.d.ts.map +1 -0
  331. package/dist/esm/gallery/workspaceTemplates.js +388 -0
  332. package/dist/esm/gallery/workspaceTemplates.js.map +1 -0
  333. package/dist/esm/index.d.ts +10 -0
  334. package/dist/esm/index.d.ts.map +1 -0
  335. package/dist/esm/index.js +60 -0
  336. package/dist/esm/index.js.map +1 -0
  337. package/dist/esm/layouts/LayoutName.d.ts +5 -0
  338. package/dist/esm/layouts/LayoutName.d.ts.map +1 -0
  339. package/dist/esm/layouts/LayoutName.js +17 -0
  340. package/dist/esm/layouts/LayoutName.js.map +1 -0
  341. package/dist/esm/layouts/SlotName.d.ts +12 -0
  342. package/dist/esm/layouts/SlotName.d.ts.map +1 -0
  343. package/dist/esm/layouts/SlotName.js +29 -0
  344. package/dist/esm/layouts/SlotName.js.map +1 -0
  345. package/dist/esm/layouts/appShell.d.ts +8 -0
  346. package/dist/esm/layouts/appShell.d.ts.map +1 -0
  347. package/dist/esm/layouts/appShell.js +153 -0
  348. package/dist/esm/layouts/appShell.js.map +1 -0
  349. package/dist/esm/layouts/defaultLayouts.d.ts +3 -0
  350. package/dist/esm/layouts/defaultLayouts.d.ts.map +1 -0
  351. package/dist/esm/layouts/defaultLayouts.js +18 -0
  352. package/dist/esm/layouts/defaultLayouts.js.map +1 -0
  353. package/dist/esm/layouts/flowBuilders.d.ts +6 -0
  354. package/dist/esm/layouts/flowBuilders.d.ts.map +1 -0
  355. package/dist/esm/layouts/flowBuilders.js +61 -0
  356. package/dist/esm/layouts/flowBuilders.js.map +1 -0
  357. package/dist/esm/layouts/fullPage.d.ts +6 -0
  358. package/dist/esm/layouts/fullPage.d.ts.map +1 -0
  359. package/dist/esm/layouts/fullPage.js +73 -0
  360. package/dist/esm/layouts/fullPage.js.map +1 -0
  361. package/dist/esm/layouts/index.d.ts +8 -0
  362. package/dist/esm/layouts/index.d.ts.map +1 -0
  363. package/dist/esm/layouts/index.js +8 -0
  364. package/dist/esm/layouts/index.js.map +1 -0
  365. package/dist/esm/layouts/shellComponents.d.ts +3 -0
  366. package/dist/esm/layouts/shellComponents.d.ts.map +1 -0
  367. package/dist/esm/layouts/shellComponents.js +27 -0
  368. package/dist/esm/layouts/shellComponents.js.map +1 -0
  369. package/dist/esm/package.json +3 -0
  370. package/dist/esm/packageName.d.ts +2 -0
  371. package/dist/esm/packageName.d.ts.map +1 -0
  372. package/dist/esm/packageName.js +13 -0
  373. package/dist/esm/packageName.js.map +1 -0
  374. package/dist/esm/shell/AppShell.d.ts +3 -0
  375. package/dist/esm/shell/AppShell.d.ts.map +1 -0
  376. package/dist/esm/shell/AppShell.js +86 -0
  377. package/dist/esm/shell/AppShell.js.map +1 -0
  378. package/dist/esm/shell/Breadcrumb.d.ts +3 -0
  379. package/dist/esm/shell/Breadcrumb.d.ts.map +1 -0
  380. package/dist/esm/shell/Breadcrumb.js +31 -0
  381. package/dist/esm/shell/Breadcrumb.js.map +1 -0
  382. package/dist/esm/shell/ConfigPanel.d.ts +3 -0
  383. package/dist/esm/shell/ConfigPanel.d.ts.map +1 -0
  384. package/dist/esm/shell/ConfigPanel.js +126 -0
  385. package/dist/esm/shell/ConfigPanel.js.map +1 -0
  386. package/dist/esm/shell/Footer.d.ts +3 -0
  387. package/dist/esm/shell/Footer.d.ts.map +1 -0
  388. package/dist/esm/shell/Footer.js +26 -0
  389. package/dist/esm/shell/Footer.js.map +1 -0
  390. package/dist/esm/shell/FullPageShell.d.ts +3 -0
  391. package/dist/esm/shell/FullPageShell.d.ts.map +1 -0
  392. package/dist/esm/shell/FullPageShell.js +51 -0
  393. package/dist/esm/shell/FullPageShell.js.map +1 -0
  394. package/dist/esm/shell/LayoutModeSwitcher.d.ts +3 -0
  395. package/dist/esm/shell/LayoutModeSwitcher.d.ts.map +1 -0
  396. package/dist/esm/shell/LayoutModeSwitcher.js +56 -0
  397. package/dist/esm/shell/LayoutModeSwitcher.js.map +1 -0
  398. package/dist/esm/shell/LayoutModes.stories.d.ts +29 -0
  399. package/dist/esm/shell/LayoutModes.stories.d.ts.map +1 -0
  400. package/dist/esm/shell/LayoutModes.stories.js +43 -0
  401. package/dist/esm/shell/LayoutModes.stories.js.map +1 -0
  402. package/dist/esm/shell/Logo.d.ts +3 -0
  403. package/dist/esm/shell/Logo.d.ts.map +1 -0
  404. package/dist/esm/shell/Logo.js +42 -0
  405. package/dist/esm/shell/Logo.js.map +1 -0
  406. package/dist/esm/shell/Mask.d.ts +3 -0
  407. package/dist/esm/shell/Mask.d.ts.map +1 -0
  408. package/dist/esm/shell/Mask.js +31 -0
  409. package/dist/esm/shell/Mask.js.map +1 -0
  410. package/dist/esm/shell/Menu.d.ts +3 -0
  411. package/dist/esm/shell/Menu.d.ts.map +1 -0
  412. package/dist/esm/shell/Menu.js +34 -0
  413. package/dist/esm/shell/Menu.js.map +1 -0
  414. package/dist/esm/shell/MenuItem.d.ts +3 -0
  415. package/dist/esm/shell/MenuItem.d.ts.map +1 -0
  416. package/dist/esm/shell/MenuItem.js +63 -0
  417. package/dist/esm/shell/MenuItem.js.map +1 -0
  418. package/dist/esm/shell/PageHeader.d.ts +3 -0
  419. package/dist/esm/shell/PageHeader.d.ts.map +1 -0
  420. package/dist/esm/shell/PageHeader.js +41 -0
  421. package/dist/esm/shell/PageHeader.js.map +1 -0
  422. package/dist/esm/shell/RightPanel.d.ts +3 -0
  423. package/dist/esm/shell/RightPanel.d.ts.map +1 -0
  424. package/dist/esm/shell/RightPanel.js +28 -0
  425. package/dist/esm/shell/RightPanel.js.map +1 -0
  426. package/dist/esm/shell/Sidebar.d.ts +3 -0
  427. package/dist/esm/shell/Sidebar.d.ts.map +1 -0
  428. package/dist/esm/shell/Sidebar.js +49 -0
  429. package/dist/esm/shell/Sidebar.js.map +1 -0
  430. package/dist/esm/shell/ThemeOption.d.ts +10 -0
  431. package/dist/esm/shell/ThemeOption.d.ts.map +1 -0
  432. package/dist/esm/shell/ThemeOption.js +39 -0
  433. package/dist/esm/shell/ThemeOption.js.map +1 -0
  434. package/dist/esm/shell/ThemeSwitcher.d.ts +3 -0
  435. package/dist/esm/shell/ThemeSwitcher.d.ts.map +1 -0
  436. package/dist/esm/shell/ThemeSwitcher.js +48 -0
  437. package/dist/esm/shell/ThemeSwitcher.js.map +1 -0
  438. package/dist/esm/shell/Topbar.d.ts +3 -0
  439. package/dist/esm/shell/Topbar.d.ts.map +1 -0
  440. package/dist/esm/shell/Topbar.js +52 -0
  441. package/dist/esm/shell/Topbar.js.map +1 -0
  442. package/dist/esm/shell/UserMenu.d.ts +3 -0
  443. package/dist/esm/shell/UserMenu.d.ts.map +1 -0
  444. package/dist/esm/shell/UserMenu.js +66 -0
  445. package/dist/esm/shell/UserMenu.js.map +1 -0
  446. package/dist/esm/shell/elementProperties.d.ts +9 -0
  447. package/dist/esm/shell/elementProperties.d.ts.map +1 -0
  448. package/dist/esm/shell/elementProperties.js +48 -0
  449. package/dist/esm/shell/elementProperties.js.map +1 -0
  450. package/dist/esm/shell/index.d.ts +19 -0
  451. package/dist/esm/shell/index.d.ts.map +1 -0
  452. package/dist/esm/shell/index.js +19 -0
  453. package/dist/esm/shell/index.js.map +1 -0
  454. package/dist/esm/themes/LayoutThemeProvider.d.ts +9 -0
  455. package/dist/esm/themes/LayoutThemeProvider.d.ts.map +1 -0
  456. package/dist/esm/themes/LayoutThemeProvider.js +31 -0
  457. package/dist/esm/themes/LayoutThemeProvider.js.map +1 -0
  458. package/dist/esm/themes/Theming.stories.d.ts +21 -0
  459. package/dist/esm/themes/Theming.stories.d.ts.map +1 -0
  460. package/dist/esm/themes/Theming.stories.js +54 -0
  461. package/dist/esm/themes/Theming.stories.js.map +1 -0
  462. package/dist/esm/themes/blueprintThemeCompatibility.d.ts +2 -0
  463. package/dist/esm/themes/blueprintThemeCompatibility.d.ts.map +1 -0
  464. package/dist/esm/themes/blueprintThemeCompatibility.js +26 -0
  465. package/dist/esm/themes/blueprintThemeCompatibility.js.map +1 -0
  466. package/dist/esm/themes/dark.d.ts +3 -0
  467. package/dist/esm/themes/dark.d.ts.map +1 -0
  468. package/dist/esm/themes/dark.js +38 -0
  469. package/dist/esm/themes/dark.js.map +1 -0
  470. package/dist/esm/themes/defaultBlueprintThemes.d.ts +3 -0
  471. package/dist/esm/themes/defaultBlueprintThemes.d.ts.map +1 -0
  472. package/dist/esm/themes/defaultBlueprintThemes.js +17 -0
  473. package/dist/esm/themes/defaultBlueprintThemes.js.map +1 -0
  474. package/dist/esm/themes/index.d.ts +6 -0
  475. package/dist/esm/themes/index.d.ts.map +1 -0
  476. package/dist/esm/themes/index.js +6 -0
  477. package/dist/esm/themes/index.js.map +1 -0
  478. package/dist/esm/themes/light.d.ts +3 -0
  479. package/dist/esm/themes/light.d.ts.map +1 -0
  480. package/dist/esm/themes/light.js +41 -0
  481. package/dist/esm/themes/light.js.map +1 -0
  482. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  483. package/for_AppShell/when_rendering_a_gallery_screen.tsx +76 -0
  484. package/for_LayoutConfigProvider/when_switching_mode_and_reloading.tsx +77 -0
  485. package/for_appShellLayout/when_evaluating_the_arrangement_at_each_size_class.ts +42 -0
  486. package/for_defaultBlueprint/when_validating_the_bundle.ts +43 -0
  487. package/for_defaultBlueprintThemes/when_checking_attribution_and_tokens.ts +50 -0
  488. package/for_fullPageLayout/when_evaluating_the_arrangement_at_each_size_class.ts +36 -0
  489. package/for_galleryScreenTemplates/when_checking_that_arrangements_reference_declared_slots.ts +53 -0
  490. package/for_galleryScreenTemplates/when_following_the_nesting_chain.ts +41 -0
  491. package/for_galleryScreens/when_checking_the_layouts_and_slots_they_fill.ts +44 -0
  492. package/for_galleryScreens/when_resolving_the_component_names_they_reference.ts +60 -0
  493. package/for_layoutConfigStorage/when_restoring_a_persisted_configuration.ts +76 -0
  494. package/for_layoutConfigTransitions/when_anchoring_a_reveal_sidebar.ts +44 -0
  495. package/for_layoutConfigTransitions/when_the_viewport_crosses_the_mobile_breakpoint.ts +61 -0
  496. package/for_layoutWrapperClasses/when_rendering_each_mode.ts +63 -0
  497. package/for_navigation/when_aggregating_the_navigation_contributions.ts +50 -0
  498. package/gallery/ApplicationScreens.stories.tsx +70 -0
  499. package/gallery/FullPageScreens.stories.tsx +60 -0
  500. package/gallery/GalleryScreenPreview.tsx +68 -0
  501. package/gallery/NavigationEntry.ts +27 -0
  502. package/gallery/TemplateSlotName.ts +36 -0
  503. package/gallery/applicationChrome.ts +110 -0
  504. package/gallery/authTemplates.ts +161 -0
  505. package/gallery/componentNames.ts +55 -0
  506. package/gallery/composeScreen.ts +95 -0
  507. package/gallery/dependencyComponentNames.ts +64 -0
  508. package/gallery/dialogTemplates.ts +79 -0
  509. package/gallery/elements.ts +65 -0
  510. package/gallery/index.ts +22 -0
  511. package/gallery/navigation.ts +71 -0
  512. package/gallery/nesting.ts +82 -0
  513. package/gallery/previewProfile.ts +59 -0
  514. package/gallery/resolveElementNames.ts +55 -0
  515. package/gallery/screens.ts +111 -0
  516. package/gallery/statusTemplates.ts +118 -0
  517. package/gallery/supportTemplates.ts +164 -0
  518. package/gallery/widgets.ts +63 -0
  519. package/gallery/workspaceTemplates.ts +198 -0
  520. package/index.ts +12 -0
  521. package/layouts/LayoutName.ts +18 -0
  522. package/layouts/SlotName.ts +44 -0
  523. package/layouts/appShell.ts +106 -0
  524. package/layouts/defaultLayouts.ts +15 -0
  525. package/layouts/flowBuilders.ts +49 -0
  526. package/layouts/fullPage.ts +48 -0
  527. package/layouts/index.ts +10 -0
  528. package/layouts/shellComponents.ts +28 -0
  529. package/package.json +68 -0
  530. package/packageName.ts +12 -0
  531. package/shell/AppShell.tsx +66 -0
  532. package/shell/Breadcrumb.tsx +31 -0
  533. package/shell/ConfigPanel.tsx +105 -0
  534. package/shell/Footer.tsx +23 -0
  535. package/shell/FullPageShell.tsx +41 -0
  536. package/shell/LayoutModeSwitcher.tsx +50 -0
  537. package/shell/LayoutModes.stories.tsx +83 -0
  538. package/shell/Logo.tsx +30 -0
  539. package/shell/Mask.tsx +29 -0
  540. package/shell/Menu.tsx +26 -0
  541. package/shell/MenuItem.tsx +39 -0
  542. package/shell/PageHeader.tsx +28 -0
  543. package/shell/RightPanel.tsx +23 -0
  544. package/shell/Sidebar.tsx +45 -0
  545. package/shell/ThemeOption.ts +60 -0
  546. package/shell/ThemeSwitcher.tsx +42 -0
  547. package/shell/Topbar.tsx +49 -0
  548. package/shell/UserMenu.tsx +53 -0
  549. package/shell/elementProperties.ts +64 -0
  550. package/shell/index.ts +21 -0
  551. package/shell/layout.css +821 -0
  552. package/themes/LayoutThemeProvider.tsx +41 -0
  553. package/themes/Theming.stories.tsx +89 -0
  554. package/themes/blueprintThemeCompatibility.ts +19 -0
  555. package/themes/dark.ts +38 -0
  556. package/themes/defaultBlueprintThemes.ts +14 -0
  557. package/themes/index.ts +8 -0
  558. package/themes/light.ts +41 -0
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var scene_react = require('@cratis/scene.react');
6
+ var LayoutConfigProvider = require('../configuration/LayoutConfigProvider.js');
7
+ var defaultBlueprintComponents = require('../defaultBlueprintComponents.js');
8
+ var defaultBlueprintThemes = require('../themes/defaultBlueprintThemes.js');
9
+ var LayoutThemeProvider = require('../themes/LayoutThemeProvider.js');
10
+ var composeScreen = require('./composeScreen.js');
11
+ var previewProfile = require('./previewProfile.js');
12
+ var resolveElementNames = require('./resolveElementNames.js');
13
+ var screens = require('./screens.js');
14
+
15
+ /**
16
+ * The registry a preview resolves against when a host does not supply one: `core` plus this blueprint.
17
+ *
18
+ * Merged by hand rather than through `mergePackageRegistries`, because reaching for this blueprint's
19
+ * *bundle* here would be circular - the bundle is assembled from the gallery this file belongs to. Registry
20
+ * keys carry their package name, so merge order cannot cause a collision either way.
21
+ */ const galleryPreviewRegistry = {
22
+ ...scene_react.coreComponents,
23
+ ...defaultBlueprintComponents.defaultBlueprintComponents
24
+ };
25
+ /**
26
+ * Boots one gallery screen through the real engine.
27
+ *
28
+ * Nothing here is a preview-only path: the screen is a real {@link Screen}, its element tree is resolved by
29
+ * the real `resolveComponentName`, and it is rendered by the real `SceneElementView` against the real
30
+ * registry. That is the point of shipping a gallery at all - a mockup proves that someone can draw a
31
+ * dashboard, and this proves the blueprint renders one.
32
+ *
33
+ * Component names belonging to packages the host has not loaded resolve but find no implementation, and
34
+ * come out as `UnresolvedComponent`'s dashed red box naming what is missing. That is the designed outcome:
35
+ * a preview of a blueprint against half a profile should look visibly incomplete rather than quietly
36
+ * wrong.
37
+ */ function GalleryScreenPreview({ screenName, initialConfig, themes = defaultBlueprintThemes.defaultBlueprintThemes, registry = galleryPreviewRegistry }) {
38
+ const element = react.useMemo(()=>{
39
+ const screen = screens.galleryScreen(screenName);
40
+ if (!screen) {
41
+ throw new Error(`The gallery has no screen named '${screenName}'.`);
42
+ }
43
+ return resolveElementNames.resolveElementComponentNames(composeScreen.composeScreenElement(screen), previewProfile.galleryPreviewProfile, previewProfile.galleryComponentCatalog);
44
+ }, [
45
+ screenName
46
+ ]);
47
+ return /*#__PURE__*/ jsxRuntime.jsx(LayoutConfigProvider.LayoutConfigProvider, {
48
+ initialConfig: initialConfig,
49
+ storage: null,
50
+ children: /*#__PURE__*/ jsxRuntime.jsx(LayoutThemeProvider.LayoutThemeProvider, {
51
+ themes: themes,
52
+ children: /*#__PURE__*/ jsxRuntime.jsx(scene_react.SceneElementView, {
53
+ element: element,
54
+ registry: registry,
55
+ resolveBinding: ()=>undefined
56
+ })
57
+ })
58
+ });
59
+ }
60
+
61
+ exports.GalleryScreenPreview = GalleryScreenPreview;
62
+ exports.galleryPreviewRegistry = galleryPreviewRegistry;
63
+ //# sourceMappingURL=GalleryScreenPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GalleryScreenPreview.js","sources":["../../../gallery/GalleryScreenPreview.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useMemo } from 'react';\nimport { Theme } from '@cratis/scene.model';\nimport { ComponentRegistry, SceneElementView, coreComponents } from '@cratis/scene.react';\nimport { LayoutConfigProvider, LayoutConfigState } from '../configuration';\nimport { defaultBlueprintComponents } from '../defaultBlueprintComponents';\nimport { LayoutThemeProvider, defaultBlueprintThemes } from '../themes';\nimport { composeScreenElement } from './composeScreen';\nimport { galleryComponentCatalog, galleryPreviewProfile } from './previewProfile';\nimport { resolveElementComponentNames } from './resolveElementNames';\nimport { galleryScreen } from './screens';\n\n/**\n * The registry a preview resolves against when a host does not supply one: `core` plus this blueprint.\n *\n * Merged by hand rather than through `mergePackageRegistries`, because reaching for this blueprint's\n * *bundle* here would be circular - the bundle is assembled from the gallery this file belongs to. Registry\n * keys carry their package name, so merge order cannot cause a collision either way.\n */\nexport const galleryPreviewRegistry: ComponentRegistry = { ...coreComponents, ...defaultBlueprintComponents };\n\nexport interface GalleryScreenPreviewProps {\n /** The name of the gallery screen to boot. */\n screenName: string;\n\n /** Configuration to start from - a story pinning a mode, or a host restoring a session. */\n initialConfig?: Partial<LayoutConfigState>;\n\n /** The themes the configurator may switch between. Defaults to the two this blueprint ships. */\n themes?: Theme[];\n\n /** The component registry to render against. Defaults to `core` plus this blueprint's own components. */\n registry?: ComponentRegistry;\n}\n\n/**\n * Boots one gallery screen through the real engine.\n *\n * Nothing here is a preview-only path: the screen is a real {@link Screen}, its element tree is resolved by\n * the real `resolveComponentName`, and it is rendered by the real `SceneElementView` against the real\n * registry. That is the point of shipping a gallery at all - a mockup proves that someone can draw a\n * dashboard, and this proves the blueprint renders one.\n *\n * Component names belonging to packages the host has not loaded resolve but find no implementation, and\n * come out as `UnresolvedComponent`'s dashed red box naming what is missing. That is the designed outcome:\n * a preview of a blueprint against half a profile should look visibly incomplete rather than quietly\n * wrong.\n */\nexport function GalleryScreenPreview({ screenName, initialConfig, themes = defaultBlueprintThemes, registry = galleryPreviewRegistry }: GalleryScreenPreviewProps) {\n const element = useMemo(() => {\n const screen = galleryScreen(screenName);\n if (!screen) {\n throw new Error(`The gallery has no screen named '${screenName}'.`);\n }\n\n return resolveElementComponentNames(composeScreenElement(screen), galleryPreviewProfile, galleryComponentCatalog);\n }, [screenName]);\n\n return (\n <LayoutConfigProvider initialConfig={initialConfig} storage={null}>\n <LayoutThemeProvider themes={themes}>\n <SceneElementView element={element} registry={registry} resolveBinding={() => undefined} />\n </LayoutThemeProvider>\n </LayoutConfigProvider>\n );\n}\n"],"names":["galleryPreviewRegistry","coreComponents","defaultBlueprintComponents","GalleryScreenPreview","screenName","initialConfig","themes","defaultBlueprintThemes","registry","element","useMemo","screen","galleryScreen","Error","resolveElementComponentNames","composeScreenElement","galleryPreviewProfile","galleryComponentCatalog","_jsx","LayoutConfigProvider","storage","LayoutThemeProvider","SceneElementView","resolveBinding","undefined"],"mappings":";;;;;;;;;;;;;;AAcA;;;;;;UAOaA,sBAAAA,GAA4C;AAAE,IAAA,GAAGC,0BAAc;AAAE,IAAA,GAAGC;AAA2B;AAgB5G;;;;;;;;;;;;AAYC,IACM,SAASC,oBAAAA,CAAqB,EAAEC,UAAU,EAAEC,aAAa,EAAEC,MAAAA,GAASC,6CAAsB,EAAEC,QAAAA,GAAWR,sBAAsB,EAA6B,EAAA;AAC7J,IAAA,MAAMS,UAAUC,aAAAA,CAAQ,IAAA;AACpB,QAAA,MAAMC,SAASC,qBAAAA,CAAcR,UAAAA,CAAAA;AAC7B,QAAA,IAAI,CAACO,MAAAA,EAAQ;AACT,YAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,iCAAiC,EAAET,UAAAA,CAAW,EAAE,CAAC,CAAA;AACtE,QAAA;QAEA,OAAOU,gDAAAA,CAA6BC,kCAAAA,CAAqBJ,MAAAA,CAAAA,EAASK,oCAAAA,EAAuBC,sCAAAA,CAAAA;IAC7F,CAAA,EAAG;AAACb,QAAAA;AAAW,KAAA,CAAA;AAEf,IAAA,qBACIc,cAAA,CAACC,yCAAAA,EAAAA;QAAqBd,aAAAA,EAAeA,aAAAA;QAAee,OAAAA,EAAS,IAAA;AACzD,QAAA,QAAA,gBAAAF,cAAA,CAACG,uCAAAA,EAAAA;YAAoBf,MAAAA,EAAQA,MAAAA;AACzB,YAAA,QAAA,gBAAAY,cAAA,CAACI,4BAAAA,EAAAA;gBAAiBb,OAAAA,EAASA,OAAAA;gBAASD,QAAAA,EAAUA,QAAAA;AAAUe,gBAAAA,cAAAA,EAAgB,IAAMC;;;;AAI9F;;;;;"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * The slots the gallery's screen templates offer to whatever they contain.
7
+ *
8
+ * Distinct from {@link SlotName}, which is the *layout's* vocabulary. A screen template declares its own
9
+ * slots, and a template nested inside it names one of these in `fitsSlot` - so the same name means
10
+ * different places at different depths, and that is fine: `fitsSlot` is always resolved against the direct
11
+ * parent, never globally.
12
+ */ var TemplateSlotName = /*#__PURE__*/ function(TemplateSlotName) {
13
+ /** A template's own title area. */ TemplateSlotName["Header"] = "header";
14
+ /** The main region a nested template fits into. */ TemplateSlotName["Body"] = "body";
15
+ /** An optional column beside the body. */ TemplateSlotName["SidePanel"] = "sidePanel";
16
+ /** The action strip above a body. */ TemplateSlotName["Toolbar"] = "toolbar";
17
+ /** Buttons belonging to a header or a form. */ TemplateSlotName["Actions"] = "actions";
18
+ /** The row of figures a dashboard opens with. */ TemplateSlotName["Stats"] = "stats";
19
+ /** The larger left-hand column of a dashboard. */ TemplateSlotName["Primary"] = "primary";
20
+ /** The narrower right-hand column of a dashboard. */ TemplateSlotName["Secondary"] = "secondary";
21
+ return TemplateSlotName;
22
+ }({});
23
+
24
+ exports.TemplateSlotName = TemplateSlotName;
25
+ //# sourceMappingURL=TemplateSlotName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateSlotName.js","sources":["../../../gallery/TemplateSlotName.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * The slots the gallery's screen templates offer to whatever they contain.\n *\n * Distinct from {@link SlotName}, which is the *layout's* vocabulary. A screen template declares its own\n * slots, and a template nested inside it names one of these in `fitsSlot` - so the same name means\n * different places at different depths, and that is fine: `fitsSlot` is always resolved against the direct\n * parent, never globally.\n */\nexport enum TemplateSlotName {\n /** A template's own title area. */\n Header = 'header',\n\n /** The main region a nested template fits into. */\n Body = 'body',\n\n /** An optional column beside the body. */\n SidePanel = 'sidePanel',\n\n /** The action strip above a body. */\n Toolbar = 'toolbar',\n\n /** Buttons belonging to a header or a form. */\n Actions = 'actions',\n\n /** The row of figures a dashboard opens with. */\n Stats = 'stats',\n\n /** The larger left-hand column of a dashboard. */\n Primary = 'primary',\n\n /** The narrower right-hand column of a dashboard. */\n Secondary = 'secondary',\n}\n"],"names":["TemplateSlotName"],"mappings":";;AAAA;AACA;AAEA;;;;;;;IAQO,IAAKA,gBAAAA,iBAAAA,SAAAA,gBAAAA,EAAAA;wCACyB,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAA;wDAGgB,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAA;+CAGT,gBAAA,CAAA,WAAA,CAAA,GAAA,WAAA;0CAGL,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAA;oDAGU,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAA;sDAGE,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAA;uDAGC,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAA;0DAGG,gBAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAtB3CA,IAAAA,OAAAA,gBAAAA;AAwBX,CAAA,CAAA,EAAA;;;;"}
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ var ComponentName = require('../ComponentName.js');
4
+ var SlotName = require('../layouts/SlotName.js');
5
+ require('@cratis/scene.model');
6
+ require('../layouts/shellComponents.js');
7
+ require('../layouts/appShell.js');
8
+ require('../layouts/fullPage.js');
9
+ var defaultBlueprintThemes = require('../themes/defaultBlueprintThemes.js');
10
+ require('react/jsx-runtime');
11
+ require('react');
12
+ require('@cratis/scene.react');
13
+ var elements = require('./elements.js');
14
+ var navigation = require('./navigation.js');
15
+
16
+ // Copyright (c) Cratis. All rights reserved.
17
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
18
+ /**
19
+ * The chrome every screen in the application shell shares: the topbar, the sidebar, the menu, the footer
20
+ * and the configurator.
21
+ *
22
+ * It is built once, per screen, rather than repeated in twenty templates. A screen template describes what
23
+ * is *different* about a screen; if it also had to describe the topbar, then adding an item to the menu
24
+ * would mean editing twenty files, and nineteen of them would eventually be missed.
25
+ */ /** The brand mark, shared by the topbar and the sidebar header. */ function logo(id) {
26
+ return elements.externalComponent(id, ComponentName.ComponentName.Logo, {
27
+ label: 'Contoso',
28
+ initials: 'C',
29
+ targetScreen: 'Dashboard'
30
+ });
31
+ }
32
+ /** One menu section per navigation group, each holding that group's entries. */ function menuSections(activeScreen) {
33
+ return navigation.navigationGroups.map((group)=>elements.externalComponent(`menu-${group.toLowerCase()}`, ComponentName.ComponentName.Menu, {
34
+ title: group,
35
+ label: group
36
+ }, {
37
+ items: navigation.entriesInGroup(group).map((entry)=>navigation.navigationElement(entry, activeScreen))
38
+ }));
39
+ }
40
+ /** The configurator, offering the themes this blueprint ships. */ function configPanel() {
41
+ return elements.externalComponent(ComponentName.ComponentName.ConfigPanel, ComponentName.ComponentName.ConfigPanel, {
42
+ title: 'Settings',
43
+ themes: defaultBlueprintThemes.defaultBlueprintThemes.map((theme)=>({
44
+ name: theme.name,
45
+ label: theme.name,
46
+ isDark: theme.isDark ?? false
47
+ }))
48
+ });
49
+ }
50
+ /**
51
+ * The application shell's slot content for one screen.
52
+ *
53
+ * Only the breadcrumb and which menu entry is marked active differ from screen to screen - everything else
54
+ * is identical, which is the point of chrome.
55
+ *
56
+ * @param activeScreen The screen being rendered, so its menu entry is marked current.
57
+ * @param breadcrumb The trail above the content.
58
+ * @returns Slot content keyed by the {@link SlotName}s the `AppShell` layout declares.
59
+ */ function applicationChrome(activeScreen, breadcrumb) {
60
+ return {
61
+ [SlotName.SlotName.Topbar]: [
62
+ elements.externalComponent('topbar', ComponentName.ComponentName.Topbar, {}, {
63
+ logo: [
64
+ logo('topbar-logo')
65
+ ],
66
+ end: [
67
+ elements.externalComponent('topbar-user', ComponentName.ComponentName.UserMenu, {
68
+ name: 'Amelia Nyquist',
69
+ role: 'Owner',
70
+ initials: 'AN',
71
+ items: [
72
+ {
73
+ label: 'Your profile',
74
+ icon: 'pi pi-user',
75
+ targetScreen: 'ProfileSettings'
76
+ },
77
+ {
78
+ label: 'Help',
79
+ icon: 'pi pi-question-circle',
80
+ targetScreen: 'Help'
81
+ },
82
+ {
83
+ label: 'Lock',
84
+ icon: 'pi pi-lock',
85
+ targetScreen: 'LockScreen'
86
+ }
87
+ ]
88
+ })
89
+ ]
90
+ })
91
+ ],
92
+ [SlotName.SlotName.Sidebar]: [
93
+ elements.externalComponent('sidebar', ComponentName.ComponentName.Sidebar, {
94
+ title: 'Contoso'
95
+ }, {
96
+ logo: [
97
+ logo('sidebar-logo')
98
+ ]
99
+ })
100
+ ],
101
+ [SlotName.SlotName.Menu]: menuSections(activeScreen),
102
+ [SlotName.SlotName.Breadcrumb]: [
103
+ elements.externalComponent('breadcrumb', ComponentName.ComponentName.Breadcrumb, {
104
+ homeTargetScreen: 'Dashboard',
105
+ items: breadcrumb
106
+ })
107
+ ],
108
+ [SlotName.SlotName.Footer]: [
109
+ elements.externalComponent('footer', ComponentName.ComponentName.Footer, {
110
+ text: '© Contoso · Built with Cratis Scene'
111
+ })
112
+ ],
113
+ [SlotName.SlotName.ConfigPanel]: [
114
+ configPanel()
115
+ ]
116
+ };
117
+ }
118
+ /**
119
+ * The full-page shell's slot content: the configurator and nothing else.
120
+ *
121
+ * A sign-in screen has no navigation to render, but it does have to honor the chosen theme - it is very
122
+ * often the first page anyone sees, and arriving at a light sign-in page before a dark application is a
123
+ * jarring way to start.
124
+ */ function fullPageChrome() {
125
+ return {
126
+ [SlotName.SlotName.ConfigPanel]: [
127
+ configPanel()
128
+ ]
129
+ };
130
+ }
131
+
132
+ exports.applicationChrome = applicationChrome;
133
+ exports.fullPageChrome = fullPageChrome;
134
+ //# sourceMappingURL=applicationChrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applicationChrome.js","sources":["../../../gallery/applicationChrome.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { SceneElement } from '@cratis/scene.model';\nimport { ComponentName } from '../ComponentName';\nimport { SlotName } from '../layouts';\nimport { defaultBlueprintThemes } from '../themes';\nimport { externalComponent } from './elements';\nimport { entriesInGroup, navigationElement, navigationGroups } from './navigation';\n\n/**\n * The chrome every screen in the application shell shares: the topbar, the sidebar, the menu, the footer\n * and the configurator.\n *\n * It is built once, per screen, rather than repeated in twenty templates. A screen template describes what\n * is *different* about a screen; if it also had to describe the topbar, then adding an item to the menu\n * would mean editing twenty files, and nineteen of them would eventually be missed.\n */\n\n/** The brand mark, shared by the topbar and the sidebar header. */\nfunction logo(id: string): SceneElement {\n return externalComponent(id, ComponentName.Logo, { label: 'Contoso', initials: 'C', targetScreen: 'Dashboard' });\n}\n\n/** One menu section per navigation group, each holding that group's entries. */\nfunction menuSections(activeScreen: string): SceneElement[] {\n return navigationGroups.map(group =>\n externalComponent(\n `menu-${group.toLowerCase()}`,\n ComponentName.Menu,\n { title: group, label: group },\n { items: entriesInGroup(group).map(entry => navigationElement(entry, activeScreen)) },\n ),\n );\n}\n\n/** The configurator, offering the themes this blueprint ships. */\nfunction configPanel(): SceneElement {\n return externalComponent(ComponentName.ConfigPanel, ComponentName.ConfigPanel, {\n title: 'Settings',\n themes: defaultBlueprintThemes.map(theme => ({ name: theme.name, label: theme.name, isDark: theme.isDark ?? false })),\n });\n}\n\n/** One trail entry: a label, and the screen it goes back to. */\nexport interface BreadcrumbEntry {\n /** What the entry is called. */\n label: string;\n\n /** The screen it navigates back to, or undefined for the current page. */\n targetScreen?: string;\n}\n\n/**\n * The application shell's slot content for one screen.\n *\n * Only the breadcrumb and which menu entry is marked active differ from screen to screen - everything else\n * is identical, which is the point of chrome.\n *\n * @param activeScreen The screen being rendered, so its menu entry is marked current.\n * @param breadcrumb The trail above the content.\n * @returns Slot content keyed by the {@link SlotName}s the `AppShell` layout declares.\n */\nexport function applicationChrome(activeScreen: string, breadcrumb: BreadcrumbEntry[]): Record<string, SceneElement[]> {\n return {\n [SlotName.Topbar]: [\n externalComponent(\n 'topbar',\n ComponentName.Topbar,\n {},\n {\n logo: [logo('topbar-logo')],\n end: [\n externalComponent('topbar-user', ComponentName.UserMenu, {\n name: 'Amelia Nyquist',\n role: 'Owner',\n initials: 'AN',\n items: [\n { label: 'Your profile', icon: 'pi pi-user', targetScreen: 'ProfileSettings' },\n { label: 'Help', icon: 'pi pi-question-circle', targetScreen: 'Help' },\n { label: 'Lock', icon: 'pi pi-lock', targetScreen: 'LockScreen' },\n ],\n }),\n ],\n },\n ),\n ],\n [SlotName.Sidebar]: [externalComponent('sidebar', ComponentName.Sidebar, { title: 'Contoso' }, { logo: [logo('sidebar-logo')] })],\n [SlotName.Menu]: menuSections(activeScreen),\n [SlotName.Breadcrumb]: [\n externalComponent('breadcrumb', ComponentName.Breadcrumb, {\n homeTargetScreen: 'Dashboard',\n items: breadcrumb,\n }),\n ],\n [SlotName.Footer]: [externalComponent('footer', ComponentName.Footer, { text: '© Contoso · Built with Cratis Scene' })],\n [SlotName.ConfigPanel]: [configPanel()],\n };\n}\n\n/**\n * The full-page shell's slot content: the configurator and nothing else.\n *\n * A sign-in screen has no navigation to render, but it does have to honor the chosen theme - it is very\n * often the first page anyone sees, and arriving at a light sign-in page before a dark application is a\n * jarring way to start.\n */\nexport function fullPageChrome(): Record<string, SceneElement[]> {\n return { [SlotName.ConfigPanel]: [configPanel()] };\n}\n"],"names":["logo","id","externalComponent","ComponentName","Logo","label","initials","targetScreen","menuSections","activeScreen","navigationGroups","map","group","toLowerCase","Menu","title","items","entriesInGroup","entry","navigationElement","configPanel","ConfigPanel","themes","defaultBlueprintThemes","theme","name","isDark","applicationChrome","breadcrumb","SlotName","Topbar","end","UserMenu","role","icon","Sidebar","Breadcrumb","homeTargetScreen","Footer","text","fullPageChrome"],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ 'use strict';
2
+
3
+ var ComponentName = require('../ComponentName.js');
4
+ var SlotName = require('../layouts/SlotName.js');
5
+ require('@cratis/scene.model');
6
+ require('../layouts/shellComponents.js');
7
+ require('../layouts/appShell.js');
8
+ require('../layouts/fullPage.js');
9
+ var TemplateSlotName = require('./TemplateSlotName.js');
10
+ var elements = require('./elements.js');
11
+ var widgets = require('./widgets.js');
12
+
13
+ // Copyright (c) Cratis. All rights reserved.
14
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
15
+ /**
16
+ * The six screens that stand between someone and the application: sign in, register, forgotten password,
17
+ * new password, verification and the lock screen.
18
+ *
19
+ * All six fit the full-page layout's `content` slot and fill its `aside` with the branding half. That
20
+ * split - a colored panel of brand next to a narrow column of form - is the shape the premium PrimeTek
21
+ * templates use for every one of them, and the reason it works is that it gives the form somewhere to be
22
+ * *small*, which is what a sign-in form should be.
23
+ */ /** The branding half every authentication screen shares. */ function brandingAside(id, headline, supporting) {
24
+ return [
25
+ elements.externalComponent(`${id}-logo`, ComponentName.ComponentName.Logo, {
26
+ label: 'Contoso',
27
+ initials: 'C'
28
+ }),
29
+ elements.text(`${id}-headline`, headline),
30
+ elements.text(`${id}-supporting`, supporting)
31
+ ];
32
+ }
33
+ /** Sign in. */ const loginTemplate = {
34
+ name: 'Login',
35
+ fitsSlot: SlotName.SlotName.Content,
36
+ slots: [
37
+ {
38
+ name: SlotName.SlotName.Aside
39
+ },
40
+ {
41
+ name: TemplateSlotName.TemplateSlotName.Body
42
+ }
43
+ ],
44
+ content: {
45
+ [SlotName.SlotName.Aside]: brandingAside('login', 'Welcome back', 'Everything your team shipped since you were last here is waiting.'),
46
+ [TemplateSlotName.TemplateSlotName.Body]: [
47
+ elements.card('login-card', [
48
+ elements.text('login-title', 'Sign in'),
49
+ widgets.field('login-email', 'Email', 'inputText', {
50
+ placeholder: 'you@contoso.com'
51
+ }),
52
+ widgets.field('login-password', 'Password', 'password', {
53
+ feedback: false
54
+ }),
55
+ widgets.field('login-remember', 'Keep me signed in', 'checkbox', {}),
56
+ widgets.formActions('login-actions', 'Sign in', 'Use a different account'),
57
+ elements.button('login-forgot', 'I forgot my password', {
58
+ link: true,
59
+ targetScreen: 'ForgotPassword'
60
+ })
61
+ ])
62
+ ]
63
+ },
64
+ displayName: 'Sign in',
65
+ description: 'Email and password beside the branding panel.'
66
+ };
67
+ /** Register. */ const registerTemplate = {
68
+ name: 'Register',
69
+ fitsSlot: SlotName.SlotName.Content,
70
+ slots: [
71
+ {
72
+ name: SlotName.SlotName.Aside
73
+ },
74
+ {
75
+ name: TemplateSlotName.TemplateSlotName.Body
76
+ }
77
+ ],
78
+ content: {
79
+ [SlotName.SlotName.Aside]: brandingAside('register', 'Start in two minutes', 'No card, no call, no sales engineer. Just an account.'),
80
+ [TemplateSlotName.TemplateSlotName.Body]: [
81
+ elements.card('register-card', [
82
+ elements.text('register-title', 'Create your account'),
83
+ widgets.field('register-name', 'Full name', 'inputText', {}),
84
+ widgets.field('register-email', 'Work email', 'inputText', {
85
+ placeholder: 'you@contoso.com'
86
+ }),
87
+ widgets.field('register-password', 'Password', 'password', {
88
+ feedback: true
89
+ }),
90
+ widgets.field('register-terms', 'I accept the terms of service', 'checkbox', {}),
91
+ widgets.formActions('register-actions', 'Create account', 'I already have one')
92
+ ])
93
+ ]
94
+ },
95
+ displayName: 'Register',
96
+ description: 'Account creation with a password strength meter and the terms checkbox.'
97
+ };
98
+ /** Forgotten password: ask for the address. */ const forgotPasswordTemplate = {
99
+ name: 'ForgotPassword',
100
+ fitsSlot: SlotName.SlotName.Content,
101
+ slots: [
102
+ {
103
+ name: SlotName.SlotName.Aside
104
+ },
105
+ {
106
+ name: TemplateSlotName.TemplateSlotName.Body
107
+ }
108
+ ],
109
+ content: {
110
+ [SlotName.SlotName.Aside]: brandingAside('forgot', 'It happens', 'Tell us the address you signed up with and we will send a link.'),
111
+ [TemplateSlotName.TemplateSlotName.Body]: [
112
+ elements.card('forgot-card', [
113
+ elements.text('forgot-title', 'Reset your password'),
114
+ widgets.field('forgot-email', 'Email', 'inputText', {
115
+ placeholder: 'you@contoso.com'
116
+ }),
117
+ widgets.formActions('forgot-actions', 'Send the link', 'Back to sign in')
118
+ ])
119
+ ]
120
+ },
121
+ displayName: 'Forgotten password',
122
+ description: 'One field and one button - the whole point is that it asks for nothing else.'
123
+ };
124
+ /** New password: the other end of the link. */ const newPasswordTemplate = {
125
+ name: 'NewPassword',
126
+ fitsSlot: SlotName.SlotName.Content,
127
+ slots: [
128
+ {
129
+ name: SlotName.SlotName.Aside
130
+ },
131
+ {
132
+ name: TemplateSlotName.TemplateSlotName.Body
133
+ }
134
+ ],
135
+ content: {
136
+ [SlotName.SlotName.Aside]: brandingAside('new-password', 'Almost there', 'Choose something you have not used anywhere else.'),
137
+ [TemplateSlotName.TemplateSlotName.Body]: [
138
+ elements.card('new-password-card', [
139
+ elements.text('new-password-title', 'Choose a new password'),
140
+ widgets.field('new-password-value', 'New password', 'password', {
141
+ feedback: true
142
+ }),
143
+ widgets.field('new-password-confirm', 'Confirm it', 'password', {
144
+ feedback: false
145
+ }),
146
+ widgets.formActions('new-password-actions', 'Set the password', 'Cancel')
147
+ ])
148
+ ]
149
+ },
150
+ displayName: 'New password',
151
+ description: 'Where a reset link lands: choose it, confirm it, done.'
152
+ };
153
+ /** Verification: the code from the email. */ const verificationTemplate = {
154
+ name: 'Verification',
155
+ fitsSlot: SlotName.SlotName.Content,
156
+ slots: [
157
+ {
158
+ name: SlotName.SlotName.Aside
159
+ },
160
+ {
161
+ name: TemplateSlotName.TemplateSlotName.Body
162
+ }
163
+ ],
164
+ content: {
165
+ [SlotName.SlotName.Aside]: brandingAside('verification', 'Check your email', 'We sent a six-digit code. It expires in ten minutes.'),
166
+ [TemplateSlotName.TemplateSlotName.Body]: [
167
+ elements.card('verification-card', [
168
+ elements.text('verification-title', 'Enter the code'),
169
+ elements.externalComponent('verification-steps', 'steps', {
170
+ model: [
171
+ 'Account',
172
+ 'Verify',
173
+ 'Done'
174
+ ],
175
+ activeIndex: 1
176
+ }),
177
+ widgets.field('verification-code', 'Six-digit code', 'inputText', {
178
+ maxLength: 6
179
+ }),
180
+ widgets.formActions('verification-actions', 'Verify', 'Send it again')
181
+ ])
182
+ ]
183
+ },
184
+ displayName: 'Verification',
185
+ description: 'The code step, with the progress indicator that tells you how much is left.'
186
+ };
187
+ /** Lock screen: the session is still there, the person has to prove they are. */ const lockScreenTemplate = {
188
+ name: 'LockScreen',
189
+ fitsSlot: SlotName.SlotName.Content,
190
+ slots: [
191
+ {
192
+ name: SlotName.SlotName.Aside
193
+ },
194
+ {
195
+ name: TemplateSlotName.TemplateSlotName.Body
196
+ }
197
+ ],
198
+ content: {
199
+ [SlotName.SlotName.Aside]: brandingAside('lock', 'Locked', 'Your work is exactly where you left it.'),
200
+ [TemplateSlotName.TemplateSlotName.Body]: [
201
+ elements.card('lock-card', [
202
+ elements.externalComponent('lock-avatar', 'avatar', {
203
+ label: 'AN',
204
+ size: 'xlarge',
205
+ shape: 'circle'
206
+ }),
207
+ elements.text('lock-name', 'Amelia Nyquist'),
208
+ widgets.field('lock-password', 'Password', 'password', {
209
+ feedback: false
210
+ }),
211
+ widgets.formActions('lock-actions', 'Unlock', 'Sign in as someone else')
212
+ ])
213
+ ]
214
+ },
215
+ displayName: 'Lock screen',
216
+ description: 'One person, one password, and no way to lose what was open.'
217
+ };
218
+ /** The six authentication templates. */ const authTemplates = [
219
+ loginTemplate,
220
+ registerTemplate,
221
+ forgotPasswordTemplate,
222
+ newPasswordTemplate,
223
+ verificationTemplate,
224
+ lockScreenTemplate
225
+ ];
226
+
227
+ exports.authTemplates = authTemplates;
228
+ exports.forgotPasswordTemplate = forgotPasswordTemplate;
229
+ exports.lockScreenTemplate = lockScreenTemplate;
230
+ exports.loginTemplate = loginTemplate;
231
+ exports.newPasswordTemplate = newPasswordTemplate;
232
+ exports.registerTemplate = registerTemplate;
233
+ exports.verificationTemplate = verificationTemplate;
234
+ //# sourceMappingURL=authTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authTemplates.js","sources":["../../../gallery/authTemplates.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ScreenTemplate } from '@cratis/scene.model';\nimport { ComponentName } from '../ComponentName';\nimport { SlotName } from '../layouts';\nimport { TemplateSlotName } from './TemplateSlotName';\nimport { button, card, externalComponent, text } from './elements';\nimport { field, formActions } from './widgets';\n\n/**\n * The six screens that stand between someone and the application: sign in, register, forgotten password,\n * new password, verification and the lock screen.\n *\n * All six fit the full-page layout's `content` slot and fill its `aside` with the branding half. That\n * split - a colored panel of brand next to a narrow column of form - is the shape the premium PrimeTek\n * templates use for every one of them, and the reason it works is that it gives the form somewhere to be\n * *small*, which is what a sign-in form should be.\n */\n\n/** The branding half every authentication screen shares. */\nfunction brandingAside(id: string, headline: string, supporting: string) {\n return [\n externalComponent(`${id}-logo`, ComponentName.Logo, { label: 'Contoso', initials: 'C' }),\n text(`${id}-headline`, headline),\n text(`${id}-supporting`, supporting),\n ];\n}\n\n/** Sign in. */\nexport const loginTemplate: ScreenTemplate = {\n name: 'Login',\n fitsSlot: SlotName.Content,\n slots: [{ name: SlotName.Aside }, { name: TemplateSlotName.Body }],\n content: {\n [SlotName.Aside]: brandingAside('login', 'Welcome back', 'Everything your team shipped since you were last here is waiting.'),\n [TemplateSlotName.Body]: [\n card('login-card', [\n text('login-title', 'Sign in'),\n field('login-email', 'Email', 'inputText', { placeholder: 'you@contoso.com' }),\n field('login-password', 'Password', 'password', { feedback: false }),\n field('login-remember', 'Keep me signed in', 'checkbox', {}),\n formActions('login-actions', 'Sign in', 'Use a different account'),\n button('login-forgot', 'I forgot my password', { link: true, targetScreen: 'ForgotPassword' }),\n ]),\n ],\n },\n displayName: 'Sign in',\n description: 'Email and password beside the branding panel.',\n};\n\n/** Register. */\nexport const registerTemplate: ScreenTemplate = {\n name: 'Register',\n fitsSlot: SlotName.Content,\n slots: [{ name: SlotName.Aside }, { name: TemplateSlotName.Body }],\n content: {\n [SlotName.Aside]: brandingAside('register', 'Start in two minutes', 'No card, no call, no sales engineer. Just an account.'),\n [TemplateSlotName.Body]: [\n card('register-card', [\n text('register-title', 'Create your account'),\n field('register-name', 'Full name', 'inputText', {}),\n field('register-email', 'Work email', 'inputText', { placeholder: 'you@contoso.com' }),\n field('register-password', 'Password', 'password', { feedback: true }),\n field('register-terms', 'I accept the terms of service', 'checkbox', {}),\n formActions('register-actions', 'Create account', 'I already have one'),\n ]),\n ],\n },\n displayName: 'Register',\n description: 'Account creation with a password strength meter and the terms checkbox.',\n};\n\n/** Forgotten password: ask for the address. */\nexport const forgotPasswordTemplate: ScreenTemplate = {\n name: 'ForgotPassword',\n fitsSlot: SlotName.Content,\n slots: [{ name: SlotName.Aside }, { name: TemplateSlotName.Body }],\n content: {\n [SlotName.Aside]: brandingAside('forgot', 'It happens', 'Tell us the address you signed up with and we will send a link.'),\n [TemplateSlotName.Body]: [\n card('forgot-card', [\n text('forgot-title', 'Reset your password'),\n field('forgot-email', 'Email', 'inputText', { placeholder: 'you@contoso.com' }),\n formActions('forgot-actions', 'Send the link', 'Back to sign in'),\n ]),\n ],\n },\n displayName: 'Forgotten password',\n description: 'One field and one button - the whole point is that it asks for nothing else.',\n};\n\n/** New password: the other end of the link. */\nexport const newPasswordTemplate: ScreenTemplate = {\n name: 'NewPassword',\n fitsSlot: SlotName.Content,\n slots: [{ name: SlotName.Aside }, { name: TemplateSlotName.Body }],\n content: {\n [SlotName.Aside]: brandingAside('new-password', 'Almost there', 'Choose something you have not used anywhere else.'),\n [TemplateSlotName.Body]: [\n card('new-password-card', [\n text('new-password-title', 'Choose a new password'),\n field('new-password-value', 'New password', 'password', { feedback: true }),\n field('new-password-confirm', 'Confirm it', 'password', { feedback: false }),\n formActions('new-password-actions', 'Set the password', 'Cancel'),\n ]),\n ],\n },\n displayName: 'New password',\n description: 'Where a reset link lands: choose it, confirm it, done.',\n};\n\n/** Verification: the code from the email. */\nexport const verificationTemplate: ScreenTemplate = {\n name: 'Verification',\n fitsSlot: SlotName.Content,\n slots: [{ name: SlotName.Aside }, { name: TemplateSlotName.Body }],\n content: {\n [SlotName.Aside]: brandingAside('verification', 'Check your email', 'We sent a six-digit code. It expires in ten minutes.'),\n [TemplateSlotName.Body]: [\n card('verification-card', [\n text('verification-title', 'Enter the code'),\n externalComponent('verification-steps', 'steps', { model: ['Account', 'Verify', 'Done'], activeIndex: 1 }),\n field('verification-code', 'Six-digit code', 'inputText', { maxLength: 6 }),\n formActions('verification-actions', 'Verify', 'Send it again'),\n ]),\n ],\n },\n displayName: 'Verification',\n description: 'The code step, with the progress indicator that tells you how much is left.',\n};\n\n/** Lock screen: the session is still there, the person has to prove they are. */\nexport const lockScreenTemplate: ScreenTemplate = {\n name: 'LockScreen',\n fitsSlot: SlotName.Content,\n slots: [{ name: SlotName.Aside }, { name: TemplateSlotName.Body }],\n content: {\n [SlotName.Aside]: brandingAside('lock', 'Locked', 'Your work is exactly where you left it.'),\n [TemplateSlotName.Body]: [\n card('lock-card', [\n externalComponent('lock-avatar', 'avatar', { label: 'AN', size: 'xlarge', shape: 'circle' }),\n text('lock-name', 'Amelia Nyquist'),\n field('lock-password', 'Password', 'password', { feedback: false }),\n formActions('lock-actions', 'Unlock', 'Sign in as someone else'),\n ]),\n ],\n },\n displayName: 'Lock screen',\n description: 'One person, one password, and no way to lose what was open.',\n};\n\n/** The six authentication templates. */\nexport const authTemplates: ScreenTemplate[] = [\n loginTemplate,\n registerTemplate,\n forgotPasswordTemplate,\n newPasswordTemplate,\n verificationTemplate,\n lockScreenTemplate,\n];\n"],"names":["brandingAside","id","headline","supporting","externalComponent","ComponentName","Logo","label","initials","text","loginTemplate","name","fitsSlot","SlotName","Content","slots","Aside","TemplateSlotName","Body","content","card","field","placeholder","feedback","formActions","button","link","targetScreen","displayName","description","registerTemplate","forgotPasswordTemplate","newPasswordTemplate","verificationTemplate","model","activeIndex","maxLength","lockScreenTemplate","size","shape","authTemplates"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var scene_engine = require('@cratis/scene.engine');
4
+
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * Every component name an element tree references.
9
+ *
10
+ * A blueprint's templates name components the blueprint itself does not provide - the widgets come from
11
+ * the component libraries it depends on - and a name no active package declares renders as a dashed red
12
+ * placeholder somewhere inside a screen, with nothing pointing back at the template that wrote it.
13
+ * Collecting the names up front is what lets that be a failed check at build or design time instead.
14
+ *
15
+ * The walk uses the engine's own kind guards rather than its own, so it visits exactly the branches the
16
+ * renderer visits and cannot drift from it.
17
+ *
18
+ * @param element The root to walk.
19
+ * @returns Every `componentName` found, in encounter order, with duplicates.
20
+ */ function componentNamesIn(element) {
21
+ const names = [];
22
+ if (scene_engine.isExternalComponent(element)) {
23
+ names.push(element.componentName);
24
+ for (const children of Object.values(element.slots)){
25
+ for (const child of children){
26
+ names.push(...componentNamesIn(child));
27
+ }
28
+ }
29
+ }
30
+ if (scene_engine.isContentControl(element)) {
31
+ names.push(...componentNamesIn(element.content));
32
+ }
33
+ if (scene_engine.isItemsControl(element)) {
34
+ names.push(...componentNamesIn(element.itemTemplate));
35
+ }
36
+ if (scene_engine.isPanel(element)) {
37
+ for (const child of element.children){
38
+ names.push(...componentNamesIn(child));
39
+ }
40
+ }
41
+ return names;
42
+ }
43
+ /**
44
+ * Every distinct component name a set of element trees references, sorted so a report of them is stable.
45
+ */ function distinctComponentNames(elements) {
46
+ return [
47
+ ...new Set(elements.flatMap(componentNamesIn))
48
+ ].sort();
49
+ }
50
+
51
+ exports.componentNamesIn = componentNamesIn;
52
+ exports.distinctComponentNames = distinctComponentNames;
53
+ //# sourceMappingURL=componentNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"componentNames.js","sources":["../../../gallery/componentNames.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { SceneElement } from '@cratis/scene.model';\nimport { isContentControl, isExternalComponent, isItemsControl, isPanel } from '@cratis/scene.engine';\n\n/**\n * Every component name an element tree references.\n *\n * A blueprint's templates name components the blueprint itself does not provide - the widgets come from\n * the component libraries it depends on - and a name no active package declares renders as a dashed red\n * placeholder somewhere inside a screen, with nothing pointing back at the template that wrote it.\n * Collecting the names up front is what lets that be a failed check at build or design time instead.\n *\n * The walk uses the engine's own kind guards rather than its own, so it visits exactly the branches the\n * renderer visits and cannot drift from it.\n *\n * @param element The root to walk.\n * @returns Every `componentName` found, in encounter order, with duplicates.\n */\nexport function componentNamesIn(element: SceneElement): string[] {\n const names: string[] = [];\n\n if (isExternalComponent(element)) {\n names.push(element.componentName);\n for (const children of Object.values(element.slots)) {\n for (const child of children) {\n names.push(...componentNamesIn(child));\n }\n }\n }\n\n if (isContentControl(element)) {\n names.push(...componentNamesIn(element.content));\n }\n\n if (isItemsControl(element)) {\n names.push(...componentNamesIn(element.itemTemplate));\n }\n\n if (isPanel(element)) {\n for (const child of element.children) {\n names.push(...componentNamesIn(child));\n }\n }\n\n return names;\n}\n\n/**\n * Every distinct component name a set of element trees references, sorted so a report of them is stable.\n */\nexport function distinctComponentNames(elements: SceneElement[]): string[] {\n return [...new Set(elements.flatMap(componentNamesIn))].sort();\n}\n"],"names":["componentNamesIn","element","names","isExternalComponent","push","componentName","children","Object","values","slots","child","isContentControl","content","isItemsControl","itemTemplate","isPanel","distinctComponentNames","elements","Set","flatMap","sort"],"mappings":";;;;AAAA;AACA;AAKA;;;;;;;;;;;;;IAcO,SAASA,gBAAAA,CAAiBC,OAAqB,EAAA;AAClD,IAAA,MAAMC,QAAkB,EAAE;AAE1B,IAAA,IAAIC,iCAAoBF,OAAAA,CAAAA,EAAU;QAC9BC,KAAAA,CAAME,IAAI,CAACH,OAAAA,CAAQI,aAAa,CAAA;AAChC,QAAA,KAAK,MAAMC,QAAAA,IAAYC,MAAAA,CAAOC,MAAM,CAACP,OAAAA,CAAQQ,KAAK,CAAA,CAAG;YACjD,KAAK,MAAMC,SAASJ,QAAAA,CAAU;gBAC1BJ,KAAAA,CAAME,IAAI,IAAIJ,gBAAAA,CAAiBU,KAAAA,CAAAA,CAAAA;AACnC,YAAA;AACJ,QAAA;AACJ,IAAA;AAEA,IAAA,IAAIC,8BAAiBV,OAAAA,CAAAA,EAAU;AAC3BC,QAAAA,KAAAA,CAAME,IAAI,CAAA,GAAIJ,gBAAAA,CAAiBC,OAAAA,CAAQW,OAAO,CAAA,CAAA;AAClD,IAAA;AAEA,IAAA,IAAIC,4BAAeZ,OAAAA,CAAAA,EAAU;AACzBC,QAAAA,KAAAA,CAAME,IAAI,CAAA,GAAIJ,gBAAAA,CAAiBC,OAAAA,CAAQa,YAAY,CAAA,CAAA;AACvD,IAAA;AAEA,IAAA,IAAIC,qBAAQd,OAAAA,CAAAA,EAAU;AAClB,QAAA,KAAK,MAAMS,KAAAA,IAAST,OAAAA,CAAQK,QAAQ,CAAE;YAClCJ,KAAAA,CAAME,IAAI,IAAIJ,gBAAAA,CAAiBU,KAAAA,CAAAA,CAAAA;AACnC,QAAA;AACJ,IAAA;IAEA,OAAOR,KAAAA;AACX;AAEA;;IAGO,SAASc,sBAAAA,CAAuBC,QAAwB,EAAA;IAC3D,OAAO;WAAI,IAAIC,GAAAA,CAAID,QAAAA,CAASE,OAAO,CAACnB,gBAAAA,CAAAA;AAAmB,KAAA,CAACoB,IAAI,EAAA;AAChE;;;;;"}